!IF !DEFINED(BOOTIMAGE_VERSION) BOOTIMAGE_VERSION = latest !ENDIF !IF !DEFINED(VERSION) VERSION = version-missing !ENDIF !IF !DEFINED(GIT_LABEL) GIT_LABEL = git-label-missing !ENDIF !IF DEFINED(PLATFORM) LINK_FLAGS = /nologo shell32.lib CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS /DFACTOR_VERSION=$(VERSION) /DFACTOR_GIT_LABEL=$(GIT_LABEL) CL_FLAGS_VISTA = /D_WIN32_WINNT=0x0600 !IF DEFINED(DEBUG) LINK_FLAGS = $(LINK_FLAGS) /DEBUG CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG !ENDIF !IF "$(PLATFORM)" == "x86-32" LINK_FLAGS = $(LINK_FLAGS) /safeseh PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj SUBSYSTEM_COM_FLAGS = console,"5.01" SUBSYSTEM_EXE_FLAGS = windows,"5.01" !ELSEIF "$(PLATFORM)" == "x86-32-vista" LINK_FLAGS = $(LINK_FLAGS) /safeseh CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA) PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj SUBSYSTEM_COM_FLAGS = console SUBSYSTEM_EXE_FLAGS = windows !ELSEIF "$(PLATFORM)" == "x86-64" PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj SUBSYSTEM_COM_FLAGS = console,"5.02" SUBSYSTEM_EXE_FLAGS = windows,"5.02" !ELSEIF "$(PLATFORM)" == "x86-64-vista" CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA) PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj SUBSYSTEM_COM_FLAGS = console SUBSYSTEM_EXE_FLAGS = windows !ENDIF !IF DEFINED(DEBUG) LINK_FLAGS = $(LINK_FLAGS) /DEBUG CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG !ENDIF ML_FLAGS = /nologo /safeseh EXE_OBJS = vm\main-windows.obj vm\factor.res DLL_OBJS = $(PLAF_DLL_OBJS) \ vm\os-windows.obj \ vm\aging_collector.obj \ vm\alien.obj \ vm\arrays.obj \ vm\bignum.obj \ vm\byte_arrays.obj \ vm\callbacks.obj \ vm\callstack.obj \ vm\code_blocks.obj \ vm\code_heap.obj \ vm\compaction.obj \ vm\contexts.obj \ vm\data_heap.obj \ vm\data_heap_checker.obj \ vm\debug.obj \ vm\dispatch.obj \ vm\entry_points.obj \ vm\errors.obj \ vm\factor.obj \ vm\free_list.obj \ vm\full_collector.obj \ vm\gc.obj \ vm/gc_info.obj \ vm\image.obj \ vm\inline_cache.obj \ vm\instruction_operands.obj \ vm\io.obj \ vm\jit.obj \ vm\math.obj \ vm\mvm.obj \ vm\mvm-windows.obj \ vm\nursery_collector.obj \ vm\object_start_map.obj \ vm\objects.obj \ vm\primitives.obj \ vm\quotations.obj \ vm\run.obj \ vm\safepoints.obj \ vm\sampling_profiler.obj \ vm\strings.obj \ vm\to_tenured_collector.obj \ vm\tuples.obj \ vm\utilities.obj \ vm\vm.obj \ vm\words.obj .cpp.obj: cl /EHsc $(CL_FLAGS) /Fo$@ /c $< .c.obj: cl $(CL_FLAGS) /Fo$@ /c $< .asm.obj: ml $(ML_FLAGS) /Fo$@ /c $< .rs.res: rc $< libfactor-ffi-test.dll: vm/ffi_test.obj link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll vm/ffi_test.obj factor.dll.lib: $(DLL_OBJS) link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS) factor.com: $(EXE_OBJS) $(DLL_OBJS) link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS) factor.exe: $(EXE_OBJS) $(DLL_OBJS) link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS) all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll !ENDIF default: @echo Usage: nmake /f Nmakefile platform @echo Where platform is one of: @echo x86-32 @echo x86-64 @echo x86-32-vista @echo x86-64-vista @exit 1 x86-32: nmake /nologo PLATFORM=x86-32 /f Nmakefile all x86-64: nmake /nologo PLATFORM=x86-64 /f Nmakefile all x86-32-vista: nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all x86-64-vista: nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all clean: del vm\*.obj if exist factor.lib del factor.lib if exist factor.res del factor.res if exist factor.com del factor.com if exist factor.exe del factor.exe if exist factor.dll del factor.dll if exist factor.dll.lib del factor.dll.lib .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean .SUFFIXES: .rs