]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
Merge branch 'master' of factorcode.org:/git/factor
[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 /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\image.obj \
52         vm\inline_cache.obj \
53         vm\instruction_operands.obj \
54         vm\io.obj \
55         vm\jit.obj \
56         vm\math.obj \
57         vm\mvm.obj \
58         vm\mvm-windows-nt.obj \
59         vm\nursery_collector.obj \
60         vm\object_start_map.obj \
61         vm\objects.obj \
62         vm\primitives.obj \
63         vm\profiler.obj \
64         vm\quotations.obj \
65         vm\run.obj \
66         vm\strings.obj \
67         vm\to_tenured_collector.obj \
68         vm\tuples.obj \
69         vm\utilities.obj \
70         vm\vm.obj \
71         vm\words.obj
72
73 .cpp.obj:
74         cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
75
76 .c.obj:
77         cl $(CL_FLAGS) /Fo$@ /c $<
78
79 .asm.obj:
80         ml $(ML_FLAGS) /Fo$@ /c $<
81
82 .rs.res:
83         rc $<
84
85 libfactor-ffi-test.dll: vm/ffi_test.obj
86         link $(LINK_FLAGS) /out:libfactor-ffi-test.dll /dll vm/ffi_test.obj
87
88 factor.dll.lib: $(DLL_OBJS)
89         link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
90
91 factor.com: $(EXE_OBJS) $(DLL_OBJS)
92         link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:console $(EXE_OBJS) $(DLL_OBJS)
93
94 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
95         link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:windows $(EXE_OBJS) $(DLL_OBJS)
96
97 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
98
99 !ENDIF
100
101 default:
102         @echo Usage: nmake /f Nmakefile platform
103         @echo Where platform is one of:
104         @echo x86-32
105         @echo x86-64
106         @exit 1
107
108 x86-32:
109         nmake /nologo PLATFORM=x86-32 /f Nmakefile all
110
111 x86-64:
112         nmake /nologo PLATFORM=x86-64 /f Nmakefile all
113
114 clean:
115         del vm\*.obj
116         if exist factor.lib del factor.lib
117         if exist factor.res del factor.res
118         if exist factor.com del factor.com
119         if exist factor.exe del factor.exe
120         if exist factor.dll del factor.dll
121         if exist factor.dll.lib del factor.dll.lib
122
123 .PHONY: all default x86-32 x86-64 clean
124
125 .SUFFIXES: .rs