Linux CI builds
This commit is contained in:
parent
be6751d46b
commit
a88215a95b
|
|
@ -2,6 +2,63 @@ name: Build
|
||||||
on: [ push ]
|
on: [ push ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
linux:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
configuration: [ Release, Debug ]
|
||||||
|
|
||||||
|
name: Linux
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
name: Clone repository
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install required packages
|
||||||
|
run: apt install -y
|
||||||
|
git
|
||||||
|
|
||||||
|
clang
|
||||||
|
cmake
|
||||||
|
ninja-build
|
||||||
|
libboost-dev
|
||||||
|
libogre-1.12-dev
|
||||||
|
libpugixml-dev
|
||||||
|
qt6-base-dev
|
||||||
|
|
||||||
|
- name: Generate Ninja build files
|
||||||
|
run: cmake -G Ninja -B build -D CI -D CMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} .
|
||||||
|
|
||||||
|
- name: Build (Ninja)
|
||||||
|
run: ninja -C build
|
||||||
|
|
||||||
|
# ouch - unless and until we start using CMake's install command, these next few steps are a necessary evil
|
||||||
|
- name: Organize binaries
|
||||||
|
run: mkdir build/dist && find build -perm /a+x -exec mv {} build/dist \;
|
||||||
|
|
||||||
|
- name: Add OGRE plugins
|
||||||
|
run: cp -R build/plugins build/dist && cp Content/linux_plugins.cfg build/dist/plugins.cfg
|
||||||
|
|
||||||
|
- name: Add OGRE shaders
|
||||||
|
run: cp -R build/shaders build/dist
|
||||||
|
|
||||||
|
- name: Add resources
|
||||||
|
run: cp -R Content/RNR build/dist/content && cp LICENSE build/dist
|
||||||
|
|
||||||
|
- name: Set output variables
|
||||||
|
id: vars
|
||||||
|
run: |
|
||||||
|
echo "configuration=${{ matrix.configuration }}" | awk '{print tolower($0)}' >> $GITHUB_OUTPUT
|
||||||
|
echo "hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: rnr-${{ steps.vars.outputs.hash }}-linux_x64-${{ steps.vars.outputs.configuration }}
|
||||||
|
path: build/dist
|
||||||
|
|
||||||
windows:
|
windows:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
|
|
@ -27,6 +84,8 @@ jobs:
|
||||||
with:
|
with:
|
||||||
msystem: ${{ matrix.sys }}
|
msystem: ${{ matrix.sys }}
|
||||||
install: >-
|
install: >-
|
||||||
|
git
|
||||||
|
|
||||||
mingw-w64-${{ matrix.env }}-${{ matrix.sys == 'clang64' && 'clang' || 'gcc' }}
|
mingw-w64-${{ matrix.env }}-${{ matrix.sys == 'clang64' && 'clang' || 'gcc' }}
|
||||||
mingw-w64-${{ matrix.env }}-cmake
|
mingw-w64-${{ matrix.env }}-cmake
|
||||||
mingw-w64-${{ matrix.env }}-ninja
|
mingw-w64-${{ matrix.env }}-ninja
|
||||||
|
|
@ -36,14 +95,14 @@ jobs:
|
||||||
mingw-w64-${{ matrix.env }}-qt6
|
mingw-w64-${{ matrix.env }}-qt6
|
||||||
|
|
||||||
- name: Generate Ninja build files
|
- name: Generate Ninja build files
|
||||||
run: cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} .
|
run: cmake -G Ninja -B build -D CMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} .
|
||||||
|
|
||||||
- name: Build (Ninja)
|
- name: Build (Ninja)
|
||||||
run: ninja -C build
|
run: ninja -C build
|
||||||
|
|
||||||
# ouch - unless and until we start using CMake's install command, these next few steps are a necessary evil
|
# ouch - unless and until we start using CMake's install command, these next few steps are a necessary evil
|
||||||
- name: Organize binaries
|
- name: Organize binaries
|
||||||
run: mkdir build/dist && mv build/*.exe build/dist && cd build/dist && for x in *.exe; do mv $x "RNR.$x"; done
|
run: mkdir build/dist && mv build/*.exe build/dist
|
||||||
|
|
||||||
- name: Add Qt dependencies
|
- name: Add Qt dependencies
|
||||||
run: windeployqt6 build/dist/*.exe
|
run: windeployqt6 build/dist/*.exe
|
||||||
|
|
@ -55,7 +114,7 @@ jobs:
|
||||||
run: cp Content/win32_plugins.cfg build/dist/plugins.cfg && mkdir build/dist/plugins/ && cat build/dist/plugins.cfg | grep "Plugin=" | sed -e "s/Plugin=//" | xargs -I '{}' cp -v '/${{ matrix.sys }}/bin/{}.dll' build/dist/plugins/
|
run: cp Content/win32_plugins.cfg build/dist/plugins.cfg && mkdir build/dist/plugins/ && cat build/dist/plugins.cfg | grep "Plugin=" | sed -e "s/Plugin=//" | xargs -I '{}' cp -v '/${{ matrix.sys }}/bin/{}.dll' build/dist/plugins/
|
||||||
|
|
||||||
- name: Add OGRE shaders
|
- name: Add OGRE shaders
|
||||||
run: mkdir build/dist/ShaderCache && mkdir build/dist/shaders && cp -R /${{ matrix.sys }}/share/OGRE/Media/Main build/dist/shaders && cp -R /${{ matrix.sys }}/share/OGRE/Media/RTShaderLib build/dist/shaders
|
run: mkdir build/dist/shaders && cp -R /${{ matrix.sys }}/share/OGRE/Media/Main/* build/dist/shaders && cp -R /${{ matrix.sys }}/share/OGRE/Media/RTShaderLib/* build/dist/shaders
|
||||||
|
|
||||||
- name: Add resources
|
- name: Add resources
|
||||||
run: cp -R Content/RNR build/dist/content && cp LICENSE build/dist
|
run: cp -R Content/RNR build/dist/content && cp LICENSE build/dist
|
||||||
|
|
@ -69,5 +128,5 @@ jobs:
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: rnr-win_x64-${{ steps.vars.outputs.configuration }}-${{ steps.vars.outputs.hash }}
|
name: rnr-${{ steps.vars.outputs.hash }}-win_x64-${{ steps.vars.outputs.configuration }}
|
||||||
path: build/dist
|
path: build/dist
|
||||||
|
|
@ -17,4 +17,10 @@ find_package(Boost REQUIRED)
|
||||||
find_package(OGRE REQUIRED COMPONENTS Bites CONFIG)
|
find_package(OGRE REQUIRED COMPONENTS Bites CONFIG)
|
||||||
find_package(pugixml REQUIRED)
|
find_package(pugixml REQUIRED)
|
||||||
|
|
||||||
add_subdirectory(Projects)
|
add_subdirectory(Projects)
|
||||||
|
|
||||||
|
if(CI AND UNIX)
|
||||||
|
file(COPY ${OGRE_MEDIA_DIR}/Main/ DESTINATION ${CMAKE_BINARY_DIR}/shaders)
|
||||||
|
file(COPY ${OGRE_MEDIA_DIR}/RTShaderLib/ DESTINATION ${CMAKE_BINARY_DIR}/shaders)
|
||||||
|
file(COPY ${OGRE_PLUGIN_DIR}/ DESTINATION ${CMAKE_BINARY_DIR}/plugins)
|
||||||
|
endif()
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
PluginFolder=/usr/lib/OGRE
|
PluginFolder=plugins
|
||||||
|
|
||||||
Plugin=RenderSystem_GL
|
Plugin=RenderSystem_GL
|
||||||
Plugin=RenderSystem_GL3Plus
|
Plugin=RenderSystem_GL3Plus
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ add_subdirectory(${DEPENDENCIES_DIR}/Luau ${CMAKE_BINARY_DIR}/Dependencies/Luau)
|
||||||
|
|
||||||
# RNR
|
# RNR
|
||||||
add_link_options(-static)
|
add_link_options(-static)
|
||||||
|
link_libraries(-static-libgcc -static-libstdc++)
|
||||||
|
|
||||||
add_subdirectory(Engine)
|
add_subdirectory(Engine)
|
||||||
add_subdirectory(Client)
|
add_subdirectory(Client)
|
||||||
|
|
@ -22,6 +22,8 @@ target_include_directories(Player PRIVATE Header)
|
||||||
target_link_libraries(Player PRIVATE Common Engine)
|
target_link_libraries(Player PRIVATE Common Engine)
|
||||||
|
|
||||||
set_target_properties(Player PROPERTIES
|
set_target_properties(Player PROPERTIES
|
||||||
|
OUTPUT_NAME "RNR.Player"
|
||||||
|
|
||||||
WIN32_EXECUTABLE ON
|
WIN32_EXECUTABLE ON
|
||||||
MACOSX_BUNDLE ON
|
MACOSX_BUNDLE ON
|
||||||
)
|
)
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
|
|
@ -6,6 +7,10 @@
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
if (!fs::is_directory("ShaderCache") || !fs::exists("ShaderCache"))
|
||||||
|
fs::create_directory("ShaderCache");
|
||||||
|
}
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
MainWindow window = MainWindow();
|
MainWindow window = MainWindow();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,4 +10,6 @@ endif()
|
||||||
add_executable(Server ${SOURCE} ${HEADER})
|
add_executable(Server ${SOURCE} ${HEADER})
|
||||||
|
|
||||||
target_include_directories(Server PRIVATE Header)
|
target_include_directories(Server PRIVATE Header)
|
||||||
target_link_libraries(Server PRIVATE Engine)
|
target_link_libraries(Server PRIVATE Engine)
|
||||||
|
|
||||||
|
set_target_properties(Server PROPERTIES OUTPUT_NAME "RNR.Server")
|
||||||
|
|
@ -24,6 +24,8 @@ target_include_directories(Studio PRIVATE Header)
|
||||||
target_link_libraries(Studio PRIVATE Common Engine)
|
target_link_libraries(Studio PRIVATE Common Engine)
|
||||||
|
|
||||||
set_target_properties(Studio PROPERTIES
|
set_target_properties(Studio PROPERTIES
|
||||||
|
OUTPUT_NAME "RNR.Studio"
|
||||||
|
|
||||||
WIN32_EXECUTABLE ON
|
WIN32_EXECUTABLE ON
|
||||||
MACOSX_BUNDLE ON
|
MACOSX_BUNDLE ON
|
||||||
)
|
)
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QSurfaceFormat>
|
#include <QSurfaceFormat>
|
||||||
|
|
@ -9,6 +10,10 @@
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
if (!fs::is_directory("ShaderCache") || !fs::exists("ShaderCache"))
|
||||||
|
fs::create_directory("ShaderCache");
|
||||||
|
}
|
||||||
|
|
||||||
QSurfaceFormat format;
|
QSurfaceFormat format;
|
||||||
format.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
|
format.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue