Index: valknut/configure.in =================================================================== --- valknut/configure.in (revision 208) +++ valknut/configure.in (working copy) @@ -6,15 +6,17 @@ AC_CANONICAL_SYSTEM VERSION="0.3.9svn" +SERIAL="`date +%Y%m%d`" RELEASE="1" LARGEFILESUPPORT="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" if echo "$VERSION" | grep svn >/dev/null 2>&1; then - VERSION=$VERSION"`date +%Y%m%d`" + VERSION=$VERSION$SERIAL fi AC_SUBST(VERSION) AC_SUBST(RELEASE) +AC_SUBST(SERIAL) AM_INIT_AUTOMAKE([valknut],[$VERSION]) @@ -265,6 +267,7 @@ AC_CONFIG_FILES([ Makefile ]) AC_CONFIG_FILES([ valknut.spec ]) AC_CONFIG_FILES([ valknut.lsm ]) +AC_CONFIG_FILES([ Info.plist ]) AC_CONFIG_FILES([ valknut/Makefile ]) AC_CONFIG_FILES([ valknut/docs/Makefile ]) AC_CONFIG_FILES([ valknut/docs/en/Makefile ]) Index: valknut/Info.plist.in =================================================================== --- valknut/Info.plist.in (revision 208) +++ valknut/Info.plist.in (working copy) @@ -13,17 +13,17 @@ CFBundleIdentifier de.ketelhot.DC CFBundleLongVersionString - Valknut %VERS% %SERIAL% + Valknut @VERSION@ CFBundleName Valknut CFBundlePackageType APPL CFBundleShortVersionString - %VERS% + @VERSION@ CFBundleSignature ∂çQt CFBundleVersion - %SERIAL% + @SERIAL@ NSAppleScriptEnabled NSHumanReadableCopyright Index: valknut/TODO =================================================================== --- valknut/TODO (revision 208) +++ valknut/TODO (working copy) @@ -3,3 +3,10 @@ - Build a ADC protocol library - Migrate from QT to wxWidgets + - Add "rm -rf *.dmg *.sparseimage Valknut.app" to 'make clean' or 'make distclean'(?). + +OS X specific: + - place OS X Makefile variables in correct location in Makefile.am + - have 'install-osx' dependent on make build being finished + - similar for each of the subsections (depend on previous one) + - have 'make install-osx' (and sub targets) only work when building the native version (ie, only if --enable-mac is set). The Mac X11 version works like any other Unix build/install. This step is not as critical as the other OS X points, but useful. Index: valknut/Makefile.am =================================================================== --- valknut/Makefile.am (revision 208) +++ valknut/Makefile.am (working copy) @@ -1,5 +1,21 @@ ####### kdevelop will overwrite this part!!! (begin)########## +INSTALL_DIR=/usr/bin/install -d -m 755 +OSX_BUNDLE_NAME=Valknut +OSX_APP_DIR=$(OSX_BUNDLE_NAME).app +TS_DIR=$(PACKAGE)/ts +OSX_TRANS_TARGET=$(OSX_APP_DIR)/translation +SOUNDS_DIR=$(PACKAGE)/sounds +OSX_SOUNDS_TARGET=$(OSX_APP_DIR)/sounds +PLUGIN_DIR=$(PACKAGE)/plugin +OSX_PLUGIN_TARGET=$(OSX_APP_DIR)/plugin +ICONS_DIR=$(PACKAGE)/icons +OSX_ICONS_TARGET=$(OSX_APP_DIR)/icons +OSX_CNT_TARGET=$(OSX_APP_DIR)/Contents +OSX_MACOS_TARGET=$(OSX_CNT_TARGET)/MacOS +OSX_RSC_TARGET=$(OSX_CNT_TARGET)/Resources +OSX_DMG_TARGET="$(OSX_BUNDLE_NAME) $(VERSION)" + SUBDIRS = valknut EXTRA_DIST = admin AUTHORS COPYING COPYING.OpenSSL ChangeLog INSTALL INSTALL.MAC README TODO valknut.lsm valknut.spec @@ -34,3 +50,58 @@ install-data-local: $(mkinstalldirs) $(datadir)/valknut $(INSTALL_DATA) COPYING $(datadir)/valknut/ + +# For building the aqua native OS X .app +install-osx: install-osx-app-bundle install-osx-standalone-app install-osx-disk-image + +install-osx-app-bundle: + $(INSTALL_DIR) $(OSX_APP_DIR) + $(INSTALL_DIR) $(OSX_TRANS_TARGET) + $(LRELEASE) $(TS_DIR)/*.ts + $(INSTALL_DATA) $(TS_DIR)/*.qm $(OSX_TRANS_TARGET) + $(INSTALL_DIR) $(OSX_SOUNDS_TARGET)/default + $(INSTALL_DIR) $(OSX_SOUNDS_TARGET)/default + $(INSTALL_DIR) $(OSX_ICONS_TARGET)/appl/default + $(INSTALL_DIR) $(OSX_ICONS_TARGET)/emot/default + $(INSTALL_DIR) $(OSX_ICONS_TARGET)/user/default + $(INSTALL_DATA) $(ICONS_DIR)/*.xpm $(OSX_ICONS_TARGET)/appl/default + $(INSTALL_DATA) $(ICONS_DIR)/*.xml $(OSX_ICONS_TARGET)/appl/default + /bin/mv $(OSX_ICONS_TARGET)/appl/default/emoticons.xml $(OSX_ICONS_TARGET)/emot/default + /bin/mv $(OSX_ICONS_TARGET)/appl/default/emoticons.xpm $(OSX_ICONS_TARGET)/emot/default + /bin/mv $(OSX_ICONS_TARGET)/appl/default/usericons.xml $(OSX_ICONS_TARGET)/user/default + /bin/mv $(OSX_ICONS_TARGET)/appl/default/usericons.xpm $(OSX_ICONS_TARGET)/user/default + $(INSTALL_DIR) $(OSX_CNT_TARGET) +# $(SED) -e "s|%VERS%|$(VERSION)|g;s|%SERIAL%|$(APP_SERIAL)|g" Info.plist.in > $(OSX_CNT_TARGET)/Info.plist + $(INSTALL_DATA) Info.plist $(OSX_CNT_TARGET)/Info.plist + $(INSTALL_DATA) PkgInfo.in $(OSX_CNT_TARGET)/PkgInfo + $(INSTALL_DIR) $(OSX_MACOS_TARGET) + $(INSTALL) -s -m 755 $(PACKAGE)/$(PACKAGE) $(OSX_MACOS_TARGET)/$(PACKAGE) + $(INSTALL_DIR) $(OSX_RSC_TARGET) + $(INSTALL_DATA) $(ICONS_DIR)/icon_128x128.icns $(OSX_RSC_TARGET)/$(OSX_BUNDLE_NAME).icns + +install-osx-standalone-app: +# Copy the .dylibs that are linked by the program +# This loop is only needed if you want to build a standalone .app bundle. + for i in `otool -L $(OSX_MACOS_TARGET)/$(PACKAGE) | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \/usr\/lib` ; do + /bin/cp -p $(i) $(OSX_MACOS_TARGET); + @echo "Copied `basename $(i)`" + /usr/bin/install_name_tool -change $(i) @executable_path/`basename $(i)` $(OSX_MACOS_TARGET)/$(PACKAGE); +# now check paths for other libraries linked by the copied libraries. + for j in `otool -L $(i) | grep version | cut -f 1 -d ' '| grep -v $(i) | grep -v \/System\/Library | grep -v \/usr\/lib` ; do + /usr/bin/install_name_tool -change $(j) @executable_path/`basename $(j)` $(OSX_MACOS_TARGET)/`basename $(i)` + done + done + +install-osx-disk-image: + /usr/bin/hdiutil create -type SPARSE -size 20m -fs HFS+ -volname $(OSX_DMG_TARGET) -attach $(OSX_BUNDLE_NAME)-$(VERSION).sparseimage + /bin/cp -R $(OSX_APP_DIR) /Volumes/$(OSX_DMG_TARGET) + /bin/cp $(PACKAGE)/icons/$(OSX_BUNDLE_NAME)VolumeIcon.icns /Volumes/$(OSX_DMG_TARGET)/.VolumeIcon.icns + /Developer/Tools/SetFile -a C /Volumes/$(OSX_DMG_TARGET)/.VolumeIcon.icns /Volumes/$(OSX_DMG_TARGET) + /usr/bin/hdiutil unmount /Volumes/$(OSX_DMG_TARGET) + /usr/bin/hdiutil convert -imagekey zlib-level=9 -format UDZO $(PACKAGE)-$(VERSION).sparseimage -o $(PACKAGE)-$(VERSION)-`uname -p`.dmg + /bin/rm -f $(PACKAGE)-$(VERSION).sparseimage + @echo "" + @echo "Done building a distributable disk image for $(OSX_BUNDLE_NAME) $(VERSION)." + @echo "The disk image can be found at the root of the" + @echo "build directory `pwd`" + @echo "as '$(PACKAGE)-$(VERSION)-`uname -p`.dmg'."