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