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
27 SUBSYSTEM_COM_FLAGS = console,"5.01"
28 SUBSYSTEM_EXE_FLAGS = windows,"5.01"
30 !ELSEIF "$(PLATFORM)" == "x86-32-vista"
31 LINK_FLAGS = $(LINK_FLAGS) /safeseh
32 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
33 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
34 SUBSYSTEM_COM_FLAGS = console
35 SUBSYSTEM_EXE_FLAGS = windows
37 !ELSEIF "$(PLATFORM)" == "x86-64"
38 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
39 SUBSYSTEM_COM_FLAGS = console,"5.02"
40 SUBSYSTEM_EXE_FLAGS = windows,"5.02"
43 !ELSEIF "$(PLATFORM)" == "x86-64-vista"
44 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
45 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
46 SUBSYSTEM_COM_FLAGS = console
47 SUBSYSTEM_EXE_FLAGS = windows
51 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
52 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
55 ML_FLAGS = /nologo /safeseh
57 EXE_OBJS = vm\main-windows.obj vm\factor.res
59 DLL_OBJS = $(PLAF_DLL_OBJS) \
61 vm\aging_collector.obj \
73 vm\data_heap_checker.obj \
80 vm\full_collector.obj \
85 vm\instruction_operands.obj \
91 vm\nursery_collector.obj \
92 vm\object_start_map.obj \
98 vm\sampling_profiler.obj \
100 vm\to_tenured_collector.obj \
107 cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
110 cl $(CL_FLAGS) /Fo$@ /c $<
113 ml $(ML_FLAGS) /Fo$@ /c $<
118 libfactor-ffi-test.dll: vm/ffi_test.obj
119 link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll vm/ffi_test.obj
121 factor.dll.lib: $(DLL_OBJS)
122 link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
124 factor.com: $(EXE_OBJS) $(DLL_OBJS)
125 link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
127 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
128 link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
130 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
135 @echo Usage: nmake /f Nmakefile platform
136 @echo Where platform is one of:
144 nmake /nologo PLATFORM=x86-32 /f Nmakefile all
147 nmake /nologo PLATFORM=x86-64 /f Nmakefile all
150 nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
153 nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
157 if exist factor.lib del factor.lib
158 if exist factor.res del factor.res
159 if exist factor.com del factor.com
160 if exist factor.exe del factor.exe
161 if exist factor.dll del factor.dll
162 if exist factor.dll.lib del factor.dll.lib
164 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean