Index: configure.in =================================================================== --- configure.in (revision 244) +++ configure.in (working copy) @@ -6,6 +6,7 @@ AC_CANONICAL_SYSTEM VERSION="0.3.9svn" +SERIAL="`date +%Y%m%d`" # the required version of dclib, checked for by pkg-config DCLIB_PKGCONFIG_VERSION="dclib >= 0.3.9" @@ -14,11 +15,12 @@ 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]) @@ -274,6 +276,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: Info.plist.in =================================================================== --- Info.plist.in (revision 244) +++ 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: TODO =================================================================== --- TODO (revision 244) +++ TODO (working copy) @@ -3,3 +3,6 @@ - Build a ADC protocol library - Migrate from QT to wxWidgets +OS X specific: + - place OS X Makefile variables in correct location in Makefile.am + - 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: Makefile.am =================================================================== --- Makefile.am (revision 244) +++ Makefile.am (working copy) @@ -1,5 +1,23 @@ ####### kdevelop will overwrite this part!!! (begin)########## +INSTALL_DIR = /usr/bin/install -d -m 755 +OTOOL = /usr/bin/otool +HDIUTIL = /usr/bin/hdiutil +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 +52,61 @@ install-data-local: $(mkinstalldirs) $(datadir)/valknut $(INSTALL_DATA) COPYING $(datadir)/valknut/ + +define install_osx_libraries +$(shell $(INSTALL) -m 755 $(dylib) $(OSX_MACOS_TARGET)) +$(shell /usr/bin/install_name_tool -change $(dylib) \@executable_path/$(notdir $(dylib)) $(OSX_MACOS_TARGET)/$(PACKAGE)) +$(shell /usr/bin/install_name_tool -id \@executable_path/$(notdir $(dylib)) $(OSX_MACOS_TARGET)/$(notdir $(dylib))) +$(foreach linked_dylibs_2,$(shell $(OTOOL) -L $(dylib) | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \usr\/lib | grep -v executable_path),$(rename_secondary_osx_libraries)) +endef + +define rename_secondary_osx_libraries +$(shell /usr/bin/install_name_tool -change $(linked_dylibs_2) \@executable_path/$(notdir $(linked_dylibs_2)) $(OSX_MACOS_TARGET)/$(notdir $(dylib))) +endef + +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) + $(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: install-osx-app-bundle + $(foreach dylib,$(shell $(OTOOL) -L $(OSX_MACOS_TARGET)/$(PACKAGE) | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \/usr\/lib),$(install_osx_libraries)) + +install-osx-disk-image: install-osx-app-bundle install-osx-standalone-app + /bin/rm -f $(PACKAGE)-$(VERSION)-`uname -p`.dmg + $(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) + $(HDIUTIL) unmount /Volumes/$(OSX_DMG_TARGET) + $(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'." + +clean-osx: + /bin/rm -rf *.dmg *.sparseimage Valknut.app