Note to myself: QByteArray("\000") != QByteArray (1, '\000')
[quassel.git] / CMakeLists.txt
index e5ffc94..5652401 100644 (file)
@@ -3,8 +3,9 @@
 # -DWANT_(CORE|QTCLIENT|MONO)=(ON|OFF)
 #                  : select binaries to build
 # -DQT=/path/to/qt : Choose a Qt4 installation to use instead of the system Qt4
-# -DSTATIC         : Enable static building of Quassel. Use with care.
-# -DSPUTDEV        : Do not use.
+# -DSTATIC=ON      : Enable static building of Quassel. Use with care.
+# -DSPUTDEV=ON     : Do not use.
+# -DDEPLOY=ON      : Mac OS X only. Use only fore redistribution Quassel Packages!!
 #
 # NOTE: You need to remove CMakeCache.txt if you plan to change any of these values!
 
@@ -13,9 +14,9 @@ project(QuasselIRC)
 # Target scopes don't work in older versions
 cmake_minimum_required(VERSION 2.4.7 FATAL_ERROR)
 
-# This would suppress annoying warnings on cmake-2.6, but we can't use it 
-# with 2.4, so... DUH!
-# cmake_policy(SET CMP0003 OLD)  # suppress linker warnings
+if(COMMAND cmake_policy)
+   cmake_policy(SET CMP0003 OLD)  # suppress linker warnings
+endif(COMMAND cmake_policy)
 
 # Use our own (well, KDE's) version of some modules
 # In particular cmake's FindQt4 and FindOpenSSL are quite buggy
@@ -24,11 +25,13 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
 # Various options and variables that can be set on the command line
 option(WANT_CORE     "Build the core (server) binary"           ON)
 option(WANT_QTCLIENT "Build the Qt4 GUI client binary"          ON)
-option(WANT_MONO     "Build the monolithic (all-in-one) binary" ON)
+option(WANT_MONO     "Build the monolithic (all-in-one) binary" OFF)
+
+option(STATIC        "Enable static building (might not be portable)" OFF)
+option(DEPLOY        "Mac OS X only! Adds required libs to bundle resources and create a dmg. Note: requires Qt to be built with 10.4u SDK" OFF)
+option(SPUTDEV       "Do not use!" OFF)
 
-set(STATIC 0 CACHE BOOL "Enable static building (might not be portable)")
 set(QT "" CACHE STRING "Path to a Qt installation to use instead of the system Qt")
-set(SPUTDEV CACHE STRING "Do not use!")
 
 if(STATIC)
   set(CMAKE_BUILD_TYPE Release)
@@ -53,6 +56,12 @@ endif(CMAKE_COMPILER_IS_GNUCXX)
 
 set(QT_MIN_VERSION "4.3.0")
 
+if(APPLE AND DEPLOY)
+  set(CMAKE_OSX_ARCHITECTURES "i386;ppc")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.4")
+  set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/")
+endif(APPLE AND DEPLOY)
+
 # Enable mostly b0rked stuff (new ChatView), do not enable this unless you know what you do...
 if(SPUTDEV)
   add_definitions(-DSPUTDEV)
@@ -60,6 +69,9 @@ endif(SPUTDEV)
 
 # Set up OpenSSL
 find_package(OpenSSL)
+if(NOT OPENSSL_FOUND)
+  add_definitions(-DQT_NO_OPENSSL)
+endif(NOT OPENSSL_FOUND)
 
 # Select a Qt installation here, if you don't want to use system Qt
 if(QT)
@@ -185,6 +197,12 @@ if(APPLE)
   add_custom_command(TARGET quassel POST_BUILD
                      COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makebundle.py
                              ${CMAKE_SOURCE_DIR} "Quassel" quassel)
+  if(DEPLOY)
+    add_custom_command(TARGET quasselclient POST_BUILD
+                       COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makePackage.sh Client)
+    add_custom_command(TARGET quasselcore POST_BUILD
+                       COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makePackage.sh Core)
+  endif(DEPLOY)
 endif(APPLE)
 
 # Install rules