]> gitweb.factorcode.org Git - factor.git/blob - Nmakefile
add targets to Nmakefile to fetch boot images on windows, add a wscript program to...
[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 PLATFORM=x86-32 /f Nmakefile all
110
111 x86-64:
112         nmake PLATFORM=x86-64 /f Nmakefile all
113
114 clean:
115         del vm\*.obj
116         del factor.lib
117         del factor.com
118         del factor.exe
119         del factor.dll
120         del factor.dll.lib
121
122 bootimage-x86-32:
123         cscript /nologo build-support\http-get.vbs http://factorcode.org/images/$(BOOTIMAGE_VERSION)/boot.winnt-x86.32.image boot.winnt-x86.32.image
124
125 bootimage-x86-64:
126         cscript /nologo build-support\http-get.vbs http://factorcode.org/images/$(BOOTIMAGE_VERSION)/boot.winnt-x86.64.image boot.winnt.x86.64.image
127
128 .PHONY: all bootimage-x86-32 bootimage-x86-64 default x86-32 x86-64 clean
129
130 .SUFFIXES: .rs