summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/snap.yml18
-rw-r--r--.gitlab-ci.yml12
-rw-r--r--CMakeLists.txt16
-rw-r--r--po/CMakeLists.txt2
-rw-r--r--snap/snapcraft.yaml59
-rw-r--r--src/CMakeLists.txt10
-rw-r--r--src/client.cpp3
-rw-r--r--src/gui/gui.cpp11
8 files changed, 112 insertions, 19 deletions
diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml
new file mode 100644
index 00000000..8ce2750b
--- /dev/null
+++ b/.github/workflows/snap.yml
@@ -0,0 +1,18 @@
+on: push
+
+jobs:
+ snap:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: snapcore/action-build@v1
+ id: snapcraft
+ - uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: snapcraft.log
+ path: '/home/runner/.local/state/snapcraft/log/*.log'
+ - uses: actions/upload-artifact@v4
+ with:
+ name: mana_amd64.snap
+ path: ${{ steps.snapcraft.outputs.snap }}
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0cbe67e0..b2fae39e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,11 +8,19 @@ ubuntu-build:
- UBUNTU_VERSION: "20.04"
- UBUNTU_VERSION: "22.04"
image: ubuntu:$UBUNTU_VERSION
+ cache:
+ paths:
+ - ccache
+ before_script:
+ - export CCACHE_BASEDIR="$PWD"
+ - export CCACHE_DIR="$PWD/ccache"
+ - export CCACHE_COMPILERCHECK=content
script:
- export DEBIAN_FRONTEND=noninteractive
- apt-get update
- apt-get install -y
build-essential
+ ccache
cmake
gettext
libcurl4-openssl-dev
@@ -26,8 +34,10 @@ ubuntu-build:
libsdl2-ttf-dev
libxml2-dev
ninja-build
- - cmake -G Ninja -B build .
+ - ccache --zero-stats || true
+ - cmake -G Ninja -B build . -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
- cmake --build build
+ - ccache --show-stats
macos-build:
stage: build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9da0ca6b..f6782168 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,6 +22,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
# where to look for cmake modules
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
+include(GNUInstallDirs)
+
FIND_PACKAGE(Gettext)
OPTION(WITH_OPENGL "Enable OpenGL support" ON)
@@ -31,12 +33,10 @@ OPTION(USE_SYSTEM_GUICHAN "Use system Guichan" ON)
IF (WIN32)
SET(PKG_DATADIR ".")
- SET(LOCALEDIR "share/locale")
SET(PKG_BINDIR ".")
ELSE (WIN32)
- SET(PKG_DATADIR ${CMAKE_INSTALL_PREFIX}/share/mana CACHE PATH "Mana datadir")
- SET(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale)
- SET(PKG_BINDIR ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "Mana bindir")
+ SET(PKG_DATADIR ${CMAKE_INSTALL_DATAROOTDIR}/mana CACHE PATH "Mana datadir")
+ SET(PKG_BINDIR ${CMAKE_INSTALL_BINDIR})
ENDIF (WIN32)
ADD_SUBDIRECTORY(data)
@@ -66,10 +66,10 @@ IF (GETTEXT_FOUND AND ENABLE_NLS)
ENDIF()
If(UNIX)
- INSTALL(FILES org.manasource.Mana.desktop DESTINATION share/applications)
- INSTALL(FILES org.manasource.Mana.metainfo.xml DESTINATION share/metainfo)
- INSTALL(FILES data/icons/mana.png DESTINATION share/icons/hicolor/128x128/apps RENAME org.manasource.Mana.png)
- INSTALL(FILES data/icons/mana.svg DESTINATION share/icons/hicolor/scalable/apps RENAME org.manasource.Mana.svg)
+ INSTALL(FILES org.manasource.Mana.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
+ INSTALL(FILES org.manasource.Mana.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo)
+ INSTALL(FILES data/icons/mana.png DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps RENAME org.manasource.Mana.png)
+ INSTALL(FILES data/icons/mana.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps RENAME org.manasource.Mana.svg)
ENDIF()
SET(CPACK_PACKAGE_VENDOR "Mana Development Team")
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index 08abb6bf..f2ae4b93 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -30,7 +30,7 @@ MACRO(MANA_GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
DEPENDS ${_absPotFile} ${_absFile}
)
- INSTALL(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
+ INSTALL(FILES ${_gmoFile} DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
SET(_gmoFiles ${_gmoFiles} ${_gmoFile})
ENDFOREACH (_currentPoFile)
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
new file mode 100644
index 00000000..49ae3e0b
--- /dev/null
+++ b/snap/snapcraft.yaml
@@ -0,0 +1,59 @@
+name: mana
+version: git
+adopt-info: mana
+base: core22
+
+grade: stable
+confinement: strict
+
+assumes:
+ - command-chain
+
+apps:
+ mana:
+ command: usr/bin/mana
+ command-chain:
+ - snap/command-chain/desktop-launch
+ desktop: usr/share/applications/org.manasource.Mana.desktop
+ extensions: [gnome]
+ plugs:
+ - audio-playback
+ - home
+ - network
+ - opengl
+
+layout:
+ /usr/share/mana:
+ symlink: $SNAP/usr/share/mana
+
+parts:
+ mana:
+ plugin: cmake
+ cmake-parameters:
+ - -DCMAKE_BUILD_TYPE=Release
+ - -DCMAKE_INSTALL_PREFIX=/usr
+ parse-info:
+ - usr/share/metainfo/org.manasource.Mana.metainfo.xml
+ source: .
+ build-packages:
+ - build-essential
+ - gettext
+ - libcurl4-openssl-dev
+ - libguichan-dev
+ - libphysfs-dev
+ - libpng-dev
+ - libsdl2-dev
+ - libsdl2-image-dev
+ - libsdl2-mixer-dev
+ - libsdl2-net-dev
+ - libsdl2-ttf-dev
+ - libxml2-dev
+ stage-packages:
+ - libcurl4
+ - libguichan-0.8.1-1v5
+ - libphysfs1
+ - libsdl2-2.0-0
+ - libsdl2-image-2.0-0
+ - libsdl2-mixer-2.0-0
+ - libsdl2-net-2.0-0
+ - libsdl2-ttf-2.0-0
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fc2b6ee3..5e5b4078 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -18,8 +18,14 @@ IF (CMAKE_COMPILER_IS_GNUCXX)
ENDIF()
SET(FLAGS "-DPACKAGE_VERSION=\\\"${VERSION}\\\"")
-SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"")
-SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${LOCALEDIR}/\\\"")
+
+IF (WIN32)
+ SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"")
+ SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${CMAKE_INSTALL_LOCALEDIR}/\\\"")
+ELSE()
+ SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${CMAKE_INSTALL_FULL_DATAROOTDIR}/mana/\\\"")
+ SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${CMAKE_INSTALL_FULL_LOCALEDIR}/\\\"")
+ENDIF()
IF (ENABLE_MANASERV)
INCLUDE_DIRECTORIES("../libs/enet/include")
diff --git a/src/client.cpp b/src/client.cpp
index 6fd73d4f..6e12a579 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -274,12 +274,11 @@ Client::Client(const Options &options):
}
CFRelease(resourcesURL);
strncat(path, "/data", PATH_MAX - 1);
- resman->addToSearchPath(path, false);
mPackageDir = path;
#else
- resman->addToSearchPath(PKG_DATADIR "data", false);
mPackageDir = PKG_DATADIR "data";
#endif
+ resman->addToSearchPath(mPackageDir, false);
resman->addToSearchPath("data", false);
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index 93037db2..92dab954 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -56,7 +56,7 @@ gcn::Font *monoFont = nullptr;
bool Gui::debugDraw;
Gui::Gui(Graphics *graphics)
- : mCustomCursorScale(graphics->getScale())
+ : mCustomCursorScale(Client::getVideo().settings().scale())
{
logger->log("Initializing GUI...");
// Set graphics
@@ -186,13 +186,14 @@ void Gui::event(Event::Channel channel, const Event &event)
bool Gui::videoResized(int width, int height)
{
- const float scale = static_cast<Graphics*>(mGraphics)->getScale();
+ const float graphicsScale = static_cast<Graphics*>(mGraphics)->getScale();
+ const float userScale = Client::getVideo().settings().scale();
- TrueTypeFont::updateFontScale(scale);
+ TrueTypeFont::updateFontScale(graphicsScale);
- if (mCustomCursorScale != scale)
+ if (mCustomCursorScale != userScale)
{
- mCustomCursorScale = scale;
+ mCustomCursorScale = userScale;
loadCustomCursors();
updateCursor();
}