# Configure for Qt4 set(QT_MIN_VERSION "4.5.0") set(QT_USE_QTCORE TRUE) set(QT_USE_QTGUI TRUE) set(QT_USE_QTNETWORK TRUE) set(QT_USE_QTSVG FALSE) set(QT_USE_QTXML FALSE) set(QT_USE_QTOPENGL FALSE) set(QT_USE_QTMAIN TRUE) find_package(Qt4 REQUIRED) include(${QT_USE_FILE}) # Check if we need zlib check_library_exists(${QT_QTCORE_LIBRARY} inflateInit2_ ${QT_LIBRARY_DIR} QT_PROVIDES_ZLIB_FUNCTIONS) if(NOT QT_PROVIDES_ZLIB_FUNCTIONS) find_package(ZLIB REQUIRED) set(HW_LINK_LIBS ${ZLIB_LIBRARIES} ${HW_LINK_LIBS}) endif() # Configure for SDL find_package(SDL REQUIRED) find_package(SDL_mixer REQUIRED) include_directories(.) include_directories(${SDL_INCLUDE_DIR}) include_directories(${SDLMIXER_INCLUDE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/misc/quazip) 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) 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() endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp) set(hwfr_src HWApplication.cpp game.cpp main.cpp hwform.cpp team.cpp namegen.cpp teamselect.cpp teamselhelper.cpp frameTeam.cpp vertScrollArea.cpp gameuiconfig.cpp ui_hwform.cpp gamecfgwidget.cpp pagemain.cpp pageeditteam.cpp pagemultiplayer.cpp pageoptions.cpp pagenet.cpp pagenetserver.cpp pagenetgame.cpp pageinfo.cpp pagedata.cpp pagesingleplayer.cpp pagetraining.cpp pagecampaign.cpp pageselectweapon.cpp pageingame.cpp pageroomslist.cpp pageconnecting.cpp pagescheme.cpp pagegamestats.cpp pageplayrecord.cpp pageadmin.cpp pagenettype.cpp pagedrawmap.cpp SquareLabel.cpp hats.cpp hedgehogerWidget.cpp hwmap.cpp mapContainer.cpp tcpBase.cpp about.cpp proto.cpp fpsedit.cpp netserver.cpp newnetclient.cpp netudpserver.cpp netudpwidget.cpp netregister.cpp netserverslist.cpp chatwidget.cpp binds.cpp SDLs.cpp ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp selectWeapon.cpp itemNum.cpp input_ip.cpp igbox.cpp weaponItem.cpp misc.cpp ammoSchemeModel.cpp togglebutton.cpp bgwidget.cpp achievements.cpp qaspectratiolayout.cpp drawmapwidget.cpp drawmapscene.cpp themesmodel.cpp databrowser.cpp ) #xfire integration if(WIN32) set(hwfr_src ${hwfr_src} xfire.cpp ../misc/xfire/xfiregameclient.cpp) endif(WIN32) 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) set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) else(MINGW) set(hwfr_src ${hwfr_src} hedgewars.rc) endif(MINGW) set(hwfr_moc_hdrs HWApplication.h game.h hats.h hwform.h teamselect.h teamselhelper.h frameTeam.h vertScrollArea.h gameuiconfig.h gamecfgwidget.h AbstractPage.h pagenet.h pagemultiplayer.h pagenetserver.h pageingame.h pagetraining.h pageeditteam.h pageoptions.h pagemain.h pageinfo.h pagedata.h pagesingleplayer.h pagenettype.h pageconnecting.h pagedrawmap.h pagecampaign.h pagenetgame.h pageroomslist.h pagegamestats.h pageadmin.h pagescheme.h pageselectweapon.h pageplayrecord.h SquareLabel.h hedgehogerWidget.h hwmap.h mapContainer.h tcpBase.h about.h proto.h fpsedit.h netserver.h newnetclient.h netudpserver.h netudpwidget.h netregister.h netserverslist.h chatwidget.h SDLs.h selectWeapon.h itemNum.h input_ip.h igbox.h weaponItem.h misc.h ammoSchemeModel.h togglebutton.h bgwidget.h qaspectratiolayout.h drawmapwidget.h drawmapscene.h themesmodel.h databrowser.h ) set(hwfr_hdrs binds.h ui_hwform.h KB.h hwconsts.h ) set(hwfr_rez hedgewars.qrc) qt4_add_resources(hwfr_rez_src ${hwfr_rez}) qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs}) if(APPLE) 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(NOT NOAUTOUPDATE) find_package(Sparkle) if(SPARKLE_FOUND) add_definitions(-DSPARKLE_ENABLED) set(hwfr_src ${hwfr_src} AutoUpdater.cpp SparkleAutoUpdater.mm) set(HW_LINK_LIBS ${SPARKLE_LIBRARY} ${HW_LINK_LIBS}) endif() endif() endif() add_executable(hedgewars WIN32 ${hwfr_src} ${hwfr_moc_srcs} ${hwfr_hdrs} ${hwfr_rez_src} ) set(HW_LINK_LIBS quazip ${QT_LIBRARIES} ${SDL_LIBRARY} ${SDLMIXER_LIBRARY} ${HW_LINK_LIBS} ) if(WIN32 AND NOT UNIX) if(NOT SDL_LIBRARY) set(HW_LINK_LIBS ${HW_LINK_LIBS} SDL) endif() set(HW_LINK_LIBS ${HW_LINK_LIBS} ole32 oleaut32 winspool uuid ) endif() target_link_libraries(hedgewars ${HW_LINK_LIBS}) install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hedgewars${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})