--- a/CMakeLists.txt Tue Dec 18 20:48:37 2012 +0400
+++ b/CMakeLists.txt Fri Jan 04 21:44:40 2013 +0400
@@ -22,9 +22,12 @@
option(BUILD_ENGINE_LIBRARY "Enable hwengine library [default: off]" OFF)
option(ANDROID "Enable Android build [default: off]" OFF)
option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF)
-option(CROSSAPPLE "Enable OSX when not on OSX [default: off]" OFF)
option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF)
-
+set(FPFLAGS "" CACHE STRING "Additional Freepascal flags")
+set(GHFLAGS "" CACHE STRING "Additional Haskell flags")
+if(UNIX AND NOT APPLE)
+ set(DATA_INSTALL_DIR "share/hedgewars" CACHE STRING "Resource folder path")
+endif()
#detect Mercurial revision (if present)
if(NOT NOREVISION)
@@ -65,18 +68,31 @@
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
-#bundle .app setup
-if(APPLE OR CROSSAPPLE)
- #paths for creating the bundle
- set(bundle_name Hedgewars.app)
- set(frameworks_dir ${bundle_name}/Contents/Frameworks/)
- set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/)
- set(DATA_INSTALL_DIR "../Resources/")
- set(target_dir ".")
+set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
+set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
+
+if(UNIX AND NOT APPLE)
+ set(target_binary_install_dir "bin")
+ set(target_library_install_dir "lib")
+ set(SHAREPATH "${DATA_INSTALL_DIR}/")
else()
- set(target_dir "bin")
+ set(target_binary_install_dir "./")
+
+ if(APPLE)
+ set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/")
+ set(SHAREPATH "../Resources/")
+ set(target_library_install_dir "../Frameworks/")
+ else()
+ if(WIN32)
+ set(target_library_install_dir "./")
+ set(SHAREPATH "./")
+ set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/misc/winutils/")
+ link_directories("${EXECUTABLE_OUTPUT_PATH}" "${CMAKE_SOURCE_DIR}/misc/winutils/bin")
+ endif(WIN32)
+ endif()
endif()
+
if(APPLE)
set(CMAKE_FIND_FRAMEWORK "FIRST")
@@ -114,8 +130,8 @@
find_package(SDL_mixer REQUIRED)
set(DYLIB_SMPEG "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg")
set(DYLIB_MIKMOD "-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod")
- set(pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}" ${pascal_flags})
- set(CMAKE_C_FLAGS "${DYLIB_SMPEG}" "${DYLIB_MIKMOD}" ${CMAKE_C_FLAGS})
+ set(CMAKE_C_FLAGS "${DYLIB_SMPEG} ${DYLIB_MIKMOD}")
+ list(APPEND pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}")
endif()
#CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_SYSROOT need to be set for universal binary and correct linking
@@ -145,9 +161,9 @@
endif()
#add user framework directory, other paths can be passed via FPFLAGS
- set(pascal_flags "-Ff~/Library/Frameworks" ${pascal_flags})
+ list(APPEND pascal_flags "-Ff~/Library/Frameworks")
#set deployment target
- set(pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_flags})
+ list(APPEND pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}")
#silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3
if(NOT NOVIDEOREC AND ${minimum_macosx_version} VERSION_LESS "10.6")
@@ -168,10 +184,10 @@
endif (CMAKE_BUILD_TYPE)
#set default flags values for all projects (unless MINIMAL_FLAGS is true)
-if(NOT MINIMAL_FLAGS)
- set(CMAKE_C_FLAGS "-pipe")
- set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer")
- set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG")
+if(NOT ${MINIMAL_FLAGS})
+ set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}")
+ set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}")
+ set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG ${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
@@ -194,7 +210,7 @@
endif()
endif()
-set(pascal_flags ${fpflags_parsed} # user flags
+list(APPEND pascal_flags ${fpflags_parsed} # user flags
"-vm4079,4080,4081" # fpc output format
"-B" # compile all units
"-FE${PROJECT_BINARY_DIR}/bin" # fpc output directory
@@ -202,36 +218,21 @@
"-Cs2000000" # stack size
"-vewnq" # fpc output verbosity
"-dDEBUGFILE" # macro for engine output
- ${pascal_flags} # adding to list
)
-set(haskell_flags "-O2" ${ghflags_parsed} ${haskell_flags})
+list(APPEND haskell_flags "-O2" ${ghflags_parsed})
#get BUILD_TYPE and enable/disable optimisation
message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
- set(pascal_flags "-O-" "-g" "-gl" "-gv" ${pascal_flags})
- set(haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_flags})
+ list(APPEND pascal_flags "-O-" "-g" "-gl" "-gv")
+ list(APPEND haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind")
else()
# set(pascal_flags "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_flags})
- set(pascal_flags "-Os" "-Xs" "-Si" ${pascal_flags})
- set(haskell_flags "-w" "-fno-warn-unused-do-bind" ${haskell_flags})
+ list(APPEND pascal_flags "-Os" "-Xs" "-Si")
+ list(APPEND haskell_flags "-w" "-fno-warn-unused-do-bind")
endif()
-#finish setting paths
-if(DEFINED DATA_INSTALL_DIR)
- set(SHAREPATH ${DATA_INSTALL_DIR}/hedgewars/)
-else()
- set(SHAREPATH share/hedgewars/)
-endif()
-set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
-set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
-if(WIN32)
- set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/misc/winutils/")
- link_directories("${EXECUTABLE_OUTPUT_PATH}" "${CMAKE_SOURCE_DIR}/misc/winutils/bin")
-endif(WIN32)
-
-
#server discovery
if(NOT NOSERVER)
if(GHC)
@@ -262,14 +263,14 @@
message(STATUS "LUA will be provided by the bundled sources")
add_subdirectory(misc/liblua)
#linking with liblua.a requires system readline
- set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags})
+ list(APPEND pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline")
endif()
#physfs library (static on unix, dll on win32)
add_subdirectory(misc/physfs)
if(NOT WIN32)
- set(pascal_flags "-k${LIBRARY_OUTPUT_PATH}/libphysfs.a" ${pascal_flags})
+ list(APPEND pascal_flags "-k${LIBRARY_OUTPUT_PATH}/libphysfs.a")
endif()
@@ -310,6 +311,7 @@
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/")
set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com")
set(CPACK_NSIS_MODIFY_PATH OFF)
+ set(CPACK_NSIS_EXECUTABLES_DIRECTORY "${target_binary_install_dir}")
set(CPACK_GENERATOR "ZIP;NSIS")
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "hedgewars")
else(WIN32 AND NOT UNIX)