]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
Nmakefile: add the /largeaddressaware linker option for 32-bit builds
[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 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
14
15 !IF "$(PLATFORM)" == "x86-32"
16 LINK_FLAGS = $(LINK_FLAGS) /safeseh /largeaddressaware
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 /largeaddressaware
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\full_collector.obj \
71         vm\gc.obj \
72         vm\image.obj \
73         vm\inline_cache.obj \
74         vm\instruction_operands.obj \
75         vm\io.obj \
76         vm\jit.obj \
77         vm\math.obj \
78         vm\mvm.obj \
79         vm\mvm-windows.obj \
80         vm\nursery_collector.obj \
81         vm\object_start_map.obj \
82         vm\objects.obj \
83         vm\primitives.obj \
84         vm\quotations.obj \
85         vm\run.obj \
86         vm\safepoints.obj \
87         vm\sampling_profiler.obj \
88         vm\strings.obj \
89         vm\to_tenured_collector.obj \
90         vm\tuples.obj \
91         vm\utilities.obj \
92         vm\vm.obj \
93         vm\words.obj
94
95 .cpp.obj:
96         cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
97
98 .c.obj:
99         cl $(CL_FLAGS) /Fo$@ /c $<
100
101 .asm.obj:
102         ml $(ML_FLAGS) /Fo$@ /c $<
103
104 .rs.res:
105         rc $<
106
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
109
110 factor.dll.lib: $(DLL_OBJS)
111         link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
112
113 factor.com: $(EXE_OBJS) $(DLL_OBJS)
114         link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
115
116 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
117         link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
118
119 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
120
121 !ENDIF
122
123 default:
124         @echo Usage: nmake /f Nmakefile platform
125         @echo Where platform is one of:
126         @echo x86-32
127         @echo x86-64
128         @echo x86-32-vista
129         @echo x86-64-vista
130         @exit 1
131
132 x86-32:
133         nmake /nologo PLATFORM=x86-32 /f Nmakefile all
134
135 x86-64:
136         nmake /nologo PLATFORM=x86-64 /f Nmakefile all
137
138 x86-32-vista:
139         nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
140
141 x86-64-vista:
142         nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
143
144 clean:
145         del vm\*.obj
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
155
156 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean
157
158 .SUFFIXES: .rs