Release/Makefile
author Peter Hosey <hg@boredzo.org>
Fri Sep 11 10:50:56 2009 -0700 (2009-09-11)
changeset 4394 6e6d39bbec43
parent 4386 c317682ae865
child 4407 abfcfbcdbaf8
permissions -rw-r--r--
Added an uninstaller for GrowlMail, based off of the one for Growl.
evands@3667
     1
##########################
evands@3667
     2
### Versioning:
evands@3690
     3
###   * Set VERSION and BETA below. BETA should be TRUE or FALSE.
evands@3667
     4
###   * Update the version struct in Core/Source/GrowlApplicationController.m 
evands@3667
     5
###       (needed for proper version checking)
evands@3667
     6
###   * Update the version string in Extras/growlnotify/main.m
evands@3667
     7
#
hg@4386
     8
VERSION=1.2b3
hg@4292
     9
BETA=TRUE
evands@3690
    10
evands@3667
    11
#
evands@3667
    12
#########################
evands@3667
    13
#
evands@3667
    14
# No changes should be needed below this line
evands@3667
    15
#
evands@3667
    16
#########################
evands@3713
    17
RELEASE_FILENAME=Growl-$(VERSION)
evands@4074
    18
RELEASE_NAME="Growl-$(VERSION)"
evands@3713
    19
RELEASE_SDK_NAME="Growl $(VERSION) SDK"
evands@3667
    20
boredzo@3803
    21
SRC_DIR=$(PWD)/..
bgannin@3368
    22
BUILD_DIR=build
bgannin@3368
    23
GROWL_DIR=$(BUILD_DIR)/Growl
bgannin@3368
    24
SDK_DIR=$(BUILD_DIR)/SDK
hg@4293
    25
FMWK_DIR=$(BUILD_DIR)/Growl-$(VERSION)-Framework
hg@4293
    26
FMWK_TBZ_NAME=Growl-$(VERSION)-Framework.tbz
hg@4291
    27
BUILDSTYLE=Release
bgannin@3368
    28
BUILDFLAGS="BUILDCONFIGURATION=$(BUILDSTYLE)"
Peter@4200
    29
PRODUCT_DIR=$(shell defaults read com.apple.Xcode PBXApplicationwideBuildSettings 2> /dev/null | cat > XcodeBuildSettings.plist && defaults read $PWD/XcodeBuildSettings SYMROOT 2> /dev/null; rm XcodeBuildSettings.plist)
bgannin@3368
    30
ifeq ($(strip $(PRODUCT_DIR)),)
bgannin@3368
    31
	GROWL_BUILD_DIR=$(SRC_DIR)/build/$(BUILDSTYLE)
bgannin@3368
    32
	GROWLNOTIFY_BUILD_DIR=$(SRC_DIR)/Extras/growlnotify/build/$(BUILDSTYLE)
bgannin@3368
    33
	GROWLTUNES_BUILD_DIR=$(SRC_DIR)/Extras/GrowlTunes/build/$(BUILDSTYLE)
bgannin@3368
    34
	HARDWAREGROWLER_BUILD_DIR=$(SRC_DIR)/Extras/HardwareGrowler/build/$(BUILDSTYLE)
bgannin@3368
    35
	GROWLMAIL_BUILD_DIR=$(SRC_DIR)/Extras/GrowlMail/build/$(BUILDSTYLE)
bgannin@3368
    36
	GROWLSAFARI_BUILD_DIR=$(SRC_DIR)/Extras/GrowlSafari/build/$(BUILDSTYLE)
bgannin@3368
    37
else
bgannin@3368
    38
	TARGET_BUILD_DIR=$(PRODUCT_DIR)/$(BUILDSTYLE)
bgannin@3368
    39
	GROWL_BUILD_DIR=$(TARGET_BUILD_DIR)
bgannin@3368
    40
	GROWLNOTIFY_BUILD_DIR=$(TARGET_BUILD_DIR)
bgannin@3368
    41
	GROWLTUNES_BUILD_DIR=$(TARGET_BUILD_DIR)
bgannin@3368
    42
	HARDWAREGROWLER_BUILD_DIR=$(TARGET_BUILD_DIR)
bgannin@3368
    43
	GROWLMAIL_BUILD_DIR=$(TARGET_BUILD_DIR)
bgannin@3368
    44
	GROWLSAFARI_BUILD_DIR=$(TARGET_BUILD_DIR)
bgannin@3368
    45
endif
Peter@4196
    46
DSYM_DIR=$(BUILD_DIR)/Growl-dSYM-$(VERSION)
evands@3710
    47
PACKAGE_MAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
evands@3713
    48
ART_DIR=Artwork
bgannin@3368
    49
evands@3667
    50
#########################
evands@3667
    51
evands@3667
    52
.PHONY: all assertnochanges assertnoconflicts compile clean release source version
evands@3667
    53
evands@3667
    54
all: assertnochanges version compile release
evands@3667
    55
all-withlocalchanges: assertnoconflicts version compile release
boredzo@3475
    56
boredzo@3475
    57
assertnochanges:
Peter@4185
    58
	if [[ 0 -ne `hg st | wc -l` ]]; then \
Peter@4185
    59
		echo 'You have local changes. Please do not build releases from an unclean working copy. You must revert the changes, commit them, or clone your repository and build from that.' 1>&2; \
boredzo@3489
    60
		exit 1; \
boredzo@3489
    61
	fi
boredzo@3475
    62
assertnoconflicts:
Peter@4185
    63
	if [[ 0 -ne `hg resolve --list | grep -E '^U' | wc -l` ]]; then \
Peter@4185
    64
		echo 'You have conflicts in your working copy. You will not be able to build until these are resolved. Also, remember that even after you have fixed all conflict marks, you must use "hg resolve" to re-try your last update or merge; otherwise, hg will still believe the files are conflicted.' 1>&2; \
boredzo@3489
    65
		exit 2; \
boredzo@3489
    66
	fi
bgannin@3368
    67
evands@3667
    68
version:
evands@3667
    69
	@# update the CFBundleVersion
evands@3705
    70
	defaults write $(SRC_DIR)/Core/Resources/GrowlHelperApp-Info CFBundleVersion '$(VERSION)'
evands@3811
    71
	defaults write $(SRC_DIR)/Framework/Resources/Growl-WithInstaller.framework-Info CFBundleVersion '$(VERSION)'
evands@3811
    72
	defaults write $(SRC_DIR)/Framework/Resources/Growl.framework-Info CFBundleVersion '$(VERSION)'
evands@3705
    73
	defaults write $(SRC_DIR)/Core/Resources/Info CFBundleVersion '$(VERSION)'
evands@3705
    74
	defaults write $(SRC_DIR)/Extras/GrowlCode/Info CFBundleVersion '$(VERSION)'
evands@3705
    75
	defaults write $(SRC_DIR)/Extras/GrowlMail/Info CFBundleVersion '$(VERSION)'
evands@3705
    76
	defaults write $(SRC_DIR)/Extras/GrowlSafari/Info CFBundleVersion '$(VERSION)'
hg@4216
    77
	defaults write $(SRC_DIR)/Extras/GrowlSafari/GrowlSafariLoader-Info CFBundleVersion '$(VERSION)'
evands@3705
    78
	defaults write $(SRC_DIR)/Extras/GrowlTunes/Info CFBundleVersion '$(VERSION)'
evands@3705
    79
	defaults write $(SRC_DIR)/Extras/HardwareGrowler/Info CFBundleVersion '$(VERSION)'
evands@3705
    80
	defaults write $(SRC_DIR)/StatusItem/Resources/MenuExtra-Info CFBundleVersion '$(VERSION)'
evands@3667
    81
evands@3667
    82
	@# update the CFBundleShortVersionString
evands@3705
    83
	defaults write $(SRC_DIR)/Core/Resources/GrowlHelperApp-Info CFBundleShortVersionString '$(VERSION)'
evands@3811
    84
	defaults write $(SRC_DIR)/Framework/Resources/Growl-WithInstaller.framework-Info CFBundleShortVersionString '$(VERSION)'
evands@3811
    85
	defaults write $(SRC_DIR)/Framework/Resources/Growl.framework-Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    86
	defaults write $(SRC_DIR)/Core/Resources/Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    87
	defaults write $(SRC_DIR)/Extras/GrowlCode/Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    88
	defaults write $(SRC_DIR)/Extras/GrowlMail/Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    89
	defaults write $(SRC_DIR)/Extras/GrowlSafari/Info CFBundleShortVersionString '$(VERSION)'
hg@4216
    90
	defaults write $(SRC_DIR)/Extras/GrowlSafari/GrowlSafariLoader-Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    91
	defaults write $(SRC_DIR)/Extras/GrowlTunes/Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    92
	defaults write $(SRC_DIR)/Extras/HardwareGrowler/Info CFBundleShortVersionString '$(VERSION)'
evands@3705
    93
	defaults write $(SRC_DIR)/StatusItem/Resources/MenuExtra-Info CFBundleShortVersionString '$(VERSION)'
evands@3667
    94
evands@3667
    95
	@# Convert back to XML plist, since defaults creates binary plists
evands@3667
    96
	plutil -convert xml1 $(SRC_DIR)/Core/Resources/GrowlHelperApp-Info.plist
evands@3815
    97
	plutil -convert xml1 $(SRC_DIR)/Framework/Resources/Growl-WithInstaller.framework-Info.plist
evands@3815
    98
	plutil -convert xml1 $(SRC_DIR)/Framework/Resources/Growl.framework-Info.plist 
evands@3667
    99
	plutil -convert xml1 $(SRC_DIR)/Core/Resources/Info.plist
evands@3667
   100
	plutil -convert xml1 $(SRC_DIR)/Extras/GrowlCode/Info.plist
evands@3667
   101
	plutil -convert xml1 $(SRC_DIR)/Extras/GrowlMail/Info.plist
evands@3667
   102
	plutil -convert xml1 $(SRC_DIR)/Extras/GrowlSafari/Info.plist
hg@4216
   103
	plutil -convert xml1 $(SRC_DIR)/Extras/GrowlSafari/GrowlSafariLoader-Info.plist
evands@3667
   104
	plutil -convert xml1 $(SRC_DIR)/Extras/GrowlTunes/Info.plist
evands@3667
   105
	plutil -convert xml1 $(SRC_DIR)/Extras/HardwareGrowler/Info.plist
evands@3667
   106
	plutil -convert xml1 $(SRC_DIR)/StatusItem/Resources/MenuExtra-Info.plist
evands@3667
   107
bgannin@3368
   108
compile:
Peter@4197
   109
	find $(SRC_DIR) -name build -prune -print0 | xargs -0 rm -R
bgannin@3368
   110
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)
bgannin@3368
   111
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)/Extras/GrowlMail
bgannin@3368
   112
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)/Extras/GrowlSafari
bgannin@3368
   113
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)/Extras/growlnotify
bgannin@3368
   114
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)/Extras/HardwareGrowler
bgannin@3368
   115
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)/Extras/GrowlTunes
chris@4247
   116
	$(MAKE) $(BUILDFLAGS) -C $(SRC_DIR)/Developer\ Tools/BeepHammer
chris@4247
   117
bgannin@3368
   118
bgannin@3368
   119
clean:
bgannin@3368
   120
	rm -rf $(BUILD_DIR)
bgannin@3368
   121
bgannin@3368
   122
realclean: clean
bgannin@3368
   123
	../build.sh clean
bgannin@3368
   124
bgannin@3368
   125
release:
bgannin@3368
   126
	@# clean build directory
bgannin@3368
   127
	rm -rf $(BUILD_DIR)
bgannin@3368
   128
	mkdir $(BUILD_DIR)
bgannin@3368
   129
	mkdir $(GROWL_DIR)
evands@3690
   130
	
Peter@4196
   131
	@# Archive dSYM bundles.
Peter@4196
   132
	mkdir $(DSYM_DIR)
Peter@4196
   133
	mv $(GROWL_BUILD_DIR)/*.dSYM $(DSYM_DIR)
Peter@4196
   134
	mv $(GROWLNOTIFY_BUILD_DIR)/*.dSYM $(DSYM_DIR)
Peter@4196
   135
	mv $(GROWLTUNES_BUILD_DIR)/*.dSYM $(DSYM_DIR)
Peter@4196
   136
	mv $(HARDWAREGROWLER_BUILD_DIR)/*.dSYM $(DSYM_DIR)
Peter@4196
   137
	mv $(GROWLMAIL_BUILD_DIR)/*.dSYM $(DSYM_DIR)
Peter@4196
   138
	mv $(GROWLSAFARI_BUILD_DIR)/*.dSYM $(DSYM_DIR)
Peter@4196
   139
	@# Note: -C only applies to the input names, not -f, so it is correct to use notdir on the directory name and leave it off of the tarball name.
Peter@4196
   140
	tar -C $(dir $(DSYM_DIR)) -cjf $(DSYM_DIR).tbz $(notdir $(DSYM_DIR))
Peter@4196
   141
	
bgannin@3368
   142
	@# copy uninstaller
bgannin@3368
   143
	cp -R "Uninstall Growl.app" $(GROWL_DIR)
bgannin@3368
   144
	/Developer/Tools/SetFile -a E $(GROWL_DIR)/Uninstall\ Growl.app
evands@3690
   145
	
bgannin@3368
   146
	@# copy webloc files
bgannin@3368
   147
	cp "Growl Documentation.webloc" "Growl version history.webloc" "Get more styles.webloc" $(GROWL_DIR)
evands@3690
   148
	
bgannin@3368
   149
	@# hide extensions of webloc files
bgannin@3368
   150
	/Developer/Tools/SetFile -a E $(GROWL_DIR)/*.webloc
evands@3690
   151
	
evands@3710
   152
	@# build the prefpane package
hg@4382
   153
	$(PACKAGE_MAKER) --no-relocate --doc Growl/Growl\ Installer.pmdoc --out $(GROWL_DIR)/Growl.pkg --version $(VERSION) --id com.growl.growl.pkg -v
evands@3690
   154
	
bgannin@3368
   155
	@# copy the extras
bgannin@3368
   156
	mkdir $(GROWL_DIR)/Extras
bgannin@3368
   157
	mkdir $(GROWL_DIR)/Extras/growlnotify
bgannin@3368
   158
	cp $(GROWLNOTIFY_BUILD_DIR)/growlnotify $(GROWL_DIR)/Extras/growlnotify
bgannin@3368
   159
	cp $(SRC_DIR)/Extras/growlnotify/growlnotify.1 $(GROWL_DIR)/Extras/growlnotify
bgannin@3368
   160
	cp $(SRC_DIR)/Extras/growlnotify/install.sh $(GROWL_DIR)/Extras/growlnotify
evands@3778
   161
	cp $(SRC_DIR)/Extras/growlnotify/*.txt $(GROWL_DIR)/Extras/growlnotify
bgannin@3368
   162
	mkdir $(GROWL_DIR)/Extras/GrowlTunes
bgannin@3368
   163
	cp -R $(GROWLTUNES_BUILD_DIR)/GrowlTunes.app $(GROWL_DIR)/Extras/GrowlTunes
evands@3778
   164
	cp -R $(SRC_DIR)/Extras/GrowlTunes/*.rtfd $(GROWL_DIR)/Extras/GrowlTunes
bgannin@3368
   165
	mkdir $(GROWL_DIR)/Extras/HardwareGrowler
bgannin@3368
   166
	cp -R $(HARDWAREGROWLER_BUILD_DIR)/HardwareGrowler.app $(GROWL_DIR)/Extras/HardwareGrowler
evands@3778
   167
	cp $(SRC_DIR)/Extras/HardwareGrowler/*.txt $(GROWL_DIR)/Extras/HardwareGrowler
evands@3690
   168
	
hg@4280
   169
	@# build GrowlMail package
bgannin@3368
   170
	mkdir $(GROWL_DIR)/Extras/GrowlMail
hg@4382
   171
	$(PACKAGE_MAKER) --no-relocate --doc GrowlMail/GrowlMail\ Installer.pmdoc --out $(GROWL_DIR)/Extras/GrowlMail/GrowlMail.pkg --version $(VERSION) --id com.growl.growlmail.pkg -v	
hg@4394
   172
	cp -R "Uninstall GrowlMail.app" $(GROWL_DIR)/Extras/GrowlMail
hg@4394
   173
	/Developer/Tools/SetFile -a E $(GROWL_DIR)/Extras/GrowlMail/Uninstall\ GrowlMail.app
evands@3778
   174
	cp $(SRC_DIR)/Extras/GrowlMail/*.rtf $(GROWL_DIR)/Extras/GrowlMail
evands@3690
   175
	
bgannin@3368
   176
	@# build GrowlSafari package
bgannin@3368
   177
	mkdir $(GROWL_DIR)/Extras/GrowlSafari
hg@4382
   178
	$(PACKAGE_MAKER) --no-relocate --doc GrowlSafari/GrowlSafari\ Installer.pmdoc --out $(GROWL_DIR)/Extras/GrowlSafari/GrowlSafari.pkg --version $(VERSION) --id com.growl.growlsafari.pkg -v	
evands@3690
   179
	
bgannin@3368
   180
	@# build the SDK
bgannin@3368
   181
	mkdir $(SDK_DIR)
evands@3690
   182
	
bgannin@3368
   183
	@# copy the webloc files
bgannin@3368
   184
	cp "Growl Developer Documentation.webloc" "Growl version history for developers.webloc" $(SDK_DIR)
evands@3690
   185
	
bgannin@3368
   186
	@# hide extensions of webloc files
bgannin@3368
   187
	/Developer/Tools/SetFile -a E $(SDK_DIR)/*.webloc
evands@3690
   188
	
bgannin@3368
   189
	@# copy the scripts
tick@3585
   190
	#cp -R $(SRC_DIR)/Scripts $(GROWL_DIR)
evands@3690
   191
	
chris@4247
   192
	@# copy over beep hammer
chris@4247
   193
	mkdir $(SDK_DIR)/BeepHammer
hg@4290
   194
	cp -R $(SRC_DIR)/Developer\ Tools/BeepHammer/build/$(BUILDSTYLE)/BeepHammer.app $(SDK_DIR)/BeepHammer
chris@4247
   195
	
bgannin@3368
   196
	@# copy over relevant files to compile directly into app
bgannin@3368
   197
	mkdir $(SDK_DIR)/Built-In
bgannin@3368
   198
	cp $(SRC_DIR)/Framework/Source/GrowlApplicationBridge.h $(SDK_DIR)/Built-In
bgannin@3368
   199
	cp $(SRC_DIR)/Framework/Source/GrowlApplicationBridge.m $(SDK_DIR)/Built-In
bgannin@3368
   200
	cp $(SRC_DIR)/Common/Source/GrowlDefines.h $(SDK_DIR)/Built-In
bgannin@3368
   201
	cp $(SRC_DIR)/Common/Source/GrowlDefinesInternal.h $(SDK_DIR)/Built-In
bgannin@3368
   202
	cp $(SRC_DIR)/Common/Source/GrowlPathUtilities.h $(SDK_DIR)/Built-In
bgannin@3368
   203
	cp $(SRC_DIR)/Common/Source/GrowlPathUtilities.m $(SDK_DIR)/Built-In 
bgannin@3368
   204
	cp $(SRC_DIR)/Common/Source/CFGrowlAdditions.h $(SDK_DIR)/Built-In
bgannin@3368
   205
	cp $(SRC_DIR)/Common/Source/CFGrowlAdditions.c $(SDK_DIR)/Built-In
bgannin@3368
   206
	cp $(SRC_DIR)/Common/Source/CFGrowlDefines.h $(SDK_DIR)/Built-In
bgannin@3368
   207
	cp $(SRC_DIR)/Common/Source/CFURLAdditions.h $(SDK_DIR)/Built-In
bgannin@3368
   208
	cp $(SRC_DIR)/Common/Source/CFURLAdditions.c $(SDK_DIR)/Built-In
bgannin@3368
   209
	cp $(SRC_DIR)/Common/Source/CFMutableDictionaryAdditions.h $(SDK_DIR)/Built-In
bgannin@3368
   210
	cp $(SRC_DIR)/Common/Source/CFMutableDictionaryAdditions.c $(SDK_DIR)/Built-In
bgannin@3368
   211
	cp $(SRC_DIR)/Core/Source/GrowlPreferencesController.h $(SDK_DIR)/Built-In
bgannin@3368
   212
	cp $(SRC_DIR)/Core/Source/GrowlTicketController.h $(SDK_DIR)/Built-In
evands@3690
   213
	
bgannin@3368
   214
	@# copy the frameworks
bgannin@3368
   215
	mkdir $(SDK_DIR)/Frameworks
bgannin@3368
   216
	cp -R $(GROWL_BUILD_DIR)/Growl.framework $(GROWL_BUILD_DIR)/Growl-WithInstaller.framework $(SDK_DIR)/Frameworks
evands@3690
   217
	
bgannin@3368
   218
	@# copy the bindings
bgannin@3368
   219
	cp -R $(SRC_DIR)/Bindings $(SDK_DIR)
bgannin@3368
   220
	@# remove the AppleScript binding
bgannin@3368
   221
	rm -rf $(SDK_DIR)/Bindings/applescript
evands@3690
   222
	
bgannin@3368
   223
	@# remove some symlinks
bgannin@3368
   224
	rm $(SDK_DIR)/Bindings/tcl/GrowlDefines.h
bgannin@3368
   225
	rm $(SDK_DIR)/Bindings/tcl/GrowlApplicationBridge.h
bgannin@3368
   226
	rm $(SDK_DIR)/Bindings/tcl/GrowlApplicationBridge.m
evands@3690
   227
	
bgannin@3368
   228
	@# delete svn and backup files
bgannin@3368
   229
	find $(BUILD_DIR) -name ".svn" -type d -exec rm -rf {} \; -prune
evands@3690
   230
	find $(BUILD_DIR) \( -name "*~" -or -name .DS_Store \) -type f -delete
evands@3690
   231
bgannin@3368
   232
	@# make Growl disk image
bgannin@3368
   233
	mkdir $(GROWL_DIR)/.background
tick@3601
   234
	cp $(SRC_DIR)/images/dmg/growlDMGBackground.png $(GROWL_DIR)/.background
evands@3713
   235
	./ensureCustomIconsExtracted $(ART_DIR)
evands@3713
   236
	./make-diskimage.sh $(BUILD_DIR)/$(RELEASE_FILENAME).dmg $(GROWL_DIR) $(RELEASE_NAME) dmg_growl.applescript $(ART_DIR)
Peter@4200
   237
	rm $(ART_DIR)/GrowlIcon
evands@3690
   238
	
bgannin@3368
   239
	@# make SDK disk image
bgannin@3368
   240
	mkdir $(SDK_DIR)/.background
bgannin@3368
   241
	cp $(SRC_DIR)/images/dmg/growlSDK.png $(SDK_DIR)/.background
evands@3713
   242
	./make-diskimage.sh $(BUILD_DIR)/$(RELEASE_FILENAME)-SDK.dmg $(SDK_DIR) $(RELEASE_SDK_NAME) dmg_sdk.applescript
evands@3690
   243
	
bgannin@3368
   244
	@echo Build finished
boredzo@4122
   245
	-growlnotify -n 'Growl Release Makefile' 'Growl disk image built successfully' -m $(RELEASE_FILENAME).dmg --iconpath $(BUILD_DIR)/$(RELEASE_FILENAME).dmg
hg@4293
   246
hg@4293
   247
framework-archive: assertnochanges
hg@4293
   248
	-mkdir "$(BUILD_DIR)"
hg@4293
   249
	-rm -R "$(FMWK_DIR)"
hg@4293
   250
	mkdir "$(FMWK_DIR)"
hg@4293
   251
	-rm "$(BUILD_DIR)/$(FMWK_TBZ_NAME)"
hg@4293
   252
	
hg@4293
   253
	$(MAKE) $(BUILDFLAGS) -C "$(SRC_DIR)" growlapplicationbridge
hg@4293
   254
	
hg@4293
   255
	cp -R "$(GROWL_BUILD_DIR)/Growl.framework" "$(GROWL_BUILD_DIR)/Growl.framework.dSYM" "$(SRC_DIR)/License.txt" "$(FMWK_DIR)"
hg@4293
   256
	
hg@4293
   257
	tar cjf "$(BUILD_DIR)/$(FMWK_TBZ_NAME)" -C "$(dir $(FMWK_DIR))" "$(notdir $(FMWK_DIR))"