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