]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
VM: always use undecorated names when loading ffi functions
[factor.git] / Nmakefile
1 !IF !DEFINED(BOOTIMAGE_VERSION)
2 BOOTIMAGE_VERSION = latest
3 !ENDIF
4
5 !IF !DEFINED(VERSION)
6 VERSION = version-missing
7 !ENDIF
8
9 !IF !DEFINED(GIT_LABEL)
10 GIT_LABEL = git-label-missing
11 !ENDIF
12
13 !IF DEFINED(PLATFORM)
14
15 LINK_FLAGS = /nologo shell32.lib
16 CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS /DFACTOR_VERSION=$(VERSION) /DFACTOR_GIT_LABEL=$(GIT_LABEL)
17 CL_FLAGS_VISTA = /D_WIN32_WINNT=0x0600
18
19 !IF DEFINED(DEBUG)
20 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
21 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
22 !ENDIF
23
24 !IF "$(PLATFORM)" == "x86-32"
25 LINK_FLAGS = $(LINK_FLAGS) /safeseh
26 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
27 SUBSYSTEM_COM_FLAGS = console,"5.01"
28 SUBSYSTEM_EXE_FLAGS = windows,"5.01"
29
30 !ELSEIF "$(PLATFORM)" == "x86-32-vista"
31 LINK_FLAGS = $(LINK_FLAGS) /safeseh
32 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
33 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
34 SUBSYSTEM_COM_FLAGS = console
35 SUBSYSTEM_EXE_FLAGS = windows
36
37 !ELSEIF "$(PLATFORM)" == "x86-64"
38 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
39 SUBSYSTEM_COM_FLAGS = console,"5.02"
40 SUBSYSTEM_EXE_FLAGS = windows,"5.02"
41
42
43 !ELSEIF "$(PLATFORM)" == "x86-64-vista"
44 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
45 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
46 SUBSYSTEM_COM_FLAGS = console
47 SUBSYSTEM_EXE_FLAGS = windows
48 !ENDIF
49
50 !IF DEFINED(DEBUG)
51 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
52 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
53 !ENDIF
54
55 ML_FLAGS = /nologo /safeseh
56
57 EXE_OBJS = vm\main-windows.obj vm\factor.res
58
59 DLL_OBJS = $(PLAF_DLL_OBJS) \
60         vm\os-windows.obj \
61         vm\aging_collector.obj \
62         vm\alien.obj \
63         vm\arrays.obj \
64         vm\bignum.obj \
65         vm\byte_arrays.obj \
66         vm\callbacks.obj \
67         vm\callstack.obj \
68         vm\code_blocks.obj \
69         vm\code_heap.obj \
70         vm\compaction.obj \
71         vm\contexts.obj \
72         vm\data_heap.obj \
73         vm\data_heap_checker.obj \
74         vm\debug.obj \
75         vm\dispatch.obj \
76         vm\entry_points.obj \
77         vm\errors.obj \
78         vm\factor.obj \
79         vm\free_list.obj \
80         vm\full_collector.obj \
81         vm\gc.obj \
82         vm/gc_info.obj \
83         vm\image.obj \
84         vm\inline_cache.obj \
85         vm\instruction_operands.obj \
86         vm\io.obj \
87         vm\jit.obj \
88         vm\math.obj \
89         vm\mvm.obj \
90         vm\mvm-windows.obj \
91         vm\nursery_collector.obj \
92         vm\object_start_map.obj \
93         vm\objects.obj \
94         vm\primitives.obj \
95         vm\quotations.obj \
96         vm\run.obj \
97         vm\safepoints.obj \
98         vm\sampling_profiler.obj \
99         vm\strings.obj \
100         vm\to_tenured_collector.obj \
101         vm\tuples.obj \
102         vm\utilities.obj \
103         vm\vm.obj \
104         vm\words.obj
105
106 .cpp.obj:
107         cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
108
109 .c.obj:
110         cl $(CL_FLAGS) /Fo$@ /c $<
111
112 .asm.obj:
113         ml $(ML_FLAGS) /Fo$@ /c $<
114
115 .rs.res:
116         rc $<
117
118 libfactor-ffi-test.dll: vm/ffi_test.obj
119         link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll /def:vm\ffi_test.def vm/ffi_test.obj
120
121 factor.dll.lib: $(DLL_OBJS)
122         link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
123
124 factor.com: $(EXE_OBJS) $(DLL_OBJS)
125         link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:$(SUBSYSTEM_COM_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
126
127 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
128         link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
129
130 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
131
132 !ENDIF
133
134 default:
135         @echo Usage: nmake /f Nmakefile platform
136         @echo Where platform is one of:
137         @echo x86-32
138         @echo x86-64
139         @echo x86-32-vista
140         @echo x86-64-vista
141         @exit 1
142
143 x86-32:
144         nmake /nologo PLATFORM=x86-32 /f Nmakefile all
145
146 x86-64:
147         nmake /nologo PLATFORM=x86-64 /f Nmakefile all
148
149 x86-32-vista:
150         nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
151
152 x86-64-vista:
153         nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
154
155 clean:
156         del vm\*.obj
157         if exist factor.lib del factor.lib
158         if exist factor.res del factor.res
159         if exist factor.com del factor.com
160         if exist factor.exe del factor.exe
161         if exist factor.dll del factor.dll
162         if exist factor.dll.lib del factor.dll.lib
163         if exist libfactor-ffi-test.dll del libfactor-ffi-test.dll
164         if exist libfactor-ffi-test.exp del libfactor-ffi-test.exp
165         if exist libfactor-ffi-test.lib del libfactor-ffi-test.lib
166
167 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean
168
169 .SUFFIXES: .rs