]> gitweb.factorcode.org Git - factor.git/blob - Makefile
irc.logbot: Small refactoring
[factor.git] / Makefile
1 CC = gcc
2 CPP = g++
3 AR = ar
4 LD = ld
5
6 EXECUTABLE = factor
7 CONSOLE_EXECUTABLE = factor-console
8 TEST_LIBRARY = factor-ffi-test
9 VERSION = 0.92
10
11 BUNDLE = Factor.app
12 LIBPATH = -L/usr/X11R6/lib
13 CFLAGS = -Wall
14
15 ifdef DEBUG
16         CFLAGS += -g -DFACTOR_DEBUG
17 else
18         CFLAGS += -O3
19 endif
20
21 CFLAGS += $(SITE_CFLAGS)
22
23 ENGINE = $(DLL_PREFIX)factor$(DLL_SUFFIX)$(DLL_EXTENSION)
24
25 ifdef CONFIG
26         include $(CONFIG)
27 endif
28
29 DLL_OBJS = $(PLAF_DLL_OBJS) \
30         vm/alien.o \
31         vm/arrays.o \
32         vm/bignum.o \
33         vm/booleans.o \
34         vm/byte_arrays.o \
35         vm/callstack.o \
36         vm/code_block.o \
37         vm/code_gc.o \
38         vm/code_heap.o \
39         vm/contexts.o \
40         vm/data_gc.o \
41         vm/data_heap.o \
42         vm/debug.o \
43         vm/dispatch.o \
44         vm/errors.o \
45         vm/factor.o \
46         vm/image.o \
47         vm/inline_cache.o \
48         vm/io.o \
49         vm/jit.o \
50         vm/local_roots.o \
51         vm/math.o \
52         vm/primitives.o \
53         vm/profiler.o \
54         vm/quotations.o \
55         vm/run.o \
56         vm/strings.o \
57         vm/tuples.o \
58         vm/utilities.o \
59         vm/words.o \
60         vm/write_barrier.o
61
62 EXE_OBJS = $(PLAF_EXE_OBJS)
63
64 TEST_OBJS = vm/ffi_test.o
65
66 default:
67         $(MAKE) `./build-support/factor.sh make-target`
68
69 help:
70         @echo "Run '$(MAKE)' with one of the following parameters:"
71         @echo ""
72         @echo "freebsd-x86-32"
73         @echo "freebsd-x86-64"
74         @echo "linux-x86-32"
75         @echo "linux-x86-64"
76         @echo "linux-ppc"
77         @echo "linux-arm"
78         @echo "openbsd-x86-32"
79         @echo "openbsd-x86-64"
80         @echo "netbsd-x86-32"
81         @echo "netbsd-x86-64"
82         @echo "macosx-x86-32"
83         @echo "macosx-x86-64"
84         @echo "macosx-ppc"
85         @echo "solaris-x86-32"
86         @echo "solaris-x86-64"
87         @echo "wince-arm"
88         @echo "winnt-x86-32"
89         @echo "winnt-x86-64"
90         @echo ""
91         @echo "Additional modifiers:"
92         @echo ""
93         @echo "DEBUG=1  compile VM with debugging information"
94         @echo "SITE_CFLAGS=...  additional optimization flags"
95         @echo "NO_UI=1  don't link with X11 libraries (ignored on Mac OS X)"
96         @echo "X11=1  force link with X11 libraries instead of Cocoa (only on Mac OS X)"
97
98 openbsd-x86-32:
99         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.openbsd.x86.32
100
101 openbsd-x86-64:
102         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.openbsd.x86.64
103
104 freebsd-x86-32:
105         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.freebsd.x86.32
106
107 freebsd-x86-64:
108         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.freebsd.x86.64
109
110 netbsd-x86-32:
111         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.netbsd.x86.32
112
113 netbsd-x86-64:
114         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.netbsd.x86.64
115
116 macosx-ppc:
117         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) macosx.app CONFIG=vm/Config.macosx.ppc
118
119 macosx-x86-32:
120         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) macosx.app CONFIG=vm/Config.macosx.x86.32
121
122 macosx-x86-64:
123         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) macosx.app CONFIG=vm/Config.macosx.x86.64
124
125 linux-x86-32:
126         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.linux.x86.32
127
128 linux-x86-64:
129         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.linux.x86.64
130
131 linux-ppc:
132         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.linux.ppc
133
134 linux-arm:
135         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.linux.arm
136
137 solaris-x86-32:
138         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.solaris.x86.32
139
140 solaris-x86-64:
141         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.solaris.x86.64
142
143 winnt-x86-32:
144         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.windows.nt.x86.32
145         $(MAKE) $(CONSOLE_EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.32
146
147 winnt-x86-64:
148         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.windows.nt.x86.64
149         $(MAKE) $(CONSOLE_EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.64
150
151 wince-arm:
152         $(MAKE) $(EXECUTABLE) $(TEST_LIBRARY) CONFIG=vm/Config.windows.ce.arm
153
154 macosx.app: factor
155         mkdir -p $(BUNDLE)/Contents/MacOS
156         mkdir -p $(BUNDLE)/Contents/Frameworks
157         mv $(EXECUTABLE) $(BUNDLE)/Contents/MacOS/factor
158         ln -s Factor.app/Contents/MacOS/factor ./factor
159         cp $(ENGINE) $(BUNDLE)/Contents/Frameworks/$(ENGINE)
160
161         install_name_tool \
162                 -change libfactor.dylib \
163                 @executable_path/../Frameworks/libfactor.dylib \
164                 Factor.app/Contents/MacOS/factor
165
166 $(EXECUTABLE): $(DLL_OBJS) $(EXE_OBJS)
167         $(LINKER) $(ENGINE) $(DLL_OBJS)
168         $(CPP) $(LIBS) $(LIBPATH) -L. $(LINK_WITH_ENGINE) \
169                 $(CFLAGS) -o $@$(EXE_SUFFIX)$(EXE_EXTENSION) $(EXE_OBJS)
170
171 $(CONSOLE_EXECUTABLE): $(DLL_OBJS) $(EXE_OBJS)
172         $(LINKER) $(ENGINE) $(DLL_OBJS)
173         $(CPP) $(LIBS) $(LIBPATH) -L. $(LINK_WITH_ENGINE) \
174                 $(CFLAGS) $(CFLAGS_CONSOLE) -o factor$(EXE_SUFFIX)$(CONSOLE_EXTENSION) $(EXE_OBJS)
175
176 $(TEST_LIBRARY): vm/ffi_test.o
177         $(CC) $(LIBPATH) $(CFLAGS) $(FFI_TEST_CFLAGS) $(SHARED_FLAG) -o libfactor-ffi-test$(SHARED_DLL_EXTENSION) $(TEST_OBJS)
178
179 clean:
180         rm -f vm/*.o
181         rm -f factor.dll
182         rm -f libfactor.*
183         rm -f libfactor-ffi-test.*
184         rm -f Factor.app/Contents/Frameworks/libfactor.dylib
185
186 tags:
187         etags vm/*.{cpp,hpp,mm,S,c}
188
189 vm/resources.o:
190         $(WINDRES) vm/factor.rs vm/resources.o
191
192 vm/ffi_test.o: vm/ffi_test.c
193         $(CC) -c $(CFLAGS) $(FFI_TEST_CFLAGS) -o $@ $<
194
195 .c.o:
196         $(CC) -c $(CFLAGS) -o $@ $<
197
198 .cpp.o:
199         $(CPP) -c $(CFLAGS) -o $@ $<
200
201 .S.o:
202         $(CC) -x assembler-with-cpp -c $(CFLAGS) -o $@ $<
203
204 .mm.o:
205         $(CPP) -c $(CFLAGS) -o $@ $<
206
207 .PHONY: factor tags clean
208
209 .SUFFIXES: .mm