QTfrontend/CMakeLists.txt
author nemo
Sun, 04 Sep 2011 10:47:44 -0400
changeset 5760 8e9bd318171a
parent 5757 5bf89dbf3547
child 5790 75ffa050c4f9
permissions -rw-r--r--
Add a bunch of new hats from the hats thread. There are still 20 or so that need pixel fixes that are not in this list.

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

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

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