Commit 3648bf83 authored by Deepak Rangarajan's avatar Deepak Rangarajan
Browse files

Merge branch 'mwm/conan' into 'master'

Use Conan to install dependencies

See merge request exa/mfix-parser!27
parents 69ee0dbf 6febd2e6
Loading
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -6,12 +6,20 @@ variables:

###### Test jobs #####

test:all:
test:meson:
  script:
    - python -m pip install meson ninja
    - meson build
    - python -m pip install meson ninja conan
    - env PKG_CONFIG_PATH=$PWD/build meson build
    - meson test -C build --print-errorlogs
#   - ninja -C build src/mfix-parser
#   - find -name inputs |grep -v tutorials/wdf/mueller | xargs -l ./build/src/mfix-parser # FIXME: correct syntax error (= =) in file
  tags:
    - mfix-exa

test:cmake:
  script:
    - python -m pip install cmake ninja conan
    - cmake -S. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Debug
    - cmake --build build --target unit_tests_csg
    - cd build
    - ctest
  tags:
    - mfix-exa
+35 −21
Original line number Diff line number Diff line
################################################################################
# CSG Parser
################################################################################
add_library(csg)

target_sources(csg PRIVATE
  src/csg/impl/parser.cpp
  src/csg/impl/levelset_3d.cpp
  src/csg/impl/levelset_2d.cpp
  src/csg/impl/csg.cpp
  src/csg/impl/matrix_functions.cpp
  )
cmake_minimum_required(VERSION 3.14)

target_include_directories(csg PRIVATE
  ${CMAKE_CURRENT_SOURCE_DIR}/subprojects/PEGTL/include)
project(MFIX-Parser
  DESCRIPTION  "Parser for CSG files for MFiX-Exa"
  HOMEPAGE_URL "https://mfix.netl.doe.gov/gitlab/exa/mfix-parser"
  LANGUAGES    CXX
  )

target_link_libraries(csg PRIVATE stdc++fs)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

target_compile_features(csg PRIVATE cxx_std_17)
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
  set( CMAKE_CXX_COMPILER_LAUNCHER ccache )
endif()

SET(catch2_dir ${CMAKE_CURRENT_SOURCE_DIR}/subprojects/Catch2)
option(ENABLE_CSG "Build with CSG support" OFF)

if(NOT EXISTS "${catch2_dir}/CMakeLists.txt")
  message(FATAL_ERROR "File ${catch2_dir}/CMakeLists.txt does not exist!  The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
# Download automatically, you can also just copy the conan.cmake file
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
  message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
  file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/master/conan.cmake"
    "${CMAKE_BINARY_DIR}/conan.cmake")
endif()

add_subdirectory(${catch2_dir} ${CMAKE_CURRENT_BINARY_DIR}/catch_build)
list(APPEND CMAKE_MODULE_PATH "${catch2_dir}/contrib/")
include(${CMAKE_BINARY_DIR}/conan.cmake)

conan_cmake_run(REQUIRES
  catch2/2.12.1
  cgal/5.0.2
  pegtl/2.8.1@taocpp/stable
  BASIC_SETUP)

list(APPEND CMAKE_MODULE_PATH "${CONAN_LIB_DIRS_CATCH2}/cmake/Catch2")

include(CTest)
include(Catch)

add_subdirectory(src/csg)

target_include_directories(csg PRIVATE
  ${CONAN_INCLUDE_DIRS_PEGTL})

target_compile_features(csg PRIVATE cxx_std_17)
+0 −4
Original line number Diff line number Diff line
@@ -16,7 +16,3 @@ This has the MFIX-Exa repo as a submodule in order to test against existing ``in
## Run Tests

> meson test -C build

## Run on inputs file

> ./build/src/mfix-parser subprojects/mfix/benchmarks/01-HCS/Size0001/inputs && echo "Parsing succeeded."

conanfile.txt

0 → 100644
+7 −0
Original line number Diff line number Diff line
[requires]
catch2/2.12.1
cgal/5.0.2
pegtl/2.8.1@taocpp/stable

[generators]
pkg_config
+6 −2
Original line number Diff line number Diff line
@@ -2,8 +2,12 @@ project('mfix-parser', 'cpp',
        version : '0.1',
        default_options : ['warning_level=3', 'cpp_std=c++2a'])

tao_inc = include_directories('subprojects/PEGTL/include')
catch2_inc = include_directories('subprojects/Catch2/single_include')
run_command('conan', 'install', '--install-folder', meson.build_root(), meson.source_root(), check: true)

pegtl = dependency('pegtl', method: 'pkg-config')
catch2 = dependency('catch2', method: 'pkg-config')
cgal = dependency('cgal', method: 'pkg-config')

parser_inc = include_directories(
  'src/csg',
  'src/csg/impl',
Loading