blob: d5d512e8ced5dc124eb267931ebf9eba9b70ea17 (
plain) (
tree)
|
|
include(FindPkgConfig)
pkg_check_modules(SDL2 REQUIRED
sdl2>=2.0.5
SDL2_image
SDL2_mixer
SDL2_net
SDL2_ttf)
find_package(PhysFS REQUIRED)
find_package(CURL REQUIRED)
find_package(LibXml2 REQUIRED)
find_package(PNG REQUIRED)
find_package(Gettext REQUIRED)
find_package(Intl REQUIRED)
if(CMAKE_COMPILER_IS_GNUCXX)
# Help getting compilation warnings
set(CMAKE_CXX_FLAGS "${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()
add_compile_definitions(PACKAGE_VERSION="${PROJECT_VERSION}"
$<$<CONFIG:Debug>:DEBUG>)
if(WIN32)
add_compile_definitions(PKG_DATADIR="${CMAKE_INSTALL_DATADIR}/"
LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}/")
elseif(NOT APPLE)
add_compile_definitions(PKG_DATADIR="${CMAKE_INSTALL_FULL_DATADIR}/"
LOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}/")
endif()
if(ENABLE_MANASERV)
if(NOT USE_SYSTEM_ENET)
message(STATUS "Using ENet submodule")
set(ENET_INCLUDE_DIR "../libs/enet/include")
set(ENET_LIBRARIES enet)
link_directories("../libs/enet")
else()
message(STATUS "Using system ENet")
find_package(ENet REQUIRED)
endif()
add_compile_definitions(MANASERV_SUPPORT=1)
message(STATUS "Manaserv support enabled")
endif()
if(APPLE OR NOT USE_SYSTEM_GUICHAN)
message(STATUS "Using Guichan submodule")
set(GUICHAN_INCLUDE_DIR "../libs/guichan/include")
set(GUICHAN_LIBRARIES guichan)
link_directories("../libs/guichan")
else()
message(STATUS "Using system Guichan")
find_package(Guichan REQUIRED)
endif()
if(ENABLE_NLS)
add_compile_definitions(ENABLE_NLS=1)
message(STATUS "i18n support enabled")
endif()
if(WITH_OPENGL)
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
add_compile_definitions(USE_OPENGL)
message(STATUS "OpenGL support enabled")
endif(WITH_OPENGL)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${SDL2_INCLUDE_DIRS}
${PNG_INCLUDE_DIR}
${PHYSFS_INCLUDE_DIR}
${LIBXML2_INCLUDE_DIR}
${ENET_INCLUDE_DIR}
${GUICHAN_INCLUDE_DIR}
${Intl_INCLUDE_DIRS})
set(SRCS
gui/widgets/avatarlistbox.cpp
gui/widgets/avatarlistbox.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/itemshortcutcontainer.cpp
gui/widgets/itemshortcutcontainer.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/spacer.cpp
gui/widgets/spacer.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/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/buydialog.cpp
gui/buydialog.h
gui/buyselldialog.cpp
gui/buyselldialog.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/chatwindow.cpp
gui/chatwindow.h
gui/confirmdialog.cpp
gui/confirmdialog.h
gui/connectiondialog.cpp
gui/connectiondialog.h
gui/customserverdialog.cpp
gui/customserverdialog.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/helpwindow.cpp
gui/helpwindow.h
gui/inventorywindow.cpp
gui/inventorywindow.h
gui/itempopup.cpp
gui/itempopup.h
gui/itemamountwindow.cpp
gui/itemamountwindow.h
gui/logindialog.cpp
gui/logindialog.h
gui/minimap.cpp
gui/minimap.h
gui/ministatuswindow.cpp
gui/ministatuswindow.h
gui/npcdialog.cpp
gui/npcdialog.h
gui/npcpostdialog.cpp
gui/npcpostdialog.h
gui/okdialog.cpp
gui/okdialog.h
gui/outfitwindow.cpp
gui/outfitwindow.h
gui/palette.cpp
gui/palette.h
gui/popupmenu.cpp
gui/popupmenu.h
gui/quitdialog.cpp
gui/quitdialog.h
gui/recorder.cpp
gui/recorder.h
gui/register.cpp
gui/register.h
gui/sdlinput.cpp
gui/sdlinput.h
gui/selldialog.cpp
gui/selldialog.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_interface.cpp
gui/setup_interface.h
gui/setup_joystick.cpp
gui/setup_joystick.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/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/tradewindow.cpp
gui/tradewindow.h
gui/truetypefont.cpp
gui/truetypefont.h
gui/unregisterdialog.cpp
gui/unregisterdialog.h
gui/updaterwindow.cpp
gui/updaterwindow.h
gui/viewport.cpp
gui/viewport.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/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
resources/action.cpp
resources/action.h
resources/ambientlayer.cpp
resources/ambientlayer.h
resources/animation.cpp
resources/animation.h
resources/attributes.cpp
resources/attributes.h
resources/beinginfo.cpp
resources/beinginfo.h
resources/chardb.cpp
resources/chardb.h
resources/dye.cpp
resources/dye.h
resources/emotedb.cpp
resources/emotedb.h
resources/hairdb.cpp
resources/hairdb.h
resources/image.cpp
resources/image.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/settingsmanager.cpp
resources/settingsmanager.h
resources/soundeffect.h
resources/soundeffect.cpp
resources/specialdb.cpp
resources/specialdb.h
resources/spritedef.h
resources/spritedef.cpp
resources/theme.cpp
resources/theme.h
resources/userpalette.cpp
resources/userpalette.h
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/path.cpp
utils/path.h
utils/physfsrwops.c
utils/physfsrwops.h
utils/sha256.cpp
utils/sha256.h
utils/specialfolder.cpp
utils/specialfolder.h
utils/stringutils.cpp
utils/stringutils.h
utils/time.cpp
utils/time.h
utils/mutex.h
utils/mkdir.cpp
utils/mkdir.h
utils/xml.cpp
utils/xml.h
utils/zlib.cpp
utils/zlib.h
actor.cpp
actor.h
actorsprite.cpp
actorsprite.h
actorspritemanager.cpp
actorspritemanager.h
animatedsprite.cpp
animatedsprite.h
animationparticle.cpp
animationparticle.h
avatar.cpp
avatar.h
being.cpp
being.h
channel.cpp
channel.h
channelmanager.cpp
channelmanager.h
chatlogger.cpp
chatlogger.h
client.cpp
client.h
commandhandler.cpp
commandhandler.h
compoundsprite.cpp
compoundsprite.h
configuration.cpp
configuration.h
defaults.cpp
defaults.h
effectmanager.cpp
effectmanager.h
emoteshortcut.cpp
emoteshortcut.h
equipment.h
event.cpp
event.h
eventlistener.cpp
eventlistener.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
joystick.cpp
joystick.h
keyboardconfig.cpp
keyboardconfig.h
localplayer.cpp
localplayer.h
log.cpp
log.h
main.cpp
main.h
map.cpp
map.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
sdlgraphics.cpp
sdlgraphics.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
video.cpp
video.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_MANA
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/manaserv_protocol.h
net/manaserv/specialhandler.cpp
net/manaserv/specialhandler.h
net/manaserv/tradehandler.cpp
net/manaserv/tradehandler.h)
if(WIN32)
configure_file(mana.rc.in mana.rc)
set(SRCS ${SRCS} ${CMAKE_CURRENT_BINARY_DIR}/mana.rc)
endif(WIN32)
set(APP_ICON_NAME "mana.icns")
set(APP_ICON_FILE "${CMAKE_SOURCE_DIR}/data/icons/${APP_ICON_NAME}")
set_source_files_properties(${APP_ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION
"Resources")
if(ENABLE_MANASERV)
add_executable(mana WIN32 ${SRCS} ${SRCS_MANA} ${SRCS_TMWA} ${APP_ICON_FILE})
else(ENABLE_MANASERV)
add_executable(mana WIN32 ${SRCS} ${SRCS_TMWA} ${APP_ICON_FILE})
endif(ENABLE_MANASERV)
target_link_libraries(
mana
PRIVATE ${ENET_LIBRARIES}
${SDL2_LINK_LIBRARIES}
${PNG_LIBRARIES}
${PHYSFS_LIBRARY}
CURL::libcurl
${LIBXML2_LIBRARIES}
${GUICHAN_LIBRARIES}
${OPENGL_LIBRARIES}
${Intl_LIBRARIES})
set_target_properties(
mana
PROPERTIES MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}
MACOSX_BUNDLE_GUI_IDENTIFIER org.manasource.Mana
MACOSX_BUNDLE_ICON_FILE ${APP_ICON_NAME}
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_COPYRIGHT "(C) 2004-2024 ${CPACK_PACKAGE_VENDOR}"
MACOSX_BUNDLE_LONG_VERSION_STRING ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING
${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR})
install(
TARGETS mana
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if(APPLE)
target_link_libraries(mana PRIVATE "-framework Foundation")
set_target_properties(mana PROPERTIES OUTPUT_NAME Mana)
set(CPACK_GENERATOR "DRAGNDROP")
install(
CODE "include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Mana.app\" \"\" \"/usr/local/lib\")"
)
endif()
|