Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FormerLurker/ArcWelderLib.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ccpp.yml351
-rw-r--r--ArcWelder/CMakeLists.txt2
-rw-r--r--ArcWelderConsole/CMakeLists.txt2
-rw-r--r--ArcWelderInverseProcessor/CMakeLists.txt2
-rw-r--r--ArcWelderLib.sln10
-rw-r--r--GcodeProcessorLib/CMakeLists.txt2
-rw-r--r--PyArcWelder/CMakeLists.txt2
7 files changed, 315 insertions, 56 deletions
diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml
index 75826ef..494c974 100644
--- a/.github/workflows/ccpp.yml
+++ b/.github/workflows/ccpp.yml
@@ -1,65 +1,304 @@
-name: C/C++ CI
-
-on:
- push:
- branches:
- - master
- - rc/maintenance
- - rc/devel
- - devel
- pull_request:
- branches:
- - master
- - rc/maintenance
- - rc/devel
- - devel
+name: CMake Build Matrix
+
+on: [push, pull_request]
+
+env:
+ CMAKE_VERSION: 3.17.2
+ NINJA_VERSION: 1.9.0
+ BUILD_TYPE: Release
+ CCACHE_VERSION: 3.7.7
jobs:
- build-ubuntu:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
- - name: configure
- run: ./configure
- - name: make
- run: make
- - name: make check
- run: make check
- - name: make distcheck
- run: make distcheck
-
- build-windows:
-
- runs-on: ${{ matrix.os }}
+ build:
+ name: ${{ matrix.config.name }}
+ runs-on: ${{ matrix.config.os }}
strategy:
+ fail-fast: false
matrix:
- os: [windows-latest]
+ config:
+ - {
+ name: "Windows Latest MSVC", artifact: "C:\Program Files\PowerShell\7\pwsh.EXE -command",
+ os: windows-latest,
+ cc: "cl", cxx: "cl",
+ environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
+ }
+ - {
+ name: "Windows Latest MinGW", artifact: "Windows-MinGW.tar.xz",
+ os: windows-latest,
+ cc: "gcc", cxx: "g++"
+ }
+ - {
+ name: "Ubuntu Latest GCC", artifact: "Linux.tar.xz",
+ os: ubuntu-latest,
+ cc: "gcc", cxx: "g++"
+ }
+ - {
+ name: "macOS Latest Clang", artifact: "macOS.tar.xz",
+ os: macos-latest,
+ cc: "clang", cxx: "clang++"
+ }
+
steps:
- uses: actions/checkout@v1
- - name: configure
- run: ./configure
- - name: make
- run: make
- - name: make check
- run: make check
- - name: make distcheck
- run: make distcheck
-
- build-macos:
-
- runs-on: ${{ matrix.os }}
+
+ - name: Download Ninja and CMake
+ id: cmake_and_ninja
+ shell: cmake -P {0}
+ run: |
+ set(cmake_version $ENV{CMAKE_VERSION})
+ set(ninja_version $ENV{NINJA_VERSION})
+
+ message(STATUS "Using host CMake version: ${CMAKE_VERSION}")
+
+ if ("${{ runner.os }}" STREQUAL "Windows")
+ set(ninja_suffix "win.zip")
+ set(cmake_suffix "win64-x64.zip")
+ set(cmake_dir "cmake-${cmake_version}-win64-x64/bin")
+ elseif ("${{ runner.os }}" STREQUAL "Linux")
+ set(ninja_suffix "linux.zip")
+ set(cmake_suffix "Linux-x86_64.tar.gz")
+ set(cmake_dir "cmake-${cmake_version}-Linux-x86_64/bin")
+ elseif ("${{ runner.os }}" STREQUAL "macOS")
+ set(ninja_suffix "mac.zip")
+ set(cmake_suffix "Darwin-x86_64.tar.gz")
+ set(cmake_dir "cmake-${cmake_version}-Darwin-x86_64/CMake.app/Contents/bin")
+ endif()
+
+ set(ninja_url "https://github.com/ninja-build/ninja/releases/download/v${ninja_version}/ninja-${ninja_suffix}")
+ file(DOWNLOAD "${ninja_url}" ./ninja.zip SHOW_PROGRESS)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./ninja.zip)
+
+ set(cmake_url "https://github.com/Kitware/CMake/releases/download/v${cmake_version}/cmake-${cmake_version}-${cmake_suffix}")
+ file(DOWNLOAD "${cmake_url}" ./cmake.zip SHOW_PROGRESS)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./cmake.zip)
+
+ # Save the path for other steps
+ file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/${cmake_dir}" cmake_dir)
+ message("::set-output name=cmake_dir::${cmake_dir}")
+
+ if (NOT "${{ runner.os }}" STREQUAL "Windows")
+ execute_process(
+ COMMAND chmod +x ninja
+ COMMAND chmod +x ${cmake_dir}/cmake
+ )
+ endif()
+
+ - name: Download ccache
+ id: ccache
+ shell: cmake -P {0}
+ run: |
+ set(ccache_url "https://github.com/cristianadam/ccache/releases/download/v$ENV{CCACHE_VERSION}/${{ runner.os }}.tar.xz")
+ file(DOWNLOAD "${ccache_url}" ./ccache.tar.xz SHOW_PROGRESS)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./ccache.tar.xz)
+
+ - name: Prepare ccache timestamp
+ id: ccache_cache_timestamp
+ shell: cmake -P {0}
+ run: |
+ string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
+ message("::set-output name=timestamp::${current_date}")
+
+ - name: ccache cache files
+ uses: actions/cache@v1.1.0
+ with:
+ path: .ccache
+ key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
+ restore-keys: |
+ ${{ matrix.config.name }}-ccache-
+
+ - name: Configure
+ shell: cmake -P {0}
+ run: |
+ set(ENV{CC} ${{ matrix.config.cc }})
+ set(ENV{CXX} ${{ matrix.config.cxx }})
+
+ if ("${{ runner.os }}" STREQUAL "Windows" AND NOT "x${{ matrix.config.environment_script }}" STREQUAL "x")
+ execute_process(
+ COMMAND "${{ matrix.config.environment_script }}" && set
+ OUTPUT_FILE environment_script_output.txt
+ )
+ file(STRINGS environment_script_output.txt output_lines)
+ foreach(line IN LISTS output_lines)
+ if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$")
+ set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}")
+ endif()
+ endforeach()
+ endif()
+
+ set(path_separator ":")
+ if ("${{ runner.os }}" STREQUAL "Windows")
+ set(path_separator ";")
+ endif()
+ set(ENV{PATH} "$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}")
+
+ execute_process(
+ COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake
+ -S .
+ -B build
+ -D CMAKE_BUILD_TYPE=$ENV{BUILD_TYPE}
+ -G Ninja
+ -D CMAKE_MAKE_PROGRAM=ninja
+ -D CMAKE_C_COMPILER_LAUNCHER=ccache
+ -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
+ RESULT_VARIABLE result
+ )
+ if (NOT result EQUAL 0)
+ message(FATAL_ERROR "Bad exit status")
+ endif()
+
+
+ - name: Build
+ shell: cmake -P {0}
+ run: |
+ set(ENV{NINJA_STATUS} "[%f/%t %o/sec] ")
+
+ if ("${{ runner.os }}" STREQUAL "Windows" AND NOT "x${{ matrix.config.environment_script }}" STREQUAL "x")
+ file(STRINGS environment_script_output.txt output_lines)
+ foreach(line IN LISTS output_lines)
+ if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$")
+ set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}")
+ endif()
+ endforeach()
+ endif()
+
+ set(path_separator ":")
+ if ("${{ runner.os }}" STREQUAL "Windows")
+ set(path_separator ";")
+ endif()
+ set(ENV{PATH} "$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}")
+
+ file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" ccache_basedir)
+ set(ENV{CCACHE_BASEDIR} "${ccache_basedir}")
+ set(ENV{CCACHE_DIR} "${ccache_basedir}/.ccache")
+ set(ENV{CCACHE_COMPRESS} "true")
+ set(ENV{CCACHE_COMPRESSLEVEL} "6")
+ set(ENV{CCACHE_MAXSIZE} "400M")
+ if ("${{ matrix.config.cxx }}" STREQUAL "cl")
+ set(ENV{CCACHE_MAXSIZE} "600M")
+ endif()
+
+ execute_process(COMMAND ccache -p)
+ execute_process(COMMAND ccache -z)
+
+ execute_process(
+ COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --build build
+ RESULT_VARIABLE result
+ )
+ if (NOT result EQUAL 0)
+ message(FATAL_ERROR "Bad exit status")
+ endif()
+
+ execute_process(COMMAND ccache -s)
+
+ - name: Run tests
+ shell: cmake -P {0}
+ run: |
+ include(ProcessorCount)
+ ProcessorCount(N)
+
+ set(ENV{CTEST_OUTPUT_ON_FAILURE} "ON")
+
+ execute_process(
+ COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/ctest -j ${N}
+ WORKING_DIRECTORY build
+ RESULT_VARIABLE result
+ )
+ if (NOT result EQUAL 0)
+ message(FATAL_ERROR "Running tests failed!")
+ endif()
+
+
+ - name: Install Strip
+ run: ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --install build --prefix instdir --strip
+
+
+ - name: Pack
+ working-directory: instdir
+ run: ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake -E tar cJfv ../${{ matrix.config.artifact }} .
+
+
+ - name: Upload
+ uses: actions/upload-artifact@v1
+ with:
+ path: ./${{ matrix.config.artifact }}
+ name: ${{ matrix.config.artifact }}
+
+ release:
+ if: contains(github.ref, 'tags/v')
+ runs-on: ubuntu-latest
+ needs: build
+
+ steps:
+ - name: Create Release
+ id: create_release
+ uses: actions/create-release@v1.0.0
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ github.ref }}
+ release_name: Release ${{ github.ref }}
+ draft: false
+ prerelease: false
+
+ - name: Store Release url
+ run: |
+ echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
+
+ - uses: actions/upload-artifact@v1
+ with:
+ path: ./upload_url
+ name: upload_url
+
+ publish:
+ if: contains(github.ref, 'tags/v')
+ name: ${{ matrix.config.name }}
+ runs-on: ${{ matrix.config.os }}
strategy:
+ fail-fast: false
matrix:
- os: [macos-latest]
+ config:
+ - {
+ name: "Windows Latest MSVC", artifact: "Windows-MSVC.tar.xz",
+ os: ubuntu-latest
+ }
+ - {
+ name: "Windows Latest MinGW", artifact: "Windows-MinGW.tar.xz",
+ os: ubuntu-latest
+ }
+ - {
+ name: "Ubuntu Latest GCC", artifact: "Linux.tar.xz",
+ os: ubuntu-latest
+ }
+ - {
+ name: "macOS Latest Clang", artifact: "macOS.tar.xz",
+ os: ubuntu-latest
+ }
+ needs: release
+
steps:
- - uses: actions/checkout@v1
- - name: configure
- run: ./configure
- - name: make
- run: make
- - name: make check
- run: make check
- - name: make distcheck
- run: make distcheck
+ - name: Download artifact
+ uses: actions/download-artifact@v1
+ with:
+ name: ${{ matrix.config.artifact }}
+ path: ./
+
+ - name: Download URL
+ uses: actions/download-artifact@v1
+ with:
+ name: upload_url
+ path: ./
+ - id: set_upload_url
+ run: |
+ upload_url=`cat ./upload_url`
+ echo ::set-output name=upload_url::$upload_url
+
+ - name: Upload to Release
+ id: upload_to_release
+ uses: actions/upload-release-asset@v1.0.1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ steps.set_upload_url.outputs.upload_url }}
+ asset_path: ./${{ matrix.config.artifact }}
+ asset_name: ${{ matrix.config.artifact }}
+ asset_content_type: application/x-gtar \ No newline at end of file
diff --git a/ArcWelder/CMakeLists.txt b/ArcWelder/CMakeLists.txt
index 822dee3..f467537 100644
--- a/ArcWelder/CMakeLists.txt
+++ b/ArcWelder/CMakeLists.txt
@@ -15,6 +15,8 @@ include(sourcelist.cmake)
# Add a library using our ArcWelderSources variable from our sourcelist file
add_library(${PROJECT_NAME} STATIC ${ArcWelderSources})
+install(TARGETS ${PROJECT_NAME})
+
# Link the GcodeProcessorLib
target_link_libraries(${PROJECT_NAME} GcodeProcessorLib)
diff --git a/ArcWelderConsole/CMakeLists.txt b/ArcWelderConsole/CMakeLists.txt
index 84058ec..e197aac 100644
--- a/ArcWelderConsole/CMakeLists.txt
+++ b/ArcWelderConsole/CMakeLists.txt
@@ -15,5 +15,7 @@ include(sourcelist.cmake)
# Add an executable our ArcWelderConsoleSources variable from our sourcelist file
add_executable(${PROJECT_NAME} ${ArcWelderConsoleSources})
+install(TARGETS ${PROJECT_NAME})
+
# specify linking to the GcodeProcessorLib and ArcWelder libraries
target_link_libraries(${PROJECT_NAME} GcodeProcessorLib ArcWelder)
diff --git a/ArcWelderInverseProcessor/CMakeLists.txt b/ArcWelderInverseProcessor/CMakeLists.txt
index ba8e2a6..f0fb19c 100644
--- a/ArcWelderInverseProcessor/CMakeLists.txt
+++ b/ArcWelderInverseProcessor/CMakeLists.txt
@@ -15,5 +15,7 @@ include(sourcelist.cmake)
# Add an executable our ArcWelderConsoleSources variable from our sourcelist file
add_executable(${PROJECT_NAME} ${ArcWelderInverseProcessorSources})
+install(TARGETS ${PROJECT_NAME})
+
# specify linking to the GcodeProcessorLib and ArcWelder libraries
target_link_libraries(${PROJECT_NAME} GcodeProcessorLib ArcWelder)
diff --git a/ArcWelderLib.sln b/ArcWelderLib.sln
index 6776791..e20aabb 100644
--- a/ArcWelderLib.sln
+++ b/ArcWelderLib.sln
@@ -23,6 +23,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
sourcelist.cmake = sourcelist.cmake
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{704AE839-EEF5-4277-900D-91FA4DBB17EB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{87F36EEF-E3D6-4B1D-815C-DEEB369BAB98}"
+ ProjectSection(SolutionItems) = preProject
+ .github\workflows\ccpp.yml = .github\workflows\ccpp.yml
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -83,6 +90,9 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {87F36EEF-E3D6-4B1D-815C-DEEB369BAB98} = {704AE839-EEF5-4277-900D-91FA4DBB17EB}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {46059DE8-A2F4-453F-9F33-F12ABC8010EF}
EndGlobalSection
diff --git a/GcodeProcessorLib/CMakeLists.txt b/GcodeProcessorLib/CMakeLists.txt
index 7df5acc..16cf7a7 100644
--- a/GcodeProcessorLib/CMakeLists.txt
+++ b/GcodeProcessorLib/CMakeLists.txt
@@ -9,6 +9,8 @@ include(sourcelist.cmake)
# Add a library using our GcodeProcessorLibSources variable from our sourcelist file
add_library(${PROJECT_NAME} STATIC ${GcodeProcessorLibSources})
+install(TARGETS ${PROJECT_NAME})
+
# Required on Unix OS family to be able to be linked into shared libraries.
set_target_properties(${PROJECT_NAME}
PROPERTIES POSITION_INDEPENDENT_CODE ON)
diff --git a/PyArcWelder/CMakeLists.txt b/PyArcWelder/CMakeLists.txt
index a26340d..88631a0 100644
--- a/PyArcWelder/CMakeLists.txt
+++ b/PyArcWelder/CMakeLists.txt
@@ -18,6 +18,8 @@ include(sourcelist.cmake)
# Create our library
add_library(${PROJECT_NAME} SHARED ${PyArcWelderSources})
+install(TARGETS ${PROJECT_NAME})
+
set_target_properties(
${PROJECT_NAME}
PROPERTIES