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