# Make environment for making samples on Unix
-# Clears all default suffixes
-.SUFFIXES: .o .cpp .c .cxx
-
-# The binary program extension, if any, including dots {e.g. '.exe'}
+# The binary program extension, if any, including dots (e.g. '.exe')
PROGRAM_EXT = @PROGRAM_EXT@
-BIN_PROGRAM = ${PROGRAM}${PROGRAM_EXT}
-RES_PROGRAM = ${PROGRAM}_resources.o
-RES_PROGRAM_OPT = @RESPROGRAM@
+BIN_PROGRAM = $(PROGRAM)$(PROGRAM_EXT)
+RES_PROGRAM_OBJ = @RESPROGRAMOBJ@
+BUNDLE = $(BIN_PROGRAM).app/Contents
+
+# NB: see remark in Makefile.in as to why we don't use %.foo: %.bar rules
+.SUFFIXES: .o .c .cpp .cxx .rc _resources.o
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(APPEXTRADEFS) -o $@ $<
-# To add resources to the Mac OS X applications
-LIBWX_MACRES = ${top_builddir}/lib/lib@WX_LIBRARY@-${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.r
-LIBWX_MACRESCOMP = ${RESCOMP} ${RESFLAGS} ${LIBWX_MACRES} -o ${BIN_PROGRAM}
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $(APPEXTRADEFS) -o $@ $<
-.c.o :
- ${CCC} -c @DEP_INFO_FLAGS@ ${CFLAGS} ${APPEXTRADEFS} -o $@ $<
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $(APPEXTRADEFS) -o $@ $<
-.cpp.o :
- ${CC} -c @DEP_INFO_FLAGS@ ${CXXFLAGS} ${APPEXTRADEFS} -o $@ $<
+.rc_resources.o:
+ $(RESCOMP) -i $< -o $@ $(RESFLAGS)
-.cxx.o :
- ${CC} -c @DEP_INFO_FLAGS@ ${CXXFLAGS} ${APPEXTRADEFS} -o $@ $<
# the comment at the end of the next line is needed because otherwise autoconf
# would remove this line completely - it contains a built-in hack to remove
# any VPATH assignment not containing ':'
-VPATH = @PATH_IFS@${top_srcdir}/${program_dir} # ':' for autoconf
+VPATH = @PATH_IFS@$(top_srcdir)/$(program_dir) # ':' for autoconf
# Set defaults from configure
-include ${top_builddir}/src/make.env
+include $(top_builddir)/src/make.env
-all: ${BIN_PROGRAM} install_dirs install_data
+all: $(BIN_PROGRAM) @MACOSX_BUNDLE@ install_dirs install_data
-${BIN_PROGRAM}: ${OBJECTS} ${top_builddir}/lib/@WX_TARGET_LIBRARY@ ${RES_PROGRAM_OPT} @LIBWXMACRES@
- ${CC} ${LDFLAGS} -o ${BIN_PROGRAM} ${OBJECTS} ${LDLIBS} ${LIBRARIES} ${RES_PROGRAM_OPT}
+$(BIN_PROGRAM): $(OBJECTS) $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(RES_PROGRAM_OBJ) @LIBWXMACRES@
+ $(CXX) $(LDFLAGS_EXE) -o $@ $(OBJECTS) $(LDLIBS) $(LIBRARIES) $(RES_PROGRAM_OBJ)
@LIBWXMACRESCOMP@
-${RES_PROGRAM}: ${PROGRAM}.rc
- ${RESCOMP} ${RCINPUTSWITCH} ${top_srcdir}/${program_dir}/${PROGRAM}.rc ${RCOUTPUTSWITCH} ${PROGRAM}_resources.o ${RESFLAGS}
-
install_dirs:
- @list='${DATADIRS}'; for p in $$list; do \
- mkdir -p ${top_builddir}/${program_dir}/$$p; \
+ @list='$(DATADIRS)'; for p in $$list; do \
+ mkdir -p $(top_builddir)/$(program_dir)/$$p; \
done
-
+
install_data:
- @list='${DATAFILES}'; for p in $$list; do \
- if test ! -s ${top_builddir}/${program_dir}/$$p; then \
- cp -pRf ${top_srcdir}/${program_dir}/$$p ${top_builddir}/${program_dir}/$$p; \
+ @list='$(DATAFILES)'; for p in $$list; do \
+ if test ! -s $(top_builddir)/$(program_dir)/$$p; then \
+ cp -pRf $(top_srcdir)/$(program_dir)/$$p $(top_builddir)/$(program_dir)/$$p; \
fi; \
done
clean:
- rm -f ${OBJECTS} ${BIN_PROGRAM} ${RES_PROGRAM} core
+ rm -f $(OBJECTS) $(DEPFILES) $(BIN_PROGRAM) $(RES_PROGRAM_OBJ) core
+
+#
+# Targets to build a Mac OS X application bundle
+#
+bundle: $(BUNDLE)/MacOS/$(PROGRAM) $(BUNDLE)/Info.plist $(BUNDLE)/PkgInfo $(BUNDLE)/Resources/$(PROGRAM).rsrc $(BUNDLE)/Resources/$(PROGRAM).icns
+
+$(BUNDLE)/Info.plist: $(top_srcdir)/src/$(TOOLKITDIR)/Info.plist.in $(top_builddir)/lib/@WX_TARGET_LIBRARY@
+ @$(INSTALL) -d `dirname $@`
+ sed -e "s/IDENTIFIER/`echo $(program_dir) | sed 's,/,.,g'`/" \
+ -e "s/EXECUTABLE/$(PROGRAM)/" \
+ -e "s/VERSION/$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER)/" $< > $@
+
+$(BUNDLE)/PkgInfo:
+ @$(INSTALL) -d `dirname $@`
+ echo -n "APPL????" > $@
+
+$(BUNDLE)/MacOS/$(PROGRAM): $(OBJECTS) $(top_builddir)/lib/@WX_TARGET_LIBRARY@
+ @$(INSTALL) -d `dirname $@`
+ $(CXX) $(LDFLAGS_EXE) -o $@ $(OBJECTS) $(LDLIBS) $(LIBRARIES)
+
+$(BUNDLE)/Resources/$(PROGRAM).rsrc: $(top_builddir)/lib/@WX_RESOURCES_MACOSX_DATA@
+ @$(INSTALL) -d `dirname $@`
+ cp $< $@
+
+$(BUNDLE)/Resources/$(PROGRAM).icns: $(top_srcdir)/src/$(TOOLKITDIR)/wxmac.icns
+ @$(INSTALL) -d `dirname $@`
+ cp $< $@