Full memory management support (memory.c & memory.h & mem.S)
[reactos.git] / reactos / rules.mak
index 2794eec..02ca0a3 100644 (file)
 #
 .EXPORT_ALL_VARIABLES:
 
+HOST = mingw32-windows
+
+# uncomment if you use bochs and it displays only 30 rows
+# BOCHS_30ROWS = yes
+
+ifeq ($(HOST),mingw32-linux)
+TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
+endif
 
 #
 # Choose various options
 #
-ifeq ($(HOST),djgpp-linux)
-NASM_FORMAT = coff
-PREFIX = dos-
-KERNEL_BFD_TARGET = coff-i386
-EXE_POSTFIX =
-CP = cp
-endif
-
 ifeq ($(HOST),mingw32-linux)
 NASM_FORMAT = win32
-PREFIX = i386-mingw32
-KERNEL_BFD_TARGET = pe-i386
-EXE_POSTFIX
-CP = cp
-endif
-
-ifeq ($(HOST),djgpp-msdos)
-NASM_FORMAT = coff
-PREFIX = 
-KERNEL_BFD_TARGET = coff-go32
-EXE_POSTFIX = .exe
-CP = copy
+PREFIX = /usr/mingw32-cvs-000216/bin/mingw32-pc-
+#PREFIX = i586-mingw32-
+#PREFIX = /usr/mingw32-cvs-000207/bin/mingw32-cvs-000207-
+EXE_POSTFIX := 
+EXE_PREFIX := ./
+#CP = cp
+CP = $(PATH_TO_TOP)/rcopy
+DLLTOOL = $(PREFIX)dlltool --as=$(PREFIX)as
+NASM_CMD = nasm
+#KM_SPECS = $(TOPDIR)/specs
+FLOPPY_DIR = /a
+# DIST_DIR should be relative from the top of the tree
+DIST_DIR = dist
+#DOT := \\.
+#DSEP := /
+#ENABLE_DEPENDENCY_TRACKING := 1
 endif
 
 ifeq ($(HOST),mingw32-windows)
 NASM_FORMAT = win32
 PREFIX = 
-KERNEL_BFD_TARGET = pe-i386
-EXE_POSTFIX = .exe
-CP = copy
+EXE_PREFIX := 
+EXE_POSTFIX := .exe
+#CP = copy /B
+CP = $(PATH_TO_TOP)/rcopy
+DLLTOOL = $(PREFIX)dlltool --as=$(PREFIX)as
+NASM_CMD = nasmw
+RM = del
+RMDIR = rmdir
+#KM_SPECS = specs
+DOSCLI = yes
+FLOPPY_DIR = A:
+# DIST_DIR should be relative from the top of the tree
+DIST_DIR = dist
+#DOT := \.
+#DSEP := \\
+#ENABLE_DEPENDENCY_TRACKING := 1
 endif
 
-#
-# Create variables for all the compiler tools 
-#
-DEFINES = -DCHECKED_BUILD -DWIN32_LEAN_AND_MEAN -DDBG
 CC = $(PREFIX)gcc
-NATIVE_CC = gcc
-CFLAGS = -O2 -I../../../include -I../../include -I../include -fno-builtin $(DEFINES) -Wall -Wstrict-prototypes
+CXX = $(PREFIX)g++
+HOST_CC = gcc
+HOST_NM = nm
+CFLAGS := $(CFLAGS) -I$(PATH_TO_TOP)/include -pipe -m386
 CXXFLAGS = $(CFLAGS)
-ASM = nasm
-NFLAGS = -i../include/ -f$(NASM_FORMAT)
+NFLAGS = -i$(PATH_TO_TOP)/include/ -f$(NASM_FORMAT) -d$(NASM_FORMAT)
 LD = $(PREFIX)ld
 NM = $(PREFIX)nm
 OBJCOPY = $(PREFIX)objcopy
 STRIP = $(PREFIX)strip
-AS = $(PREFIX)gcc -c -x assembler-with-cpp
+ASFLAGS := $(ASFLAGS) -I$(PATH_TO_TOP)/include -D__ASM__
+AS = $(PREFIX)gcc -c -x assembler-with-cpp 
 CPP = $(PREFIX)cpp
+AR = $(PREFIX)ar
+RC = $(PREFIX)windres
+RCINC = --include-dir $(PATH_TO_TOP)/include
+OBJCOPY = $(PREFIX)objcopy
 
 %.o: %.cc
        $(CC) $(CFLAGS) -c $< -o $@
+%.o: %.c
+       $(CC) $(CFLAGS) -c $< -o $@
+%.o: %.S
+       $(AS) $(ASFLAGS) -c $< -o $@
+%.o: %.s
+       $(AS) $(ASFLAGS) -c $< -o $@    
 %.o: %.asm
-       $(ASM) $(NFLAGS) $< -o $@
+       $(NASM_CMD) $(NFLAGS) $< -o $@
+%.coff: %.rc
+       $(RC) $(RCINC) $< $@
 
+%.sys: %.o
+       $(CC) \
+               -nostartfiles -nostdlib -e _DriverEntry@8\
+               -mdll \
+               -o junk.tmp \
+               -Wl,--defsym,_end=end \
+               -Wl,--defsym,_edata=__data_end__ \
+               -Wl,--defsym,_etext=etext \
+               -Wl,--base-file,base.tmp $^
+       - $(RM) junk.tmp
+       $(DLLTOOL) \
+               --dllname $@ \
+               --base-file base.tmp \
+               --output-exp temp.exp \
+               --kill-at
+       - $(RM) base.tmp
+       $(CC) \
+               --verbose \
+               -Wl,--subsystem,native \
+               -Wl,--image-base,0x10000 \
+               -Wl,-e,_DriverEntry@8 \
+               -Wl,temp.exp \
+               -nostartfiles -nostdlib -e _DriverEntry@8 \
+               -mdll \
+               -o $@.unstripped \
+               $^
+       - $(RM) temp.exp
+       - $(NM) --numeric-sort $@.unstripped > $@.sym
+       $(STRIP) --strip-debug $<
+       $(CC) \
+               -nostartfiles -nostdlib -e _DriverEntry@8 \
+               -mdll \
+               -o junk.tmp \
+               -Wl,--defsym,_end=end \
+               -Wl,--defsym,_edata=__data_end__ \
+               -Wl,--defsym,_etext=etext \
+               -Wl,--base-file,base.tmp $^
+       - $(RM) junk.tmp
+       $(DLLTOOL) \
+               --dllname $@ \
+               --base-file base.tmp \
+               --output-exp temp.exp \
+               --kill-at
+       - $(RM) base.tmp
+       $(CC) \
+               --verbose \
+               -Wl,--subsystem,native \
+               -Wl,--image-base,0x10000 \
+               -Wl,-e,_DriverEntry@8 \
+               -Wl,temp.exp \
+               -nostartfiles -nostdlib -e _DriverEntry@8 \
+               -mdll \
+               -o $@ \
+               $^
+       - $(RM) temp.exp
 
 RULES_MAK_INCLUDED = 1