QTfrontend/CMakeLists.txt
author koda
Thu, 17 Mar 2011 23:53:33 +0100
changeset 5019 e38d1720a0ff
parent 4910 9dcb2e83b24f
child 5078 3527f0e7bb21
permissions -rw-r--r--
allows for building hedgewars with SDL-1.3 also reordered other sdl~version dependent macros into a proper cmake module file

# 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()
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
    pages.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
    playrecordpage.cpp
    ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp
    selectWeapon.cpp
    itemNum.cpp
    input_ip.cpp
    igbox.cpp
    weaponItem.cpp
    statsPage.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
    pages.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
    playrecordpage.h
    selectWeapon.h
    itemNum.h
    input_ip.h
    igbox.h
    weaponItem.h
    statsPage.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})