wxWidgets/build/bakefiles/mac_bundles.bkl
Vadim Zeitlin 5d134711a1 Add BUNDLE_FONT_RESOURCES and use it in font sample
Allow copying font files to the Fonts subdirectory of the app bundle,
private fonts can only be loaded from there under macOS currently.
2017-11-13 22:29:29 +01:00

106 lines
3.9 KiB
XML

<?xml version="1.0" ?>
<makefile>
<!--
Support for application bundles, for wxWidgets samples.
-->
<!--
Nasty hack: use $(srcdir) to obtain usable CFBundleIdentifier suffix;
converts $(srcdir) like "../../samples/minimal" to "samples.minimal".
-->
<set var="BUNDLE_IDENTIFIER">
`echo $(DOLLAR)(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`
</set>
<set var="BUNDLE_PLIST" overwrite="0">
$(TOP_SRCDIR)src/osx/carbon/Info.plist.in
</set>
<set var="BUNDLE_ICON" overwrite="0">
$(TOP_SRCDIR)src/osx/carbon/wxmac.icns
</set>
<set var="BUNDLE_RESOURCES" overwrite="0"></set>
<set var="BUNDLE_FONT_RESOURCES" overwrite="0"></set>
<define-tag name="wx-mac-app-bundle" rules="exe">
<!-- bundle directory: -->
<set var="BUNDLE">$(id).app/Contents</set>
<set var="BUNDLE_TGT">$(BUNDLE)/PkgInfo</set>
<set var="BUNDLE_TGT_REF">
<!-- TODO Remove Mac -->
<if cond="TOOLKIT=='MAC'">$(BUNDLE)/PkgInfo</if>
<if cond="TOOLKIT=='OSX_CARBON'">$(BUNDLE)/PkgInfo</if>
<if cond="TOOLKIT=='OSX_COCOA'">$(BUNDLE)/PkgInfo</if>
<if cond="TOOLKIT=='OSX_IPHONE'">$(BUNDLE)/PkgInfo</if>
<if cond="TOOLKIT=='COCOA'">$(BUNDLE)/PkgInfo</if>
</set>
<add-target target="$(BUNDLE_TGT)" type="action"
cond="target and PLATFORM_MACOSX=='1'"/>
<modify-target target="$(BUNDLE_TGT)">
<!-- required data: -->
<depends>$(id)</depends>
<depends-on-file>$(BUNDLE_PLIST)</depends-on-file>
<depends-on-file>$(BUNDLE_ICON)</depends-on-file>
<depends-on-file>$(BUNDLE_RESOURCES)</depends-on-file>
<depends-on-file>$(BUNDLE_FONT_RESOURCES)</depends-on-file>
<command>
<!-- create the directories: -->
mkdir -p $(BUNDLE)
mkdir -p $(BUNDLE)/MacOS
mkdir -p $(BUNDLE)/Resources
<!-- Info.plist: -->
sed -e "s/IDENTIFIER/$(BUNDLE_IDENTIFIER)/" \
-e "s/EXECUTABLE/$(id)/" \
-e "s/VERSION/$(WX_VERSION)/" \
$(BUNDLE_PLIST) >$(BUNDLE)/Info.plist
<!-- PkgInfo: -->
/bin/echo "APPL????" >$(BUNDLE)/PkgInfo
<!-- move the binary: -->
ln -f $(ref("__targetdir",id))$(ref("__targetname",id)) $(BUNDLE)/MacOS/$(id)
<!-- copy the application icon: -->
cp -f $(BUNDLE_ICON) $(BUNDLE)/Resources/wxmac.icns
</command>
<if cond="BUNDLE_RESOURCES!=''">
<command>
<!-- copy all other bundle resources: -->
cp -f $(BUNDLE_RESOURCES) $(BUNDLE)/Resources
</command>
</if>
<if cond="BUNDLE_FONT_RESOURCES!=''">
<!--
Special case of font resources, which must be copied into
the Fonts subdirectory used in src/osx/carbon/Info.plist.in file.
-->
<command>
mkdir -p $(BUNDLE)/Resources/Fonts
cp -f $(BUNDLE_FONT_RESOURCES) $(BUNDLE)/Resources/Fonts
</command>
</if>
</modify-target>
<!-- add pseudo target id_bundle: -->
<add-target target="$(id)_bundle" type="phony"
cond="target and PLATFORM_MACOSX=='1'"/>
<modify-target target="$(id)_bundle">
<dependency-of>all</dependency-of>
<depends>$(BUNDLE_TGT_REF)</depends>
</modify-target>
<!-- "make clean" should delete the bundle: -->
<modify-target target="clean">
<command>rm -rf $(id).app</command>
</modify-target>
</define-tag>
</makefile>