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 \
75 vm\instruction_operands.obj \
81 vm\nursery_collector.obj \
82 vm\object_start_map.obj \
88 vm\sampling_profiler.obj \
90 vm\to_tenured_collector.obj \
97 cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
100 cl $(CL_FLAGS) /Fo$@ /c $<
103 ml $(ML_FLAGS) /Fo$@ /c $<
108 libfactor-ffi-test.dll: vm/ffi_test.obj
109 link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll /def:vm\ffi_test.def vm/ffi_test.obj
111 factor.dll.lib: $(DLL_OBJS)
112 link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
114 factor.com: $(EXE_OBJS) $(DLL_OBJS)
115 link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
117 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
118 link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
120 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
125 @echo Usage: nmake /f Nmakefile platform
126 @echo Where platform is one of:
134 nmake /nologo PLATFORM=x86-32 /f Nmakefile all
137 nmake /nologo PLATFORM=x86-64 /f Nmakefile all
140 nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
143 nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
147 if exist factor.lib del factor.lib
148 if exist factor.res del factor.res
149 if exist factor.com del factor.com
150 if exist factor.exe del factor.exe
151 if exist factor.dll del factor.dll
152 if exist factor.dll.lib del factor.dll.lib
153 if exist libfactor-ffi-test.dll del libfactor-ffi-test.dll
154 if exist libfactor-ffi-test.exp del libfactor-ffi-test.exp
155 if exist libfactor-ffi-test.lib del libfactor-ffi-test.lib
157 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean