QTfrontend/CMakeLists.txt
branchflibqtfrontend
changeset 8363 0b4ac686fc44
parent 8304 620560c89284
parent 8347 716c05f19401
equal deleted inserted replaced
8306:50fe80adbfcb 8363:0b4ac686fc44
     9 set(QT_USE_QTXML FALSE)
     9 set(QT_USE_QTXML FALSE)
    10 set(QT_USE_QTOPENGL FALSE)
    10 set(QT_USE_QTOPENGL FALSE)
    11 set(QT_USE_QTMAIN TRUE)
    11 set(QT_USE_QTMAIN TRUE)
    12 
    12 
    13 find_package(Qt4 REQUIRED)
    13 find_package(Qt4 REQUIRED)
    14 if (NOT CROSSAPPLE)
    14 include(${QT_USE_FILE})
    15     include(${QT_USE_FILE})
       
    16 endif()
       
    17 
    15 
    18 find_package(SDL REQUIRED)       #video in SDLInteraction
    16 find_package(SDL REQUIRED)       #video in SDLInteraction
    19 find_package(SDL_mixer REQUIRED) #audio in SDLInteraction
    17 find_package(SDL_mixer REQUIRED) #audio in SDLInteraction
    20 find_package(SDL_net REQUIRED)   #network frontlib
    18 find_package(SDL_net REQUIRED)   #network frontlib
    21 if(NOT NOVIDEOREC)
    19 if(NOT NOVIDEOREC)
    42 if(UNIX)
    40 if(UNIX)
    43     # HACK: in freebsd cannot find iconv.h included via SDL.h
    41     # HACK: in freebsd cannot find iconv.h included via SDL.h
    44     include_directories("/usr/local/include")
    42     include_directories("/usr/local/include")
    45 endif(UNIX)
    43 endif(UNIX)
    46 
    44 
    47 
    45 #directory for resources, relative to bindir (on linux an absolute path is always used)
    48 if(WIN32 AND NOT UNIX)
    46 string(SUBSTRING "${SHAREPATH}" 0 1 sharepath_start)
    49     set(HEDGEWARS_BINDIR ".")
    47 if(APPLE OR WIN32 OR ${sharepath_start} MATCHES "/")
    50     set(HEDGEWARS_DATADIR "../share/")
    48     set(HEDGEWARS_DATADIR ${SHAREPATH})
    51     add_definitions(-DUSE_XFIRE)
       
    52 else()
    49 else()
    53     set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX})
    50     set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/${SHAREPATH})
    54     if(DEFINED DATA_INSTALL_DIR)
    51 endif()
    55         set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR})
    52 
    56     else()
    53 #only the cocoa version of qt supports building 64 bit apps
    57         set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/)
    54 if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA))
    58     endif()
    55     message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X")
    59     #only the cocoa version of qt supports building 64 bit apps
    56 endif()
    60     if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA))
    57 #endif()
    61         message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X")
       
    62     endif()
       
    63 endif()
       
    64 
    58 
    65 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp)
    59 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp)
    66 
    60 
    67 file(GLOB NetCpp net/*.cpp)
    61 file(GLOB NetCpp net/*.cpp)
    68 file(GLOB ModelCpp model/*.cpp)
    62 file(GLOB ModelCpp model/*.cpp)
    69 file(GLOB_RECURSE UIcpp ui/*.cpp)
    63 file(GLOB_RECURSE UIcpp ui/*.cpp)
    70 file(GLOB UtilCpp util/*.cpp)
    64 file(GLOB UtilCpp util/*.cpp)
    71 
    65 
    72 set(hwfr_src
    66 list(APPEND hwfr_src
    73     ${ModelCpp}
    67     ${ModelCpp}
    74     ${NetCpp}
    68     ${NetCpp}
    75     ${UIcpp}
    69     ${UIcpp}
    76     ${UtilCpp}
    70     ${UtilCpp}
    77     achievements.cpp
    71     achievements.cpp
    88     ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp
    82     ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp
    89     )
    83     )
    90 
    84 
    91 #xfire integration
    85 #xfire integration
    92 if(WIN32)
    86 if(WIN32)
    93     set(hwfr_src ${hwfr_src} xfire.cpp ../misc/xfire/xfiregameclient.cpp)
    87     list(APPEND hwfr_src xfire.cpp ../misc/xfire/xfiregameclient.cpp)
    94 endif(WIN32)
    88 endif(WIN32)
    95 
    89 
    96 if(MINGW)
    90 if(MINGW)
    97     # resource compilation for mingw
    91     # resource compilation for mingw
    98     add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o
    92     add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o
    99                        COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR}
    93                        COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR}
   100                                -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc
    94                                -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc
   101                                -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o)
    95                                -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o)
   102     set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o)
    96     list(APPEND hwfr_src ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o)
   103 else(MINGW)
    97 else(MINGW)
   104     set(hwfr_src ${hwfr_src} hedgewars.rc)
    98     list(APPEND hwfr_src hedgewars.rc)
   105 endif(MINGW)
    99 endif(MINGW)
   106 
   100 
   107 file(GLOB ModelHdr model/*.h)
   101 file(GLOB ModelHdr model/*.h)
   108 file(GLOB NetHdr net/*.h)
   102 file(GLOB NetHdr net/*.h)
   109 file(GLOB_RECURSE UIhdr ui/*.h)
   103 file(GLOB_RECURSE UIhdr ui/*.h)
   136     campaign.h
   130     campaign.h
   137     )
   131     )
   138 
   132 
   139 set(hwfr_rez hedgewars.qrc)
   133 set(hwfr_rez hedgewars.qrc)
   140 
   134 
       
   135 if(${BUILD_ENGINE_LIBRARY})
       
   136     add_definitions(-DHWLIBRARY=1)
       
   137     set(hwlibname "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}")
       
   138     list(APPEND HW_LINK_LIBS ${hwlibname})
       
   139 endif()
       
   140 
   141 qt4_add_resources(hwfr_rez_src ${hwfr_rez})
   141 qt4_add_resources(hwfr_rez_src ${hwfr_rez})
   142 
   142 
   143 qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs})
   143 qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs})
   144 
   144 
   145 
   145 
   146 if(APPLE OR CROSSAPPLE)
   146 if(APPLE)
   147     find_library(iokit_framework NAMES IOKit)
   147     find_library(iokit_framework NAMES IOKit)
   148     set(HW_LINK_LIBS ${iokit_framework} ${HW_LINK_LIBS})
   148     list(APPEND HW_LINK_LIBS ${iokit_framework})
   149     set(hwfr_src ${hwfr_src} CocoaInitializer.mm
   149     list(APPEND hwfr_src CocoaInitializer.mm
   150                              InstallController.cpp
   150                              InstallController.cpp
   151                              M3Panel.mm
   151                              M3Panel.mm
   152                              M3InstallController.m
   152                              M3InstallController.m
   153                              NSWorkspace_RBAdditions.m
   153                              NSWorkspace_RBAdditions.m
   154                              )
   154                              )
   155     if(NOT NOAUTOUPDATE)
   155     if(NOT NOAUTOUPDATE)
   156         find_package(Sparkle)
   156         find_package(Sparkle)
   157         if(SPARKLE_FOUND)
   157         if(SPARKLE_FOUND)
   158             add_definitions(-DSPARKLE_ENABLED)
   158             add_definitions(-DSPARKLE_ENABLED)
   159             set(hwfr_src ${hwfr_src} AutoUpdater.cpp SparkleAutoUpdater.mm)
   159             list(APPEND hwfr_src AutoUpdater.cpp SparkleAutoUpdater.mm)
   160             set(HW_LINK_LIBS ${SPARKLE_LIBRARY} ${HW_LINK_LIBS})
   160             list(APPEND HW_LINK_LIBS ${SPARKLE_LIBRARY})
   161         endif()
   161         endif()
   162     endif()
   162     endif()
   163 endif()
       
   164 
       
   165 if(BUILD_ENGINE_LIBRARY)
       
   166     add_definitions(-DHWLIBRARY)
       
   167     set(HW_LINK_LIBS hwengine ${HW_LINK_LIBS})
       
   168     link_directories(${EXECUTABLE_OUTPUT_PATH})
       
   169 endif()
   163 endif()
   170 
   164 
   171 #when debugging, always prompt a console to see fronted messages
   165 #when debugging, always prompt a console to see fronted messages
   172 #TODO: check it doesn't interfere on UNIX
   166 #TODO: check it doesn't interfere on UNIX
   173 if(CMAKE_BUILD_TYPE MATCHES "RELEASE")
   167 if(CMAKE_BUILD_TYPE MATCHES "RELEASE")
   179     ${hwfr_moc_srcs}
   173     ${hwfr_moc_srcs}
   180     ${hwfr_hdrs}
   174     ${hwfr_hdrs}
   181     ${hwfr_rez_src}
   175     ${hwfr_rez_src}
   182     )
   176     )
   183 
   177 
   184 
   178 if((UNIX AND NOT APPLE) AND ${BUILD_ENGINE_LIBRARY})
   185 set(HW_LINK_LIBS
   179     set_target_properties(hedgewars PROPERTIES LINK_FLAGS "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}")
       
   180 endif()
       
   181 
       
   182 list(APPEND HW_LINK_LIBS
   186     frontlib
   183     frontlib
   187     physfs
   184     physfs
   188     ${QT_LIBRARIES}
   185     ${QT_LIBRARIES}
   189     ${SDL_LIBRARY}
   186     ${SDL_LIBRARY}
   190     ${SDLMIXER_LIBRARY}
   187     ${SDLMIXER_LIBRARY}
   191     ${SDLNET_LIBRARY}
   188     ${SDLNET_LIBRARY}
   192     ${FFMPEG_LIBRARIES}
   189     ${FFMPEG_LIBRARIES}
   193     ${HW_LINK_LIBS}
       
   194     )
   190     )
   195 
   191 
   196 if(WIN32 AND NOT UNIX)
   192 if(WIN32 AND NOT UNIX)
   197     if(NOT SDL_LIBRARY)
   193     if(NOT SDL_LIBRARY)
   198         set(HW_LINK_LIBS ${HW_LINK_LIBS} SDL)
   194         list(APPEND HW_LINK_LIBS SDL)
   199     endif()
   195     endif()
   200 
   196 
   201     set(HW_LINK_LIBS
   197     list(APPEND HW_LINK_LIBS
   202         ${HW_LINK_LIBS}
       
   203         ole32
   198         ole32
   204         oleaut32
   199         oleaut32
   205         winspool
   200         winspool
   206         uuid
   201         uuid
   207         )
   202         )
   208 endif()
   203 endif()
   209 
   204 
   210 
   205 target_link_libraries(hedgewars ${HW_LINK_LIBS})
   211 if (NOT CROSSAPPLE)
   206 
   212     target_link_libraries(hedgewars ${HW_LINK_LIBS})
   207 
   213 endif()
   208 install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_binary_install_dir})
   214 
   209 
   215 
       
   216 install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
       
   217