QTfrontend/CMakeLists.txt
author nemo
Sun, 12 Jun 2011 21:06:48 -0400
changeset 5238 46ddaf14509d
parent 5205 78138ae93820
child 5252 ded882439548
permissions -rw-r--r--
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.

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

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

#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
    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
    pagesingleplayer.h
    pagenettype.h
    pageconnecting.h
    pagedrawmap.h
    pagecampaign.h
    pagenetgame.h
    pageeditteam.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
    )

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