1#
2# Makefile for gracket
3#
4
5PACKAGE = racket
6
7srcdir = @srcdir@
8prefix = @prefix@
9exec_prefix = @exec_prefix@
10datarootdir = @datarootdir@
11bindir = @bindir@
12libdir = @libdir@
13libpltdir = @libpltdir@
14libpltdir_rel = @libpltdir_rel@
15etcpltdir = @etcpltdir@
16sharepltdir = @sharepltdir@
17collectsdir = @collectsdir@
18builddir = @builddir@
19
20# for version.mak:
21mainsrcdir = @srcdir@/../..
22@INCLUDEDEP@ @srcdir@/../../version/version.mak
23
24WXDIR = $(srcdir)/../wxxt
25
26PLTSRCDIR = $(srcdir)/../..
27BCBUILDDIR = $(builddir)/..
28
29NOOP = :
30
31# See ../Makefile about RUN_RACKET_<X>, which
32# typically redirects to RUN_THIS_RACKET_<X>:
33RUN_THIS_RACKET_CGC = ../racket@CGC@
34RUN_THIS_RACKET_MMM = ../racket@MMM@
35
36###########################
37#      Common Macros      #
38###########################
39CC = @CC@
40LINKER = $(CC)
41RANLIB = @RANLIB@
42AR = @AR@
43ARFLAGS = @ARFLAGS@
44OPTIONS = @OPTIONS@ @MROPTIONS@
45XLIB = @X_LIBS@
46LDLIBS = @LIBS@
47GCDIRECTORY = @GCDIR@
48WBUILD = @WBUILD@
49WXVARIANT =  @WXVARIANT@
50
51NOGCINC = $(WXINC) -I$(BCBUILDDIR)/ -I$(PLTSRCDIR)/bc/include/ -I$(PLTSRCDIR)/version/
52INC = -I$(PLTSRCDIR)/bc/$(GCDIRECTORY) $(NOGCINC)
53CFLAGS = @COMPFLAGS@ @PROFFLAGS@ @CFLAGS@
54CPPFLAGS = @PREFLAGS@
55ALL_CFLAGS = $(INC) $(OPTIONS) -D$(WXVARIANT) $(CFLAGS) $(CPPFLAGS)
56LDFLAGS = @LDFLAGS@
57ARLIBFLAGS = $(LDFLAGS) $(LDLIBS)
58###########################
59
60STRIP_SIGNATURE = @STRIP_SIGNATURE@
61RESTORE_SIGNATURE = @RESTORE_SIGNATURE@ "${srcdir}/../../mac/entitlements.plist"
62
63GRACKETLINKER = @MZLINKER@
64
65LIBRKTIO = ../rktio/librktio.@LTA@
66LIBRKTIO_a = $(LIBRKTIO)
67LIBRKTIO_la =
68
69GRACKETLDLIBS@NOT_MINGW@ = ../libracket.@LIBSFX@ ../libmzgc.@LIBSFX@ $(LIBRKTIO_@LIBSFX@) $(LDLIBS)
70GRACKETLDLIBS@MINGW@ = ../libracket.dll.a ../libmzgc.dll.a $(LDLIBS) -ldelayimp -static-libgcc
71GRACKETLDFLAGS = $(LDFLAGS) -L..
72
73GRACKETRES@NOT_MINGW@ =
74GRACKETRESDEP@NOT_MINGW@ =
75GRACKETRES@MINGW@ = -mwindows gres.o ../MemoryModule.@LTO@
76GRACKETRESDEP@MINGW@ = gres.o ../MemoryModule.@LTO@
77
78LOCALFLAGS_wx_xt = @WX_MMD_FLAG@
79LOCALFLAGS_wx_mac = -I$(srcdir)/../../mac/racket -MMD -DWX_CARBON
80LOCALFLAGS = $(LOCALFLAGS_@WXVARIANT@)
81
82GRACKETOBJECTS = grmain.@LTO@
83
84RACKETDEPS = ../libracket.@LIBSFX@ ../libmzgc.@LIBSFX@
85
86MRSTATIC =
87MRSTATIC_STUB =
88
89MZEXTRAEXPORT='GCDIR=$(GCDIRECTORY)'
90
91LINKRESULT_wx_xt = gracket@CGC@@EXE_SUFFIX@
92LINKRESULT_wx_mac = GRacket@CGC@.app/Contents/MacOS/GRacket@CGC@
93LINKRESULT = $(LINKRESULT_@WXVARIANT@)
94
95SETUP_BOOT = -O "info@compiler/cm" -l- setup @BOOT_MODE@ $(srcdir)/../../setup-go.rkt ../../compiled
96SETUP_BOOT_COLLECTS_PATH = $(SETUP_BOOT) collpath.inc collpath.d "$(srcdir)/../../start/collects-path.rkt" "${srcdir}/../.."
97
98# Incremented each time the binaries change:
99DOWNLOAD_BIN_VERSION = 1
100
101bin:
102	$(MAKE) @MAIN_VARIANT@
103
1043m:
105	$(MAKE) resources
106	cd gc2; $(MAKE) 3m
107
108cgc:
109	$(MAKE) $(LINKRESULT)
110
111both:
112	$(MAKE) cgc
113	$(MAKE) 3m
114
115gracket@CGC@ : $(RACKETDEPS) $(LIBRKTIO) grmain.@LTO@ $(GRACKETOBJECTS) $(MRSTATIC_STUB) $(GRACKETRESDEP)
116	$(GRACKETLINKER) $(GRACKETLDFLAGS) $(MRSTATIC) -o gracket@CGC@ $(GRACKETOBJECTS) $(GRACKETRES) $(GRACKETLDLIBS) $(MRSTATIC_STUB)
117	@POST_LINKER@ gracket@CGC@
118
119gres.o : $(srcdir)/../../worksp/gracket/gracket.rc
120	@WINDRES@ -i $(srcdir)/../../worksp/gracket/gracket.rc -o gres.o
121
122resources@NOT_MINGW@ :
123	$(NOOP)
124
125resources@MINGW@ : gres.o
126	$(NOOP)
127
128MRFW = Racket.framework/Versions/$(FWVERSION)/Racket
129MRAPPSKEL = GRacket@CGC@.app/Contents/Info.plist
130
131# Depending on MACLIBRKT_LINK_MODE, use Framework or statically link the framework's code:
132MACLIBRKT_LINK_fw = -F.. -framework Racket
133MACLIBRKT_LINK_static = ../libracket.@LIBSFX@ ../libmzgc.@LIBSFX@ $(LIBRKTIO) $(LDLIBS)
134
135GRacket@CGC@.app/Contents/MacOS/GRacket@CGC@: $(MZFW) $(MRAPPSKEL) grmain.@LTO@
136	$(GRACKETLINKER) $(GRACKETLDFLAGS) -o GRacket@CGC@.app/Contents/MacOS/GRacket@CGC@ grmain.@LTO@ -Wl,-headerpad_max_install_names $(MACLIBRKT_LINK_@MACLIBRKT_LINK_MODE@) -framework CoreFoundation @PROFFLAGS@
137	/usr/bin/install_name_tool -change "Racket.framework/Versions/$(FWVERSION)/Racket" "@executable_path/../../../../Racket.framework/Versions/$(FWVERSION)/Racket" GRacket@CGC@.app/Contents/MacOS/GRacket@CGC@
138
139$(MRAPPSKEL): $(srcdir)/../../mac/osx_appl.rkt $(srcdir)/../../version/racket_version.h $(srcdir)/../../mac/icon/GRacket.icns
140	env BUILDBASE=../.. @RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) $(SETUP_BOOT) $(MRAPPSKEL) mrappskel.d $(srcdir)/../../mac/osx_appl.rkt $(srcdir)/../.. "@CGC@"
141@INCLUDEDEP@ mrappskel.d
142
143ee-app: gracket grmain_ee.@LTO@
144	if [ "$(EEAPP)" = '' ] ; then echo "ERROR: You must specify EEAPP" ; else $(GRACKETLINKER) $(GRACKETLDFLAGS) $(MRSTATIC) -o $(EEAPP) grmain_ee.@LTO@ $(EEOBJECTS) $(GRACKETLDLIBS) $(MRSTATIC_STUB) ; fi
145
146sunos4-static: dl_stub.@LTO@
147	$(MAKE) gracket MRSTATIC=-static  MRSTATIC_STUB='dl_stub.@LTO@' LDNONSTATICLIBS=''
148
149solaris-static:
150	$(MAKE) gracket MRSTATIC="-Wl,-Bstatic" LDNONSTATICLIBS='-Wl,-Bdynamic -ldl -Wl,-Bstatic'
151
152linux-static:
153	$(MAKE) gracket MRSTATIC=--static LDNONSTATICLIBS='-ldl'
154
155DEF_COLLECTS_DIR = -DINITIAL_COLLECTS_DIRECTORY='"'"`cd $(srcdir)/../../../collects; @PWD@`"'"'
156DEF_CONFIG_DIR = -DINITIAL_CONFIG_DIRECTORY='"'"`cd $(srcdir)/../../..; @PWD@`/etc"'"'
157DEF_C_DIRS = $(DEF_COLLECTS_DIR) $(DEF_CONFIG_DIR)
158
159grmain.@LTO@ :  $(srcdir)/grmain.c $(srcdir)/../main.c \
160            $(srcdir)/../cmdline.inc $(srcdir)/../src/stypes.h \
161            $(srcdir)/../include/scheme.h
162	$(CC) $(LOCALFLAGS) $(ALL_CFLAGS) $(DEF_C_DIRS) -c $(srcdir)/grmain.c -o grmain.@LTO@
163
164grmain_ee.@LTO@ : gracket.@LTO@
165	$(CC) $(LOCALFLAGS) $(ALL_CFLAGS) -DSTANDALONE_WITH_EMBEDDED_EXTENSION $(DEF_C_DIRS) -c $(srcdir)/grmain.cxx -o grmain_ee.@LTO@
166
167ee-main:
168	$(MAKE) grmain_ee.@LTO@
169
170clean:
171	rm -f *.@LTO@ *.d core gracket gracket3m
172	rm -f gc2/*.@LTO@ gc2/xsrc/* gc2/macxsrc/* gc2/*.d gc2/*.dd
173
174ICP=@ICP@
175BUILDINFO="$(DESTDIR)$(libpltdir)/buildinfo"
176
177# Prefix might be relative to srcdir, or it might be absolute, so we
178# have to go up and install things from there.
179
180install:
181	$(MAKE) install-@MAIN_VARIANT@
182
183install-3m:
184	$(MAKE) install-@WXVARIANT@
185	$(MAKE) install-@WXVARIANT@-3m
186	$(MAKE) install-@WXVARIANT@-3m-final
187
188install-cgc:
189	$(MAKE) install-@WXVARIANT@
190	$(MAKE) install-@WXVARIANT@-cgc
191	$(MAKE) install-@WXVARIANT@-cgc-final
192
193install-both:
194	$(MAKE) install-@WXVARIANT@
195	$(MAKE) install-@WXVARIANT@-3m
196	$(MAKE) install-@WXVARIANT@-cgc
197	$(MAKE) install-@WXVARIANT@-@MAIN_VARIANT@-final
198
199install-post-collects:
200	$(MAKE) install-@WXVARIANT@-post-collects
201
202install-common:
203	$(NOOP)
204
205INSTALL_SETUP_BOOT = $(SETUP_BOOT) dummy_install dummy_install.d
206
207# X11 ----------------------------------------
208
209install-wx_xt:
210	$(MAKE) install-common
211	cd ..; rm -f "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@"
212	cd ..; rm -f "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@"
213	cd ..; echo 'MROPTIONS=@MROPTIONS@' >> $(BUILDINFO)
214	cd ..; echo "MRLIBS=$(GUILIBS_@WXVARIANT@)" >> $(BUILDINFO)
215	cd ..; echo "MRLDFLAGS=$(GRACKETLDFLAGS)" >> $(BUILDINFO)
216	cd ..; mkdir -p "$(DESTDIR)$(libdir)";
217
218install-no-lib-cgc-wx_xt:
219	echo "no dynamic libs"
220
221install-lib-cgc-wx_xt:
222	$(NOOP)
223
224GRACKET_NAME@NOT_MINGW@ = gracket
225GRACKET_NAME@MINGW@ = GRacket
226
227install-wx_xt-cgc:
228	$(MAKE) @MRLIBINSTALL@-cgc-wx_xt
229	cd ..; $(ICP) gracket/gracket@CGC@@EXE_SUFFIX@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"
230	$(STRIP_SIGNATURE) "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"
231	cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"
232	@RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @GUI_COLLECTS_PATH@ @GUI_CONFIG_PATH@
233	$(RESTORE_SIGNATURE) "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@CGC_INSTALLED@@EXE_SUFFIX@"
234
235install-wx_xt-cgc-final:
236	$(NOOP)
237
238install-no-lib-3m-wx_xt:
239	echo "no dynamic libs"
240
241install-lib-3m-wx_xt:
242	$(NOOP)
243
244install-wx_xt-3m:
245	$(MAKE) @MRLIBINSTALL@-3m-wx_xt
246	cd ..; $(ICP) gracket/gracket@MMM@@EXE_SUFFIX@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"
247	$(STRIP_SIGNATURE) "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"
248	cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"
249	@RUN_RACKET_MMM@ $(SETUP_BOOT_COLLECTS_PATH) @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @GUI_COLLECTS_PATH@ @GUI_CONFIG_PATH@
250	$(RESTORE_SIGNATURE) "$(DESTDIR)$(libpltdir)/$(GRACKET_NAME)@MMM_INSTALLED@@EXE_SUFFIX@"
251
252install-wx_xt-3m-final:
253	$(NOOP)
254
255install-wx_xt-post-collects:
256	$(NOOP)
257
258# Mac OS X ----------------------------------------
259
260FRAMEWORK_REL_PREFIX="@executable_path/../../../"
261FRAMEWORK_ABS_PREFIX = "$(libpltdir)/"
262
263install-wx_mac:
264	$(MAKE) install-common
265	cd ..; rm -rf $(DESTDIR)"$(prefix)/lib/GRacket@CGC_CAP_INSTALLED@.app"
266	cd ..; rm -rf $(DESTDIR)"$(prefix)/lib/GRacket@MMM_CAP_INSTALLED@.app"
267
268install-wx_mac-cgc:
269	cd ..; $(ICP) -r gracket/GRacket@CGC@.app $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app"
270	@RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) $(INSTALL_SETUP_BOOT) "$(srcdir)/../../mac/rename-app.rkt" $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app" "GRacket@CGC@" "GRacket@CGC_CAP_INSTALLED@"
271	/usr/bin/install_name_tool -change "@executable_path/../../../../Racket.framework/Versions/$(FWVERSION)/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)/Racket" $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@"
272	@RUN_RACKET_CGC@ $(SETUP_BOOT_COLLECTS_PATH) $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@" @GR_APP_COLLECTS_PATH@ @GR_APP_CONFIG_PATH@
273	@STRIP_DEBUG@ $(DESTDIR)"$(libpltdir)/GRacket@CGC_CAP_INSTALLED@.app/Contents/MacOS/GRacket@CGC_CAP_INSTALLED@"
274
275install-wx_mac-cgc-final:
276	$(NOOP)
277
278install-wx_mac-3m:
279	cd ..; $(ICP) -r "gracket/GRacket@MMM@.app" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app"
280	@RUN_RACKET_MMM@ $(SELF_RACKET_FLAGS) $(INSTALL_SETUP_BOOT) "$(srcdir)/../../mac/rename-app.rkt" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app" "GRacket@MMM@" "GRacket@MMM_CAP_INSTALLED@"
281	/usr/bin/install_name_tool -change "@executable_path/../../../../Racket.framework/Versions/$(FWVERSION)_3m/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_3m/Racket" $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@"
282	@RUN_RACKET_MMM@ $(SETUP_BOOT_COLLECTS_PATH) $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@" @GR_APP_COLLECTS_PATH@ @GR_APP_CONFIG_PATH@
283	@STRIP_DEBUG@ $(DESTDIR)"$(libpltdir)/GRacket@MMM_CAP_INSTALLED@.app/Contents/MacOS/GRacket@MMM_CAP_INSTALLED@"
284
285install-wx_mac-3m-final:
286	$(NOOP)
287
288install-wx_mac-post-collects:
289	cd ..; rm -rf $(DESTDIR)$(libpltdir)/Starter.app
290	cd ..; $(ICP) -r gracket/Starter.app $(DESTDIR)$(libpltdir)/.
291
292
293@INCLUDEDEP@ grmain.d
294