2 VERSION = version-missing
5 !IF !DEFINED(GIT_LABEL)
6 GIT_LABEL = git-label-missing
11 LINK_FLAGS = /nologo shell32.lib user32.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 \
70 vm\full_collector.obj \
74 vm\instruction_operands.obj \
80 vm\nursery_collector.obj \
81 vm\object_start_map.obj \
87 vm\sampling_profiler.obj \
89 vm\to_tenured_collector.obj \
96 cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
99 cl $(CL_FLAGS) /Fo$@ /c $<
102 ml $(ML_FLAGS) /Fo$@ /c $<
107 libfactor-ffi-test.dll: vm/ffi_test.obj
108 link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll /def:vm\ffi_test.def vm/ffi_test.obj
110 factor.dll.lib: $(DLL_OBJS)
111 link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
113 factor.com: $(EXE_OBJS) $(DLL_OBJS)
114 link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
116 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
117 link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
119 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
124 @echo Usage: nmake /f Nmakefile platform
125 @echo Where platform is one of:
133 nmake /nologo PLATFORM=x86-32 /f Nmakefile all
136 nmake /nologo PLATFORM=x86-64 /f Nmakefile all
139 nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
142 nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
146 if exist vm\factor.res del vm\factor.res
147 if exist factor.lib del factor.lib
148 if exist factor.com del factor.com
149 if exist factor.exe del factor.exe
150 if exist factor.dll del factor.dll
151 if exist factor.dll.lib del factor.dll.lib
152 if exist libfactor-ffi-test.dll del libfactor-ffi-test.dll
153 if exist libfactor-ffi-test.exp del libfactor-ffi-test.exp
154 if exist libfactor-ffi-test.lib del libfactor-ffi-test.lib
156 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean