CMakeLists.txt
branchwebgl
changeset 8444 75db7bb8dce8
parent 8340 46a9fde631f4
parent 8348 c039ac6f33e0
child 8450 404ddce27b23
equal deleted inserted replaced
8340:46a9fde631f4 8444:75db7bb8dce8
    26 
    26 
    27 option(ANDROID "Enable Android build [default: off]" OFF)
    27 option(ANDROID "Enable Android build [default: off]" OFF)
    28 option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF)
    28 option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF)
    29 option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF)
    29 option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF)
    30 option(GL2 "Enable OpenGL 2 rendering [default: off]" OFF)
    30 option(GL2 "Enable OpenGL 2 rendering [default: off]" OFF)
    31 set(FPFLAGS "" CACHE STRING "Additional Freepascal flags" FORCE)
    31 set(FPFLAGS "" CACHE STRING "Additional Freepascal flags")
    32 set(GHFLAGS "" CACHE STRING "Additional Haskell flags" FORCE)
    32 set(GHFLAGS "" CACHE STRING "Additional Haskell flags")
    33 
    33 if(UNIX AND NOT APPLE)
       
    34     set(DATA_INSTALL_DIR "share/hedgewars" CACHE STRING "Resource folder path")
       
    35 endif()
    34 
    36 
    35 #detect Mercurial revision (if present)
    37 #detect Mercurial revision (if present)
    36 if(NOT ${NOREVISION})
    38 if(NOT ${NOREVISION})
    37     set(default_build_type "DEBUG")
    39     set(default_build_type "DEBUG")
    38     set(version_suffix "-development_version")
    40     set(version_suffix "-development_version")
    87 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
    89 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
    88 
    90 
    89 if(UNIX AND NOT APPLE)
    91 if(UNIX AND NOT APPLE)
    90     set(target_binary_install_dir "bin")
    92     set(target_binary_install_dir "bin")
    91     set(target_library_install_dir "lib")
    93     set(target_library_install_dir "lib")
    92     if(DEFINED DATA_INSTALL_DIR)
    94     set(SHAREPATH "${DATA_INSTALL_DIR}/")
    93         set(SHAREPATH "${DATA_INSTALL_DIR}")
       
    94     else()
       
    95         set(SHAREPATH "share/hedgewars/")
       
    96     endif()
       
    97 else()
    95 else()
    98     set(target_binary_install_dir "./")
    96     set(target_binary_install_dir "./")
    99 
    97 
   100     if(APPLE)
    98     if(APPLE)
   101         set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/")
    99         set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/")
   147     #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2)
   145     #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2)
   148     if(current_macosx_version VERSION_EQUAL "10.4")
   146     if(current_macosx_version VERSION_EQUAL "10.4")
   149         find_package(SDL_mixer REQUIRED)
   147         find_package(SDL_mixer REQUIRED)
   150         set(DYLIB_SMPEG "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg")
   148         set(DYLIB_SMPEG "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg")
   151         set(DYLIB_MIKMOD "-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod")
   149         set(DYLIB_MIKMOD "-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod")
   152         set(pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}" ${pascal_flags})
   150         set(CMAKE_C_FLAGS "${DYLIB_SMPEG} ${DYLIB_MIKMOD}")
   153         set(CMAKE_C_FLAGS "${DYLIB_SMPEG}" "${DYLIB_MIKMOD}" ${CMAKE_C_FLAGS})
   151         list(APPEND pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}")
   154     endif()
   152     endif()
   155 
   153 
   156     #CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_SYSROOT need to be set for universal binary and correct linking
   154     #CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_SYSROOT need to be set for universal binary and correct linking
   157     if(NOT CMAKE_OSX_ARCHITECTURES)
   155     if(NOT CMAKE_OSX_ARCHITECTURES)
   158         if(current_macosx_version VERSION_LESS "10.6")
   156         if(current_macosx_version VERSION_LESS "10.6")
   178             set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/")
   176             set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/")
   179         endif()
   177         endif()
   180     endif()
   178     endif()
   181 
   179 
   182     #add user framework directory, other paths can be passed via FPFLAGS
   180     #add user framework directory, other paths can be passed via FPFLAGS
   183     set(pascal_flags "-Ff~/Library/Frameworks" ${pascal_flags})
   181     list(APPEND pascal_flags "-Ff~/Library/Frameworks")
   184     #set deployment target
   182     #set deployment target
   185     set(pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_flags})
   183     list(APPEND pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}")
   186 
   184 
   187     #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3
   185     #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3
   188     if(NOT NOVIDEOREC AND ${minimum_macosx_version} VERSION_LESS "10.6")
   186     if(NOT NOVIDEOREC AND ${minimum_macosx_version} VERSION_LESS "10.6")
   189         set(WARNING "Video recording support before OS X 10.6 is experimental")
   187         set(WARNING "Video recording support before OS X 10.6 is experimental")
   190     endif()
   188     endif()
   201 else (CMAKE_BUILD_TYPE)
   199 else (CMAKE_BUILD_TYPE)
   202     set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Choose the build type, options are: Debug Release." FORCE)
   200     set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Choose the build type, options are: Debug Release." FORCE)
   203 endif (CMAKE_BUILD_TYPE)
   201 endif (CMAKE_BUILD_TYPE)
   204 
   202 
   205 #set default flags values for all projects (unless MINIMAL_FLAGS is true)
   203 #set default flags values for all projects (unless MINIMAL_FLAGS is true)
   206 if(NOT MINIMAL_FLAGS)
   204 if(NOT ${MINIMAL_FLAGS})
   207     set(CMAKE_C_FLAGS "-pipe")
   205     set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}")
   208     set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer")
   206     set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}")
   209     set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG")
   207     set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG ${CMAKE_C_FLAGS_DEBUG}")
   210     set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
   208     set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
   211     set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
   209     set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
   212     set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
   210     set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
   213 else()
   211 else()
   214     #CMake adds a lot of additional configuration flags, so let's clear them up
   212     #CMake adds a lot of additional configuration flags, so let's clear them up
   227         separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS})
   225         separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS})
   228         separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
   226         separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS})
   229     endif()
   227     endif()
   230 endif()
   228 endif()
   231 
   229 
   232 set(pascal_flags ${fpflags_parsed}              # user flags
   230 list(APPEND pascal_flags ${fpflags_parsed}              # user flags
   233                  "-vm4079,4080,4081"            # fpc output format
   231                  "-vm4079,4080,4081"            # fpc output format
   234                  "-B"                           # compile all units
   232                  "-B"                           # compile all units
   235                  "-FE${PROJECT_BINARY_DIR}/bin" # fpc output directory
   233                  "-FE${PROJECT_BINARY_DIR}/bin" # fpc output directory
   236                  "-Fl${PROJECT_BINARY_DIR}/bin" # fpc linking directory
   234                  "-Fl${PROJECT_BINARY_DIR}/bin" # fpc linking directory
   237                  "-Cs2000000"                   # stack size
   235                  "-Cs2000000"                   # stack size
   238                  "-vewnq"                       # fpc output verbosity
   236                  "-vewnq"                       # fpc output verbosity
   239                  "-dDEBUGFILE"                  # macro for engine output
   237                  "-dDEBUGFILE"                  # macro for engine output
   240                  ${pascal_flags}                # adding to list
       
   241                  )
   238                  )
   242 set(haskell_flags "-O2" ${ghflags_parsed} ${haskell_flags})
   239 list(APPEND haskell_flags "-O2" ${ghflags_parsed})
   243 
   240 
   244 #get BUILD_TYPE and enable/disable optimisation
   241 #get BUILD_TYPE and enable/disable optimisation
   245 message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
   242 message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
   246 if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
   243 if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
   247     set(pascal_flags "-O-" "-g" "-gl" "-gv" ${pascal_flags})
   244     list(APPEND pascal_flags "-O-" "-g" "-gl" "-gv")
   248     set(haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_flags})
   245     list(APPEND haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind")
   249 else()
   246 else()
   250 #    set(pascal_flags "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_flags})
   247 #    set(pascal_flags "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_flags})
   251     set(pascal_flags "-Os" "-Xs" "-Si" ${pascal_flags})
   248     list(APPEND pascal_flags "-Os" "-Xs" "-Si")
   252     set(haskell_flags "-w" "-fno-warn-unused-do-bind" ${haskell_flags})
   249     list(APPEND haskell_flags "-w" "-fno-warn-unused-do-bind")
   253 endif()
   250 endif()
   254 
   251 
   255 
   252 
   256 #Haskell compiler discovery (for server and engine in c)
   253 #Haskell compiler discovery (for server and engine in c)
   257 if((NOT NOSERVER) OR NOPASCAL)
   254 if((NOT NOSERVER) OR NOPASCAL)
   287     message(STATUS "Found LUA: ${LUA_DEFAULT}")
   284     message(STATUS "Found LUA: ${LUA_DEFAULT}")
   288 else()
   285 else()
   289     message(STATUS "Using internal LUA library")
   286     message(STATUS "Using internal LUA library")
   290     add_subdirectory(misc/liblua)
   287     add_subdirectory(misc/liblua)
   291     #linking with liblua.a requires system readline
   288     #linking with liblua.a requires system readline
   292     set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags})
   289     list(APPEND pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline")
   293 endif()
   290 endif()
   294 
   291 
   295 
   292 
   296 #physfs library (static on unix, dll on win32)
   293 #physfs library (static on unix, dll on win32)
   297 add_subdirectory(misc/physfs)
   294 add_subdirectory(misc/physfs)
   298 if(NOT WIN32)
   295 if(NOT WIN32)
   299     set(pascal_flags "-k${LIBRARY_OUTPUT_PATH}/libphysfs.a" ${pascal_flags})
   296     list(APPEND pascal_flags "-k${LIBRARY_OUTPUT_PATH}/libphysfs.a")
   300 endif()
   297 endif()
   301 
   298 
   302 
   299 
   303 #frontend library
   300 #frontend library
   304 add_subdirectory(project_files/frontlib)
   301 add_subdirectory(project_files/frontlib)