diff -r 50fe80adbfcb -r 0b4ac686fc44 CMakeLists.txt --- 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)