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
16 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
17 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
20 !IF "$(PLATFORM)" == "x86-32"
21 LINK_FLAGS = $(LINK_FLAGS) /safeseh
22 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
23 SUBSYSTEM_COM_FLAGS = console,"5.01"
24 SUBSYSTEM_EXE_FLAGS = windows,"5.01"
26 !ELSEIF "$(PLATFORM)" == "x86-32-vista"
27 LINK_FLAGS = $(LINK_FLAGS) /safeseh
28 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
29 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
30 SUBSYSTEM_COM_FLAGS = console
31 SUBSYSTEM_EXE_FLAGS = windows
33 !ELSEIF "$(PLATFORM)" == "x86-64"
34 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
35 SUBSYSTEM_COM_FLAGS = console,"5.02"
36 SUBSYSTEM_EXE_FLAGS = windows,"5.02"
39 !ELSEIF "$(PLATFORM)" == "x86-64-vista"
40 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
41 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
42 SUBSYSTEM_COM_FLAGS = console
43 SUBSYSTEM_EXE_FLAGS = windows
47 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
48 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
51 ML_FLAGS = /nologo /safeseh
53 EXE_OBJS = vm\main-windows.obj vm\factor.res
55 DLL_OBJS = $(PLAF_DLL_OBJS) \
57 vm\aging_collector.obj \
69 vm\data_heap_checker.obj \
76 vm\full_collector.obj \
81 vm\instruction_operands.obj \
87 vm\nursery_collector.obj \
88 vm\object_start_map.obj \
94 vm\sampling_profiler.obj \
96 vm\to_tenured_collector.obj \
103 cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
106 cl $(CL_FLAGS) /Fo$@ /c $<
109 ml $(ML_FLAGS) /Fo$@ /c $<
114 libfactor-ffi-test.dll: vm/ffi_test.obj
115 link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll /def:vm\ffi_test.def vm/ffi_test.obj
117 factor.dll.lib: $(DLL_OBJS)
118 link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
120 factor.com: $(EXE_OBJS) $(DLL_OBJS)
121 link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
123 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
124 link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
126 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
131 @echo Usage: nmake /f Nmakefile platform
132 @echo Where platform is one of:
140 nmake /nologo PLATFORM=x86-32 /f Nmakefile all
143 nmake /nologo PLATFORM=x86-64 /f Nmakefile all
146 nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
149 nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
153 if exist factor.lib del factor.lib
154 if exist factor.res del factor.res
155 if exist factor.com del factor.com
156 if exist factor.exe del factor.exe
157 if exist factor.dll del factor.dll
158 if exist factor.dll.lib del factor.dll.lib
159 if exist libfactor-ffi-test.dll del libfactor-ffi-test.dll
160 if exist libfactor-ffi-test.exp del libfactor-ffi-test.exp
161 if exist libfactor-ffi-test.lib del libfactor-ffi-test.lib
163 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean