diff --git a/.gitignore b/.gitignore index 78301957..1753f78c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ tags -build +build* *.qm .directory diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ca2192d..6c1063ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,23 +1,101 @@ +# Cockatrice's main CMakeLists.txt +# +# This is basically a wrapper to enable/disable the compilation +# of the different projects: servatrice, cockatrice, test +# This file sets all the variables shared between the projects +# like the installation path, compilation flags etc.. + cmake_minimum_required(VERSION 2.6) -IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") -# GNU systems need to define the Mersenne exponent for the RNG to compile w/o warning - ADD_DEFINITIONS("-DSFMT_MEXP=19937") +set(PROJECT_NAME "Cockatrice") +set(PROJECT_VERSION_MAJOR 0) +set(PROJECT_VERSION_MINOR 0) +set(PROJECT_VERSION_PATCH 1) +set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} ) + +# Defualt to "Release" build type +# User-provided value for CMAKE_BUILD_TYPE must be checked before the PROJECT() call +IF(DEFINED CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Type of build") +ELSE() + SET(CMAKE_BUILD_TYPE Release CACHE STRING "Type of build") ENDIF() +# A project name is needed for CPack +PROJECT("${PROJECT_NAME}") + +# Set conventional loops +set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) + +# Define a proper install path +if(UNIX) + if(APPLE) + # MacOS X + # Due to the special bundle structure ignore + # the prefix eventually set by the user. + set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/release) + else() + # Linux / BSD + if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + #fix package build + if(PREFIX) + set(CMAKE_INSTALL_PREFIX ${PREFIX}) + else() + set(CMAKE_INSTALL_PREFIX /usr/local) + endif() + endif() + endif() +elseif(WIN32) + set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/release) +endif() + +# Define proper compilation flags +IF (CMAKE_COMPILER_IS_GNUCC) + # linux/gcc, bsd/gcc, windows/mingw + set(CMAKE_CXX_FLAGS_RELEASE "-s -O2") + set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0") +else() + # other: osx/llvm, bsd/llvm + set(CMAKE_CXX_FLAGS_RELEASE "-O2") + set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") +ENDIF (CMAKE_COMPILER_IS_GNUCC) + +# GNU systems need to define the Mersenne exponent for the RNG to compile w/o warning +IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + ADD_DEFINITIONS("-DSFMT_MEXP=19937") +ENDIF() + +#Find Qt4 and enable the needed features +FIND_PACKAGE(Qt4 REQUIRED) + +set(CMAKE_AUTOMOC TRUE) + +# Find other needed libraries +FIND_PACKAGE(Protobuf REQUIRED) + +# Compile servatrice (default off) +option(WITH_SERVER "build servatrice" OFF) add_subdirectory(common) if(WITH_SERVER) - add_subdirectory(servatrice) -endif(WITH_SERVER) -if (NOT WITHOUT_CLIENT) - add_subdirectory(cockatrice) - add_subdirectory(oracle) -endif(NOT WITHOUT_CLIENT) -if (WITH_TESTCLIENT) - add_subdirectory(testclient) -endif(WITH_TESTCLIENT) + add_subdirectory(servatrice) +endif() -FILE(GLOB sounds "${CMAKE_CURRENT_SOURCE_DIR}/sounds/*.raw") -INSTALL(FILES ${sounds} DESTINATION share/cockatrice/sounds) -FILE(GLOB zonebg "${CMAKE_CURRENT_SOURCE_DIR}/zonebg/*.*") -INSTALL(FILES ${zonebg} DESTINATION share/cockatrice/zonebg) +# Compile cockatrice (default on) +option(WITH_CLIENT "build cockatrice" ON) +if(WITH_CLIENT) + add_subdirectory(cockatrice) + add_subdirectory(sounds) + add_subdirectory(zonebg) +endif() + +# Compile oracle (default on) +option(WITH_ORACLE "build oracle" ON) +if(WITH_ORACLE) + add_subdirectory(oracle) +endif() + +# Compile testclient (default off) +option(WITH_TESTCLIENT "build testclient" OFF) +if (WITH_TESTCLIENT) + add_subdirectory(testclient) +endif() \ No newline at end of file diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index d25b9d7c..1d915bdb 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -1,237 +1,149 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +# CMakeLists for cockatrice directory +# +# provides the cockatrice binary + PROJECT(cockatrice) SET(cockatrice_SOURCES - src/abstractcounter.cpp - src/counter_general.cpp - src/dlg_creategame.cpp - src/dlg_filter_games.cpp - src/dlg_connect.cpp - src/dlg_create_token.cpp - src/dlg_edit_tokens.cpp - src/abstractclient.cpp - src/remoteclient.cpp - src/main.cpp - src/window_main.cpp - src/gamesmodel.cpp - src/player.cpp - src/playertarget.cpp - src/cardzone.cpp - src/selectzone.cpp - src/cardlist.cpp - src/abstractcarditem.cpp - src/carditem.cpp - src/tablezone.cpp - src/handzone.cpp - src/handcounter.cpp - src/carddatabase.cpp - src/keysignals.cpp - src/gameview.cpp - src/gameselector.cpp - src/decklistmodel.cpp - src/deck_loader.cpp - src/dlg_load_deck_from_clipboard.cpp - src/dlg_load_remote_deck.cpp - src/cardinfowidget.cpp - src/cardframe.cpp - src/cardinfopicture.cpp - src/cardinfotext.cpp - src/filterbuilder.cpp - src/cardfilter.cpp - src/filtertreemodel.cpp - src/filtertree.cpp - src/messagelogwidget.cpp - src/zoneviewzone.cpp - src/zoneviewwidget.cpp - src/pilezone.cpp - src/stackzone.cpp - src/carddragitem.cpp - src/carddatabasemodel.cpp - src/setsmodel.cpp - src/window_sets.cpp - src/abstractgraphicsitem.cpp - src/abstractcarddragitem.cpp - src/dlg_settings.cpp - src/dlg_cardsearch.cpp - src/phasestoolbar.cpp - src/gamescene.cpp - src/arrowitem.cpp - src/arrowtarget.cpp - src/tab.cpp - src/tab_server.cpp - src/tab_room.cpp - src/tab_message.cpp - src/tab_game.cpp - src/tab_deck_storage.cpp - src/tab_replays.cpp - src/tab_supervisor.cpp - src/tab_admin.cpp - src/tab_userlists.cpp - src/tab_deck_editor.cpp - src/replay_timeline_widget.cpp - src/deckstats_interface.cpp - src/chatview.cpp - src/userlist.cpp - src/userinfobox.cpp - src/user_context_menu.cpp - src/remotedecklist_treewidget.cpp - src/remotereplaylist_treewidget.cpp - src/deckview.cpp - src/playerlistwidget.cpp - src/pixmapgenerator.cpp - src/settingscache.cpp - src/localserver.cpp - src/localserverinterface.cpp - src/localclient.cpp - src/priceupdater.cpp - src/qt-json/json.cpp - src/soundengine.cpp - ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp -) -SET(cockatrice_HEADERS - src/abstractcounter.h - src/counter_general.h - src/dlg_creategame.h - src/dlg_filter_games.h - src/dlg_connect.h - src/dlg_create_token.h - src/dlg_edit_tokens.h - src/gamesmodel.h - src/abstractclient.h - src/remoteclient.h - src/window_main.h - src/cardzone.h - src/selectzone.h - src/player.h - src/playertarget.h - src/abstractcarditem.h - src/carditem.h - src/tablezone.h - src/handzone.h - src/handcounter.h - src/carddatabase.h - src/keysignals.h - src/gameview.h - src/gameselector.h - src/decklistmodel.h - src/deck_loader.h - src/dlg_load_deck_from_clipboard.h - src/dlg_load_remote_deck.h - src/cardinfowidget.h - src/cardframe.h - src/cardinfopicture.h - src/cardinfotext.h - src/filterbuilder.h - src/cardfilter.h - src/filtertreemodel.h - src/filtertree.h - src/messagelogwidget.h - src/zoneviewzone.h - src/zoneviewwidget.h - src/pilezone.h - src/stackzone.h - src/carddragitem.h - src/carddatabasemodel.h - src/setsmodel.h - src/window_sets.h - src/abstractgraphicsitem.h - src/abstractcarddragitem.h - src/dlg_settings.h - src/dlg_cardsearch.h - src/phasestoolbar.h - src/gamescene.h - src/arrowitem.h - src/arrowtarget.h - src/tab.h - src/tab_server.h - src/tab_room.h - src/tab_message.h - src/tab_game.h - src/tab_deck_storage.h - src/tab_replays.h - src/tab_supervisor.h - src/tab_admin.h - src/tab_userlists.h - src/tab_deck_editor.h - src/replay_timeline_widget.h - src/deckstats_interface.h - src/chatview.h - src/userlist.h - src/userinfobox.h - src/user_context_menu.h - src/remotedecklist_treewidget.h - src/remotereplaylist_treewidget.h - src/deckview.h - src/playerlistwidget.h - src/settingscache.h - src/localserver.h - src/localserverinterface.h - src/localclient.h - src/priceupdater.h - src/soundengine.h - src/pending_command.h + src/abstractcounter.cpp + src/counter_general.cpp + src/dlg_creategame.cpp + src/dlg_filter_games.cpp + src/dlg_connect.cpp + src/dlg_create_token.cpp + src/dlg_edit_tokens.cpp + src/abstractclient.cpp + src/remoteclient.cpp + src/main.cpp + src/window_main.cpp + src/gamesmodel.cpp + src/player.cpp + src/playertarget.cpp + src/cardzone.cpp + src/selectzone.cpp + src/cardlist.cpp + src/abstractcarditem.cpp + src/carditem.cpp + src/tablezone.cpp + src/handzone.cpp + src/handcounter.cpp + src/carddatabase.cpp + src/keysignals.cpp + src/gameview.cpp + src/gameselector.cpp + src/decklistmodel.cpp + src/deck_loader.cpp + src/dlg_load_deck_from_clipboard.cpp + src/dlg_load_remote_deck.cpp + src/cardinfowidget.cpp + src/cardframe.cpp + src/cardinfopicture.cpp + src/cardinfotext.cpp + src/filterbuilder.cpp + src/cardfilter.cpp + src/filtertreemodel.cpp + src/filtertree.cpp + src/messagelogwidget.cpp + src/zoneviewzone.cpp + src/zoneviewwidget.cpp + src/pilezone.cpp + src/stackzone.cpp + src/carddragitem.cpp + src/carddatabasemodel.cpp + src/setsmodel.cpp + src/window_sets.cpp + src/abstractgraphicsitem.cpp + src/abstractcarddragitem.cpp + src/dlg_settings.cpp + src/dlg_cardsearch.cpp + src/phasestoolbar.cpp + src/gamescene.cpp + src/arrowitem.cpp + src/arrowtarget.cpp + src/tab.cpp + src/tab_server.cpp + src/tab_room.cpp + src/tab_message.cpp + src/tab_game.cpp + src/tab_deck_storage.cpp + src/tab_replays.cpp + src/tab_supervisor.cpp + src/tab_admin.cpp + src/tab_userlists.cpp + src/tab_deck_editor.cpp + src/replay_timeline_widget.cpp + src/deckstats_interface.cpp + src/chatview.cpp + src/userlist.cpp + src/userinfobox.cpp + src/user_context_menu.cpp + src/remotedecklist_treewidget.cpp + src/remotereplaylist_treewidget.cpp + src/deckview.cpp + src/playerlistwidget.cpp + src/pixmapgenerator.cpp + src/settingscache.cpp + src/localserver.cpp + src/localserverinterface.cpp + src/localclient.cpp + src/priceupdater.cpp + src/qt-json/json.cpp + src/soundengine.cpp + src/pending_command.cpp + ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ) if (UNIX AND NOT APPLE) - set_source_files_properties(src/main.cpp PROPERTIES COMPILE_FLAGS -DTRANSLATION_PATH=\\"${CMAKE_INSTALL_PREFIX}/share/cockatrice/translations\\") + set_source_files_properties(src/main.cpp PROPERTIES COMPILE_FLAGS -DTRANSLATION_PATH=\\"${CMAKE_INSTALL_PREFIX}/share/cockatrice/translations\\") endif (UNIX AND NOT APPLE) set(cockatrice_RESOURCES cockatrice.qrc) set(cockatrice_TS -# translations/cockatrice_cs.ts - translations/cockatrice_de.ts - translations/cockatrice_en.ts - translations/cockatrice_es.ts -# translations/cockatrice_fr.ts - translations/cockatrice_it.ts - translations/cockatrice_ja.ts -# translations/cockatrice_pl.ts -# translations/cockatrice_pt-br.ts - translations/cockatrice_pt.ts -# translations/cockatrice_ru.ts -# translations/cockatrice_sk.ts - translations/cockatrice_sv.ts -# translations/cockatrice_zh_CN.ts +# translations/cockatrice_cs.ts + translations/cockatrice_de.ts + translations/cockatrice_en.ts + translations/cockatrice_es.ts +# translations/cockatrice_fr.ts + translations/cockatrice_it.ts + translations/cockatrice_ja.ts +# translations/cockatrice_pl.ts +# translations/cockatrice_pt-br.ts + translations/cockatrice_pt.ts +# translations/cockatrice_ru.ts +# translations/cockatrice_sk.ts + translations/cockatrice_sv.ts +# translations/cockatrice_zh_CN.ts ) if(WIN32) - set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc) + set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc) endif(WIN32) if(APPLE) - set(MACOSX_BUNDLE_ICON_FILE appicon.icns) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) + set(MACOSX_BUNDLE_ICON_FILE appicon.icns) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) ENDIF(APPLE) + +if (NOT QT_QTMULTIMEDIA_FOUND) + FIND_PACKAGE(QtMobility REQUIRED) +endif (NOT QT_QTMULTIMEDIA_FOUND) + SET(QT_USE_QTNETWORK TRUE) SET(QT_USE_QTMULTIMEDIA TRUE) SET(QT_USE_QTXML TRUE) SET(QT_USE_QTSVG TRUE) -FIND_PACKAGE(Qt4 REQUIRED) -if (NOT QT_QTMULTIMEDIA_FOUND) - FIND_PACKAGE(QtMobility REQUIRED) -endif (NOT QT_QTMULTIMEDIA_FOUND) -FIND_PACKAGE(Protobuf REQUIRED) -FIND_PACKAGE(Threads) -IF (CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_CXX_FLAGS_RELEASE "-s -O2") - set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0") -ELSE (CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_CXX_FLAGS_RELEASE "-O2") - set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") -ENDIF (CMAKE_COMPILER_IS_GNUCC) - -# paths +# Declare path variables set(ICONDIR share/icons CACHE STRING "icon dir") set(DESKTOPDIR share/applications CACHE STRING "desktop file destination") - -QT4_WRAP_CPP(cockatrice_HEADERS_MOC ${cockatrice_HEADERS}) +# Let cmake chew Qt4's translations and resource files +# Note: header files are MOC-ed automatically by cmake QT4_ADD_TRANSLATION(cockatrice_QM ${cockatrice_TS}) QT4_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES}) +# Include directories INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(../common) INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) @@ -240,23 +152,58 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) INCLUDE_DIRECTORIES(${QT_MOBILITY_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${QT_MOBILITY_MULTIMEDIAKIT_INCLUDE_DIR}) -ADD_EXECUTABLE(cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_SOURCES} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC} ${cockatrice_HEADERS_MOC}) -TARGET_LINK_LIBRARIES(cockatrice cockatrice_common ${QT_LIBRARIES} ${QT_MOBILITY_MULTIMEDIAKIT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) +# Build cockatrice binary and link it +ADD_EXECUTABLE(cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_SOURCES} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC} ${cockatrice_MOC_SRCS}) +TARGET_LINK_LIBRARIES(cockatrice cockatrice_common ${QT_LIBRARIES} ${QT_MOBILITY_MULTIMEDIAKIT_LIBRARY}) -IF (NOT APPLE) - INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/cockatrice DESTINATION bin) -ELSE (APPLE) - INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/cockatrice.app DESTINATION bin) -ENDIF (NOT APPLE) -if (NOT WIN32 AND NOT APPLE) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR}) - INSTALL(FILES ${cockatrice_QM} DESTINATION share/cockatrice/translations) -ENDIF(NOT WIN32 AND NOT APPLE) + +if(UNIX) + if(APPLE) + INSTALL(TARGETS cockatrice BUNDLE DESTINATION ./) + INSTALL(FILES ${cockatrice_QM} DESTINATION ./cockatrice.app/Contents/Resources/translations) + else() + # Assume linux + INSTALL(TARGETS cockatrice RUNTIME DESTINATION bin/) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR}) + INSTALL(FILES ${cockatrice_QM} DESTINATION share/cockatrice/translations) + endif() +elseif(WIN32) + INSTALL(TARGETS cockatrice RUNTIME DESTINATION ./) + INSTALL(FILES ${cockatrice_QM} DESTINATION ./translations) +endif() add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ${CMAKE_CURRENT_BINARY_DIR}/version_string.h - COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ${CMAKE_CURRENT_BINARY_DIR}/version_string.h + COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake ) +if(APPLE) + set(plugin_dest_dir ./cockatrice.app/Contents/Plugins) + set(qtconf_dest_dir ./cockatrice.app/Contents/Resources) + + # note: no codecs in qt5 + # note: phonon_backend => mediaservice + # note: needs platform on osx + + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/.*_debug\\.dylib") + else() + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/[^_]*\\.dylib") + endif() + + install(CODE " + file(WRITE \"${qtconf_dest_dir}/qt.conf\" \"[Paths] +Plugins = Plugins\") + " COMPONENT Runtime) + + install(CODE " + file(GLOB_RECURSE QTPLUGINS + \"${plugin_dest_dir}/*.dylib\") + include(BundleUtilities) + fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/cockatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") + " COMPONENT Runtime) +endif() diff --git a/cockatrice/src/keysignals.h b/cockatrice/src/keysignals.h index 23a07b77..693488c5 100644 --- a/cockatrice/src/keysignals.h +++ b/cockatrice/src/keysignals.h @@ -1,3 +1,6 @@ +#ifndef KEYSIGNALS_H +#define KEYSIGNALS_H + #include #include @@ -19,3 +22,5 @@ signals: protected: virtual bool eventFilter(QObject *, QEvent *event); }; + +#endif diff --git a/cockatrice/src/pending_command.cpp b/cockatrice/src/pending_command.cpp new file mode 100644 index 00000000..0ebb1d82 --- /dev/null +++ b/cockatrice/src/pending_command.cpp @@ -0,0 +1,31 @@ +#include "pending_command.h" + +PendingCommand::PendingCommand(const CommandContainer &_commandContainer, QVariant _extraData) + : commandContainer(_commandContainer), extraData(_extraData), ticks(0) +{ + +} + +CommandContainer & PendingCommand::getCommandContainer() +{ + return commandContainer; +} + +void PendingCommand::setExtraData(const QVariant &_extraData) { + extraData = _extraData; +} + +QVariant PendingCommand::getExtraData() const { + return extraData; +} + +void PendingCommand::processResponse(const Response &response) +{ + emit finished(response, commandContainer, extraData); + emit finished(response.response_code()); +} + +int PendingCommand::tick() +{ + return ++ticks; +} diff --git a/cockatrice/src/pending_command.h b/cockatrice/src/pending_command.h index 9b092dcd..4ca9035b 100644 --- a/cockatrice/src/pending_command.h +++ b/cockatrice/src/pending_command.h @@ -15,17 +15,12 @@ private: QVariant extraData; int ticks; public: - PendingCommand(const CommandContainer &_commandContainer, QVariant _extraData = QVariant()) - : commandContainer(_commandContainer), extraData(_extraData), ticks(0) { } - CommandContainer &getCommandContainer() { return commandContainer; } - void setExtraData(const QVariant &_extraData) { extraData = _extraData; } - QVariant getExtraData() const { return extraData; } - void processResponse(const Response &response) - { - emit finished(response, commandContainer, extraData); - emit finished(response.response_code()); - } - int tick() { return ++ticks; } + PendingCommand(const CommandContainer &_commandContainer, QVariant _extraData = QVariant()); + CommandContainer &getCommandContainer(); + void setExtraData(const QVariant &_extraData); + QVariant getExtraData() const; + void processResponse(const Response &response); + int tick(); }; #endif diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 17d3fa46..3f0d8c6c 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -1,54 +1,38 @@ +# CMakeLists for common directory +# +# provides the common library + CMAKE_MINIMUM_REQUIRED(VERSION 2.6) add_subdirectory(pb) SET(common_SOURCES - decklist.cpp - get_pb_extension.cpp - rng_abstract.cpp - rng_sfmt.cpp - server.cpp - server_abstractuserinterface.cpp - server_arrow.cpp - server_card.cpp - server_cardzone.cpp - server_counter.cpp - server_game.cpp - server_player.cpp - server_protocolhandler.cpp - server_remoteuserinterface.cpp - server_response_containers.cpp - server_room.cpp - serverinfo_user_container.cpp - sfmt/SFMT.c -) -SET(common_HEADERS - decklist.h - rng_abstract.h - rng_sfmt.h - server.h - server_arrowtarget.h - server_card.h - server_database_interface.h - server_game.h - server_player.h - server_protocolhandler.h - server_room.h + decklist.cpp + get_pb_extension.cpp + rng_abstract.cpp + rng_sfmt.cpp + server.cpp + server_abstractuserinterface.cpp + server_arrow.cpp + server_arrowtarget.h + server_card.cpp + server_cardzone.cpp + server_counter.cpp + server_game.cpp + server_database_interface.cpp + server_player.cpp + server_protocolhandler.cpp + server_remoteuserinterface.cpp + server_response_containers.cpp + server_room.cpp + serverinfo_user_container.cpp + sfmt/SFMT.c ) -FIND_PACKAGE(Qt4 REQUIRED) -FIND_PACKAGE(Protobuf REQUIRED) - -QT4_WRAP_CPP(common_HEADERS_MOC ${common_HEADERS}) INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(pb) INCLUDE_DIRECTORIES(sfmt) INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) -add_library(cockatrice_common ${common_SOURCES} ${common_HEADERS_MOC}) -# Without this check, Linux will put -pthread out of order in link.txt and build will fail -if (UNIX) - target_link_libraries(cockatrice_common cockatrice_protocol pthread) -else (UNIX) - target_link_libraries(cockatrice_common cockatrice_protocol) -endif (UNIX) +add_library(cockatrice_common ${common_SOURCES} ${common_MOC_SRCS}) +target_link_libraries(cockatrice_common cockatrice_protocol) diff --git a/common/pb/CMakeLists.txt b/common/pb/CMakeLists.txt index e109a58b..7b005157 100644 --- a/common/pb/CMakeLists.txt +++ b/common/pb/CMakeLists.txt @@ -1,157 +1,163 @@ +# CMakeLists for common directory +# +# provides the protobuf interfaces + CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(PROTO_FILES - admin_commands.proto - card_attributes.proto - color.proto - command_attach_card.proto - command_change_zone_properties.proto - command_concede.proto - command_create_arrow.proto - command_create_counter.proto - command_create_token.proto - command_deck_del_dir.proto - command_deck_del.proto - command_deck_download.proto - command_deck_list.proto - command_deck_new_dir.proto - command_deck_select.proto - command_deck_upload.proto - command_del_counter.proto - command_delete_arrow.proto - command_draw_cards.proto - command_dump_zone.proto - command_flip_card.proto - command_game_say.proto - command_inc_card_counter.proto - command_inc_counter.proto - command_kick_from_game.proto - command_leave_game.proto - command_move_card.proto - command_mulligan.proto - command_next_turn.proto - command_ready_start.proto - command_replay_delete_match.proto - command_replay_list.proto - command_replay_download.proto - command_replay_modify_match.proto - command_reveal_cards.proto - command_roll_die.proto - command_set_active_phase.proto - command_set_card_attr.proto - command_set_card_counter.proto - command_set_counter.proto - command_set_sideboard_plan.proto - command_set_sideboard_lock.proto - command_shuffle.proto - commands.proto - command_stop_dump_zone.proto - command_undo_draw.proto - context_concede.proto - context_connection_state_changed.proto - context_deck_select.proto - context_move_card.proto - context_mulligan.proto - context_ping_changed.proto - context_ready_start.proto - context_set_sideboard_lock.proto - context_undo_draw.proto - event_add_to_list.proto - event_attach_card.proto - event_change_zone_properties.proto - event_connection_closed.proto - event_create_arrow.proto - event_create_counter.proto - event_create_token.proto - event_del_counter.proto - event_delete_arrow.proto - event_destroy_card.proto - event_draw_cards.proto - event_dump_zone.proto - event_flip_card.proto - event_game_closed.proto - event_game_host_changed.proto - event_game_joined.proto - event_game_say.proto - event_game_state_changed.proto - event_join.proto - event_join_room.proto - event_kicked.proto - event_leave.proto - event_leave_room.proto - event_list_games.proto - event_list_rooms.proto - event_move_card.proto - event_player_properties_changed.proto - event_remove_from_list.proto - event_replay_added.proto - event_reveal_cards.proto - event_roll_die.proto - event_room_say.proto - event_server_complete_list.proto - event_server_identification.proto - event_server_message.proto - event_server_shutdown.proto - event_set_active_phase.proto - event_set_active_player.proto - event_set_card_attr.proto - event_set_card_counter.proto - event_set_counter.proto - event_shuffle.proto - event_stop_dump_zone.proto - event_user_joined.proto - event_user_left.proto - event_user_message.proto - game_commands.proto - game_event_container.proto - game_event_context.proto - game_event.proto - game_replay.proto - isl_message.proto - moderator_commands.proto - move_card_to_zone.proto - response_deck_download.proto - response_deck_list.proto - response_deck_upload.proto - response_dump_zone.proto - response_get_games_of_user.proto - response_get_user_info.proto - response_join_room.proto - response_list_users.proto - response_login.proto - response_replay_download.proto - response_replay_list.proto - response.proto - room_commands.proto - room_event.proto - serverinfo_arrow.proto - serverinfo_cardcounter.proto - serverinfo_card.proto - serverinfo_counter.proto - serverinfo_deckstorage.proto - serverinfo_game.proto - serverinfo_gametype.proto - serverinfo_playerping.proto - serverinfo_playerproperties.proto - serverinfo_player.proto - serverinfo_replay.proto - serverinfo_replay_match.proto - serverinfo_room.proto - serverinfo_user.proto - serverinfo_zone.proto - server_message.proto - session_commands.proto - session_event.proto + admin_commands.proto + card_attributes.proto + color.proto + command_attach_card.proto + command_change_zone_properties.proto + command_concede.proto + command_create_arrow.proto + command_create_counter.proto + command_create_token.proto + command_deck_del_dir.proto + command_deck_del.proto + command_deck_download.proto + command_deck_list.proto + command_deck_new_dir.proto + command_deck_select.proto + command_deck_upload.proto + command_del_counter.proto + command_delete_arrow.proto + command_draw_cards.proto + command_dump_zone.proto + command_flip_card.proto + command_game_say.proto + command_inc_card_counter.proto + command_inc_counter.proto + command_kick_from_game.proto + command_leave_game.proto + command_move_card.proto + command_mulligan.proto + command_next_turn.proto + command_ready_start.proto + command_replay_delete_match.proto + command_replay_list.proto + command_replay_download.proto + command_replay_modify_match.proto + command_reveal_cards.proto + command_roll_die.proto + command_set_active_phase.proto + command_set_card_attr.proto + command_set_card_counter.proto + command_set_counter.proto + command_set_sideboard_plan.proto + command_set_sideboard_lock.proto + command_shuffle.proto + commands.proto + command_stop_dump_zone.proto + command_undo_draw.proto + context_concede.proto + context_connection_state_changed.proto + context_deck_select.proto + context_move_card.proto + context_mulligan.proto + context_ping_changed.proto + context_ready_start.proto + context_set_sideboard_lock.proto + context_undo_draw.proto + event_add_to_list.proto + event_attach_card.proto + event_change_zone_properties.proto + event_connection_closed.proto + event_create_arrow.proto + event_create_counter.proto + event_create_token.proto + event_del_counter.proto + event_delete_arrow.proto + event_destroy_card.proto + event_draw_cards.proto + event_dump_zone.proto + event_flip_card.proto + event_game_closed.proto + event_game_host_changed.proto + event_game_joined.proto + event_game_say.proto + event_game_state_changed.proto + event_join.proto + event_join_room.proto + event_kicked.proto + event_leave.proto + event_leave_room.proto + event_list_games.proto + event_list_rooms.proto + event_move_card.proto + event_player_properties_changed.proto + event_remove_from_list.proto + event_replay_added.proto + event_reveal_cards.proto + event_roll_die.proto + event_room_say.proto + event_server_complete_list.proto + event_server_identification.proto + event_server_message.proto + event_server_shutdown.proto + event_set_active_phase.proto + event_set_active_player.proto + event_set_card_attr.proto + event_set_card_counter.proto + event_set_counter.proto + event_shuffle.proto + event_stop_dump_zone.proto + event_user_joined.proto + event_user_left.proto + event_user_message.proto + game_commands.proto + game_event_container.proto + game_event_context.proto + game_event.proto + game_replay.proto + isl_message.proto + moderator_commands.proto + move_card_to_zone.proto + response_deck_download.proto + response_deck_list.proto + response_deck_upload.proto + response_dump_zone.proto + response_get_games_of_user.proto + response_get_user_info.proto + response_join_room.proto + response_list_users.proto + response_login.proto + response_replay_download.proto + response_replay_list.proto + response.proto + room_commands.proto + room_event.proto + serverinfo_arrow.proto + serverinfo_cardcounter.proto + serverinfo_card.proto + serverinfo_counter.proto + serverinfo_deckstorage.proto + serverinfo_game.proto + serverinfo_gametype.proto + serverinfo_playerping.proto + serverinfo_playerproperties.proto + serverinfo_player.proto + serverinfo_replay.proto + serverinfo_replay_match.proto + serverinfo_room.proto + serverinfo_user.proto + serverinfo_zone.proto + server_message.proto + session_commands.proto + session_event.proto ) -find_package(Protobuf REQUIRED) include_directories(${PROTOBUF_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${PROTO_FILES}) add_library(cockatrice_protocol ${PROTO_SRCS} ${PROTO_HDRS}) set(cockatrice_protocol_LIBS ${PROTOBUF_LIBRARIES}) -if (WIN32) - set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lprotobuf) -endif (WIN32) +if (MSVC) + set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lprotobuf) +endif (MSVC) +if (UNIX) + set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lpthread) +endif (UNIX) target_link_libraries(cockatrice_protocol ${cockatrice_protocol_LIBS}) diff --git a/common/server_arrowtarget.cpp b/common/server_arrowtarget.cpp new file mode 100644 index 00000000..aa7789dd --- /dev/null +++ b/common/server_arrowtarget.cpp @@ -0,0 +1,2 @@ + +#include "server_arrowtarget.h" \ No newline at end of file diff --git a/common/server_database_interface.cpp b/common/server_database_interface.cpp new file mode 100644 index 00000000..a375f603 --- /dev/null +++ b/common/server_database_interface.cpp @@ -0,0 +1,2 @@ + +#include "server_database_interface.h" diff --git a/oracle/CMakeLists.txt b/oracle/CMakeLists.txt index 6f4e18c9..340ce16a 100644 --- a/oracle/CMakeLists.txt +++ b/oracle/CMakeLists.txt @@ -1,38 +1,72 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +# CMakeLists for oracle directory +# +# provides the oracle binary + PROJECT(oracle) # paths set(DESKTOPDIR share/applications CACHE STRING "path to .desktop files") -SET(oracle_SOURCES src/main.cpp src/oracleimporter.cpp src/window_main.cpp ../cockatrice/src/carddatabase.cpp ../cockatrice/src/settingscache.cpp) -SET(oracle_HEADERS src/oracleimporter.h src/window_main.h ../cockatrice/src/carddatabase.h ../cockatrice/src/settingscache.h) +SET(oracle_SOURCES + src/main.cpp + src/oracleimporter.cpp + src/window_main.cpp + ../cockatrice/src/carddatabase.cpp + ../cockatrice/src/settingscache.cpp + ) SET(QT_USE_QTNETWORK TRUE) SET(QT_USE_QTXML TRUE) SET(QT_USE_QTSVG TRUE) -FIND_PACKAGE(Qt4 REQUIRED) -set(CMAKE_BUILD_TYPE Release) -IF (CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_CXX_FLAGS_RELEASE "-s -O2") - set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0") -ELSE (CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_CXX_FLAGS_RELEASE "-O2") - set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") -ENDIF (CMAKE_COMPILER_IS_GNUCC) - -QT4_WRAP_CPP(oracle_HEADERS_MOC ${oracle_HEADERS}) +# Include directories INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(../cockatrice/src) -ADD_EXECUTABLE(oracle WIN32 MACOSX_BUNDLE ${oracle_SOURCES} ${oracle_HEADERS_MOC}) +# Build oracle binary and link it +ADD_EXECUTABLE(oracle WIN32 MACOSX_BUNDLE ${oracle_SOURCES} ${oracle_MOC_SRCS}) TARGET_LINK_LIBRARIES(oracle ${QT_LIBRARIES}) -IF (NOT APPLE) - INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/oracle DESTINATION bin) -ELSE (APPLE) - INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/oracle.app DESTINATION bin) -ENDIF (NOT APPLE) +if(UNIX) + if(APPLE) + INSTALL(TARGETS oracle BUNDLE DESTINATION ./) + else() + # Assume linux + INSTALL(TARGETS oracle RUNTIME DESTINATION bin/) + endif() +elseif(WIN32) + INSTALL(TARGETS oracle RUNTIME DESTINATION ./) +endif() + IF (NOT WIN32 AND NOT APPLE) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oracle.desktop DESTINATION ${DESKTOPDIR}) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oracle.desktop DESTINATION ${DESKTOPDIR}) ENDIF (NOT WIN32 AND NOT APPLE) + +if(APPLE) + set(plugin_dest_dir ./oracle.app/Contents/Plugins) + set(qtconf_dest_dir ./oracle.app/Contents/Resources) + + # note: no codecs in qt5 + # note: phonon_backend => mediaservice + # note: needs platform on osx + + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/.*_debug\\.dylib") + else() + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/[^_]*\\.dylib") + endif() + + install(CODE " + file(WRITE \"${qtconf_dest_dir}/qt.conf\" \"[Paths] +Plugins = Plugins\") + " COMPONENT Runtime) + + install(CODE " + file(GLOB_RECURSE QTPLUGINS + \"${plugin_dest_dir}/*.dylib\") + include(BundleUtilities) + fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/oracle.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") + " COMPONENT Runtime) +endif() diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 8af8fc4a..799cecbd 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -1,44 +1,30 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +# CMakeLists for servatrice directory +# +# provides the servatrice binary + PROJECT(servatrice) -# cmake modules -include(GNUInstallDirs) +# cmake module for libgcrypt is included in current directory +SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +FIND_PACKAGE(Libgcrypt REQUIRED) SET(servatrice_SOURCES - src/main.cpp - src/passwordhasher.cpp - src/servatrice.cpp - src/servatrice_connection_pool.cpp - src/servatrice_database_interface.cpp - src/server_logger.cpp - src/serversocketinterface.cpp - src/isl_interface.cpp - ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp -) -SET(servatrice_HEADERS - src/servatrice.h - src/servatrice_connection_pool.h - src/servatrice_database_interface.h - src/server_logger.h - src/serversocketinterface.h - src/isl_interface.h + src/main.cpp + src/passwordhasher.cpp + src/servatrice.cpp + src/servatrice_connection_pool.cpp + src/servatrice_database_interface.cpp + src/server_logger.cpp + src/serversocketinterface.cpp + src/isl_interface.cpp + ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ) SET(QT_DONTUSE_QTGUI) SET(QT_USE_QTNETWORK TRUE) SET(QT_USE_QTSQL TRUE) -FIND_PACKAGE(Qt4 REQUIRED) -FIND_PACKAGE(Protobuf REQUIRED) -FIND_PACKAGE(Libgcrypt REQUIRED) -FIND_PACKAGE(Threads) - -#set(CMAKE_BUILD_TYPE Release) -set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O2") -set(CMAKE_CXX_FLAGS_RELEASE "-O2") - -QT4_WRAP_CPP(servatrice_HEADERS_MOC ${servatrice_HEADERS}) +# Include directories INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(../common) INCLUDE_DIRECTORIES(${LIBGCRYPT_INCLUDE_DIR}) @@ -46,14 +32,53 @@ INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../common) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) -ADD_EXECUTABLE(servatrice ${servatrice_SOURCES} ${servatrice_HEADERS_MOC}) +# Build servatrice binary and link it +ADD_EXECUTABLE(servatrice MACOSX_BUNDLE ${servatrice_SOURCES} ${servatrice_MOC_SRCS}) TARGET_LINK_LIBRARIES(servatrice cockatrice_common ${QT_LIBRARIES} ${LIBGCRYPT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) #add_custom_target(versionheader ALL DEPENDS version_header) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.h ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp - COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.h ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp + COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake ) # install rules -INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/servatrice DESTINATION ${CMAKE_INSTALL_BINDIR}) +if(UNIX) + if(APPLE) + INSTALL(TARGETS servatrice BUNDLE DESTINATION ./) + else() + # Assume linux + INSTALL(TARGETS servatrice RUNTIME DESTINATION bin/) + endif() +elseif(WIN32) + INSTALL(TARGETS servatrice RUNTIME DESTINATION ./) +endif() + +if(APPLE) + set(plugin_dest_dir ./servatrice.app/Contents/Plugins) + set(qtconf_dest_dir ./servatrice.app/Contents/Resources) + + # note: no codecs in qt5 + # note: phonon_backend => mediaservice + # note: needs platform on osx + + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/.*_debug\\.dylib") + else() + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/[^_]*\\.dylib") + endif() + + install(CODE " + file(WRITE \"${qtconf_dest_dir}/qt.conf\" \"[Paths] +Plugins = Plugins\") + " COMPONENT Runtime) + + install(CODE " + file(GLOB_RECURSE QTPLUGINS + \"${plugin_dest_dir}/*.dylib\") + include(BundleUtilities) + fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/servatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") + " COMPONENT Runtime) +endif() diff --git a/sounds/CMakeLists.txt b/sounds/CMakeLists.txt new file mode 100644 index 00000000..e38c9090 --- /dev/null +++ b/sounds/CMakeLists.txt @@ -0,0 +1,16 @@ +# CMakeLists for sounds/ directory +# +# Installs default sound files + +FILE(GLOB sounds "${CMAKE_CURRENT_SOURCE_DIR}/*.raw") + +if(UNIX) + if(APPLE) + INSTALL(FILES ${sounds} DESTINATION sounds/) + else() + # Assume linux + INSTALL(FILES ${sounds} DESTINATION share/cockatrice/sounds/) + endif() +elseif(WIN32) + INSTALL(FILES ${sounds} DESTINATION sounds/) +endif() \ No newline at end of file diff --git a/zonebg/CMakeLists.txt b/zonebg/CMakeLists.txt new file mode 100644 index 00000000..961c4e12 --- /dev/null +++ b/zonebg/CMakeLists.txt @@ -0,0 +1,16 @@ +# CMakeLists for zonebg/ directory +# +# Installs default "zone background" files + +FILE(GLOB zonebg "${CMAKE_CURRENT_SOURCE_DIR}/*.*") + +if(UNIX) + if(APPLE) + INSTALL(FILES ${zonebg} DESTINATION zonebg/) + else() + # Assume linux + INSTALL(FILES ${zonebg} DESTINATION share/cockatrice/zonebg/) + endif() +elseif(WIN32) + INSTALL(FILES ${zonebg} DESTINATION zonebg/) +endif() \ No newline at end of file