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