Loading .gitlab-ci.yml +41 −14 Original line number Diff line number Diff line Loading @@ -4,11 +4,6 @@ stages: - build-img - test variables: CONAN_LOGIN_USERNAME: ci_user CONAN_PASSWORD: ${CI_JOB_TOKEN} REPO: gitlab build-img: stage: build-img image: Loading @@ -22,21 +17,53 @@ build-img: - docker .package: &package_template ###### Test jobs ##### .test:cmake: &cmake_def stage: test image: $CI_REGISTRY_IMAGE:latest needs: ['build-img'] script: - GIT_SHA=$(git rev-parse HEAD) - conan config install settings.yml - conan create . exa/stable -s compiler=${COMPILER} -s compiler.version=${CVERSION} -s compiler.libcxx=${LIBCXX} - git clone --depth 1 --branch v2.13.7 https://github.com/catchorg/Catch2 - cmake -SCatch2 -Bbuild-catch2 -GNinja - cmake --build build-catch2 --target install - wget https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz - tar xf gmp-6.2.1.tar.lz - pushd gmp-6.2.1 - ./configure - make install - popd - wget https://www.mpfr.org/mpfr-current/mpfr-4.1.0.tar.xz - tar xf mpfr-4.1.0.tar.xz - pushd mpfr-4.1.0 - ./configure - make install - popd - git clone --depth 1 --branch v5.3 https://github.com/CGAL/cgal - cmake -Scgal -Bbuild-cgal -GNinja - cmake --build build-cgal --target install - git clone --branch 3.2.2 https://github.com/taocpp/PEGTL - cmake -SPEGTL -Bbuild-pegtl -GNinja - cmake --build build-pegtl --target install - cmake -S. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=$BUILD_TYPE - cmake --build build --target unit_tests_csg - cd build - ctest tags: - docker test:cmake:debug: variables: BUILD_TYPE: "Debug" <<: *cmake_def package:gcc: test:cmake:release: variables: COMPILER: gcc CVERSION: 9 LIBCXX: libstdc++ <<: *package_template BUILD_TYPE: "Release" allow_failure: true <<: *cmake_def .gitmodules +0 −3 Original line number Diff line number Diff line [submodule "subprojects/cmake-conan"] path = subprojects/cmake-conan url = https://github.com/conan-io/cmake-conan CMakeLists.txt +15 −65 Original line number Diff line number Diff line Loading @@ -10,69 +10,19 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) include(${CMAKE_CURRENT_SOURCE_DIR}/subprojects/cmake-conan/conan.cmake) find_program(CONAN_EXECUTABLE conan) if(NOT CONAN_EXECUTABLE) message(WARNING " Did not find conan in PATH. Recommend installing with 'pip install conan'. Will try downloading Conan with PMM <https://github.com/vector-of-bool/pmm>") include(pmm.cmake) pmm(CONAN) endif() message(STATUS "Installing conan settings for csg-eb") execute_process( COMMAND ${CONAN_EXECUTABLE} config install ${CMAKE_CURRENT_SOURCE_DIR}/settings.yml COMMAND_ERROR_IS_FATAL ANY ) conan_cmake_configure(REQUIRES catch2/2.13.7 GENERATORS cmake_find_package) if(CONAN_SETTINGS) set(settings ${CONAN_SETTINGS}) else() conan_cmake_autodetect(settings) find_program(CCACHE_FOUND ccache) if(CCACHE_FOUND) set( CMAKE_CXX_COMPILER_LAUNCHER ccache ) endif() conan_cmake_install(PATH_OR_REFERENCE ${CMAKE_CURRENT_BINARY_DIR}/conanfile.txt BUILD missing SETTINGS ${settings}) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) find_package(Catch2 REQUIRED) find_package(pegtl REQUIRED) find_package(CGAL REQUIRED) execute_process( COMMAND git rev-parse HEAD WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE CSGEB_SHA ERROR_VARIABLE err ) if(err) message(WARNING "Failed to retrieve CSG-EB Git commit") else() string(STRIP ${CSGEB_SHA} CSGEB_SHA) message(STATUS "CSG-EB commit: ${CSGEB_SHA}") endif() message(STATUS "Disabling mfix-gitlab remote (if it exists)") execute_process( COMMAND ${CONAN_EXECUTABLE} remote disable mfix-gitlab ) add_subdirectory(src/csg) execute_process( COMMAND ${CONAN_EXECUTABLE} create --build=missing ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND_ERROR_IS_FATAL ANY target_include_directories(csg-eb PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) conan_cmake_configure(REQUIRES csg-eb/${CSGEB_SHA} GENERATORS cmake_find_package) conan_cmake_install(PATH_OR_REFERENCE ${CMAKE_CURRENT_BINARY_DIR}/conanfile.txt BUILD missing SETTINGS ${settings}) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) find_package(csg-eb REQUIRED) target_compile_features(csg-eb PRIVATE cxx_std_17) Dockerfile +5 −1 Original line number Diff line number Diff line Loading @@ -8,17 +8,21 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get -qq update \ && apt-get -qq -y install --no-install-recommends \ autoconf=2.* \ build-essential=12.* \ git=1:2.* \ libboost-all-dev=1.* \ lunzip=1.* \ m4=1.* \ openscad=2019.* \ pkg-config=0.29.* \ python3-pip=20.* \ python3-venv=3.8.* \ wget=1.* \ && apt-get clean && rm -rf /var/lib/apt/lists/* \ && pip3 install --no-cache-dir \ cmake==3.* \ conan==1.* \ ninja==1.* CMD [ "/bin/bash" ] README.md +0 −6 Original line number Diff line number Diff line Loading @@ -25,12 +25,6 @@ Dependencies: - C++17 compiler (GCC >=7.x, Clang >=5.x) - CMake >=3.14 - Conan (CMake will try to install Conan if `conan` is not in `PATH`) CMake will try to install [Conan](https://conan.io) if `conan` is not in `PATH`. However, installing Conan (`pip install conan`) is recommended for faster builds. #### Build ```shell > cmake -S . -B build -DCMAKE_BUILD_TYPE=Release Loading Loading
.gitlab-ci.yml +41 −14 Original line number Diff line number Diff line Loading @@ -4,11 +4,6 @@ stages: - build-img - test variables: CONAN_LOGIN_USERNAME: ci_user CONAN_PASSWORD: ${CI_JOB_TOKEN} REPO: gitlab build-img: stage: build-img image: Loading @@ -22,21 +17,53 @@ build-img: - docker .package: &package_template ###### Test jobs ##### .test:cmake: &cmake_def stage: test image: $CI_REGISTRY_IMAGE:latest needs: ['build-img'] script: - GIT_SHA=$(git rev-parse HEAD) - conan config install settings.yml - conan create . exa/stable -s compiler=${COMPILER} -s compiler.version=${CVERSION} -s compiler.libcxx=${LIBCXX} - git clone --depth 1 --branch v2.13.7 https://github.com/catchorg/Catch2 - cmake -SCatch2 -Bbuild-catch2 -GNinja - cmake --build build-catch2 --target install - wget https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz - tar xf gmp-6.2.1.tar.lz - pushd gmp-6.2.1 - ./configure - make install - popd - wget https://www.mpfr.org/mpfr-current/mpfr-4.1.0.tar.xz - tar xf mpfr-4.1.0.tar.xz - pushd mpfr-4.1.0 - ./configure - make install - popd - git clone --depth 1 --branch v5.3 https://github.com/CGAL/cgal - cmake -Scgal -Bbuild-cgal -GNinja - cmake --build build-cgal --target install - git clone --branch 3.2.2 https://github.com/taocpp/PEGTL - cmake -SPEGTL -Bbuild-pegtl -GNinja - cmake --build build-pegtl --target install - cmake -S. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=$BUILD_TYPE - cmake --build build --target unit_tests_csg - cd build - ctest tags: - docker test:cmake:debug: variables: BUILD_TYPE: "Debug" <<: *cmake_def package:gcc: test:cmake:release: variables: COMPILER: gcc CVERSION: 9 LIBCXX: libstdc++ <<: *package_template BUILD_TYPE: "Release" allow_failure: true <<: *cmake_def
.gitmodules +0 −3 Original line number Diff line number Diff line [submodule "subprojects/cmake-conan"] path = subprojects/cmake-conan url = https://github.com/conan-io/cmake-conan
CMakeLists.txt +15 −65 Original line number Diff line number Diff line Loading @@ -10,69 +10,19 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) include(${CMAKE_CURRENT_SOURCE_DIR}/subprojects/cmake-conan/conan.cmake) find_program(CONAN_EXECUTABLE conan) if(NOT CONAN_EXECUTABLE) message(WARNING " Did not find conan in PATH. Recommend installing with 'pip install conan'. Will try downloading Conan with PMM <https://github.com/vector-of-bool/pmm>") include(pmm.cmake) pmm(CONAN) endif() message(STATUS "Installing conan settings for csg-eb") execute_process( COMMAND ${CONAN_EXECUTABLE} config install ${CMAKE_CURRENT_SOURCE_DIR}/settings.yml COMMAND_ERROR_IS_FATAL ANY ) conan_cmake_configure(REQUIRES catch2/2.13.7 GENERATORS cmake_find_package) if(CONAN_SETTINGS) set(settings ${CONAN_SETTINGS}) else() conan_cmake_autodetect(settings) find_program(CCACHE_FOUND ccache) if(CCACHE_FOUND) set( CMAKE_CXX_COMPILER_LAUNCHER ccache ) endif() conan_cmake_install(PATH_OR_REFERENCE ${CMAKE_CURRENT_BINARY_DIR}/conanfile.txt BUILD missing SETTINGS ${settings}) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) find_package(Catch2 REQUIRED) find_package(pegtl REQUIRED) find_package(CGAL REQUIRED) execute_process( COMMAND git rev-parse HEAD WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE CSGEB_SHA ERROR_VARIABLE err ) if(err) message(WARNING "Failed to retrieve CSG-EB Git commit") else() string(STRIP ${CSGEB_SHA} CSGEB_SHA) message(STATUS "CSG-EB commit: ${CSGEB_SHA}") endif() message(STATUS "Disabling mfix-gitlab remote (if it exists)") execute_process( COMMAND ${CONAN_EXECUTABLE} remote disable mfix-gitlab ) add_subdirectory(src/csg) execute_process( COMMAND ${CONAN_EXECUTABLE} create --build=missing ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND_ERROR_IS_FATAL ANY target_include_directories(csg-eb PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) conan_cmake_configure(REQUIRES csg-eb/${CSGEB_SHA} GENERATORS cmake_find_package) conan_cmake_install(PATH_OR_REFERENCE ${CMAKE_CURRENT_BINARY_DIR}/conanfile.txt BUILD missing SETTINGS ${settings}) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) find_package(csg-eb REQUIRED) target_compile_features(csg-eb PRIVATE cxx_std_17)
Dockerfile +5 −1 Original line number Diff line number Diff line Loading @@ -8,17 +8,21 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get -qq update \ && apt-get -qq -y install --no-install-recommends \ autoconf=2.* \ build-essential=12.* \ git=1:2.* \ libboost-all-dev=1.* \ lunzip=1.* \ m4=1.* \ openscad=2019.* \ pkg-config=0.29.* \ python3-pip=20.* \ python3-venv=3.8.* \ wget=1.* \ && apt-get clean && rm -rf /var/lib/apt/lists/* \ && pip3 install --no-cache-dir \ cmake==3.* \ conan==1.* \ ninja==1.* CMD [ "/bin/bash" ]
README.md +0 −6 Original line number Diff line number Diff line Loading @@ -25,12 +25,6 @@ Dependencies: - C++17 compiler (GCC >=7.x, Clang >=5.x) - CMake >=3.14 - Conan (CMake will try to install Conan if `conan` is not in `PATH`) CMake will try to install [Conan](https://conan.io) if `conan` is not in `PATH`. However, installing Conan (`pip install conan`) is recommended for faster builds. #### Build ```shell > cmake -S . -B build -DCMAKE_BUILD_TYPE=Release Loading