Extract OS X non-GUI event loop in a separate header.
[wxWidgets.git] / build / bakefiles / mac_bundles.bkl
1 <?xml version="1.0" ?>
2 <!-- $Id$ -->
3
4 <makefile>
5
6     <!--
7     Support for application bundles, for wxWidgets samples.
8     -->
9     
10     <!-- 
11     Nasty hack: use $(srcdir) to obtain usable CFBundleIdentifier suffix;
12     converts $(srcdir) like "../../samples/minimal" to "samples.minimal".
13     -->
14     <set var="BUNDLE_IDENTIFIER">
15         `echo $(DOLLAR)(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`
16     </set>
17     
18     <set var="BUNDLE_PLIST" overwrite="0">
19         $(TOP_SRCDIR)src/osx/carbon/Info.plist.in
20     </set>
21     <set var="BUNDLE_ICON" overwrite="0">
22         $(TOP_SRCDIR)src/osx/carbon/wxmac.icns
23     </set>
24     <set var="BUNDLE_RESOURCES" overwrite="0"></set>
25
26     <define-tag name="wx-mac-app-bundle" rules="exe">
27
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>
38         </set>
39
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>
48
49             <command>
50                 <!-- create the directories: -->
51                 mkdir -p $(BUNDLE)
52                 mkdir -p $(BUNDLE)/MacOS
53                 mkdir -p $(BUNDLE)/Resources
54
55                 <!-- Info.plist: -->
56                 sed -e "s/IDENTIFIER/$(BUNDLE_IDENTIFIER)/" \
57                     -e "s/EXECUTABLE/$(id)/" \
58                     -e "s/VERSION/$(WX_VERSION)/" \
59                     $(BUNDLE_PLIST) >$(BUNDLE)/Info.plist
60
61                 <!-- PkgInfo: -->
62                 /bin/echo "APPL????" >$(BUNDLE)/PkgInfo
63
64                 <!-- move the binary: -->
65                 ln -f $(ref("__targetdir",id))$(ref("__targetname",id)) $(BUNDLE)/MacOS/$(id)
66
67                 <!-- copy the application icon: -->
68                 cp -f $(BUNDLE_ICON) $(BUNDLE)/Resources/wxmac.icns
69                 </command>            
70             <if cond="BUNDLE_RESOURCES!=''">
71                 <command>
72                     <!-- copy all other bundle resources: -->
73                     cp -f $(BUNDLE_RESOURCES) $(BUNDLE)/Resources
74                 </command>
75             </if>
76  
77         </modify-target>
78         
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>
85         </modify-target>
86
87         <!-- "make clean" should delete the bundle: -->
88         <modify-target target="clean">
89             <command>rm -rf $(id).app</command>
90         </modify-target>
91         
92     </define-tag>
93
94 </makefile>