QTfrontend/CMakeLists.txt
author koda
Tue, 23 Aug 2011 03:46:17 +0200
changeset 5662 99083392cd4f
parent 5338 dbe8a4ea8521
child 5754 583b7a683b17
permissions -rw-r--r--
FREE AT LAST!!! SDL came around a (mostly) sane way for implementing rotation events, so we can scrap all the workaround code that has been added to workaround it!! Also this allows us to use proper (internal) multitasking handling and can simplify optional settings and other yet unexplored features. Yay!

# 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_QTWEBKIT 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})

# Configure for SDL
find_package(SDL REQUIRED)
find_package(SDL_mixer REQUIRED)

include_directories(.)
include_directories(${SDL_INCLUDE_DIR})
include_directories(${SDLMIXER_INCLUDE_DIR})
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
    )

#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
    )

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)

    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
    ${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})