http://slackware.bholcomb.com/slackware/slackware-11.0/source/xap/xscreensaver/xscree...
[xscreensaver] / OSX / Makefile
1 # XScreenSaver for MacOS X, Copyright (c) 2006 by Jamie Zawinski.
2
3 XCODE_TARGET = "All Savers"
4
5 default: release
6 all: debug release
7
8 clean:
9         -rm -rf build
10 #       cd ..; xcodebuild -target $(XCODE_TARGET) clean
11
12 distclean:
13         -rm -f config.status config.cache config.log \
14           *.bak *.rej TAGS *~ "#"*
15         -rm -rf autom4te*.cache
16         -rm -rf build
17
18 distdepend:: update_plist_version
19
20 debug:
21         cd ..; xcodebuild -target $(XCODE_TARGET) -configuration Debug   build
22
23 release:
24         cd ..; xcodebuild -target $(XCODE_TARGET) -configuration Release build
25
26 echo_tarfiles:
27         @echo `find . \
28           \( \( -name '.??*' -o -name build -o -name CVS -o -name '*~*' \
29              -o -name 'jwz.*' \) \
30              -prune \) \
31           -o -type f -print \
32         | sed 's@^\./@@' \
33         | sort`
34
35 update_plist_version:
36         @                                                                     \
37   SRC=../utils/version.h ;                                                    \
38   V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ;                 \
39   T=/tmp/xs.$$$$ ;                                                            \
40   for S in XScreenSaver.plist SaverTester.plist ; do                          \
41     echo -n "Updating version number in $$S to \"$$V\"... " ;                 \
42     KEYS="CFBundleVersion|CFBundleShortVersionString" ;                       \
43     perl -0777 -pne                                                           \
44       "s@(<key>($$KEYS)</key>\s*<string>)[^<>]+(</string>)@\$${1}$$V\$${3}@g" \
45       < $$S > $$T ;                                                           \
46     if cmp -s $$S $$T ; then                                                  \
47       echo "unchanged." ;                                                     \
48     else                                                                      \
49       cat $$T > $$S ;                                                         \
50       echo "done." ;                                                          \
51     fi ;                                                                      \
52   done ;                                                                      \
53   rm $$T
54
55 # -format UDBZ saves 4% (~1.2 MB) over UDZO.
56 dmg::
57         @                                                                     \
58   set -e ;                                                                    \
59   SRC=../utils/version.h ;                                                    \
60   V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ;                 \
61   TMPDIR="build" ;                                                            \
62   SRC="build/Release" ;                                                       \
63   BASE="xscreensaver-$$V" ;                                                   \
64   OUTDIR="../archive" ;                                                       \
65   DMG="$$OUTDIR/$$BASE.dmg" ;                                                 \
66   TMPDMG="$$TMPDIR/tmp.dmg" ;                                                 \
67   VOLNAME="XScreenSaver $$V" ;                                                \
68   STAGE="$$TMPDIR/dmg_stage" ;                                                \
69   rm -f "$$DMG" ;                                                             \
70   rm -rf "$$STAGE" ;                                                          \
71   echo + mkdir "$$STAGE" ;                                                    \
72          mkdir "$$STAGE" ;                                                    \
73   echo + cp -pr "$$SRC/"\*.saver "$$STAGE" ;                                  \
74          cp -pr "$$SRC/"*.saver  "$$STAGE" ;                                  \
75   set -x ;                                                                    \
76   cp -p bindist.rtf "$$STAGE/ READ ME.rtf" ;                                  \
77   cp -p bindist-DS_Store "$$STAGE/.DS_Store" ;                                \
78   cp -p XScreenSaverDMG.icns "$$STAGE/.VolumeIcon.icns" ;                     \
79   /Developer/Tools/SetFile -a C "$$STAGE" ;                                   \
80   /Developer/Tools/SetFile -a E "$$STAGE/ READ ME.rtf" ;                      \
81   hdiutil makehybrid -quiet -ov -hfs -hfs-volume-name "$$VOLNAME"             \
82     -hfs-openfolder "$$STAGE" "$$STAGE" -o "$$TMPDMG" ;                       \
83   rm -rf "$$STAGE" ;                                                          \
84   hdiutil convert -quiet -ov -format UDBZ -imagekey zlib-level=9              \
85     "$$TMPDMG" -o "$$DMG" ;                                                   \
86   rm -f "$$TMPDMG" ;                                                          \
87   ls -ldhgF "$$DMG"
88
89 # Adding this is cute:
90 #    hdiutil internet-enable -yes -quiet "$$DMG"
91 # but means that nobody will ever see the display settings I used!
92 # When finder copies the .dmg to a folder, it doesn't preserve them.