diff options
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r-- | src/CMakeLists.txt | 723 |
1 files changed, 723 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 000000000..bb7b6e4b2 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,723 @@ +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) + +IF (CMAKE_COMPILER_IS_GNUCXX) + # Help getting compilation warnings + SET(CMAKE_CXX_FLAGS "-Wall") + IF (WIN32) + # This includes enough debug information to get something useful + # from Dr. Mingw while keeping binary size down. Almost useless + # with gdb, though. + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -ggdb0 -gstabs2") + ENDIF() +ENDIF() + +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}/\\\"") + +IF (ENABLE_NLS) + SET(FLAGS "${FLAGS} -DENABLE_NLS=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") + ENDIF() +ENDIF() + +IF (WIN32) + SET(EXTRA_LIBRARIES ws2_32 winmm) + FIND_PACKAGE(LibIntl REQUIRED) +ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + FIND_PACKAGE(LibIntl REQUIRED) +ELSEIF (CMAKE_SYSTEM_NAME STREQUAL SunOS) + # explicit linking to libintl is required on Solaris + SET(EXTRA_LIBRARIES intl) +ENDIF() + +SET(GUICHAN_COMPONENTS "SDL") +FIND_PACKAGE(Guichan REQUIRED ${GUICHAN_COMPONENTS}) + +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} + ${GUICHAN_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 + enet/callbacks.c + enet/callbacks.h + enet/compress.c + enet/enet.h + enet/host.c + enet/list.c + enet/list.h + enet/packet.c + enet/peer.c + enet/protocol.c + enet/protocol.h + enet/time.h + enet/types.h + enet/unix.c + enet/unix.h + enet/utility.h + enet/win32.c + enet/win32.h + gui/widgets/avatarlistbox.cpp + gui/widgets/avatarlistbox.h + gui/widgets/battletab.cpp + gui/widgets/battletab.h + gui/widgets/browserbox.cpp + gui/widgets/browserbox.h + gui/widgets/button.cpp + gui/widgets/button.h + gui/widgets/channeltab.cpp + gui/widgets/channeltab.h + gui/widgets/chattab.cpp + gui/widgets/chattab.h + gui/widgets/checkbox.cpp + gui/widgets/checkbox.h + gui/widgets/container.cpp + gui/widgets/container.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/flowcontainer.cpp + gui/widgets/flowcontainer.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/dropshortcutcontainer.cpp + gui/widgets/dropshortcutcontainer.h + gui/widgets/itemshortcutcontainer.cpp + gui/widgets/itemshortcutcontainer.h + gui/widgets/spellshortcutcontainer.cpp + gui/widgets/spellshortcutcontainer.h + gui/widgets/label.cpp + gui/widgets/label.h + gui/widgets/layout.cpp + gui/widgets/layout.h + gui/widgets/layouthelper.cpp + gui/widgets/layouthelper.h + gui/widgets/linkhandler.h + gui/widgets/listbox.cpp + gui/widgets/listbox.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/progressbar.cpp + gui/widgets/progressbar.h + gui/widgets/progressindicator.cpp + gui/widgets/progressindicator.h + gui/widgets/radiobutton.cpp + gui/widgets/radiobutton.h + gui/widgets/resizegrip.cpp + gui/widgets/resizegrip.h + gui/widgets/scrollarea.cpp + gui/widgets/scrollarea.h + gui/widgets/setuptab.cpp + gui/widgets/setuptab.h + gui/widgets/shopitems.cpp + gui/widgets/shopitems.h + gui/widgets/shoplistbox.cpp + gui/widgets/shoplistbox.h + gui/widgets/shortcutcontainer.cpp + gui/widgets/shortcutcontainer.h + gui/widgets/slider.cpp + gui/widgets/slider.h + gui/widgets/tab.cpp + gui/widgets/tab.h + gui/widgets/tabbedarea.cpp + gui/widgets/tabbedarea.h + gui/widgets/table.cpp + gui/widgets/table.h + gui/widgets/tablemodel.cpp + gui/widgets/tablemodel.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/tradetab.cpp + gui/widgets/tradetab.h + gui/widgets/vertcontainer.cpp + gui/widgets/vertcontainer.h + gui/widgets/whispertab.cpp + gui/widgets/whispertab.h + gui/widgets/window.cpp + gui/widgets/window.h + gui/widgets/windowcontainer.cpp + gui/widgets/windowcontainer.h + gui/beingpopup.cpp + gui/beingpopup.h + gui/buy.cpp + gui/buy.h + gui/buysell.cpp + gui/buysell.h + gui/changeemaildialog.cpp + gui/changeemaildialog.h + gui/changepassworddialog.cpp + gui/changepassworddialog.h + gui/charselectdialog.cpp + gui/charselectdialog.h + gui/charcreatedialog.cpp + gui/charcreatedialog.h + gui/chat.cpp + gui/chat.h + gui/confirmdialog.cpp + gui/confirmdialog.h + gui/connectiondialog.cpp + gui/connectiondialog.h + gui/debugwindow.cpp + gui/debugwindow.h + gui/emotepopup.cpp + gui/emotepopup.h + gui/equipmentwindow.cpp + gui/equipmentwindow.h + gui/focushandler.cpp + gui/focushandler.h + gui/gui.cpp + gui/gui.h + gui/help.cpp + gui/help.h + gui/inventorywindow.cpp + gui/inventorywindow.h + gui/itempopup.cpp + gui/itempopup.h + gui/spellpopup.cpp + gui/spellpopup.h + gui/statuspopup.cpp + gui/statuspopup.h + gui/killstats.cpp + gui/killstats.h + gui/itemamount.cpp + gui/itemamount.h + gui/login.cpp + gui/login.h + gui/minimap.cpp + gui/minimap.h + gui/ministatus.cpp + gui/ministatus.h + gui/npcdialog.cpp + gui/npcdialog.h + gui/npcpostdialog.cpp + gui/npcpostdialog.h + gui/okdialog.cpp + gui/okdialog.h + gui/editdialog.cpp + gui/editdialog.h + gui/outfitwindow.cpp + gui/outfitwindow.h + gui/botcheckerwindow.cpp + gui/botcheckerwindow.h + gui/textcommandeditor.cpp + gui/textcommandeditor.h + gui/palette.cpp + gui/palette.h + gui/popupmenu.cpp + gui/popupmenu.h + gui/quitdialog.cpp + gui/quitdialog.h + gui/register.cpp + gui/register.h + gui/sdlinput.cpp + gui/sdlinput.h + gui/sell.cpp + gui/sell.h + gui/serverdialog.cpp + gui/serverdialog.h + gui/setup.cpp + gui/setup.h + gui/setup_audio.cpp + gui/setup_audio.h + gui/setup_colors.cpp + gui/setup_colors.h + gui/setup_joystick.cpp + gui/setup_joystick.h + gui/setup_other.cpp + gui/setup_other.h + gui/setup_theme.cpp + gui/setup_theme.h + gui/setup_chat.cpp + gui/setup_chat.h + gui/setup_keyboard.cpp + gui/setup_keyboard.h + gui/setup_players.cpp + gui/setup_players.h + gui/setup_video.cpp + gui/setup_video.h + gui/shopwindow.cpp + gui/shopwindow.h + gui/shortcutwindow.cpp + gui/shortcutwindow.h + gui/skilldialog.cpp + gui/skilldialog.h + gui/socialwindow.cpp + gui/socialwindow.h + gui/speechbubble.cpp + gui/speechbubble.h + gui/specialswindow.cpp + gui/specialswindow.h + gui/statuswindow.cpp + gui/statuswindow.h + gui/textdialog.cpp + gui/textdialog.h + gui/textpopup.cpp + gui/textpopup.h + gui/theme.cpp + gui/theme.h + gui/trade.cpp + gui/trade.h + gui/truetypefont.cpp + gui/truetypefont.h + gui/unregisterdialog.cpp + gui/unregisterdialog.h + gui/updatewindow.cpp + gui/updatewindow.h + gui/userpalette.cpp + gui/userpalette.h + gui/viewport.cpp + gui/viewport.h + gui/whoisonline.cpp + gui/whoisonline.h + gui/windowmenu.cpp + gui/windowmenu.h + gui/worldselectdialog.cpp + gui/worldselectdialog.h + net/adminhandler.h + net/charhandler.cpp + net/charhandler.h + net/chathandler.h + net/download.cpp + net/download.h + net/gamehandler.h + net/generalhandler.h + net/guildhandler.h + net/inventoryhandler.h + net/logindata.h + net/loginhandler.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/partyhandler.h + net/playerhandler.h + net/serverinfo.h + net/specialhandler.h + net/tradehandler.h + net/worldinfo.h + net/packetcounters.cpp + net/packetcounters.h + resources/action.cpp + resources/action.h + resources/ambientlayer.cpp + resources/ambientlayer.h + resources/ambientoverlay.cpp + resources/ambientoverlay.h + resources/animation.cpp + resources/animation.h + resources/beinginfo.cpp + resources/beinginfo.h + resources/colordb.cpp + resources/colordb.h + resources/dye.cpp + resources/dye.h + resources/emotedb.cpp + resources/emotedb.h + resources/image.cpp + resources/image.h + resources/imageloader.cpp + resources/imageloader.h + resources/imageset.h + resources/imageset.cpp + resources/imagewriter.cpp + resources/imagewriter.h + resources/itemdb.cpp + resources/itemdb.h + resources/iteminfo.h + resources/iteminfo.cpp + resources/mapreader.cpp + resources/mapreader.h + resources/monsterdb.cpp + resources/monsterdb.h + resources/music.cpp + resources/music.h + resources/npcdb.cpp + resources/npcdb.h + resources/resource.cpp + resources/resource.h + resources/resourcemanager.cpp + resources/resourcemanager.h + resources/soundeffect.h + resources/soundeffect.cpp + resources/specialdb.cpp + resources/specialdb.h + resources/spritedef.h + resources/spritedef.cpp + resources/wallpaper.cpp + resources/wallpaper.h + utils/base64.cpp + utils/base64.h + utils/copynpaste.cpp + utils/copynpaste.h + utils/dtor.h + utils/gettext.h + utils/mathutils.h + utils/sha256.cpp + utils/sha256.h + utils/stringutils.cpp + utils/stringutils.h + utils/mutex.h + utils/mkdir.cpp + utils/mkdir.h + utils/xml.cpp + utils/xml.h + actor.cpp + actor.h + actorsprite.cpp + actorsprite.h + actorspritelistener.h + actorspritemanager.cpp + actorspritemanager.h + animatedsprite.cpp + animatedsprite.h + animationparticle.cpp + animationparticle.h + avatar.cpp + avatar.h + being.cpp + being.h + spellmanager.cpp + spellmanager.h + chatlog.cpp + chatlog.h + client.cpp + client.h + channel.cpp + channel.h + channelmanager.cpp + channelmanager.h + commandhandler.cpp + commandhandler.h + compoundsprite.cpp + compoundsprite.h + configlistener.h + configuration.cpp + configuration.h + defaults.cpp + defaults.h + effectmanager.cpp + effectmanager.h + emoteshortcut.cpp + emoteshortcut.h + equipment.h + event.cpp + event.h + flooritem.cpp + flooritem.h + game.cpp + game.h + graphics.cpp + graphics.h + guichanfwd.h + guild.cpp + guild.h + imageparticle.cpp + imageparticle.h + imagesprite.cpp + imagesprite.h + inventory.cpp + inventory.h + item.cpp + item.h + itemshortcut.cpp + itemshortcut.h + dropshortcut.cpp + dropshortcut.h + spellshortcut.cpp + spellshortcut.h + textcommand.cpp + textcommand.h + joystick.cpp + joystick.h + keyboardconfig.cpp + keyboardconfig.h + listener.cpp + listener.h + localplayer.cpp + localplayer.h + log.cpp + log.h + main.cpp + main.h + map.cpp + map.h + opengl1graphics.cpp + opengl1graphics.h + openglgraphics.cpp + openglgraphics.h + particle.cpp + particle.h + particlecontainer.cpp + particlecontainer.h + particleemitter.cpp + particleemitter.h + particleemitterprop.h + party.cpp + party.h + playerinfo.cpp + playerinfo.h + playerrelations.cpp + playerrelations.h + position.cpp + position.h + properties.h + rotationalparticle.cpp + rotationalparticle.h + shopitem.cpp + shopitem.h + simpleanimation.cpp + simpleanimation.h + sound.cpp + sound.h + sprite.h + statuseffect.cpp + statuseffect.h + text.cpp + text.h + textmanager.cpp + textmanager.h + textparticle.cpp + textparticle.h + textrenderer.h + tileset.h + units.cpp + units.h + variabledata.h + vector.cpp + vector.h + mumblemanager.cpp + mumblemanager.h + ) + +SET(SRCS_TMWA + net/tmwa/gui/guildtab.cpp + net/tmwa/gui/guildtab.h + net/tmwa/gui/partytab.cpp + net/tmwa/gui/partytab.h + net/tmwa/adminhandler.cpp + net/tmwa/adminhandler.h + net/tmwa/beinghandler.cpp + net/tmwa/beinghandler.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/gamehandler.cpp + net/tmwa/gamehandler.h + net/tmwa/generalhandler.cpp + net/tmwa/generalhandler.h + net/tmwa/guildhandler.cpp + net/tmwa/guildhandler.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/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/partyhandler.cpp + net/tmwa/partyhandler.h + net/tmwa/playerhandler.cpp + net/tmwa/playerhandler.h + net/tmwa/protocol.h + net/tmwa/specialhandler.cpp + net/tmwa/specialhandler.h + net/tmwa/token.h + net/tmwa/tradehandler.cpp + net/tmwa/tradehandler.h + ) + +SET(SRCS_MANAPLUS + net/manaserv/attributes.cpp + net/manaserv/attributes.h + net/manaserv/adminhandler.cpp + net/manaserv/adminhandler.h + net/manaserv/beinghandler.cpp + net/manaserv/beinghandler.h + net/manaserv/buysellhandler.cpp + net/manaserv/buysellhandler.h + net/manaserv/charhandler.cpp + net/manaserv/charhandler.h + net/manaserv/chathandler.cpp + net/manaserv/chathandler.h + net/manaserv/connection.cpp + net/manaserv/connection.h + net/manaserv/defines.h + net/manaserv/effecthandler.cpp + net/manaserv/effecthandler.h + net/manaserv/gamehandler.cpp + net/manaserv/gamehandler.h + net/manaserv/generalhandler.cpp + net/manaserv/generalhandler.h + net/manaserv/guildhandler.cpp + net/manaserv/guildhandler.h + net/manaserv/internal.cpp + net/manaserv/internal.h + net/manaserv/inventoryhandler.cpp + net/manaserv/inventoryhandler.h + net/manaserv/itemhandler.h + net/manaserv/itemhandler.cpp + net/manaserv/loginhandler.cpp + net/manaserv/loginhandler.h + net/manaserv/messagehandler.cpp + net/manaserv/messagehandler.h + net/manaserv/messagein.cpp + net/manaserv/messagein.h + net/manaserv/messageout.cpp + net/manaserv/messageout.h + net/manaserv/network.cpp + net/manaserv/network.h + net/manaserv/npchandler.cpp + net/manaserv/npchandler.h + net/manaserv/partyhandler.cpp + net/manaserv/partyhandler.h + net/manaserv/playerhandler.cpp + net/manaserv/playerhandler.h + net/manaserv/protocol.h + net/manaserv/specialhandler.cpp + net/manaserv/specialhandler.h + net/manaserv/tradehandler.cpp + net/manaserv/tradehandler.h + ) + +IF (WIN32) + SET(SRCS_MANAPLUS + ${SRCS_MANAPLUS} + utils/specialfolder.cpp + utils/specialfolder.h + mana.rc + ) +ENDIF () + +SET (PROGRAMS manaplus) + +ADD_EXECUTABLE(manaplus WIN32 ${SRCS} ${SRCS_MANAPLUS} ${SRCS_TMWA}) + +TARGET_LINK_LIBRARIES(manaplus + ${SDLGFX_LIBRARIES} + ${SDL_LIBRARY} + ${SDLIMAGE_LIBRARY} + ${SDLMIXER_LIBRARY} + ${SDLNET_LIBRARY} + ${SDLTTF_LIBRARY} + ${PNG_LIBRARIES} + ${PHYSFS_LIBRARY} + ${CURL_LIBRARIES} + ${LIBXML2_LIBRARIES} + ${GUICHAN_LIBRARIES} + ${OPENGL_LIBRARIES} + ${LIBINTL_LIBRARIES} + ${EXTRA_LIBRARIES}) +INSTALL(TARGETS manaplus 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") +ENDIF() + +SET_TARGET_PROPERTIES(manaplus PROPERTIES COMPILE_FLAGS "${FLAGS}") |