]> gitweb.factorcode.org Git - factor.git/blob - Makefile
Makefile fix
[factor.git] / Makefile
1 CC = gcc
2
3 BINARY = f
4 IMAGE = factor.image
5 BUNDLE = Factor.app
6 VERSION = 0.86
7 DISK_IMAGE_DIR = Factor-$(VERSION)
8 DISK_IMAGE = Factor-$(VERSION).dmg
9 LIBPATH = -L/usr/X11R6/lib
10
11 ifdef DEBUG
12         CFLAGS = -pg -O1
13         STRIP = touch
14 else
15         CFLAGS = -Wall -O3 -ffast-math -fomit-frame-pointer $(SITE_CFLAGS)
16         STRIP = strip
17 endif
18
19 ifdef CONFIG
20         include $(CONFIG)
21 endif
22
23 OBJS = $(PLAF_OBJS) \
24         vm/alien.o \
25         vm/bignum.o \
26         vm/compiler.o \
27         vm/debug.o \
28         vm/factor.o \
29         vm/ffi_test.o \
30         vm/image.o \
31         vm/io.o \
32         vm/math.o \
33         vm/data_gc.o \
34         vm/code_gc.o \
35         vm/primitives.o \
36         vm/run.o \
37         vm/stack.o \
38         vm/types.o
39
40 default:
41         @echo "Run 'make' with one of the following parameters:"
42         @echo ""
43         @echo "freebsd"
44         @echo "linux-x86"
45         @echo "linux-amd64"
46         @echo "linux-ppc"
47         @echo "macosx-x86"
48         @echo "macosx-ppc"
49         @echo "solaris"
50         @echo "windows"
51         @echo ""
52         @echo "On Unix, pass NO_UI=1 if you don't want to link with the"
53         @echo "X11 and OpenGL libraries."
54         @echo ""
55         @echo "On Mac OS X, pass X11=1 if you want to link with the"
56         @echo "X11 library instead of Cocoa. You will also need to bootstrap"
57         @echo "Factor with the -no-cocoa -x11 switches."
58         @echo
59         @echo "Also, you might want to set the SITE_CFLAGS environment"
60         @echo "variable to enable some CPU-specific optimizations; this"
61         @echo "can make a huge difference. Eg:"
62         @echo ""
63         @echo "export SITE_CFLAGS=\"-march=pentium4 -ffast-math\""
64
65 freebsd:
66         $(MAKE) $(BINARY) CONFIG=vm/Config.freebsd
67
68 macosx-freetype:
69         ln -sf libfreetype.6.dylib \
70                 Factor.app/Contents/Frameworks/libfreetype.dylib
71
72 macosx-ppc: macosx-freetype
73         $(MAKE) $(BINARY) CONFIG=vm/Config.macosx.ppc
74
75 macosx-x86: macosx-freetype
76         $(MAKE) $(BINARY) CONFIG=vm/Config.macosx
77
78 linux-x86:
79         $(MAKE) $(BINARY) CONFIG=vm/Config.linux
80         $(STRIP) $(BINARY)
81
82 linux-amd64:
83         $(MAKE) $(BINARY) CONFIG=vm/Config.linux.amd64
84         $(STRIP) $(BINARY)
85
86 linux-ppc:
87         $(MAKE) $(BINARY) CONFIG=vm/Config.linux.ppc
88         $(STRIP) $(BINARY)
89
90 solaris solaris-x86 solaris-amd64:
91         $(MAKE) $(BINARY) CONFIG=vm/Config.solaris
92         $(STRIP) $(BINARY)
93
94 windows:
95         $(MAKE) $(BINARY) CONFIG=vm/Config.windows
96
97 macosx.app:
98         cp $(BINARY) $(BUNDLE)/Contents/MacOS/Factor
99
100         install_name_tool \
101                 -id @executable_path/../Frameworks/libfreetype.6.dylib \
102                 Factor.app/Contents/Frameworks/libfreetype.6.dylib
103         install_name_tool \
104                 -change /usr/X11R6/lib/libfreetype.6.dylib \
105                 @executable_path/../Frameworks/libfreetype.6.dylib \
106                 Factor.app/Contents/MacOS/Factor
107
108 macosx.dmg:
109         rm -f $(DISK_IMAGE)
110         rm -rf $(DISK_IMAGE_DIR)
111         mkdir $(DISK_IMAGE_DIR)
112         mkdir -p $(DISK_IMAGE_DIR)/Factor/
113         cp -R $(BUNDLE) $(DISK_IMAGE_DIR)/Factor/$(BUNDLE)
114         chmod +x cp_dir
115         cp factor.image license.txt README.txt TODO.FACTOR.txt \
116                 $(DISK_IMAGE_DIR)/Factor/
117         find doc library contrib examples fonts \( -name '*.factor' \
118                 -o -name '*.facts' \
119                 -o -name '*.txt' \
120                 -o -name '*.html' \
121                 -o -name '*.ttf' \
122                 -o -name '*.el' \
123                 -o -name '*.vim' \
124                 -o -name '*.fgen' \
125                 -o -name '*.tex' \
126                 -o -name '*.fhtml' \
127                 -o -name '*.xml' \
128                 -o -name '*.js' \) \
129                 -exec ./cp_dir {} $(DISK_IMAGE_DIR)/Factor/{} \;
130         hdiutil create -srcfolder "$(DISK_IMAGE_DIR)" -fs HFS+ \
131                 -volname "$(DISK_IMAGE_DIR)" "$(DISK_IMAGE)"
132
133 tags:
134         ctags-exuberant vm/*.[chm]
135
136 f: $(OBJS)
137         $(CC) $(LIBS) $(LIBPATH) $(CFLAGS) -o $@$(PLAF_SUFFIX) $(OBJS)
138
139 clean:
140         rm -f vm/*.o
141
142 clean.app:
143         rm -rf $(BUNDLE)/Contents/Resources/
144         rm -f $(BUNDLE)/Contents/MacOS/Factor
145
146 .c.o:
147         $(CC) -c $(CFLAGS) -o $@ $<
148
149 .S.o:
150         $(CC) -c $(CFLAGS) -o $@ $<
151
152 .m.o:
153         $(CC) -c $(CFLAGS) -o $@ $<