]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
Nmakefile: remove BOOTIMAGE_VERSION. The git-id is enough to recover the boot image...
[factor.git] / Nmakefile
1 !IF !DEFINED(VERSION)
2 VERSION = version-missing
3 !ENDIF
4
5 !IF !DEFINED(GIT_LABEL)
6 GIT_LABEL = git-label-missing
7 !ENDIF
8
9 !IF DEFINED(PLATFORM)
10
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
14
15 !IF DEFINED(DEBUG)
16 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
17 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
18 !ENDIF
19
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"
25
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
32
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"
37
38
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
44 !ENDIF
45
46 !IF DEFINED(DEBUG)
47 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
48 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
49 !ENDIF
50
51 ML_FLAGS = /nologo /safeseh
52
53 EXE_OBJS = vm\main-windows.obj vm\factor.res
54
55 DLL_OBJS = $(PLAF_DLL_OBJS) \
56         vm\os-windows.obj \
57         vm\aging_collector.obj \
58         vm\alien.obj \
59         vm\arrays.obj \
60         vm\bignum.obj \
61         vm\byte_arrays.obj \
62         vm\callbacks.obj \
63         vm\callstack.obj \
64         vm\code_blocks.obj \
65         vm\code_heap.obj \
66         vm\compaction.obj \
67         vm\contexts.obj \
68         vm\data_heap.obj \
69         vm\data_heap_checker.obj \
70         vm\debug.obj \
71         vm\dispatch.obj \
72         vm\entry_points.obj \
73         vm\errors.obj \
74         vm\factor.obj \
75         vm\free_list.obj \
76         vm\full_collector.obj \
77         vm\gc.obj \
78         vm/gc_info.obj \
79         vm\image.obj \
80         vm\inline_cache.obj \
81         vm\instruction_operands.obj \
82         vm\io.obj \
83         vm\jit.obj \
84         vm\math.obj \
85         vm\mvm.obj \
86         vm\mvm-windows.obj \
87         vm\nursery_collector.obj \
88         vm\object_start_map.obj \
89         vm\objects.obj \
90         vm\primitives.obj \
91         vm\quotations.obj \
92         vm\run.obj \
93         vm\safepoints.obj \
94         vm\sampling_profiler.obj \
95         vm\strings.obj \
96         vm\to_tenured_collector.obj \
97         vm\tuples.obj \
98         vm\utilities.obj \
99         vm\vm.obj \
100         vm\words.obj
101
102 .cpp.obj:
103         cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
104
105 .c.obj:
106         cl $(CL_FLAGS) /Fo$@ /c $<
107
108 .asm.obj:
109         ml $(ML_FLAGS) /Fo$@ /c $<
110
111 .rs.res:
112         rc $<
113
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
116
117 factor.dll.lib: $(DLL_OBJS)
118         link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
119
120 factor.com: $(EXE_OBJS) $(DLL_OBJS)
121         link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
122
123 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
124         link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
125
126 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
127
128 !ENDIF
129
130 default:
131         @echo Usage: nmake /f Nmakefile platform
132         @echo Where platform is one of:
133         @echo x86-32
134         @echo x86-64
135         @echo x86-32-vista
136         @echo x86-64-vista
137         @exit 1
138
139 x86-32:
140         nmake /nologo PLATFORM=x86-32 /f Nmakefile all
141
142 x86-64:
143         nmake /nologo PLATFORM=x86-64 /f Nmakefile all
144
145 x86-32-vista:
146         nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
147
148 x86-64-vista:
149         nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
150
151 clean:
152         del vm\*.obj
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
162
163 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean
164
165 .SUFFIXES: .rs