]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
VM: Three new special objects added to keep track of the builds version number, git...
[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
28 !ELSEIF "$(PLATFORM)" == "x86-32-vista"
29 LINK_FLAGS = $(LINK_FLAGS) /safeseh
30 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
31 PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
32
33 !ELSEIF "$(PLATFORM)" == "x86-64"
34 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
35
36 !ELSEIF "$(PLATFORM)" == "x86-64-vista"
37 CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
38 PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
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 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:console $(EXE_OBJS) $(DLL_OBJS)
117
118 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
119         link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:windows $(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
155 .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean
156
157 .SUFFIXES: .rs