7 Support for application bundles, for wxWidgets samples.
11 Nasty hack: use $(srcdir) to obtain usable CFBundleIdentifier suffix;
12 converts $(srcdir) like "../../samples/minimal" to "samples.minimal".
14 <set var="BUNDLE_IDENTIFIER">
15 `echo $(DOLLAR)(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`
18 <set var="BUNDLE_PLIST" overwrite="0">
19 $(TOP_SRCDIR)src/osx/carbon/Info.plist.in
21 <set var="BUNDLE_ICON" overwrite="0">
22 $(TOP_SRCDIR)src/osx/carbon/wxmac.icns
24 <set var="BUNDLE_RESOURCES" overwrite="0"></set>
26 <define-tag name="wx-mac-app-bundle" rules="exe">
28 <!-- bundle directory: -->
29 <set var="BUNDLE">$(id).app/Contents</set>
30 <set var="BUNDLE_TGT">$(BUNDLE)/PkgInfo</set>
31 <set var="BUNDLE_TGT_REF">
32 <!-- TODO Remove Mac -->
33 <if cond="TOOLKIT=='MAC'">$(BUNDLE)/PkgInfo</if>
34 <if cond="TOOLKIT=='OSX_CARBON'">$(BUNDLE)/PkgInfo</if>
35 <if cond="TOOLKIT=='OSX_COCOA'">$(BUNDLE)/PkgInfo</if>
36 <if cond="TOOLKIT=='OSX_IPHONE'">$(BUNDLE)/PkgInfo</if>
37 <if cond="TOOLKIT=='COCOA'">$(BUNDLE)/PkgInfo</if>
40 <add-target target="$(BUNDLE_TGT)" type="action"
41 cond="target and PLATFORM_MACOSX=='1'"/>
42 <modify-target target="$(BUNDLE_TGT)">
43 <!-- required data: -->
44 <depends>$(id)</depends>
45 <depends-on-file>$(BUNDLE_PLIST)</depends-on-file>
46 <depends-on-file>$(BUNDLE_ICON)</depends-on-file>
47 <depends-on-file>$(BUNDLE_RESOURCES)</depends-on-file>
50 <!-- create the directories: -->
52 mkdir -p $(BUNDLE)/MacOS
53 mkdir -p $(BUNDLE)/Resources
56 sed -e "s/IDENTIFIER/$(BUNDLE_IDENTIFIER)/" \
57 -e "s/EXECUTABLE/$(id)/" \
58 -e "s/VERSION/$(WX_VERSION)/" \
59 $(BUNDLE_PLIST) >$(BUNDLE)/Info.plist
62 /bin/echo "APPL????" >$(BUNDLE)/PkgInfo
64 <!-- move the binary: -->
65 ln -f $(ref("__targetdir",id))$(ref("__targetname",id)) $(BUNDLE)/MacOS/$(id)
67 <!-- copy the application icon: -->
68 cp -f $(BUNDLE_ICON) $(BUNDLE)/Resources/wxmac.icns
70 <if cond="BUNDLE_RESOURCES!=''">
72 <!-- copy all other bundle resources: -->
73 cp -f $(BUNDLE_RESOURCES) $(BUNDLE)/Resources
79 <!-- add pseudo target id_bundle: -->
80 <add-target target="$(id)_bundle" type="phony"
81 cond="target and PLATFORM_MACOSX=='1'"/>
82 <modify-target target="$(id)_bundle">
83 <dependency-of>all</dependency-of>
84 <depends>$(BUNDLE_TGT_REF)</depends>
87 <!-- "make clean" should delete the bundle: -->
88 <modify-target target="clean">
89 <command>rm -rf $(id).app</command>