FIND_PACKAGE(SDL REQUIRED)
FIND_PACKAGE(SDL_image REQUIRED)
FIND_PACKAGE(SDL_mixer REQUIRED)
FIND_PACKAGE(SDL_net REQUIRED)
FIND_PACKAGE(SDL_ttf REQUIRED)
FIND_PACKAGE(SDL_gfx REQUIRED)
FIND_PACKAGE(CURL REQUIRED)
FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(PhysFS REQUIRED)
FIND_PACKAGE(PNG REQUIRED)
FIND_PACKAGE(Gettext REQUIRED)
FIND_PACKAGE(ZLIB REQUIRED)

IF (POLICY CMP0015)
  CMAKE_POLICY(SET CMP0015 OLD)
ENDIF()

SET(FLAGS "-DPACKAGE_VERSION=\\\"${VERSION}\\\"")
SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"")
SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${LOCALEDIR}/\\\"")
SET(DYE_FLAGS "-DPACKAGE_VERSION=\\\"${VERSION}\\\" -DDYECMD")
SET(DYE_FLAGS "${DYE_FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"")
SET(DYE_FLAGS "${DYE_FLAGS} -DLOCALEDIR=\\\"${LOCALEDIR}/\\\"")

IF (ENABLE_NLS)
    SET(FLAGS "${FLAGS} -DENABLE_NLS=1")
ENDIF()

IF (ENABLE_EATHENA)
    SET(FLAGS "${FLAGS} -DEATHENA_SUPPORT=1")
ENDIF()
IF (ENABLE_TMWA)
    SET(FLAGS "${FLAGS} -DTMWA_SUPPORT=1")
ENDIF()

IF (CMAKE_BUILD_TYPE)
    STRING(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER)
    IF(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug OR
       CMAKE_BUILD_TYPE_TOLOWER MATCHES relwithdebinfo)
        SET(FLAGS "${FLAGS} -DDEBUG")
        SET(DYE_FLAGS "${DYE_FLAGS} -DDEBUG")
    ENDIF()
ENDIF()

IF (WIN32)
    SET(EXTRA_LIBRARIES ws2_32 winmm)
    FIND_PACKAGE(LibIntl REQUIRED)
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR BEOS)
    FIND_PACKAGE(LibIntl REQUIRED)
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL SunOS)
    # explicit linking to libintl is required on Solaris
    SET(EXTRA_LIBRARIES intl)
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL Linux)
    #some distros need this explicitly linked
    SET(EXTRA_LIBRARIES rt)
ENDIF()

SET(FLAGS "${FLAGS} -DUSE_MUMBLE")

IF (WITH_OPENGL)
    FIND_PACKAGE(OpenGL REQUIRED)
    INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
    SET(FLAGS "${FLAGS} -DUSE_OPENGL")
ENDIF (WITH_OPENGL)

IF (USE_X11)
    FIND_PACKAGE(X11 REQUIRED)
    INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR})
    SET(FLAGS "${FLAGS} -DUSE_X11")
ENDIF (USE_X11)

INCLUDE_DIRECTORIES(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${SDL_INCLUDE_DIR}
    ${SDLIMAGE_INCLUDE_DIR}
    ${SDLMIXER_INCLUDE_DIR}
    ${SDLNET_INCLUDE_DIR}
    ${SDLTTF_INCLUDE_DIR}
    ${SDLGFX_INCLUDE_DIR}
    ${PNG_INCLUDE_DIR}
    ${PHYSFS_INCLUDE_DIR}
    ${CURL_INCLUDE_DIR}
    ${LIBXML2_INCLUDE_DIR}
    )

# enable rc-handling with mingw
# most likely this part can be kicked out with some later cmake version
IF (MINGW)
    FIND_PATH(MINGW_INCLUDE_DIR windows.h $ENV{INCLUDE})
    IF (MINGW_INCLUDE_DIR)
        MESSAGE(STATUS "Found mingw headers: ${MINGW_INCLUDE_DIR}")
        INCLUDE_DIRECTORIES(${MINGW_INCLUDE_DIR})
    ELSE()
        MESSAGE(FATAL_ERROR "Unable to find mingw headers. Required for windres")
    ENDIF()
    SET(CMAKE_RC_COMPILER_INIT windres)
    ENABLE_LANGUAGE(RC)
    SET(CMAKE_RC_COMPILE_OBJECT
      "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -O coff -o <OBJECT> <SOURCE>")
ENDIF()

# Fix some stuff that gets not hidden by mainline modules
MARK_AS_ADVANCED(PHYSFS_INCLUDE_DIR)
MARK_AS_ADVANCED(PHYSFS_LIBRARY)
MARK_AS_ADVANCED(SDLIMAGE_INCLUDE_DIR)
MARK_AS_ADVANCED(SDLIMAGE_LIBRARY)
MARK_AS_ADVANCED(SDLMAIN_LIBRARY)
MARK_AS_ADVANCED(SDLMIXER_INCLUDE_DIR)
MARK_AS_ADVANCED(SDLMIXER_LIBRARY)
MARK_AS_ADVANCED(SDLNET_INCLUDE_DIR)
MARK_AS_ADVANCED(SDLNET_LIBRARY)
MARK_AS_ADVANCED(SDL_INCLUDE_DIR)
MARK_AS_ADVANCED(SDL_LIBRARY)

SET(SRCS
    gui/widgets/avatarlistbox.cpp
    gui/widgets/avatarlistbox.h
    gui/models/avatarlistmodel.h
    gui/models/beingslistmodel.h
    gui/models/colorlistmodel.h
    gui/widgets/tabs/chat/battletab.cpp
    gui/widgets/tabs/chat/battletab.h
    gui/widgets/tabs/chat/channeltab.cpp
    gui/widgets/tabs/chat/channeltab.h
    gui/widgets/browserbox.cpp
    gui/widgets/browserbox.h
    gui/widgets/button.cpp
    gui/widgets/button.h
    gui/widgets/characterdisplay.cpp
    gui/widgets/characterdisplay.h
    gui/widgets/characterviewbase.h
    gui/widgets/characterviewnormal.cpp
    gui/widgets/characterviewnormal.h
    gui/widgets/characterviewsmall.cpp
    gui/widgets/characterviewsmall.h
    gui/widgets/tabs/chat/chattabtype.h
    gui/widgets/tabs/debugwindowtabs.cpp
    gui/widgets/tabs/debugwindowtabs.h
    gui/widgets/tabs/chat/chattab.cpp
    gui/widgets/tabs/chat/chattab.h
    gui/widgets/chatinput.h
    gui/widgets/checkbox.cpp
    gui/widgets/checkbox.h
    gui/models/colormodel.cpp
    gui/models/colormodel.h
    gui/widgets/colorpage.cpp
    gui/widgets/colorpage.h
    gui/widgets/container.cpp
    gui/widgets/container.h
    gui/widgets/containerplacer.cpp
    gui/widgets/containerplacer.h
    gui/widgets/desktop.cpp
    gui/widgets/desktop.h
    gui/widgets/dropdown.cpp
    gui/widgets/dropdown.h
    gui/widgets/emoteshortcutcontainer.cpp
    gui/widgets/emoteshortcutcontainer.h
    gui/widgets/equipmentbox.h
    gui/widgets/equipmentpage.h
    gui/widgets/extendedlistbox.cpp
    gui/widgets/extendedlistbox.h
    gui/widgets/extendedlistboxitem.h
    gui/models/extendedlistmodel.h
    gui/models/extendednamesmodel.cpp
    gui/models/extendednamesmodel.h
    gui/models/fontsizechoicelistmodel.h
    gui/models/fontsmodel.h
    gui/models/iconsmodel.h
    gui/models/ignorechoiceslistmodel.h
    gui/models/itemsmodel.h
    gui/models/keylistmodel.h
    gui/models/langlistmodel.h
    gui/widgets/flowcontainer.cpp
    gui/widgets/flowcontainer.h
    gui/widgets/tabs/chat/emulateguildtab.cpp
    gui/widgets/tabs/chat/emulateguildtab.h
    gui/widgets/tabs/chat/gmtab.cpp
    gui/widgets/tabs/chat/gmtab.h
    gui/widgets/tabs/chat/guildtab.cpp
    gui/widgets/tabs/chat/guildtab.h
    gui/widgets/tabs/chat/partytab.cpp
    gui/widgets/tabs/chat/partytab.h
    gui/widgets/horizontcontainer.cpp
    gui/widgets/horizontcontainer.h
    gui/widgets/icon.cpp
    gui/widgets/icon.h
    gui/widgets/inttextfield.cpp
    gui/widgets/inttextfield.h
    gui/widgets/itemcontainer.cpp
    gui/widgets/itemcontainer.h
    gui/widgets/itemlinkhandler.cpp
    gui/widgets/itemlinkhandler.h
    gui/widgets/virtshortcutcontainer.cpp
    gui/widgets/virtshortcutcontainer.h
    gui/widgets/emotepage.cpp
    gui/widgets/emotepage.h
    gui/widgets/itemshortcutcontainer.cpp
    gui/widgets/itemshortcutcontainer.h
    gui/widgets/spellshortcutcontainer.cpp
    gui/widgets/spellshortcutcontainer.h
    gui/widgets/statuswindowattrs.h
    gui/widgets/label.cpp
    gui/widgets/label.h
    gui/widgets/tabs/chat/langtab.cpp
    gui/widgets/tabs/chat/langtab.h
    gui/widgets/layout.cpp
    gui/widgets/layout.h
    gui/widgets/layoutarray.cpp
    gui/widgets/layoutarray.h
    gui/widgets/layoutcell.cpp
    gui/widgets/layoutcell.h
    gui/widgets/layouthelper.cpp
    gui/widgets/layouthelper.h
    gui/widgets/layouttype.h
    gui/widgets/linepart.cpp
    gui/widgets/linepart.h
    gui/widgets/linkhandler.h
    gui/widgets/listbox.cpp
    gui/widgets/listbox.h
    gui/models/modelistmodel.cpp
    gui/models/modelistmodel.h
    gui/models/namesmodel.cpp
    gui/models/namesmodel.h
    gui/models/opengllistmodel.h
    gui/models/playerrelationlistmodel.h
    gui/models/playertablemodel.cpp
    gui/models/playertablemodel.h
    gui/models/questsmodel.h
    gui/models/serverslistmodel.h
    gui/widgets/passwordfield.cpp
    gui/widgets/passwordfield.h
    gui/widgets/playerbox.cpp
    gui/widgets/playerbox.h
    gui/widgets/popup.cpp
    gui/widgets/popup.h
    gui/widgets/popuplist.cpp
    gui/widgets/popuplist.h
    gui/widgets/progressbar.cpp
    gui/widgets/progressbar.h
    gui/widgets/progressindicator.cpp
    gui/widgets/progressindicator.h
    gui/widgets/radiobutton.cpp
    gui/widgets/radiobutton.h
    gui/widgets/radiogroup.cpp
    gui/widgets/radiogroup.h
    gui/widgets/scrollarea.cpp
    gui/widgets/scrollarea.h
    gui/widgets/serverslistbox.h
    gui/widgets/setupbuttonitem.cpp
    gui/widgets/setupbuttonitem.h
    gui/widgets/setupitem.cpp
    gui/widgets/setupitem.h
    gui/widgets/tabs/setuptab.cpp
    gui/widgets/tabs/setuptab.h
    gui/widgets/tabs/setuptabscroll.cpp
    gui/widgets/tabs/setuptabscroll.h
    gui/widgets/setuptouchitem.cpp
    gui/widgets/setuptouchitem.h
    gui/models/shopitems.cpp
    gui/models/shopitems.h
    gui/widgets/shoplistbox.cpp
    gui/widgets/shoplistbox.h
    gui/widgets/shortcutcontainer.cpp
    gui/widgets/shortcutcontainer.h
    gui/widgets/skilldata.cpp
    gui/widgets/skilldata.h
    gui/widgets/skillinfo.cpp
    gui/widgets/skillinfo.h
    gui/widgets/skilllistbox.h
    gui/models/skillmodel.cpp
    gui/models/skillmodel.h
    gui/models/sortlistmodelbuy.h
    gui/models/sortlistmodelinv.h
    gui/models/soundsmodel.h
    gui/widgets/slider.cpp
    gui/widgets/slider.h
    gui/widgets/sliderlist.cpp
    gui/widgets/sliderlist.h
    gui/widgets/tabs/shortcuttab.h
    gui/widgets/tabs/skilltab.h
    gui/widgets/tabs/socialattacktab.h
    gui/widgets/tabs/socialfriendsfunctor.h
    gui/widgets/tabs/socialfriendstab.h
    gui/widgets/tabs/socialguildtab.h
    gui/widgets/tabs/socialguildtab2.h
    gui/widgets/tabs/socialnavigationtab.h
    gui/widgets/tabs/socialpartytab.h
    gui/widgets/tabs/socialpickuptab.h
    gui/widgets/tabs/socialplayerstab.h
    gui/widgets/tabs/socialtab.h
    gui/widgets/tabs/socialtabbase.h
    gui/widgets/tabs/tab.cpp
    gui/widgets/tabs/tab.h
    gui/widgets/tabbedarea.cpp
    gui/widgets/tabbedarea.h
    gui/widgets/guitable.cpp
    gui/widgets/guitable.h
    gui/models/tablemodel.cpp
    gui/models/tablemodel.h
    gui/models/targettypemodel.h
    gui/models/touchactionmodel.cpp
    gui/models/touchactionmodel.h
    gui/models/typelistmodel.h
    gui/models/updatetypemodel.h
    gui/models/userstablemodel.h
    gui/models/updatelistmodel.h
    gui/models/worldlistmodel.h
    gui/models/themesmodel.h
    gui/widgets/tabstrip.cpp
    gui/widgets/tabstrip.h
    gui/widgets/textbox.cpp
    gui/widgets/textbox.h
    gui/widgets/textfield.cpp
    gui/widgets/textfield.h
    gui/widgets/textpreview.cpp
    gui/widgets/textpreview.h
    gui/widgets/tabs/chat/tradetab.cpp
    gui/widgets/tabs/chat/tradetab.h
    gui/widgets/vertcontainer.cpp
    gui/widgets/vertcontainer.h
    gui/widgets/tabs/chat/whispertab.cpp
    gui/widgets/tabs/chat/whispertab.h
    gui/widgets/widget2.h
    gui/widgets/widgetgroup.cpp
    gui/widgets/widgetgroup.h
    gui/widgets/window.cpp
    gui/widgets/window.h
    gui/widgets/windowcontainer.cpp
    gui/widgets/windowcontainer.h
    gui/popups/beingpopup.cpp
    gui/popups/beingpopup.h
    gui/popups/createpartypopup.h
    gui/windows/buydialog.cpp
    gui/windows/buydialog.h
    gui/windows/buyselldialog.cpp
    gui/windows/buyselldialog.h
    gui/windows/changeemaildialog.cpp
    gui/windows/changeemaildialog.h
    gui/windows/changepassworddialog.cpp
    gui/windows/changepassworddialog.h
    gui/windows/charselectdialog.cpp
    gui/windows/charselectdialog.h
    gui/windows/charcreatedialog.cpp
    gui/windows/charcreatedialog.h
    gui/windows/chardeleteconfirm.h
    gui/windows/chatwindow.cpp
    gui/windows/chatwindow.h
    gui/windows/confirmdialog.cpp
    gui/windows/confirmdialog.h
    gui/windows/connectiondialog.cpp
    gui/windows/connectiondialog.h
    gui/windows/debugwindow.cpp
    gui/windows/debugwindow.h
    gui/windows/didyouknowwindow.cpp
    gui/windows/didyouknowwindow.h
    gui/windows/editdialog.cpp
    gui/windows/editdialog.h
    gui/windows/editserverdialog.cpp
    gui/windows/editserverdialog.h
    gui/windows/eggselectiondialog.cpp
    gui/windows/eggselectiondialog.h
    gui/windows/emotewindow.cpp
    gui/windows/emotewindow.h
    gui/windows/equipmentwindow.cpp
    gui/windows/equipmentwindow.h
    gui/focushandler.cpp
    gui/focushandler.h
    gui/gui.cpp
    gui/gui.h
    gui/windows/helpwindow.cpp
    gui/windows/helpwindow.h
    gui/windows/inventorywindow.cpp
    gui/windows/inventorywindow.h
    gui/windows/itemamountwindow.cpp
    gui/windows/itemamountwindow.h
    gui/popups/itempopup.cpp
    gui/popups/itempopup.h
    gui/popups/spellpopup.cpp
    gui/popups/spellpopup.h
    gui/popups/statuspopup.cpp
    gui/popups/statuspopup.h
    gui/popups/textboxpopup.cpp
    gui/popups/textboxpopup.h
    gui/windows/killstats.cpp
    gui/windows/killstats.h
    gui/windows/logindialog.cpp
    gui/windows/logindialog.h
    gui/windows/minimap.cpp
    gui/windows/minimap.h
    gui/windows/ministatuswindow.cpp
    gui/windows/ministatuswindow.h
    gui/windows/npcdialog.cpp
    gui/windows/npcdialog.h
    gui/windows/npcpostdialog.cpp
    gui/windows/npcpostdialog.h
    gui/windows/npcselldialog.cpp
    gui/windows/npcselldialog.h
    gui/windows/okdialog.cpp
    gui/windows/okdialog.h
    gui/windows/outfitwindow.cpp
    gui/windows/outfitwindow.h
    gui/windows/bankwindow.cpp
    gui/windows/bankwindow.h
    gui/windows/botcheckerwindow.cpp
    gui/windows/botcheckerwindow.h
    gui/windows/textcommandeditor.cpp
    gui/windows/textcommandeditor.h
    gui/onlineplayer.h
    gui/palette.cpp
    gui/palette.h
    gui/popupmanager.cpp
    gui/popupmanager.h
    gui/popups/popupmenu.cpp
    gui/popups/popupmenu.h
    gui/popups/skillpopup.cpp
    gui/popups/skillpopup.h
    gui/windows/questswindow.cpp
    gui/windows/questswindow.h
    gui/windows/quitdialog.cpp
    gui/windows/quitdialog.h
    gui/windows/registerdialog.cpp
    gui/windows/registerdialog.h
    gui/sdlinput.cpp
    gui/sdlinput.h
    gui/widgets/selldialog.cpp
    gui/widgets/selldialog.h
    gui/windows/serverdialog.cpp
    gui/windows/serverdialog.h
    gui/windows/setupwindow.cpp
    gui/windows/setupwindow.h
    gui/windows/shopselldialog.cpp
    gui/windows/shopselldialog.h
    gui/widgets/tabs/setup_audio.cpp
    gui/widgets/tabs/setup_audio.h
    gui/widgets/tabs/setup_colors.cpp
    gui/widgets/tabs/setup_colors.h
    gui/widgets/tabs/setup_joystick.cpp
    gui/widgets/tabs/setup_joystick.h
    gui/widgets/tabs/setup_mods.cpp
    gui/widgets/tabs/setup_mods.h
    gui/widgets/tabs/setup_other.cpp
    gui/widgets/tabs/setup_other.h
    gui/widgets/tabs/setup_theme.cpp
    gui/widgets/tabs/setup_theme.h
    gui/widgets/tabs/setup_touch.cpp
    gui/widgets/tabs/setup_touch.h
    gui/widgets/tabs/setup_chat.cpp
    gui/widgets/tabs/setup_chat.h
    gui/widgets/tabs/setup_input.cpp
    gui/widgets/tabs/setup_input.h
    gui/widgets/tabs/setup_perfomance.cpp
    gui/widgets/tabs/setup_perfomance.h
    gui/widgets/tabs/setup_relations.cpp
    gui/widgets/tabs/setup_relations.h
    gui/widgets/tabs/setup_players.cpp
    gui/widgets/tabs/setup_players.h
    gui/widgets/tabs/setup_video.cpp
    gui/widgets/tabs/setup_video.h
    gui/widgets/tabs/setup_visual.cpp
    gui/widgets/tabs/setup_visual.h
    gui/setupactiondata.h
    gui/setupinputpages.cpp
    gui/setupinputpages.h
    input/pages/basic.cpp
    input/pages/basic.h
    input/pages/chat.cpp
    input/pages/chat.h
    input/pages/emotes.cpp
    input/pages/emotes.h
    input/pages/gui.cpp
    input/pages/gui.h
    input/pages/move.cpp
    input/pages/move.h
    input/pages/other.cpp
    input/pages/other.h
    input/pages/outfits.cpp
    input/pages/outfits.h
    input/pages/shortcuts.cpp
    input/pages/shortcuts.h
    input/pages/windows.cpp
    input/pages/windows.h
    gui/fonts/font.cpp
    gui/fonts/font.h
    gui/fonts/textchunk.cpp
    gui/fonts/textchunk.h
    gui/fonts/textchunklist.cpp
    gui/fonts/textchunklist.h
    gui/fonts/textchunksmall.cpp
    gui/fonts/textchunksmall.h
    gui/windows/shopwindow.cpp
    gui/windows/shopwindow.h
    gui/windows/shortcutwindow.cpp
    gui/windows/shortcutwindow.h
    gui/windows/skilldialog.cpp
    gui/windows/skilldialog.h
    gui/windows/socialwindow.cpp
    gui/windows/socialwindow.h
    gui/popups/speechbubble.cpp
    gui/popups/speechbubble.h
    gui/windows/statuswindow.cpp
    gui/windows/statuswindow.h
    gui/windows/textdialog.cpp
    gui/windows/textdialog.h
    gui/popups/textpopup.cpp
    gui/popups/textpopup.h
    gui/skin.cpp
    gui/skin.h
    gui/theme.cpp
    gui/theme.h
    gui/themeinfo.h
    gui/touchactiondata.cpp
    gui/touchactiondata.h
    gui/windows/tradewindow.cpp
    gui/windows/tradewindow.h
    gui/windows/unregisterdialog.cpp
    gui/windows/unregisterdialog.h
    gui/windows/updaterwindow.cpp
    gui/windows/updaterwindow.h
    gui/userpalette.cpp
    gui/userpalette.h
    gui/viewport.cpp
    gui/viewport.h
    gui/windowmanager.cpp
    gui/windowmanager.h
    gui/windows/whoisonline.cpp
    gui/windows/whoisonline.h
    gui/windowmenu.cpp
    gui/windowmenu.h
    gui/windows/worldselectdialog.cpp
    gui/windows/worldselectdialog.h
    net/adminhandler.h
    net/auctionhandler.h
    net/bankhandler.h
    net/character.h
    net/charserverhandler.cpp
    net/charserverhandler.h
    net/chathandler.h
    net/elementalhandler.h
    net/download.cpp
    net/download.h
    net/downloadstatus.h
    net/gamehandler.h
    net/generalhandler.h
    net/guildhandler.h
    net/homunculushandler.h
    net/inventoryhandler.h
    net/ipc.cpp
    net/ipc.h
    net/ea/inventoryitem.h
    net/logindata.h
    net/loginhandler.h
    net/mailhandler.h
    net/mercenaryhandler.h
    net/messagehandler.h
    net/messagein.cpp
    net/messagein.h
    net/messageout.cpp
    net/messageout.h
    net/npchandler.h
    net/net.cpp
    net/net.h
    net/netconsts.h
    net/partyhandler.h
    net/partyshare.h
    net/pethandler.h
    net/playerhandler.h
    net/registrationoptions.h
    net/sdltcpnet.cpp
    net/sdltcpnet.h
    net/serverfeatures.h
    net/serverinfo.h
    net/skillhandler.h
    net/tradehandler.h
    net/updatetype.h
    net/uploadcharinfo.h
    net/worldinfo.h
    net/packetcounters.cpp
    net/packetcounters.h
    net/packetlimiter.cpp
    net/packetlimiter.h
    resources/action.cpp
    resources/action.h
    resources/ambientlayer.cpp
    resources/ambientlayer.h
    resources/animation.cpp
    resources/animation.h
    resources/atlasitem.h
    resources/atlasmanager.cpp
    resources/atlasmanager.h
    resources/atlasresource.cpp
    resources/atlasresource.h
    resources/attack.h
    resources/db/avatardb.cpp
    resources/db/avatardb.h
    resources/beingcommon.cpp
    resources/beingcommon.h
    resources/beinginfo.cpp
    resources/beinginfo.h
    resources/chatobject.h
    resources/db/chardb.cpp
    resources/db/chardb.h
    resources/db/colordb.cpp
    resources/db/colordb.h
    resources/db/commandsdb.cpp
    resources/db/commandsdb.h
    resources/cursor.cpp
    resources/cursor.h
    resources/delayedmanager.cpp
    resources/delayedmanager.h
    resources/db/deaddb.cpp
    resources/db/deaddb.h
    resources/dye.cpp
    resources/dye.h
    resources/dyecolor.h
    resources/dyepalette.cpp
    resources/dyepalette.h
    resources/effectdescription.h
    resources/emoteinfo.h
    resources/emotesprite.h
    resources/equipmentslots.h
    resources/db/emotedb.cpp
    resources/db/emotedb.h
    resources/db/homunculusdb.cpp
    resources/db/homunculusdb.h
    resources/fboinfo.h
    resources/frame.h
    resources/image.cpp
    resources/image.h
    resources/imagehelper.cpp
    resources/imagehelper.h
    resources/imagerect.h
    resources/imageset.h
    resources/imageset.cpp
    resources/imagewriter.cpp
    resources/imagewriter.h
    resources/db/itemdb.cpp
    resources/db/itemdb.h
    resources/db/itemdbstat.h
    resources/iteminfo.h
    resources/iteminfo.cpp
    resources/itemslot.h
    resources/itemsoundevent.h
    resources/itemtype.h
    resources/itemtypemap.h
    resources/itemtypemapdata.h
    resources/db/mapdb.cpp
    resources/db/mapdb.h
    resources/db/mercenarydb.cpp
    resources/db/mercenarydb.h
    resources/db/moddb.cpp
    resources/db/moddb.h
    resources/mapinfo.h
    resources/mapitemtype.h
    resources/mapreader.cpp
    resources/mapreader.h
    resources/modinfo.cpp
    resources/modinfo.h
    resources/notificationinfo.h
    resources/notifications.h
    resources/notifyflags.h
    resources/notifytypes.h
    resources/db/monsterdb.cpp
    resources/db/monsterdb.h
    resources/db/npcdb.cpp
    resources/db/npcdb.h
    resources/openglimagehelper.cpp
    resources/openglimagehelper.h
    resources/questeffect.h
    resources/questitem.h
    resources/questitemtext.h
    resources/questtype.h
    resources/db/palettedb.cpp
    resources/db/palettedb.h
    resources/db/petdb.cpp
    resources/db/petdb.h
    resources/resource.cpp
    resources/resource.h
    resources/resourcemanager.cpp
    resources/resourcemanager.h
    resources/sdl2imagehelper.cpp
    resources/sdl2imagehelper.h
    resources/sdl2softwareimagehelper.cpp
    resources/sdl2softwareimagehelper.h
    resources/sdlimagehelper.cpp
    resources/sdlimagehelper.h
    resources/sdlmusic.cpp
    resources/sdlmusic.h
    resources/skillconsts.h
    resources/skillowner.h
    resources/skilltype.h
    resources/db/sounddb.cpp
    resources/db/sounddb.h
    resources/db/weaponsdb.cpp
    resources/db/weaponsdb.h
    resources/soundeffect.cpp
    resources/soundeffect.h
    resources/soundinfo.h
    resources/spriteaction.h
    resources/spritedef.h
    resources/spritedef.cpp
    resources/spritedirection.h
    resources/spritedisplay.h
    resources/spritereference.h
    resources/subimage.cpp
    resources/subimage.h
    resources/surfaceimagehelper.cpp
    resources/surfaceimagehelper.h
    resources/textureatlas.h
    resources/updatefile.h
    resources/wallpaper.cpp
    resources/wallpaper.h
    resources/wallpaperdata.h
    utils/translation/podict.cpp
    utils/translation/podict.h
    utils/translation/poparser.cpp
    utils/translation/poparser.h
    utils/translation/translationmanager.cpp
    utils/translation/translationmanager.h
    utils/base64.cpp
    utils/base64.h
    utils/booleanoptions.h
    utils/chatutils.cpp
    utils/chatutils.h
    utils/checkutils.cpp
    utils/checkutils.h
    utils/copynpaste.cpp
    utils/copynpaste.h
    utils/cpu.cpp
    utils/cpu.h
    utils/delete2.h
    utils/dtor.h
    utils/files.cpp
    utils/files.h
    utils/fuzzer.cpp
    utils/fuzzer.h
    utils/gettext.h
    utils/gettexthelper.cpp
    utils/gettexthelper.h
    utils/glxhelper.cpp
    utils/glxhelper.h
    utils/langs.cpp
    utils/langs.h
    utils/mathutils.h
    utils/paths.cpp
    utils/paths.h
    utils/perfomance.cpp
    utils/perfomance.h
    utils/physfscheckutils.cpp
    utils/physfscheckutils.h
    utils/physfsmemoryobject.h
    utils/physfsrwops.cpp
    utils/physfsrwops.h
    utils/physfstools.cpp
    utils/physfstools.h
    utils/process.cpp
    utils/process.h
    utils/sdl2helper.cpp
    utils/sdl2helper.h
    utils/sdlcheckutils.cpp
    utils/sdlcheckutils.h
    utils/sdlhelper.cpp
    utils/sdlhelper.h
    utils/sdlmemoryobject.h
    utils/stringutils.cpp
    utils/stringutils.h
    utils/stringvector.h
    utils/timer.cpp
    utils/timer.h
    utils/mutex.h
    utils/mkdir.cpp
    utils/mkdir.h
    utils/xml.cpp
    utils/xml.h
    utils/xmlutils.cpp
    utils/xmlutils.h
    test/testlauncher.cpp
    test/testlauncher.h
    test/testmain.cpp
    test/testmain.h
    actions/actiondef.h
    actions/actionfuncptr.h
    actions/actions.cpp
    actions/actions.h
    actions/chat.cpp
    actions/chat.h
    actions/commands.cpp
    actions/commands.h
    actions/move.cpp
    actions/move.h
    actions/statusbar.cpp
    actions/statusbar.h
    actions/tabs.cpp
    actions/tabs.h
    actions/target.cpp
    actions/target.h
    actions/windows.cpp
    actions/windows.h
    being/actor.cpp
    being/actor.h
    being/actorsprite.cpp
    being/actorsprite.h
    being/actortype.h
    being/attributes.h
    listeners/actorspritelistener.h
    listeners/arrowslistener.cpp
    listeners/arrowslistener.h
    listeners/attributelistener.cpp
    listeners/attributelistener.h
    listeners/awaylistener.cpp
    listeners/awaylistener.h
    listeners/banklistener.cpp
    listeners/banklistener.h
    listeners/baselistener.hpp
    listeners/charrenamelistener.cpp
    listeners/charrenamelistener.h
    actormanager.cpp
    actormanager.h
    animatedsprite.cpp
    animatedsprite.h
    animationdelayload.cpp
    animationdelayload.h
    particle/animationparticle.cpp
    particle/animationparticle.h
    avatar.cpp
    avatar.h
    being/being.cpp
    being/being.h
    being/beingaction.h
    being/beingcacheentry.h
    being/beingdirection.h
    being/beingflag.h
    being/beingspeech.h
    beingequipbackend.cpp
    beingequipbackend.h
    spellmanager.cpp
    spellmanager.h
    chatlogger.cpp
    chatlogger.h
    client.cpp
    client.h
    configmanager.cpp
    configmanager.h
    being/compounditem.h
    being/compoundsprite.cpp
    being/compoundsprite.h
    being/cookingtype.h
    being/gender.h
    being/homunculusinfo.h
    listeners/configlistener.h
    configuration.cpp
    configuration.h
    debug.h
    defaults.cpp
    defaults.h
    dirs.cpp
    dirs.h
    dragdrop.h
    effectmanager.cpp
    effectmanager.h
    emoteshortcut.cpp
    emoteshortcut.h
    emoteshortcutconsts.h
    equipment.h
    eventsmanager.cpp
    eventsmanager.h
    flooritem.cpp
    flooritem.h
    game.cpp
    game.h
    gamemodifiers.cpp
    gamemodifiers.h
    render/graphics.cpp
    render/graphics.h
    graphicsmanager.cpp
    graphicsmanager.h
    graphicsvertexes.cpp
    graphicsvertexes.h
    guild.cpp
    guild.h
    guildmanager.cpp
    guildmanager.h
    guildpositionflags.h
    particle/imageparticle.cpp
    particle/imageparticle.h
    imagesprite.cpp
    imagesprite.h
    inventory.cpp
    inventory.h
    item.cpp
    item.h
    itemshortcut.cpp
    itemshortcut.h
    itemsoundmanager.cpp
    itemsoundmanager.h
    dropshortcut.cpp
    dropshortcut.h
    spellshortcut.cpp
    spellshortcut.h
    textcommand.cpp
    textcommand.h
    input/inputaction.h
    input/inputactiondata.h
    input/inputactionmap.h
    input/inputactionsortfunctor.h
    input/inputcondition.h
    input/inputfunction.h
    input/inputitem.h
    input/inputmanager.cpp
    input/inputmanager.h
    input/inputtype.h
    events/inputevent.h
    input/joystick.cpp
    input/joystick.h
    input/keyboardconfig.cpp
    input/keyboardconfig.h
    input/keyinput.h
    input/multitouchmanager.cpp
    input/multitouchmanager.h
    localconsts.h
    being/localplayer.cpp
    being/localplayer.h
    being/mercenaryinfo.h
    being/petinfo.h
    being/pickup.h
    logger.cpp
    logger.h
    main.cpp
    main.h
    resources/map/blockmask.h
    resources/map/blocktype.h
    resources/map/location.h
    resources/map/map.cpp
    resources/map/map.h
    resources/map/mapconsts.h
    resources/map/mapheights.cpp
    resources/map/mapheights.h
    resources/map/mapitem.cpp
    resources/map/mapitem.h
    resources/map/maplayer.cpp
    resources/map/maplayer.h
    resources/map/mapobject.h
    resources/map/mapobjectlist.h
    resources/map/maprowvertexes.h
    resources/map/maptype.h
    resources/map/metatile.h
    resources/map/objectslayer.cpp
    resources/map/objectslayer.h
    render/mgl.cpp
    render/mgl.h
    render/mgl.hpp
    render/mglcheck.h
    render/mgldefines.h
    render/mglemu.cpp
    render/mglemu.h
    render/mglfunctions.h
    render/mgltypes.h
    render/mglx.cpp
    render/mglx.h
    render/mglx.hpp
    render/mglxinit.cpp
    render/mglxinit.h
    render/mglxtypes.h
    render/mobileopenglgraphics.cpp
    render/mobileopenglgraphics.h
    render/modernopenglgraphics.cpp
    render/modernopenglgraphics.h
    input/mouseinput.h
    mumblemanager.cpp
    mumblemanager.h
    navigationmanager.cpp
    navigationmanager.h
    render/normalopenglgraphics.cpp
    render/normalopenglgraphics.h
    notifymanager.cpp
    notifymanager.h
    options.h
    render/graphicsdef.hpp
    render/imagegraphics.cpp
    render/imagegraphics.h
    render/graphics_calcImageRect.hpp
    render/graphics_drawImageRect.hpp
    render/nullopenglgraphics.cpp
    render/nullopenglgraphics.h
    render/opengldebug.h
    render/openglgraphicsdef.hpp
    render/openglgraphicsdef1.hpp
    render/openglgraphicsdefadvanced.hpp
    render/renderers.cpp
    render/renderers.h
    render/rendererslistsdl.h
    render/rendererslistsdl2.h
    render/rendertype.h
    particle/particle.cpp
    particle/particle.h
    particle/particlecontainer.cpp
    particle/particlecontainer.h
    particle/particleemitter.cpp
    particle/particleemitter.h
    particle/particleemitterprop.h
    particle/particleinfo.h
    particle/particlelist.cpp
    particle/particlelist.h
    particle/particlevector.cpp
    particle/particlevector.h
    party.cpp
    party.h
    being/playerignorestrategy.h
    being/playerinfo.cpp
    being/playerinfo.h
    being/playerrelation.cpp
    being/playerrelation.h
    being/playerrelations.cpp
    being/playerrelations.h
    being/rank.h
    being/targetcursorsize.h
    being/targetcursortype.h
    listeners/playerrelationslistener.h
    listeners/renamelistener.cpp
    listeners/renamelistener.h
    listeners/requesttradelistener.h
    position.cpp
    position.h
    resources/map/properties.h
    resources/map/speciallayer.cpp
    resources/map/speciallayer.h
    resources/map/tileanimation.cpp
    resources/map/tileanimation.h
    particle/rotationalparticle.cpp
    particle/rotationalparticle.h
    render/safeopenglgraphics.cpp
    render/safeopenglgraphics.h
    render/sdl2graphics.cpp
    render/sdl2graphics.h
    render/sdl2softwaregraphics.cpp
    render/sdl2softwaregraphics.h
    render/sdlgraphics.cpp
    render/sdlgraphics.h
    render/softwaregraphicsdef.hpp
    sdlshared.h
    settings.cpp
    settings.h
    shopitem.cpp
    shopitem.h
    shortcutbase.cpp
    shortcutbase.h
    simpleanimation.cpp
    simpleanimation.h
    soundconsts.h
    soundmanager.cpp
    soundmanager.h
    sprite.h
    state.h
    statuseffect.cpp
    statuseffect.h
    render/surfacegraphics.cpp
    render/surfacegraphics.h
    render/shaders/shader.cpp
    render/shaders/shader.h
    render/shaders/shaderprogram.cpp
    render/shaders/shaderprogram.h
    render/shaders/shadersmanager.cpp
    render/shaders/shadersmanager.h
    text.cpp
    text.h
    textmanager.cpp
    textmanager.h
    particle/textparticle.cpp
    particle/textparticle.h
    resources/map/tileset.h
    touchactions.cpp
    touchactions.h
    touchmanager.cpp
    touchmanager.h
    units.cpp
    units.h
    variabledata.h
    vector.cpp
    vector.h
    resources/map/walklayer.cpp
    resources/map/walklayer.h
    events/actionevent.h
    listeners/actionlistener.h
    gui/widgets/basiccontainer.h
    gui/buttoninfo.h
    gui/buttontext.h
    gui/chatconsts.h
    gui/chatlog.h
    gui/chatmsgtype.h
    gui/cliprect.h
    gui/color.cpp
    gui/color.h
    gui/colorpair.h
    gui/dialogtype.h
    listeners/errorlistener.cpp
    listeners/errorlistener.h
    listeners/widgetdeathlistener.h
    events/event.h
    listeners/focuslistener.h
    listeners/guiconfiglistener.h
    listeners/guitableactionlistener.cpp
    listeners/guitableactionlistener.h
    listeners/inventorylistener.h
    events/inputguievent.h
    input/key.h
    events/keyevent.h
    events/keyeventtype.h
    listeners/keylistener.h
    gui/models/listmodel.h
    gui/models/magicschoolmodel.h
    events/mouseevent.h
    events/mousebutton.h
    events/mouseeventtype.h
    listeners/mouselistener.h
    listeners/openurllistener.h
    listeners/pincodelistener.cpp
    listeners/pincodelistener.h
    listeners/playerdeathlistener.cpp
    listeners/playerdeathlistener.h
    listeners/playerpostdeathlistener.h
    listeners/playerlistener.cpp
    listeners/playerlistener.h
    gui/rect.h
    events/selectionevent.h
    listeners/selectionlistener.h
    listeners/statlistener.cpp
    listeners/statlistener.h
    listeners/tablemodellistener.h
    listeners/tooltiplistener.cpp
    listeners/tooltiplistener.h
    listeners/updatestatuslistener.cpp
    listeners/updatestatuslistener.h
    listeners/uploadlistener.cpp
    listeners/uploadlistener.h
    utils/sdlpixel.h
    gui/widgets/widget.h
    listeners/weightlistener.h
    listeners/widgetlistener.h
    listeners/wrongdatanoticelistener.cpp
    listeners/wrongdatanoticelistener.h
    gui/widgets/basiccontainer2.h
    gui/widgets/basiccontainer.cpp
    gui/cliprect.cpp
    gui/color.cpp
    gui/dialogsmanager.cpp
    gui/dialogsmanager.h
    input/key.cpp
    gui/rect.cpp
    gui/widgets/widget.cpp
    gui/widgets/basiccontainer2.cpp
    )

SET(DYE_CMD_SRCS
    gui/cliprect.cpp
    gui/color.cpp
    gui/rect.cpp
    events/actionevent.h
    gui/cliprect.h
    gui/color.h
    events/event.h
    gui/rect.h
    dyetool/dyemain.cpp
    animatedsprite.cpp
    animatedsprite.h
    animationdelayload.cpp
    animationdelayload.h
    configuration.cpp
    configuration.h
    graphicsmanager.cpp
    graphicsmanager.h
    graphicsvertexes.cpp
    graphicsvertexes.h
    logger.cpp
    logger.h
    navigationmanager.cpp
    navigationmanager.h
    settings.cpp
    settings.h
    resources/map/walklayer.cpp
    resources/map/walklayer.h
    render/graphics.cpp
    render/graphics.h
    render/renderers.cpp
    render/renderers.h
    render/sdl2softwaregraphics.cpp
    render/sdl2softwaregraphics.h
    render/sdl2graphics.cpp
    render/sdl2graphics.h
    render/sdlgraphics.cpp
    render/sdlgraphics.h
    render/softwaregraphicsdef.hpp
    render/mgltypes.h
    resources/action.cpp
    resources/action.h
    resources/animation.cpp
    resources/animation.h
    resources/db/palettedb.cpp
    resources/db/palettedb.h
    resources/delayedmanager.cpp
    resources/delayedmanager.h
    resources/dye.cpp
    resources/dye.h
    resources/dyepalette.cpp
    resources/dyepalette.h
    resources/effectdescription.h
    resources/emoteinfo.h
    resources/emotesprite.h
    resources/image.cpp
    resources/image.h
    resources/imagehelper.cpp
    resources/imagehelper.h
    resources/imagerect.h
    resources/imageset.cpp
    resources/imageset.h
    resources/imagewriter.cpp
    resources/imagewriter.h
    resources/resource.cpp
    resources/resource.h
    resources/resourcemanager.cpp
    resources/resourcemanager.h
    resources/sdl2softwareimagehelper.cpp
    resources/sdl2softwareimagehelper.h
    resources/sdl2imagehelper.cpp
    resources/sdl2imagehelper.h
    resources/sdlimagehelper.cpp
    resources/sdlimagehelper.h
    resources/sdlmusic.cpp
    resources/sdlmusic.h
    resources/skillconsts.h
    resources/soundeffect.cpp
    resources/soundeffect.h
    resources/subimage.cpp
    resources/subimage.h
    resources/surfaceimagehelper.cpp
    resources/surfaceimagehelper.h
    resources/textureatlas.h
    resources/updatefile.h
    resources/spritedef.cpp
    resources/spritedef.h
    resources/spritedisplay.h
    resources/spritereference.h
    utils/files.cpp
    utils/files.h
    utils/mkdir.cpp
    utils/mkdir.h
    utils/paths.cpp
    utils/paths.h
    utils/perfomance.cpp
    utils/perfomance.h
    utils/physfsrwops.cpp
    utils/physfsrwops.h
    utils/physfstools.cpp
    utils/physfstools.h
    utils/sdl2helper.cpp
    utils/sdl2helper.h
    utils/sdlcheckutils.cpp
    utils/sdlcheckutils.h
    utils/sdlhelper.cpp
    utils/sdlhelper.h
    utils/sdlmemoryobject.h
    utils/stringutils.cpp
    utils/stringutils.h
    utils/timer.cpp
    utils/timer.h
    utils/xml.cpp
    utils/xml.h
    utils/xmlutils.cpp
    utils/xmlutils.h
    utils/translation/podict.cpp
    utils/translation/podict.h
)

SET(SRCS_EVOL
    net/ea/adminhandler.cpp
    net/ea/adminhandler.h
    net/ea/beinghandler.cpp
    net/ea/beinghandler.h
    net/ea/buysellhandler.cpp
    net/ea/buysellhandler.h
    net/ea/charserverhandler.cpp
    net/ea/charserverhandler.h
    net/ea/chathandler.cpp
    net/ea/chathandler.h
    net/ea/eaprotocol.h
    net/ea/equipbackend.h
    net/ea/gamehandler.cpp
    net/ea/gamehandler.h
    net/ea/guildhandler.cpp
    net/ea/guildhandler.h
    net/ea/inventoryhandler.cpp
    net/ea/inventoryhandler.h
    net/ea/itemhandler.cpp
    net/ea/itemhandler.h
    net/ea/loginhandler.cpp
    net/ea/loginhandler.h
    net/ea/network.cpp
    net/ea/network.h
    net/ea/npchandler.cpp
    net/ea/npchandler.h
    net/ea/partyhandler.cpp
    net/ea/partyhandler.h
    net/ea/playerhandler.cpp
    net/ea/playerhandler.h
    net/ea/skillhandler.cpp
    net/ea/skillhandler.h
    net/ea/token.h
    net/ea/tradehandler.cpp
    net/ea/tradehandler.h
    )

SET(SRCS_TMWA
    net/tmwa/adminhandler.cpp
    net/tmwa/adminhandler.h
    net/tmwa/auctionhandler.cpp
    net/tmwa/auctionhandler.h
    net/tmwa/bankhandler.cpp
    net/tmwa/bankhandler.h
    net/tmwa/cashshophandler.cpp
    net/tmwa/cashshophandler.h
    net/tmwa/beinghandler.cpp
    net/tmwa/beinghandler.h
    net/tmwa/buyingstorehandler.cpp
    net/tmwa/buyingstorehandler.h
    net/tmwa/buysellhandler.cpp
    net/tmwa/buysellhandler.h
    net/tmwa/charserverhandler.cpp
    net/tmwa/charserverhandler.h
    net/tmwa/chathandler.cpp
    net/tmwa/chathandler.h
    net/tmwa/elementalhandler.cpp
    net/tmwa/elementalhandler.h
    net/tmwa/familyhandler.cpp
    net/tmwa/familyhandler.h
    net/tmwa/friendshandler.cpp
    net/tmwa/friendshandler.h
    net/tmwa/gamehandler.cpp
    net/tmwa/gamehandler.h
    net/tmwa/generalhandler.cpp
    net/tmwa/generalhandler.h
    net/tmwa/guildhandler.cpp
    net/tmwa/guildhandler.h
    net/tmwa/homunculushandler.cpp
    net/tmwa/homunculushandler.h
    net/tmwa/inventoryhandler.cpp
    net/tmwa/inventoryhandler.h
    net/tmwa/itemhandler.cpp
    net/tmwa/itemhandler.h
    net/tmwa/loginhandler.cpp
    net/tmwa/loginhandler.h
    net/tmwa/mailhandler.cpp
    net/tmwa/mailhandler.h
    net/tmwa/mercenaryhandler.cpp
    net/tmwa/mercenaryhandler.h
    net/tmwa/messagehandler.cpp
    net/tmwa/messagehandler.h
    net/tmwa/messagein.cpp
    net/tmwa/messagein.h
    net/tmwa/messageout.cpp
    net/tmwa/messageout.h
    net/tmwa/network.cpp
    net/tmwa/network.h
    net/tmwa/npchandler.cpp
    net/tmwa/npchandler.h
    net/tmwa/packets.h
    net/tmwa/partyhandler.cpp
    net/tmwa/partyhandler.h
    net/tmwa/pethandler.cpp
    net/tmwa/pethandler.h
    net/tmwa/playerhandler.cpp
    net/tmwa/playerhandler.h
    net/tmwa/protocol.h
    net/tmwa/questhandler.cpp
    net/tmwa/questhandler.h
    net/tmwa/serverfeatures.cpp
    net/tmwa/serverfeatures.h
    net/tmwa/skillhandler.cpp
    net/tmwa/skillhandler.h
    net/tmwa/sprite.h
    net/tmwa/tradehandler.cpp
    net/tmwa/tradehandler.h
    )

SET(SRCS_EATHENA
    net/eathena/adminhandler.cpp
    net/eathena/adminhandler.h
    net/eathena/auctionhandler.cpp
    net/eathena/auctionhandler.h
    net/eathena/bankhandler.cpp
    net/eathena/bankhandler.h
    net/eathena/cashshophandler.cpp
    net/eathena/cashshophandler.h
    net/eathena/beinghandler.cpp
    net/eathena/beinghandler.h
    net/eathena/buyingstorehandler.cpp
    net/eathena/buyingstorehandler.h
    net/eathena/beingtype.h
    net/eathena/buysellhandler.cpp
    net/eathena/buysellhandler.h
    net/eathena/charserverhandler.cpp
    net/eathena/charserverhandler.h
    net/eathena/chathandler.cpp
    net/eathena/chathandler.h
    net/eathena/elementalhandler.cpp
    net/eathena/elementalhandler.h
    net/eathena/familyhandler.cpp
    net/eathena/familyhandler.h
    net/eathena/friendshandler.cpp
    net/eathena/friendshandler.h
    net/eathena/gamehandler.cpp
    net/eathena/gamehandler.h
    net/eathena/generalhandler.cpp
    net/eathena/generalhandler.h
    net/eathena/guildhandler.cpp
    net/eathena/guildhandler.h
    net/eathena/homunculushandler.cpp
    net/eathena/homunculushandler.h
    net/eathena/inventoryhandler.cpp
    net/eathena/inventoryhandler.h
    net/eathena/itemflags.h
    net/eathena/itemhandler.cpp
    net/eathena/itemhandler.h
    net/eathena/loginhandler.cpp
    net/eathena/loginhandler.h
    net/eathena/mailhandler.cpp
    net/eathena/mailhandler.h
    net/eathena/menu.cpp
    net/eathena/menu.h
    net/eathena/menutype.h
    net/eathena/mercenaryhandler.cpp
    net/eathena/mercenaryhandler.h
    net/eathena/messagehandler.cpp
    net/eathena/messagehandler.h
    net/eathena/messagein.cpp
    net/eathena/messagein.h
    net/eathena/messageout.cpp
    net/eathena/messageout.h
    net/eathena/network.cpp
    net/eathena/network.h
    net/eathena/npchandler.cpp
    net/eathena/npchandler.h
    net/eathena/packets.h
    net/eathena/partyhandler.cpp
    net/eathena/partyhandler.h
    net/eathena/pethandler.cpp
    net/eathena/pethandler.h
    net/eathena/playerhandler.cpp
    net/eathena/playerhandler.h
    net/eathena/protocol.h
    net/eathena/questhandler.cpp
    net/eathena/questhandler.h
    net/eathena/serverfeatures.cpp
    net/eathena/serverfeatures.h
    net/eathena/skillhandler.cpp
    net/eathena/skillhandler.h
    net/eathena/sprite.h
    net/eathena/tradehandler.cpp
    net/eathena/tradehandler.h
    )

IF (WIN32)
    SET(SRCS
        ${SRCS}
        utils/specialfolder.cpp
        utils/specialfolder.h
        manaplus.rc
    )
    SET(DYE_CMD_SRCS
        ${DYE_CMD_SRCS}
        utils/specialfolder.cpp
        utils/specialfolder.h
        manaplus.rc
    )
ENDIF ()

SET (PROGRAMS manaplus dyecmd)

IF (ENABLE_EATHENA)
    SET(SRCS ${SRCS} ${SRCS_EATHENA})
ENDIF(ENABLE_EATHENA)
IF (ENABLE_TMWA)
    SET(SRCS ${SRCS} ${SRCS_TMWA})
ENDIF(ENABLE_TMWA)

ADD_EXECUTABLE(manaplus WIN32 ${SRCS} ${SRCS_EVOL})
ADD_EXECUTABLE(dyecmd WIN32 ${DYE_CMD_SRCS})

TARGET_LINK_LIBRARIES(manaplus
    ${SDLGFX_LIBRARIES}
    ${SDL_LIBRARY}
    ${SDLIMAGE_LIBRARY}
    ${SDLMIXER_LIBRARY}
    ${SDLNET_LIBRARY}
    ${SDLTTF_LIBRARY}
    ${PNG_LIBRARIES}
    ${PHYSFS_LIBRARY}
    ${ZLIB_LIBRARIES}
    ${CURL_LIBRARIES}
    ${LIBXML2_LIBRARIES}
    ${OPENGL_LIBRARIES}
    ${LIBINTL_LIBRARIES}
    ${EXTRA_LIBRARIES})
INSTALL(TARGETS manaplus RUNTIME DESTINATION ${PKG_BINDIR})

TARGET_LINK_LIBRARIES(dyecmd
    ${SDLGFX_LIBRARIES}
    ${SDL_LIBRARY}
    ${SDLIMAGE_LIBRARY}
    ${SDLMIXER_LIBRARY}
    ${SDLNET_LIBRARY}
    ${SDLTTF_LIBRARY}
    ${PNG_LIBRARIES}
    ${PHYSFS_LIBRARY}
    ${ZLIB_LIBRARIES}
    ${CURL_LIBRARIES}
    ${LIBXML2_LIBRARIES}
    ${OPENGL_LIBRARIES}
    ${LIBINTL_LIBRARIES}
    ${EXTRA_LIBRARIES})
INSTALL(TARGETS dyecmd RUNTIME DESTINATION ${PKG_BINDIR})

IF (CMAKE_SYSTEM_NAME STREQUAL SunOS)
    # we expect the SMCgtxt package to be present on Solaris;
    # the Solaris gettext is not API-compatible to GNU gettext
    SET_TARGET_PROPERTIES(manaplus PROPERTIES LINK_FLAGS "-L/usr/local/lib")
    SET_TARGET_PROPERTIES(dyecmd PROPERTIES LINK_FLAGS "-L/usr/local/lib")
ENDIF()

SET_TARGET_PROPERTIES(manaplus PROPERTIES COMPILE_FLAGS "${FLAGS}")
SET_TARGET_PROPERTIES(dyecmd PROPERTIES COMPILE_FLAGS "${DYE_FLAGS}")