Files
wagic/projects/mtg/CMakeLists.txt
T
fogobogo d566524499 cmake build fixes
this brings the cmake branch in line with commit
8e551bb287 from the main branch.

This adds a few boons, most notably it allows compiling on Linux with
SDL2 instead of SDL.

That also allows for mouse support and can now be run without X, which
is mostly interesting in case you want to play some Wagic on say, a
Raspberry Pi.
2022-01-11 20:51:49 +01:00

235 lines
9.5 KiB
CMake

#MTGs common sources
set(MTG_generic_src
src/AbilityParser.cpp
src/ActionElement.cpp
src/ActionLayer.cpp
src/ActionStack.cpp
src/AIHints.cpp
src/AIMomirPlayer.cpp
src/AIPlayer.cpp
src/AIPlayerBaka.cpp
src/AIStats.cpp
src/AllAbilities.cpp
src/CardDescriptor.cpp
src/CardDisplay.cpp
src/CardGui.cpp
src/CardPrimitive.cpp
src/CardSelector.cpp
src/CardSelectorSingleton.cpp
src/CarouselDeckView.cpp
src/Closest.cpp
src/Counters.cpp
src/Credits.cpp
src/Damage.cpp
src/DamagerDamaged.cpp
src/DeckDataWrapper.cpp
src/DeckEditorMenu.cpp
src/DeckManager.cpp
src/DeckMenu.cpp
src/DeckMenuItem.cpp
src/DeckMetaData.cpp
src/DeckStats.cpp
src/DeckView.cpp
src/DuelLayers.cpp
src/ExtraCost.cpp
src/GameApp.cpp
src/GameLauncher.cpp
src/GameObserver.cpp
src/GameOptions.cpp
src/GameStateAwards.cpp
src/GameState.cpp
src/GameStateDeckViewer.cpp
src/GameStateDuel.cpp
src/GameStateMenu.cpp
src/GameStateOptions.cpp
src/GameStateShop.cpp
src/GameStateStory.cpp
src/GameStateTransitions.cpp
src/GridDeckView.cpp
src/GuiAvatars.cpp
src/GuiBackground.cpp
src/GuiCardsController.cpp
src/GuiCombat.cpp
src/GuiFrame.cpp
src/GuiHand.cpp
src/GuiLayers.cpp
src/GuiMana.cpp
src/GuiPhaseBar.cpp
src/GuiPlay.cpp
src/GuiStatic.cpp
src/IconButton.cpp
src/InteractiveButton.cpp
src/ManaCost.cpp
src/ManaCostHybrid.cpp
src/MenuItem.cpp
src/ModRules.cpp
src/MTGAbility.cpp
src/MTGCard.cpp
src/MTGCardInstance.cpp
src/MTGDeck.cpp
src/MTGDefinitions.cpp
src/MTGGamePhase.cpp
src/MTGGameZones.cpp
src/MTGPack.cpp
src/MTGRules.cpp
src/ObjectAnalytics.cpp
src/OptionItem.cpp
src/PhaseRing.cpp
src/Player.cpp
src/PlayerData.cpp
src/PlayGuiObject.cpp
src/PlayGuiObjectController.cpp
src/PlayRestrictions.cpp
src/Pos.cpp
src/PriceList.cpp
src/ReplacementEffects.cpp
src/Rules.cpp
src/SimpleMenu.cpp
src/SimpleMenuItem.cpp
src/SimpleButton.cpp
src/SimplePad.cpp
src/SimplePopup.cpp
src/StoryFlow.cpp
src/Subtypes.cpp
src/StyleManager.cpp
src/TargetChooser.cpp
src/TargetsList.cpp
src/Tasks.cpp
src/TextScroller.cpp
src/ThisDescriptor.cpp
src/Token.cpp
src/Translate.cpp
src/TranslateKeys.cpp
src/Trash.cpp
src/utils.cpp
src/WCachedResource.cpp
src/WDataSrc.cpp
src/WEvent.cpp
src/WFilter.cpp
src/WFont.cpp
src/WGui.cpp
src/WResourceManager.cpp
src/WParsedInt.cpp
)
set(MTG_network_src src/NetworkPlayer.cpp)
#the sources we need if we compile a graphical qt version
#TODO: add declarative version since this only works with QWidget right now
set(MTG_qt_graphic_src
src/qt/filedownloader.cpp
src/qt/corewrapper.cpp
include/qt/corewrapper.h #so automoc finds it
include/qt/filedownloader.h
src/Qtmain.cpp)
#the sources we need to compile the testsuit
set(MTG_qt_console_src
src/Qtconsole.cpp
src/TestSuiteAI.cpp)
set(MTG_sdl_src
src/SDLmain.cpp)
set(MTG_android_sdl_src
src/SDLmain.cpp)
set(MTG_iOS_src
iOS/UI/WagicDownloadProgressViewController.m
iOS/asi-http-request/ASIAuthenticationDialog.m
iOS/asi-http-request/ASIDataCompressor.m
iOS/asi-http-request/ASIDataDecompressor.m
iOS/asi-http-request/ASIDownloadCache.m
iOS/asi-http-request/ASIFormDataRequest.m
iOS/asi-http-request/ASIHTTPRequest.m
iOS/asi-http-request/ASIInputStream.m
iOS/asi-http-request/ASINetworkQueue.m
iOS/SoundManager/SoundManager.m
iOS/SoundManager/MyOpenALSupport.c
iOS/Reachability/Reachability/Reachability.m
iOS/ZipArchive/ZipArchive.mm)
set(MTG_iOS_INCLUDE_DIRS iOS/UI iOS/Reachability/Reachability iOS/asi-http-request iOS/ZipArchive iOS/SoundManager)
set(MTG_INCLUDE_DIRS include include/qt)
set(JGE_INCLUDE_DIRS ../../JGE/include ../../JGE/include/hge)
set(JGE_LIBRARY jge)
set(EXTRA_INCLUDE_DIR extra)
#turn moc on
if(backend_qt_console OR backend_qt_widget)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC TRUE)
endif()
if(backend_qt_console)
if(UNIX AND NOT ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${ZIPFS_INCLUDE_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS}
${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default)
add_executable(wagic ${MTG_generic_src} ${MTG_qt_console_src} ${MTG_network_src})
target_link_libraries(wagic ${JGE_LIBRARY} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS} ${TINYXML_LIBRARIES}
${HGE_LIBRARY} ${ZLIB_LIBRARIES})
else()
message(FATAL_ERROR "qt-console builds are only supported on unix platforms")
endif()
elseif(backend_qt_widget)
if(UNIX AND NOT ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${ZIPFS_INCLUDE_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS}
${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default)
add_executable(wagic ${MTG_generic_src} ${MTG_qt_graphic_src} ${MTG_network_src})
target_link_libraries(wagic ${JGE_LIBRARY} ${Qt5Core_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES}
${HGE_LIBRARY} ${ZLIB_LIBRARIES})# ${X11_LIBRARIES})
else()
message(FATAL_ERROR "qt-widget builds are only supported on unix platforms")
endif()
elseif(backend_sdl)
if((UNIX OR EMSCRIPTEN) AND NOT ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR} ${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
add_executable(wagic ${MTG_generic_src} ${MTG_sdl_src} ${MTG_network_src} src/TestSuiteAI.cpp src/AIPlayerBakaB.cpp)
target_link_libraries(wagic ${JGE_LIBRARY} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES} ${HGE_LIBRARY} ${ZLIB_LIBRARIES})
elseif(ANDROID)
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR} ${BOOST_INCLUDE_DIRS} ${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR})
#we should try to get rid of this hack
add_library(wagic SHARED ${MTG_generic_src} ${MTG_network_src} ${MTG_android_sdl_src} src/TestSuiteAI.cpp)
target_link_libraries(wagic ${JGE_LIBRARY} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES} ${HGE_LIBRARY} ${ZLIB_LIBRARIES})
elseif(WIN32)
include_directories(${EXTRA_INCLUDE_DIR} ${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${Boost_INCLUDE_DIRS} ${UNZIP_INCLUDE_DIR} ${HGE_INCLUDE_DIR} ${TINYXML_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})
add_executable(wagic ${MTG_generic_src} ${MTG_sdl_src} src/TestSuiteAI.cpp src/AIPlayerBakaB.cpp)
link_directories(${Boost_LIBRARY_DIR} ${SDL2_LIBRARY_DIR})
target_link_libraries(wagic ${JGE_LIBRARY} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${TINYXML_LIBRARIES} ${BOOST_date_time} ${HGE_LIBRARY} ${ZLIB_LIBRARIES})
endif()
elseif(backend_psp)
if(PSP)
#${PSPSDK_PATH}/include
include_directories(${MTG_INCLUDE_DIRS} ${JGE_INCLUDE_DIRS} ${TINYXML_INCLUDE_DIR} ${ZIPFS_INCLUDE_DIR}
${UNZIP_INCLUDE_DIR} ${BOOST_INCLUDE_DIRS} ${GIF_INCLUDE_DIR} ${HGETOOLS_INCLUDE_DIRS})
add_executable(wagic ${MTG_generic_src} ${MTG_network_src})
target_link_libraries(wagic ${JGE_LIBRARY} ${PSPSDK_LIB} ${HGETOOLS_LIBRARY} ${FREETYPE_LIB} ${JPEG_LIBRARY}
${GIF_LIBRARIES} ${PNG_LIBRARIES} z m ${MIKMOD_LIBRARY} ${TINYXML_LIBRARIES}
stdc++ ${PSPSDK_REQUIRED_LIB})
set(PRXSPECS_FILE "${PSPSDK_PATH}/lib/prxspecs")
set(LINKFILE_FILE "${PSPSDK_PATH}/lib/linkfile.prx")
get_property(wagic_elf_location TARGET wagic PROPERTY LOCATION)
get_filename_component(wagic_elf_directory ${wagic_elf_location} PATH)
set_target_properties(wagic PROPERTIES LINK_FLAGS "-specs=${PRXSPECS_FILE} -Wl,-q,-T${LINKFILE_FILE}")
add_custom_command(TARGET wagic POST_BUILD
COMMAND ${PSPSDK_MKSFO_COMMAND} ARGS "'Wagic, the Homebrew?!'" "${wagic_elf_directory}/PARAM.SFO"
COMMAND ${PSPSDK_FIXUP_IMPORTS_COMMAND} ARGS ${wagic_elf_location}
COMMAND ${PSPSDK_PRXGEN_COMMAND} ARGS ${wagic_elf_location} "${wagic_elf_directory}/wagic.prx"
COMMAND ${PSPSDK_PACK_PBP_COMMAND} ARGS ${wagic_elf_directory}/EBOOT.PBP ${wagic_elf_directory}/PARAM.SFO ${CMAKE_CURRENT_SOURCE_DIR}/icon.png NULL ${CMAKE_CURRENT_SOURCE_DIR}/pic0.png ${CMAKE_CURRENT_SOURCE_DIR}/pic1.png NULL "${wagic_elf_directory}/wagic.prx" NULL)
else()
message(FATAL_ERROR "use the cross-compile toolchain to build as the psp target")
endif()
endif()
if(IOS)
set(MTG_generic_src ${MTG_generic_src} ${MTG_iOS_src} PARENT_SCOPE)
set(MTG_INCLUDE_DIRS ${MTG_INCLUDE_DIRS} ${MTG_iOS_INCLUDE_DIRS} PARENT_SCOPE)
endif()