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

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

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/createwidget.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/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/setupquickitem.cpp
    gui/widgets/setupquickitem.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/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/cutinwindow.cpp
    gui/windows/cutinwindow.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/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/mailmessage.h
    gui/windows/helpwindow.cpp
    gui/windows/helpwindow.h
    gui/windows/insertcarddialog.cpp
    gui/windows/insertcarddialog.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/npcselldialog.cpp
    gui/windows/npcselldialog.h
    gui/windows/okdialog.cpp
    gui/windows/okdialog.h
    gui/windows/outfitwindow.cpp
    gui/windows/outfitwindow.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/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_quick.cpp
    gui/widgets/tabs/setup_quick.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/craft.cpp
    input/pages/craft.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/windows/textselectdialog.cpp
    gui/windows/textselectdialog.h
    gui/popups/textpopup.cpp
    gui/popups/textpopup.h
    gui/skin.cpp
    gui/skin.h
    gui/theme.cpp
    gui/theme.h
    gui/themecolorsidoperators.cpp
    gui/themecolorsidoperators.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/character.h
    net/characters.h
    net/charserverhandler.cpp
    net/charserverhandler.h
    net/chathandler.h
    net/download.cpp
    net/download.h
    enums/net/auctionsearchtype.h
    enums/net/battlegroundtype.h
    enums/net/deleteitemreason.h
    enums/net/downloadstatus.h
    enums/net/npcaction.h
    enums/net/packettype.h
    net/gamehandler.h
    net/generalhandler.h
    net/guildhandler.h
    net/inventoryhandler.h
    net/ipc.cpp
    net/ipc.h
    net/ea/inventoryitem.h
    net/logindata.h
    net/loginhandler.h
    net/messagein.cpp
    net/messagein.h
    net/messageout.cpp
    net/messageout.h
    net/npchandler.h
    net/net.cpp
    net/net.h
    const/net/inventory.h
    const/net/net.h
    net/partyhandler.h
    enums/net/partyshare.h
    enums/net/servertype.h
    enums/net/storesearchtype.h
    net/pethandler.h
    net/playerhandler.h
    net/sdltcpnet.cpp
    net/sdltcpnet.h
    net/serverfeatures.h
    net/serverinfo.h
    net/skillhandler.h
    net/tradehandler.h
    net/updatetypeoperators.cpp
    net/updatetypeoperators.h
    enums/net/updatetype.h
    net/uploadcharinfo.h
    net/worldinfo.h
    net/packetcounters.cpp
    net/packetcounters.h
    net/packetfunction.h
    net/packetinfo.h
    net/packetlimiter.cpp
    net/packetlimiter.h
    net/protocolindefine.h
    net/protocoloutdefine.h
    net/protocoloutinclude.h
    net/protocoloutupdate.h
    net/recvpacketdefine.h
    resources/action.cpp
    resources/action.h
    resources/ambientlayer.cpp
    resources/ambientlayer.h
    resources/animation/animation.cpp
    resources/animation/animation.h
    resources/atlas/atlasitem.h
    resources/atlas/atlasmanager.cpp
    resources/atlas/atlasmanager.h
    resources/atlas/atlasresource.cpp
    resources/atlas/atlasresource.h
    resources/attack.h
    resources/db/avatardb.cpp
    resources/db/avatardb.h
    resources/db/badgesdb.cpp
    resources/db/badgesdb.h
    resources/beingcommon.cpp
    resources/beingcommon.h
    resources/beinginfo.cpp
    resources/beinginfo.h
    resources/beingmenuitem.h
    resources/chatobject.cpp
    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/dye.cpp
    resources/dye/dye.h
    resources/dye/dyecolor.h
    resources/dye/dyepalette.cpp
    resources/dye/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/db/horsedb.cpp
    resources/db/horsedb.h
    resources/fboinfo.h
    resources/frame.h
    resources/horseinfo.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
    enums/resources/imageposition.h
    enums/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
    enums/resources/map/mapitemtype.h
    resources/mapreader.cpp
    resources/mapreader.h
    resources/mobileopenglscreenshothelper.cpp
    resources/mobileopenglscreenshothelper.h
    resources/modinfo.cpp
    resources/modinfo.h
    resources/mstack.h
    resources/notificationinfo.h
    resources/notifications.h
    resources/npcbuttoninfo.h
    resources/npcdialoginfo.h
    resources/npcdialogmenuinfo.h
    resources/npcimageinfo.h
    resources/npcinventoryinfo.h
    resources/npctextinfo.h
    enums/resources/notifyflags.h
    enums/resources/notifytypes.h
    resources/db/monsterdb.cpp
    resources/db/monsterdb.h
    resources/db/npcdb.cpp
    resources/db/npcdb.h
    resources/db/npcdialogdb.cpp
    resources/db/npcdialogdb.h
    resources/openglimagehelper.cpp
    resources/openglimagehelper.h
    resources/openglscreenshothelper.cpp
    resources/openglscreenshothelper.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/db/skillunitdb.cpp
    resources/db/skillunitdb.h
    resources/resource.cpp
    resources/resource.h
    resources/resourcemanager.cpp
    resources/resourcemanager.h
    resources/safeopenglimagehelper.cpp
    resources/safeopenglimagehelper.h
    resources/screenshothelper.h
    resources/sdl2imagehelper.cpp
    resources/sdl2imagehelper.h
    resources/sdl2softwareimagehelper.cpp
    resources/sdl2softwareimagehelper.h
    resources/sdl2softwarescreenshothelper.cpp
    resources/sdl2softwarescreenshothelper.h
    resources/sdlimagehelper.cpp
    resources/sdlimagehelper.h
    resources/sdlmusic.cpp
    resources/sdlmusic.h
    resources/sdlscreenshothelper.cpp
    resources/sdlscreenshothelper.h
    const/net/skill.h
    const/resources/skill.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
    const/resources/spriteaction.h
    resources/sprite/spritedef.h
    resources/sprite/spritedef.cpp
    enums/resources/spritedirection.h
    resources/sprite/spritedisplay.h
    resources/sprite/spritereference.h
    resources/subimage.cpp
    resources/subimage.h
    resources/surfaceimagehelper.cpp
    resources/surfaceimagehelper.h
    resources/atlas/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/env.cpp
    utils/env.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/intmap.h
    utils/langs.cpp
    utils/langs.h
    utils/mathutils.h
    utils/parameters.cpp
    utils/parameters.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/stringmap.h
    utils/stringutils.cpp
    utils/stringutils.h
    utils/stringvector.h
    utils/timer.cpp
    utils/timer.h
    utils/mutex.h
    utils/naclmessages.cpp
    utils/naclmessages.h
    utils/mkdir.cpp
    utils/mkdir.h
    utils/xml.h
    utils/xml.inc
    utils/xmlutils.cpp
    utils/xmlutils.h
    utils/xmlwriter.h
    utils/xml/libxml.cpp
    utils/xml/libxml.h
    utils/xml/libxml.inc
    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/pets.cpp
    actions/pets.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
    enums/being/actortype.h
    enums/being/attacktype.h
    enums/being/attributes.h
    enums/being/badgeindex.h
    listeners/actorspritelistener.h
    listeners/arrowslistener.cpp
    listeners/arrowslistener.h
    listeners/attributelistener.cpp
    listeners/attributelistener.h
    listeners/awaylistener.cpp
    listeners/awaylistener.h
    listeners/baselistener.hpp
    listeners/charrenamelistener.cpp
    listeners/charrenamelistener.h
    actormanager.cpp
    actormanager.h
    resources/sprite/animatedsprite.cpp
    resources/sprite/animatedsprite.h
    resources/sprite/animationdelayload.cpp
    resources/sprite/animationdelayload.h
    particle/animationparticle.cpp
    particle/animationparticle.h
    avatar.cpp
    avatar.h
    being/being.cpp
    being/being.h
    enums/being/beingaction.h
    being/beingcacheentry.h
    enums/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
    commandline.cpp
    commandline.h
    configmanager.cpp
    configmanager.h
    being/compounditem.h
    being/compoundsprite.cpp
    being/compoundsprite.h
    being/crazymoves.cpp
    being/crazymoves.h
    enums/being/cookingtype.h
    enums/being/gender.h
    being/homunculusinfo.h
    listeners/configlistener.h
    listeners/debugmessagelistener.cpp
    listeners/debugmessagelistener.h
    configuration.cpp
    configuration.h
    debug.h
    defaults.cpp
    defaults.h
    dirs.cpp
    dirs.h
    dragdrop.h
    effectmanager.cpp
    effectmanager.h
    gui/shortcut/emoteshortcut.cpp
    gui/shortcut/emoteshortcut.h
    const/emoteshortcut.h
    equipment.h
    eventsmanager.cpp
    eventsmanager.h
    being/flooritem.cpp
    being/flooritem.h
    game.cpp
    game.h
    gamemodifiers.cpp
    gamemodifiers.h
    const/equipment.h
    const/spells.h
    const/utils/timer.h
    const/gui/chat.h
    const/gui/pages.h
    const/gui/theme.h
    const/render/graphics.h
    render/graphics.cpp
    render/graphics.h
    graphicsmanager.cpp
    graphicsmanager.h
    graphicsvertexes.cpp
    graphicsvertexes.h
    guild.cpp
    guild.h
    enums/commandtarget.h
    enums/cutin.h
    enums/dragdropsource.h
    enums/equipslot.h
    enums/guildpositionflags.h
    enums/inventorytype.h
    enums/magicschool.h
    particle/imageparticle.cpp
    particle/imageparticle.h
    resources/sprite/imagesprite.cpp
    resources/sprite/imagesprite.h
    resources/inventory/complexinventory.cpp
    resources/inventory/complexinventory.h
    resources/inventory/inventory.cpp
    resources/inventory/inventory.h
    resources/item/complexitem.cpp
    resources/item/complexitem.h
    resources/item/item.cpp
    resources/item/item.h
    itemcolormanager.cpp
    itemcolormanager.h
    gui/shortcut/itemshortcut.cpp
    gui/shortcut/itemshortcut.h
    itemsoundmanager.cpp
    itemsoundmanager.h
    gui/shortcut/dropshortcut.cpp
    gui/shortcut/dropshortcut.h
    gui/shortcut/spellshortcut.cpp
    gui/shortcut/spellshortcut.h
    textcommand.cpp
    textcommand.h
    enums/input/inputaction.h
    enums/input/inputgroup.h
    input/inputactiondata.h
    input/inputactionmap.h
    input/inputactionoperators.cpp
    input/inputactionoperators.h
    input/inputactionsortfunctor.h
    enums/input/inputcondition.h
    input/inputfunction.h
    input/inputitem.h
    input/inputmanager.cpp
    input/inputmanager.h
    enums/input/inputtype.h
    enums/input/keyvalue.h
    events/inputevent.h
    input/joystick.cpp
    input/joystick.h
    input/keyboardconfig.cpp
    input/keyboardconfig.h
    input/keyinput.h
    input/touch/multitouchmanager.cpp
    input/touch/multitouchmanager.h
    localconsts.h
    being/localplayer.cpp
    being/localplayer.h
    being/mercenaryinfo.h
    being/petinfo.h
    enums/being/pickup.h
    logger.cpp
    logger.h
    main.cpp
    main.h
    maingui.cpp
    maingui.h
    enums/resources/map/blockmask.h
    enums/resources/map/blocktype.h
    resources/map/location.h
    resources/map/map.cpp
    resources/map/map.h
    const/resources/item/cards.h
    const/resources/map/map.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
    enums/resources/map/maptype.h
    resources/map/metatile.h
    resources/map/objectslayer.cpp
    resources/map/objectslayer.h
    render/opengl/mgl.cpp
    render/opengl/mgl.h
    render/opengl/mgl.hpp
    render/opengl/mglcheck.h
    render/opengl/mgldefines.h
    render/opengl/mglemu.cpp
    render/opengl/mglemu.h
    render/opengl/mglfunctions.h
    render/opengl/mgltypes.h
    render/openglx/mglx.cpp
    render/openglx/mglx.h
    render/openglx/mglx.hpp
    render/openglx/mglxinit.cpp
    render/openglx/mglxinit.h
    render/openglx/mglxtypes.h
    render/mobileopengl2graphics.cpp
    render/mobileopengl2graphics.h
    render/mobileopenglgraphics.cpp
    render/mobileopenglgraphics.h
    render/modernopenglgraphics.cpp
    render/modernopenglgraphics.h
    render/nacl/naclfunctions.h
    render/nacl/naclgles.cpp
    render/nacl/naclgles.h
    input/mouseinput.h
    mumblemanager.cpp
    mumblemanager.h
    navigationmanager.cpp
    navigationmanager.h
    render/opengl/naclglfunctions.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/opengl/opengldebug.h
    render/openglgraphicsdef.hpp
    render/openglgraphicsdef1.hpp
    render/openglgraphicsdefadvanced.hpp
    render/renderers.cpp
    render/renderers.h
    render/rendererslistsdl.h
    render/rendererslistsdl2.h
    enums/particle/alivestatus.h
    enums/particle/particlechangefunc.h
    enums/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/particletimer.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
    enums/being/rank.h
    enums/being/reachable.h
    enums/being/relation.h
    enums/being/targetcursorsize.h
    enums/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
    resources/item/shopitem.cpp
    resources/item/shopitem.h
    gui/shortcut/shortcutbase.cpp
    gui/shortcut/shortcutbase.h
    resources/animation/simpleanimation.cpp
    resources/animation/simpleanimation.h
    const/sound.h
    soundmanager.cpp
    soundmanager.h
    resources/sprite/sprite.h
    enums/screendensity.h
    enums/state.h
    enums/textcommandtype.h
    enums/simpletypes/advanced.h
    enums/simpletypes/allowsort.h
    enums/simpletypes/allplayers.h
    enums/simpletypes/append.h
    enums/simpletypes/autorelease.h
    enums/simpletypes/autotarget.h
    enums/simpletypes/beingid.h
    enums/simpletypes/beingtypeid.h
    enums/simpletypes/booldefines.h
    enums/simpletypes/damaged.h
    enums/simpletypes/donotalign.h
    enums/simpletypes/enable.h
    enums/simpletypes/enumdefines.h
    enums/simpletypes/equipm.h
    enums/simpletypes/equipped.h
    enums/simpletypes/favorite.h
    enums/simpletypes/forcedisplay.h
    enums/simpletypes/forcequantity.h
    enums/simpletypes/identified.h
    enums/simpletypes/ignorerecord.h
    enums/simpletypes/intdefines.h
    enums/simpletypes/issell.h
    enums/simpletypes/itemcolor.h
    enums/simpletypes/keep.h
    enums/simpletypes/mainconfig.h
    enums/simpletypes/modal.h
    enums/simpletypes/modifiable.h
    enums/simpletypes/move.h
    enums/simpletypes/notify.h
    enums/simpletypes/npcnames.h
    enums/simpletypes/online.h
    enums/simpletypes/onthefly.h
    enums/simpletypes/protected.h
    enums/simpletypes/separator.h
    enums/simpletypes/sfx.h
    enums/simpletypes/showcenter.h
    enums/simpletypes/showemptyrows.h
    enums/simpletypes/skiperror.h
    enums/simpletypes/speech.h
    enums/simpletypes/trading.h
    enums/simpletypes/tryremovecolors.h
    enums/simpletypes/useargs.h
    enums/simpletypes/usebase64.h
    enums/simpletypes/useresman.h
    enums/simpletypes/visible.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/tileinfo.h
    resources/map/tileset.h
    input/touch/touchactions.cpp
    input/touch/touchactions.h
    input/touch/touchmanager.cpp
    input/touch/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
    const/gui/chat.h
    gui/chatlog.h
    enums/gui/chatmsgtype.h
    gui/cliprect.h
    gui/color.cpp
    gui/color.h
    gui/colorpair.h
    enums/gui/dialogtype.h
    enums/gui/gradienttype.h
    enums/gui/progresscolorid.h
    enums/gui/themecolorid.h
    enums/gui/usercolorid.h
    listeners/errorlistener.cpp
    listeners/errorlistener.h
    listeners/widgetdeathlistener.h
    events/event.h
    listeners/focuslistener.h
    listeners/gamemodifierlistener.cpp
    listeners/gamemodifierlistener.h
    listeners/guiconfiglistener.h
    listeners/guitableactionlistener.cpp
    listeners/guitableactionlistener.h
    listeners/inputactionreplaylistener.cpp
    listeners/inputactionreplaylistener.h
    listeners/insertcardlistener.h
    listeners/inventorylistener.h
    events/inputguievent.h
    input/key.h
    events/keyevent.h
    enums/events/keyeventtype.h
    listeners/keylistener.h
    gui/models/listmodel.h
    gui/models/magicschoolmodel.h
    events/mouseevent.h
    enums/events/mousebutton.h
    enums/events/mouseeventtype.h
    listeners/mouselistener.h
    listeners/openurllistener.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/textskilllistener.cpp
    listeners/textskilllistener.h
    listeners/tooltiplistener.cpp
    listeners/tooltiplistener.h
    listeners/updatestatuslistener.cpp
    listeners/updatestatuslistener.h
    listeners/uploadlistener.cpp
    listeners/uploadlistener.h
    utils/sdlpixel.h
    utils/sdlsharedhelper.cpp
    utils/sdlsharedhelper.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
    resources/sprite/animatedsprite.cpp
    resources/sprite/animatedsprite.h
    resources/sprite/animationdelayload.cpp
    resources/sprite/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
    listeners/debugmessagelistener.cpp
    listeners/debugmessagelistener.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/animation.cpp
    resources/animation/animation.h
    resources/db/palettedb.cpp
    resources/db/palettedb.h
    resources/delayedmanager.cpp
    resources/delayedmanager.h
    resources/dye/dye.cpp
    resources/dye/dye.h
    resources/dye/dyepalette.cpp
    resources/dye/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/atlas/textureatlas.h
    resources/updatefile.h
    resources/sprite/spritedef.cpp
    resources/sprite/spritedef.h
    resources/sprite/spritedisplay.h
    resources/sprite/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/xml.inc
    utils/xmlutils.cpp
    utils/xmlutils.h
    utils/translation/podict.cpp
    utils/translation/podict.h
)

SET(SRCS_EVOL
    net/ea/adminrecv.cpp
    net/ea/adminrecv.h
    net/ea/adminhandler.cpp
    net/ea/adminhandler.h
    net/ea/beingrecv.cpp
    net/ea/beingrecv.h
    net/ea/beinghandler.cpp
    net/ea/beinghandler.h
    net/ea/buysellhandler.cpp
    net/ea/buysellhandler.h
    net/ea/buysellrecv.cpp
    net/ea/buysellrecv.h
    net/ea/charserverhandler.cpp
    net/ea/charserverhandler.h
    net/ea/charserverrecv.cpp
    net/ea/charserverrecv.h
    net/ea/chathandler.cpp
    net/ea/chathandler.h
    net/ea/chatrecv.cpp
    net/ea/chatrecv.h
    net/ea/eaprotocol.h
    net/ea/equipbackend.h
    net/ea/gamehandler.cpp
    net/ea/gamehandler.h
    net/ea/gamerecv.cpp
    net/ea/gamerecv.h
    net/ea/guildhandler.cpp
    net/ea/guildhandler.h
    net/ea/guildrecv.cpp
    net/ea/guildrecv.h
    net/ea/inventoryhandler.cpp
    net/ea/inventoryhandler.h
    net/ea/inventoryrecv.cpp
    net/ea/inventoryrecv.h
    net/ea/itemhandler.cpp
    net/ea/itemhandler.h
    net/ea/itemrecv.cpp
    net/ea/itemrecv.h
    net/ea/loginhandler.cpp
    net/ea/loginhandler.h
    net/ea/loginrecv.cpp
    net/ea/loginrecv.h
    net/ea/network.cpp
    net/ea/network.h
    net/ea/npchandler.cpp
    net/ea/npchandler.h
    net/ea/npcrecv.cpp
    net/ea/npcrecv.h
    net/ea/partyhandler.cpp
    net/ea/partyhandler.h
    net/ea/partyrecv.cpp
    net/ea/partyrecv.h
    net/ea/playerhandler.cpp
    net/ea/playerhandler.h
    net/ea/playerrecv.cpp
    net/ea/playerrecv.h
    net/ea/skillhandler.cpp
    net/ea/skillhandler.h
    net/ea/skillrecv.cpp
    net/ea/skillrecv.h
    net/ea/token.h
    net/ea/tradehandler.cpp
    net/ea/tradehandler.h
    net/ea/traderecv.cpp
    net/ea/traderecv.h
    )

SET(SRCS_TMWA
    gui/widgets/tabs/chat/emulateguildtab.cpp
    gui/widgets/tabs/chat/emulateguildtab.h
    gui/windows/shopselldialog.cpp
    gui/windows/shopselldialog.h
    net/tmwa/adminhandler.cpp
    net/tmwa/adminhandler.h
    net/tmwa/beingrecv.cpp
    net/tmwa/beingrecv.h
    net/tmwa/beinghandler.cpp
    net/tmwa/beinghandler.h
    net/tmwa/buysellhandler.cpp
    net/tmwa/buysellhandler.h
    net/tmwa/buysellrecv.cpp
    net/tmwa/buysellrecv.h
    net/tmwa/charserverhandler.cpp
    net/tmwa/charserverhandler.h
    net/tmwa/charserverrecv.cpp
    net/tmwa/charserverrecv.h
    net/tmwa/chathandler.cpp
    net/tmwa/chathandler.h
    net/tmwa/chatrecv.cpp
    net/tmwa/chatrecv.h
    net/tmwa/gamehandler.cpp
    net/tmwa/gamehandler.h
    net/tmwa/gamerecv.cpp
    net/tmwa/gamerecv.h
    net/tmwa/generalhandler.cpp
    net/tmwa/generalhandler.h
    net/tmwa/generalrecv.cpp
    net/tmwa/generalrecv.h
    net/tmwa/guildhandler.cpp
    net/tmwa/guildhandler.h
    net/tmwa/guildmanager.cpp
    net/tmwa/guildmanager.h
    net/tmwa/guildrecv.cpp
    net/tmwa/guildrecv.h
    net/tmwa/inventoryhandler.cpp
    net/tmwa/inventoryhandler.h
    net/tmwa/inventoryrecv.cpp
    net/tmwa/inventoryrecv.h
    net/tmwa/itemhandler.cpp
    net/tmwa/itemhandler.h
    net/tmwa/itemrecv.cpp
    net/tmwa/itemrecv.h
    net/tmwa/loginhandler.cpp
    net/tmwa/loginhandler.h
    net/tmwa/loginrecv.cpp
    net/tmwa/loginrecv.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/packetsin.inc
    net/tmwa/packetsout.inc
    net/tmwa/partyhandler.cpp
    net/tmwa/partyhandler.h
    net/tmwa/partyrecv.cpp
    net/tmwa/partyrecv.h
    net/tmwa/pethandler.cpp
    net/tmwa/pethandler.h
    net/tmwa/playerhandler.cpp
    net/tmwa/playerhandler.h
    net/tmwa/playerrecv.cpp
    net/tmwa/playerrecv.h
    net/tmwa/protocolout.cpp
    net/tmwa/protocolout.h
    net/tmwa/questhandler.cpp
    net/tmwa/questhandler.h
    net/tmwa/questrecv.cpp
    net/tmwa/questrecv.h
    net/tmwa/recvpackets.inc
    net/tmwa/serverfeatures.cpp
    net/tmwa/serverfeatures.h
    net/tmwa/skillhandler.cpp
    net/tmwa/skillhandler.h
    net/tmwa/skillrecv.cpp
    net/tmwa/skillrecv.h
    net/tmwa/sprite.h
    net/tmwa/tradehandler.cpp
    net/tmwa/tradehandler.h
    net/tmwa/traderecv.cpp
    net/tmwa/traderecv.h
    net/tmwa/updateprotocol.cpp
    net/tmwa/updateprotocol.h
    )

SET(SRCS_TMWAEATHENA
    net/tmwa/auctionhandler.cpp
    net/tmwa/auctionhandler.h
    net/tmwa/bankhandler.cpp
    net/tmwa/bankhandler.h
    net/tmwa/battlegroundhandler.cpp
    net/tmwa/battlegroundhandler.h
    net/tmwa/buyingstorehandler.cpp
    net/tmwa/buyingstorehandler.h
    net/tmwa/cashshophandler.cpp
    net/tmwa/cashshophandler.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/homunculushandler.cpp
    net/tmwa/homunculushandler.h
    net/tmwa/mailhandler.cpp
    net/tmwa/mailhandler.h
    net/tmwa/maphandler.cpp
    net/tmwa/maphandler.h
    net/tmwa/markethandler.cpp
    net/tmwa/markethandler.h
    net/tmwa/mercenaryhandler.cpp
    net/tmwa/mercenaryhandler.h
    net/tmwa/roulettehandler.cpp
    net/tmwa/roulettehandler.h
    net/tmwa/searchstorehandler.cpp
    net/tmwa/searchstorehandler.h
    net/tmwa/vendinghandler.cpp
    net/tmwa/vendinghandler.h
    )

SET(SRCS_EATHENA
    gui/windows/bankwindow.cpp
    gui/windows/bankwindow.h
    gui/windows/buyingstoreselldialog.cpp
    gui/windows/buyingstoreselldialog.h
    gui/windows/eggselectiondialog.cpp
    gui/windows/eggselectiondialog.h
    gui/windows/maileditwindow.cpp
    gui/windows/maileditwindow.h
    gui/windows/mailviewwindow.cpp
    gui/windows/mailviewwindow.h
    gui/windows/mailwindow.cpp
    gui/windows/mailwindow.h
    listeners/banklistener.cpp
    listeners/banklistener.h
    listeners/buyingstoremodelistener.cpp
    listeners/buyingstoremodelistener.h
    listeners/buyingstoreslotslistener.cpp
    listeners/buyingstoreslotslistener.h
    listeners/pincodelistener.cpp
    listeners/pincodelistener.h
    listeners/shoprenamelistener.cpp
    listeners/shoprenamelistener.h
    listeners/skillwarplistener.cpp
    listeners/skillwarplistener.h
    listeners/vendingmodelistener.cpp
    listeners/vendingmodelistener.h
    listeners/vendingslotslistener.cpp
    listeners/vendingslotslistener.h
    net/auctionhandler.h
    net/bankhandler.h
    net/battlegroundhandler.h
    net/buyingstorehandler.h
    net/cashshophandler.h
    net/elementalhandler.h
    net/familyhandler.h
    net/friendshandler.h
    net/homunculushandler.h
    net/mailhandler.h
    net/maphandler.h
    net/markethandler.h
    net/mercenaryhandler.h
    net/roulettehandler.h
    net/searchstorehandler.h
    net/vendinghandler.h
    net/eathena/adminrecv.cpp
    net/eathena/adminrecv.h
    net/eathena/adminhandler.cpp
    net/eathena/adminhandler.h
    net/eathena/auctionrecv.cpp
    net/eathena/auctionrecv.h
    net/eathena/auctionhandler.cpp
    net/eathena/auctionhandler.h
    net/eathena/bankrecv.cpp
    net/eathena/bankrecv.h
    net/eathena/bankhandler.cpp
    net/eathena/bankhandler.h
    net/eathena/battlegroundrecv.cpp
    net/eathena/battlegroundrecv.h
    net/eathena/battlegroundhandler.cpp
    net/eathena/battlegroundhandler.h
    net/eathena/cashshophandler.cpp
    net/eathena/cashshophandler.h
    net/eathena/cashshoprecv.cpp
    net/eathena/cashshoprecv.h
    net/eathena/beingrecv.cpp
    net/eathena/beingrecv.h
    net/eathena/beinghandler.cpp
    net/eathena/beinghandler.h
    net/eathena/buyingstorehandler.cpp
    net/eathena/buyingstorehandler.h
    net/eathena/buyingstorerecv.cpp
    net/eathena/buyingstorerecv.h
    net/eathena/beingtype.h
    net/eathena/buysellhandler.cpp
    net/eathena/buysellhandler.h
    net/eathena/buysellrecv.cpp
    net/eathena/buysellrecv.h
    net/eathena/charserverhandler.cpp
    net/eathena/charserverhandler.h
    net/eathena/charserverrecv.cpp
    net/eathena/charserverrecv.h
    net/eathena/chathandler.cpp
    net/eathena/chathandler.h
    net/eathena/chatrecv.cpp
    net/eathena/chatrecv.h
    net/eathena/elementalhandler.cpp
    net/eathena/elementalhandler.h
    net/eathena/elementalrecv.cpp
    net/eathena/elementalrecv.h
    net/eathena/familyhandler.cpp
    net/eathena/familyhandler.h
    net/eathena/familyrecv.cpp
    net/eathena/familyrecv.h
    net/eathena/friendshandler.cpp
    net/eathena/friendshandler.h
    net/eathena/friendsrecv.cpp
    net/eathena/friendsrecv.h
    net/eathena/gamehandler.cpp
    net/eathena/gamehandler.h
    net/eathena/gamerecv.cpp
    net/eathena/gamerecv.h
    net/eathena/generalhandler.cpp
    net/eathena/generalhandler.h
    net/eathena/generalrecv.cpp
    net/eathena/generalrecv.h
    net/eathena/guildhandler.cpp
    net/eathena/guildhandler.h
    net/eathena/guildrecv.cpp
    net/eathena/guildrecv.h
    net/eathena/homunculushandler.cpp
    net/eathena/homunculushandler.h
    net/eathena/homunculusrecv.cpp
    net/eathena/homunculusrecv.h
    net/eathena/inventoryhandler.cpp
    net/eathena/inventoryhandler.h
    net/eathena/inventoryrecv.cpp
    net/eathena/inventoryrecv.h
    net/eathena/itemflags.h
    net/eathena/itemhandler.cpp
    net/eathena/itemhandler.h
    net/eathena/itemrecv.cpp
    net/eathena/itemrecv.h
    net/eathena/loginhandler.cpp
    net/eathena/loginhandler.h
    net/eathena/loginrecv.cpp
    net/eathena/loginrecv.h
    net/eathena/mailhandler.cpp
    net/eathena/mailhandler.h
    net/eathena/mailrecv.cpp
    net/eathena/mailrecv.h
    net/eathena/maphandler.cpp
    net/eathena/maphandler.h
    net/eathena/maprecv.cpp
    net/eathena/maprecv.h
    net/eathena/maptypeproperty2.h
    net/eathena/markethandler.cpp
    net/eathena/markethandler.h
    net/eathena/marketrecv.cpp
    net/eathena/marketrecv.h
    net/eathena/menu.cpp
    net/eathena/menu.h
    net/eathena/menutype.h
    net/eathena/mercenaryhandler.cpp
    net/eathena/mercenaryhandler.h
    net/eathena/mercenaryrecv.cpp
    net/eathena/mercenaryrecv.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/npcrecv.cpp
    net/eathena/npcrecv.h
    net/eathena/packetsin.inc
    net/eathena/packetsout.inc
    net/eathena/partyhandler.cpp
    net/eathena/partyhandler.h
    net/eathena/partyrecv.cpp
    net/eathena/partyrecv.h
    net/eathena/pethandler.cpp
    net/eathena/pethandler.h
    net/eathena/petrecv.cpp
    net/eathena/petrecv.h
    net/eathena/playerhandler.cpp
    net/eathena/playerhandler.h
    net/eathena/playerrecv.cpp
    net/eathena/playerrecv.h
    net/eathena/protocolout.cpp
    net/eathena/protocolout.h
    net/eathena/questhandler.cpp
    net/eathena/questhandler.h
    net/eathena/questrecv.cpp
    net/eathena/questrecv.h
    net/eathena/recvpackets.inc
    net/eathena/roulettehandler.cpp
    net/eathena/roulettehandler.h
    net/eathena/rouletterecv.cpp
    net/eathena/rouletterecv.h
    net/eathena/searchstorehandler.cpp
    net/eathena/searchstorehandler.h
    net/eathena/searchstorerecv.cpp
    net/eathena/searchstorerecv.h
    net/eathena/serverfeatures.cpp
    net/eathena/serverfeatures.h
    net/eathena/skillhandler.cpp
    net/eathena/skillhandler.h
    net/eathena/skillrecv.cpp
    net/eathena/skillrecv.h
    net/eathena/sprite.h
    net/eathena/tradehandler.cpp
    net/eathena/tradehandler.h
    net/eathena/traderecv.cpp
    net/eathena/traderecv.h
    net/eathena/updateprotocol.cpp
    net/eathena/updateprotocol.h
    net/eathena/vendinghandler.cpp
    net/eathena/vendinghandler.h
    net/eathena/vendingrecv.cpp
    net/eathena/vendingrecv.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)
SET (PROGRAMS manaplus)

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

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

TARGET_LINK_LIBRARIES(manaplus
    ${X11_LIBRARIES}
    ${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}")