From: Marcus Eggenberger Date: Sat, 14 Jun 2008 12:33:42 +0000 (+0200) Subject: quassel and quasselclient targets now generate a bundle on Mac OS X X-Git-Tag: 0.3.0~371^2~3 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=c3d1cf8b2fd6eedbaa342ade567cc573a05861e8 quassel and quasselclient targets now generate a bundle on Mac OS X --- diff --git a/CMakeLists.txt b/CMakeLists.txt index bfcfaf18..d9d8aa5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -158,6 +158,7 @@ if(BUILD_QTCLIENT) ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_I18N} ${WIN32_RC}) set_target_properties(quasselclient PROPERTIES COMPILE_FLAGS "-DQT_GUI_LIB -DQT_NETWORK_LIB -DBUILD_QTUI") target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common ${QUASSEL_QT_LIBRARIES}) + add_custom_command(TARGET quasselclient POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makebundle.py ${CMAKE_SOURCE_DIR} "Quassel Client" quasselclient) endif(BUILD_QTCLIENT) if(BUILD_MONO) @@ -166,4 +167,7 @@ if(BUILD_MONO) ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_SQL} ${RC_I18N} ${WIN32_RC}) set_target_properties(quassel PROPERTIES COMPILE_FLAGS "-DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SCRIPT_LIB -DQT_SQL_LIB -DBUILD_MONO") target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${QUASSEL_QT_LIBRARIES}) + add_custom_command(TARGET quassel POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makebundle.py ${CMAKE_SOURCE_DIR} "Quassel" quassel) endif(BUILD_MONO) + + diff --git a/scripts/build/Info.plist b/scripts/build/Info.plist new file mode 100644 index 00000000..fbc7ac19 --- /dev/null +++ b/scripts/build/Info.plist @@ -0,0 +1,35 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + %(BUNDLE_NAME)s + CFBundleGetInfoString + Quassel IRC Client + CFBundleIconFile + %(ICON_FILE)s + CFBundleIdentifier + org.quassel-irc.client + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Quassel IRC Client + CFBundlePackageType + APPL + CFBundleShortVersionString + %(BUNDLE_VERSION)s + CFBundleSignature + ???? + CFBundleVersion + %(BUNDLE_VERSION)s + + LSRequiresCarbon + + NSHumanReadableCopyright + © 2005-08, Quassel IRC Team + + diff --git a/scripts/build/macosx_makebundle.py b/scripts/build/macosx_makebundle.py new file mode 100755 index 00000000..821ce74e --- /dev/null +++ b/scripts/build/macosx_makebundle.py @@ -0,0 +1,56 @@ +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- + +# ============================== +# Imports +# ============================== +import os +import sys + +# ============================== +# Constants +# ============================== +if len(sys.argv) < 2: + sys.exit(1) + +SOURCE_DIR = sys.argv[1] + +if len(sys.argv) < 4: + BUNDLE_NAME= "Quassel Client" + EXE_NAME = "quasselclient" +else: + BUNDLE_NAME = sys.argv[2] + EXE_NAME = sys.argv[3] +CONTENTS_DIR = BUNDLE_NAME + ".app/Contents/" + +BUNDLE_VERSION = "0.2.0-pre" +ICON_FILE = "src/icons/quassel/quassel.icns" + +def createBundle(): + try: + os.makedirs(CONTENTS_DIR + "MacOS") + os.makedirs(CONTENTS_DIR + "Resources") + except: + pass + +def copyFiles(exeFile, iconFile): + os.system("cp %s %sMacOs/%s" % (exeFile, CONTENTS_DIR.replace(' ', '\ '), BUNDLE_NAME.replace(' ', '\ '))) + os.system("cp %s/%s %s/Resources" % (SOURCE_DIR, iconFile, CONTENTS_DIR.replace(' ', '\ '))) + +def createPlist(bundleName, iconFile, bundleVersion): + templateFile = file(SOURCE_DIR + "/scripts/build/Info.plist", 'r') + template = templateFile.read() + templateFile.close() + print + + plistFile = file(CONTENTS_DIR + "Info.plist", 'w') + plistFile.write(template % {"BUNDLE_NAME" : bundleName, + "ICON_FILE" : iconFile[iconFile.rfind("/")+1:], + "BUNDLE_VERSION" : bundleVersion}) + plistFile.close() + +if __name__ == "__main__": + createBundle() + createPlist(BUNDLE_NAME, ICON_FILE, BUNDLE_VERSION) + copyFiles(EXE_NAME, ICON_FILE) + pass