d566524499
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.
235 lines
9.5 KiB
CMake
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()
|