1 !IF !DEFINED(BOOTIMAGE_VERSION)
2 BOOTIMAGE_VERSION = latest
6 VERSION = version-missing
9 !IF !DEFINED(GIT_LABEL)
10 GIT_LABEL = git-label-missing
15 LINK_FLAGS = /nologo shell32.lib
16 CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS /DFACTOR_VERSION=$(VERSION) /DFACTOR_GIT_LABEL=$(GIT_LABEL)
17 CL_FLAGS_VISTA = /D_WIN32_WINNT=0x0600
20 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
21 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
24 !IF "$(PLATFORM)" == "x86-32"
25 LINK_FLAGS = $(LINK_FLAGS) /safeseh
26 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
28 !ELSEIF "$(PLATFORM)" == "x86-32-vista"
29 LINK_FLAGS = $(LINK_FLAGS) /safeseh
30 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
31 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
33 !ELSEIF "$(PLATFORM)" == "x86-64"
34 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
36 !ELSEIF "$(PLATFORM)" == "x86-64-vista"
37 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
38 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
42 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
43 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
46 ML_FLAGS = /nologo /safeseh
48 EXE_OBJS = vm\main-windows.obj vm\factor.res
50 DLL_OBJS = $(PLAF_DLL_OBJS) \
52 vm\aging_collector.obj \
64 vm\data_heap_checker.obj \
71 vm\full_collector.obj \
76 vm\instruction_operands.obj \
82 vm\nursery_collector.obj \
83 vm\object_start_map.obj \
89 vm\sampling_profiler.obj \
91 vm\to_tenured_collector.obj \
98 cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
101 cl $(CL_FLAGS) /Fo$@ /c $<
104 ml $(ML_FLAGS) /Fo$@ /c $<
109 libfactor-ffi-test.dll: vm/ffi_test.obj
110 link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll vm/ffi_test.obj
112 factor.dll.lib: $(DLL_OBJS)
113 link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
115 factor.com: $(EXE_OBJS) $(DLL_OBJS)
116 link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:console $(EXE_OBJS) $(DLL_OBJS)
118 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
119 link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:windows $(EXE_OBJS) $(DLL_OBJS)
121 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
126 @echo Usage: nmake /f Nmakefile platform
127 @echo Where platform is one of:
135 nmake /nologo PLATFORM=x86-32 /f Nmakefile all
138 nmake /nologo PLATFORM=x86-64 /f Nmakefile all
141 nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
144 nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
148 if exist factor.lib del factor.lib
149 if exist factor.res del factor.res
150 if exist factor.com del factor.com
151 if exist factor.exe del factor.exe
152 if exist factor.dll del factor.dll
153 if exist factor.dll.lib del factor.dll.lib
155 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean