diff -r d24257910f8d -r aaefa587e277 QTfrontend/CMakeLists.txt --- a/QTfrontend/CMakeLists.txt Sun Dec 02 00:03:16 2012 +0100 +++ b/QTfrontend/CMakeLists.txt Tue Dec 25 04:45:22 2012 +0100 @@ -11,15 +11,16 @@ set(QT_USE_QTMAIN TRUE) find_package(Qt4 REQUIRED) -if (NOT CROSSAPPLE) - include(${QT_USE_FILE}) -endif() +include(${QT_USE_FILE}) find_package(SDL REQUIRED) #video in SDLInteraction find_package(SDL_mixer REQUIRED) #audio in SDLInteraction find_package(SDL_net REQUIRED) #network frontlib if(NOT NOVIDEOREC) find_package(FFMPEG) + if(${FFMPEG_FOUND}) + add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS) + endif() endif() include_directories(.) @@ -35,30 +36,24 @@ include_directories(${FFMPEG_INCLUDE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/misc/physfs/src) include_directories(${CMAKE_SOURCE_DIR}/misc/physfs/extras) -include_directories(${CMAKE_SOURCE_DIR}/project_files/frontlib) if(UNIX) # HACK: in freebsd cannot find iconv.h included via SDL.h include_directories("/usr/local/include") endif(UNIX) - -if(WIN32 AND NOT UNIX) - set(HEDGEWARS_BINDIR ".") - set(HEDGEWARS_DATADIR "../share/") - add_definitions(-DUSE_XFIRE) +#directory for resources, relative to the one above on certain platforms/configurations +if(DEFINED DATA_INSTALL_DIR OR WIN32 OR APPLE) + set(HEDGEWARS_DATADIR ${SHAREPATH}) else() - set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX}) - if(DEFINED DATA_INSTALL_DIR) - set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR}) - else() - set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/) - endif() - #only the cocoa version of qt supports building 64 bit apps - if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA)) - message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X") - endif() + set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/${SHAREPATH}/) endif() +#only the cocoa version of qt supports building 64 bit apps +if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64*") AND (NOT QT_MAC_USE_COCOA)) + message(FATAL_ERROR "Building the 64 bit version of Hedgewars *requires* the Cocoa variant of QT on Mac OS X") +endif() +#endif() + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp) file(GLOB NetCpp net/*.cpp) @@ -66,10 +61,6 @@ file(GLOB_RECURSE UIcpp ui/*.cpp) file(GLOB UtilCpp util/*.cpp) -if(${FFMPEG_FOUND}) - add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS) -endif() - set(hwfr_src ${ModelCpp} ${NetCpp} @@ -97,9 +88,9 @@ if(MINGW) # resource compilation for mingw add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o - COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} - -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc - -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) + COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} + -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc + -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) else(MINGW) set(hwfr_src ${hwfr_src} hedgewars.rc) @@ -138,15 +129,26 @@ set(hwfr_rez hedgewars.qrc) +if(${BUILD_ENGINE_LIBRARY}) + add_definitions(-DHWLIBRARY=1) + set(hwlibname "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(HW_LINK_LIBS ${hwlibname} ${HW_LINK_LIBS}) +endif() + qt4_add_resources(hwfr_rez_src ${hwfr_rez}) qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs}) -if(APPLE OR CROSSAPPLE) - set(hwfr_src ${hwfr_src} InstallController.cpp CocoaInitializer.mm M3Panel.mm M3InstallController.m NSWorkspace_RBAdditions.m) - set(HW_LINK_LIBS IOKit ${HW_LINK_LIBS}) - +if(APPLE) + find_library(iokit_framework NAMES IOKit) + set(HW_LINK_LIBS ${iokit_framework} ${HW_LINK_LIBS}) + set(hwfr_src ${hwfr_src} CocoaInitializer.mm + InstallController.cpp + M3Panel.mm + M3InstallController.m + NSWorkspace_RBAdditions.m + ) if(NOT NOAUTOUPDATE) find_package(Sparkle) if(SPARKLE_FOUND) @@ -157,28 +159,33 @@ endif() endif() -if(LIBENGINE) +#when debugging, always prompt a console to see fronted messages +#TODO: check it doesn't interfere on UNIX +if(CMAKE_BUILD_TYPE MATCHES "RELEASE") + set(console_access "WIN32") +endif(CMAKE_BUILD_TYPE MATCHES "RELEASE") +if(${LIBENGINE}) add_definitions(-DHWLIBRARY) set(HW_LINK_LIBS hwengine ${HW_LINK_LIBS}) link_directories(${EXECUTABLE_OUTPUT_PATH}) endif() - -add_executable(hedgewars WIN32 +add_executable(hedgewars ${console_access} ${hwfr_src} ${hwfr_moc_srcs} ${hwfr_hdrs} ${hwfr_rez_src} ) +if((UNIX AND NOT APPLE) AND ${LIBENGINE}) + set_target_properties(hedgewars PROPERTIES LINK_FLAGS "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}") +endif() set(HW_LINK_LIBS physfs - frontlib ${QT_LIBRARIES} ${SDL_LIBRARY} ${SDLMIXER_LIBRARY} - ${SDLNET_LIBRARY} ${FFMPEG_LIBRARIES} ${HW_LINK_LIBS} ) @@ -197,13 +204,8 @@ ) endif() - -if (CROSSAPPLE) - -else() - target_link_libraries(hedgewars ${HW_LINK_LIBS}) -endif() +target_link_libraries(hedgewars ${HW_LINK_LIBS}) -install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir}) +install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_binary_install_dir})