2 VERSION = version-missing
5 !IF !DEFINED(GIT_LABEL)
6 GIT_LABEL = git-label-missing
11 LINK_FLAGS = /nologo shell32.lib
12 CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS /DFACTOR_VERSION=$(VERSION) /DFACTOR_GIT_LABEL=$(GIT_LABEL)
13 CL_FLAGS_VISTA = /D_WIN32_WINNT=0x0600
15 !IF "$(PLATFORM)" == "x86-32"
16 LINK_FLAGS = $(LINK_FLAGS) /safeseh
17 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
18 SUBSYSTEM_COM_FLAGS = console,"5.01"
19 SUBSYSTEM_EXE_FLAGS = windows,"5.01"
21 !ELSEIF "$(PLATFORM)" == "x86-32-vista"
22 LINK_FLAGS = $(LINK_FLAGS) /safeseh
23 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
24 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
25 SUBSYSTEM_COM_FLAGS = console
26 SUBSYSTEM_EXE_FLAGS = windows
28 !ELSEIF "$(PLATFORM)" == "x86-64"
29 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
30 SUBSYSTEM_COM_FLAGS = console,"5.02"
31 SUBSYSTEM_EXE_FLAGS = windows,"5.02"
34 !ELSEIF "$(PLATFORM)" == "x86-64-vista"
35 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
36 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
37 SUBSYSTEM_COM_FLAGS = console
38 SUBSYSTEM_EXE_FLAGS = windows
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 /def:vm\ffi_test.def 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:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
118 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
119 link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(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
154 if exist libfactor-ffi-test.dll del libfactor-ffi-test.dll
155 if exist libfactor-ffi-test.exp del libfactor-ffi-test.exp
156 if exist libfactor-ffi-test.lib del libfactor-ffi-test.lib
158 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean