]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
vm: fix compile warnings on Windows and add /WX to Nmakefile to report warnings as...
[factor.git] / Nmakefile
1 !IF !DEFINED(BOOTIMAGE_VERSION)
2 BOOTIMAGE_VERSION = latest
3 !ENDIF
4
5 !IF DEFINED(PLATFORM)
6
7 LINK_FLAGS = /nologo shell32.lib
8 CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS
9
10 !IF DEFINED(DEBUG)
11 LINK_FLAGS = $(LINK_FLAGS) /DEBUG
12 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
13 !ENDIF
14
15 !IF "$(PLATFORM)" == "x86-32"
16 LINK_FLAGS = $(LINK_FLAGS) /safeseh
17 PLAF_DLL_OBJS = vm\os-windows-nt-x86.32.obj vm\safeseh.obj
18 !ELSEIF "$(PLATFORM)" == "x86-64"
19 PLAF_DLL_OBJS = vm\os-windows-nt-x86.64.obj
20 !ENDIF
21
22 ML_FLAGS = /nologo /safeseh
23
24 EXE_OBJS = vm\main-windows-nt.obj vm\factor.res
25
26 DLL_OBJS = $(PLAF_DLL_OBJS) \
27         vm\os-windows.obj \
28         vm\os-windows-nt.obj \
29         vm\aging_collector.obj \
30         vm\alien.obj \
31         vm\arrays.obj \
32         vm\bignum.obj \
33         vm\booleans.obj \
34         vm\byte_arrays.obj \
35         vm\callbacks.obj \
36         vm\callstack.obj \
37         vm\code_blocks.obj \
38         vm\code_heap.obj \
39         vm\compaction.obj \
40         vm\contexts.obj \
41         vm\data_heap.obj \
42         vm\data_heap_checker.obj \
43         vm\debug.obj \
44         vm\dispatch.obj \
45         vm\entry_points.obj \
46         vm\errors.obj \
47         vm\factor.obj \
48         vm\free_list.obj \
49         vm\full_collector.obj \
50         vm\gc.obj \
51         vm/gc_info.obj \
52         vm\image.obj \
53         vm\inline_cache.obj \
54         vm\instruction_operands.obj \
55         vm\io.obj \
56         vm\jit.obj \
57         vm\math.obj \
58         vm\mvm.obj \
59         vm\mvm-windows-nt.obj \
60         vm\nursery_collector.obj \
61         vm\object_start_map.obj \
62         vm\objects.obj \
63         vm\primitives.obj \
64         vm\profiler.obj \
65         vm\quotations.obj \
66         vm\run.obj \
67         vm\strings.obj \
68         vm\to_tenured_collector.obj \
69         vm\tuples.obj \
70         vm\utilities.obj \
71         vm\vm.obj \
72         vm\words.obj
73
74 .cpp.obj:
75         cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
76
77 .c.obj:
78         cl $(CL_FLAGS) /Fo$@ /c $<
79
80 .asm.obj:
81         ml $(ML_FLAGS) /Fo$@ /c $<
82
83 .rs.res:
84         rc $<
85
86 libfactor-ffi-test.dll: vm/ffi_test.obj
87         link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll vm/ffi_test.obj
88
89 factor.dll.lib: $(DLL_OBJS)
90         link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
91
92 factor.com: $(EXE_OBJS) $(DLL_OBJS)
93         link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:console $(EXE_OBJS) $(DLL_OBJS)
94
95 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
96         link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:windows $(EXE_OBJS) $(DLL_OBJS)
97
98 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
99
100 !ENDIF
101
102 default:
103         @echo Usage: nmake /f Nmakefile platform
104         @echo Where platform is one of:
105         @echo x86-32
106         @echo x86-64
107         @exit 1
108
109 x86-32:
110         nmake /nologo PLATFORM=x86-32 /f Nmakefile all
111
112 x86-64:
113         nmake /nologo PLATFORM=x86-64 /f Nmakefile all
114
115 clean:
116         del vm\*.obj
117         if exist factor.lib del factor.lib
118         if exist factor.res del factor.res
119         if exist factor.com del factor.com
120         if exist factor.exe del factor.exe
121         if exist factor.dll del factor.dll
122         if exist factor.dll.lib del factor.dll.lib
123
124 .PHONY: all default x86-32 x86-64 clean
125
126 .SUFFIXES: .rs