From 2c5298e618f9393aaafa3ab7928f7493bf9cbaa3 Mon Sep 17 00:00:00 2001 From: Merill Date: Sun, 17 Nov 2019 21:30:46 +0100 Subject: [PATCH] Create actions for automatic build for windows, linux & mac but i don't know how to create a good package for mac. A zip with the exe is enough? restrict cmake MAP_IMPORTED_CONFIG_RELWITHDEBINFO to windows only. missing #include & & "libslic3r/PrintConfig.hpp" in some files for macos to compile --- .github/workflows/ccpp_mac.yml | 51 ++++++++++++++++++++++ .github/workflows/ccpp_ubuntu.yml | 48 +++++++++++++++++++++ .github/workflows/ccpp_win.yml | 71 +++++++++++++++++++++++++++++++ CMakeLists.txt | 4 +- src/libslic3r/Geometry.cpp | 2 + src/slic3r/GUI/wxExtensions.hpp | 2 + 6 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ccpp_mac.yml create mode 100644 .github/workflows/ccpp_ubuntu.yml create mode 100644 .github/workflows/ccpp_win.yml diff --git a/.github/workflows/ccpp_mac.yml b/.github/workflows/ccpp_mac.yml new file mode 100644 index 000000000..32499374e --- /dev/null +++ b/.github/workflows/ccpp_mac.yml @@ -0,0 +1,51 @@ +name: C/C++ CI macos + +on: [push] + +jobs: + build: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v1 + - name: mkdir in deps + run: mkdir deps/build + - name: cmake deps + working-directory: ./deps/build + run: cmake .. + - name: make deps + working-directory: ./deps/build + run: make + - name: mkdir build + run: mkdir build + - name: cmake + working-directory: ./build + run: cmake .. -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -DSLIC3R_STATIC=1 + - name: make slic3r + working-directory: ./build + run: make slic3r + - name: create directory and copy into it + working-directory: ./build + run: | + mkdir Slic3r++ + mkdir Slic3r++/Slic3r++.app + mkdir Slic3r++/Slic3r++.app/Contents + mkdir Slic3r++/Slic3r++.app/Contents/_CodeSignature + mkdir Slic3r++/Slic3r++.app/Contents/Frameworks + mkdir Slic3r++/Slic3r++.app/Contents/MacOS + - name: copy resources + working-directory: ./build + run: cp -Rf ../resources Slic3r++/Slic3r++.app/Contents/resources + - name: copy bin + working-directory: ./build + run: cp -f src/slic3r++ Slic3r++/Slic3r++.app/Contents/MacOS/slic3r++ +# - name: signing resources (creating CodeResources inside _CodeSignature) +# working-directory: . +# run: codesign -s resources +# maybe i should just try to do that on a separate pc and copy the file here, more secure as a signing process. + - name: Upload artifact + uses: actions/upload-artifact@v1.0.0 + with: + name: nightly_macos + path: build/Slic3r++/ diff --git a/.github/workflows/ccpp_ubuntu.yml b/.github/workflows/ccpp_ubuntu.yml new file mode 100644 index 000000000..d02e6bdae --- /dev/null +++ b/.github/workflows/ccpp_ubuntu.yml @@ -0,0 +1,48 @@ +name: C/C++ CI ubuntu + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: install gtk2 glew + run: sudo apt-get install libgtk2.0-dev libglew-dev + - name: mkdir in deps + run: mkdir deps/build + - name: cmake deps + working-directory: ./deps/build + run: cmake .. + - name: make deps + working-directory: ./deps/build + run: make + - name: mkdir build + run: mkdir build + - name: cmake + working-directory: ./build + run: cmake .. -DCMAKE_PREFIX_PATH="/home/runner/work/Slic3r/Slic3r/deps/build/destdir/usr/local" -DSLIC3R_STATIC=1 + - name: make slic3r + working-directory: ./build + run: make slic3r + - name: create directory and copy into it + working-directory: ./build + run: | + mkdir package + mkdir package/bin + - name: copy resources + working-directory: ./build + run: cp -Rf ../resources package/resources + - name: copy bin + working-directory: ./build + run: cp -f src/slic3r++ package/bin/slic3r++ + - name: create sh from echo + working-directory: ./build/package + run: echo -e '#!/bin/bash\nDIR=$(readlink -f "$0" | xargs dirname)\nexport LD_LIBRARY_PATH="$DIR/bin"\nexec "$DIR/bin/slic3r++" "$@"' >slic3r++ + - name: Upload artifact + uses: actions/upload-artifact@v1.0.0 + with: + name: nightly_linux + path: build/package/ diff --git a/.github/workflows/ccpp_win.yml b/.github/workflows/ccpp_win.yml new file mode 100644 index 000000000..1b786b55d --- /dev/null +++ b/.github/workflows/ccpp_win.yml @@ -0,0 +1,71 @@ +name: C/C++ CI windows x64 + +on: [push] + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v1 + - uses: ilammy/msvc-dev-cmd@v1 + - name: mkdir in deps + run: mkdir deps/build + - name: cmake deps + working-directory: ./deps/build + run: | + cmake .. -G "Visual Studio 16 2019" -A x64 + msbuild /m ALL_BUILD.vcxproj + - name: mkdir + run: mkdir build + - name: cmake + working-directory: ./build + run: | + cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_PREFIX_PATH="d:\a\Slic3r\Slic3r\deps\build\destdir\usr\local" + #msbuild /m /P:Configuration=Release ALL_BUILD.vcxproj + msbuild /m /P:Configuration=Release INSTALL.vcxproj + - name: create directory and copy into it + working-directory: ./build + run: ls + - name: create directory and copy into it + working-directory: ./build + shell: powershell + #todo: add the opengl folder + run: mkdir package + - name: copy from release + working-directory: ./build + shell: powershell + run: '(new-object System.Net.WebClient).DownloadFile("https://github.com/supermerill/Slic3r/releases/download/2.1.45.0/Slic3r++_2.1.45.0_win64_191104.zip", "Slic3r++_2.1.45.0_win64_191104.zip")' + - name: unzip + working-directory: ./build + shell: cmd + run: '"C:/Program Files/7-Zip/7z.exe" x Slic3r++_2.1.45.0_win64_191104.zip' + - name: copy old release content + working-directory: ./build + shell: cmd + run: xcopy /RCYIE Slic3r++_2.1.45.0_win64_191104\* package\ + - name: copy new resources + working-directory: ./build + shell: cmd + run: xcopy /RCYIE ..\resources package\resources + - name: copy dll + working-directory: ./build + shell: cmd + run: xcopy /RCYIE src\release\*.dll package\ + - name: copy exe + working-directory: ./build + shell: cmd + run: xcopy /RCYIE src\release\*.exe package\ + - name: copy ms runtime + working-directory: ./build + shell: cmd + run: xcopy /RCYIE c:\windows\system32\VCRUNTIME140* package\ +# - name: create zip +# working-directory: ./build +# shell: cmd +# run: '"C:/Program Files/7-Zip/7z.exe" a -tzip nightly.zip *' + - name: Upload artifact + uses: actions/upload-artifact@v1.0.0 + with: + name: nightly_win64 + path: build/package/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 84ce2294d..54e51dc1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -256,7 +256,9 @@ if(NOT WIN32) endif() find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS system filesystem thread log locale regex) # boost compile only in release & debug. We have to force the release version for RELWITHDEBINFO compilation -set_target_properties(${Boost_LIBRARIES} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) +if (MSVC) + set_target_properties(${Boost_LIBRARIES} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) +endif() add_library(boost_libs INTERFACE) add_library(boost_headeronly INTERFACE) diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 751b2efca..715ce9c21 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -10,10 +10,12 @@ #include #include #include +#include #include #include #include #include +#include #ifdef SLIC3R_DEBUG #include "SVG.hpp" diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index f4468f4bb..b7bb97e09 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -1,6 +1,8 @@ #ifndef slic3r_GUI_wxExtensions_hpp_ #define slic3r_GUI_wxExtensions_hpp_ +#include "libslic3r/PrintConfig.hpp" + #include #include #include