schiff

Estimate the radiative properties of soft particless
git clone git://git.meso-star.com/schiff.git
Log | Files | Refs | README | LICENSE

CMakeLists.txt (4889B)


      1 # Copyright (C) 2020, 2021 |Meso|Star> (contact@meso-star.com)
      2 # Copyright (C) 2015, 2016 CNRS
      3 #
      4 # This program is free software: you can redistribute it and/or modify
      5 # it under the terms of the GNU General Public License as published by
      6 # the Free Software Foundation, either version 3 of the License, or
      7 # (at your option) any later version.
      8 #
      9 # This program is distributed in the hope that it will be useful,
     10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     12 # GNU General Public License for more details.
     13 #
     14 # You should have received a copy of the GNU General Public License
     15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
     16 
     17 cmake_minimum_required(VERSION 3.1)
     18 enable_testing()
     19 project(schiff C)
     20 
     21 set(SCHIFF_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src/)
     22 
     23 ################################################################################
     24 # Check dependencies
     25 ################################################################################
     26 get_filename_component(_current_source_dir ${CMAKE_CURRENT_LIST_FILE} PATH)
     27 set(LibYAML_DIR ${_current_source_dir}/)
     28 
     29 find_package(LibYAML REQUIRED)
     30 find_package(RCMake 0.4 REQUIRED)
     31 find_package(RSys 0.8 REQUIRED)
     32 find_package(Star3D 0.8 REQUIRED)
     33 find_package(StarSchiff 0.4.1 REQUIRED)
     34 find_package(StarSP 0.12 REQUIRED)
     35 
     36 include_directories(
     37   ${LibYAML_INCLUDE_DIR}
     38   ${RSys_INCLUDE_DIR}
     39   ${Star3D_INCLUDE_DIR}
     40   ${StarSchiff_INCLUDE_DIR}
     41   ${StarSP_INCLUDE_DIR}
     42   ${CMAKE_CURRENT_BINARY_DIR})
     43 
     44 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${RCMAKE_SOURCE_DIR})
     45 include(rcmake)
     46 include(rcmake_runtime)
     47 
     48 ################################################################################
     49 # Configure and define the targets
     50 ################################################################################
     51 set(VERSION_MAJOR 0)
     52 set(VERSION_MINOR 4)
     53 set(VERSION_PATCH 2)
     54 set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
     55 
     56 set(SCHIFF_ARGS_DEFAULT_NINSAMPLES "100")
     57 set(SCHIFF_ARGS_DEFAULT_NREALISATIONS "10000")
     58 set(SCHIFF_ARGS_DEFAULT_NANGLES "1000")
     59 set(SCHIFF_ARGS_DEFAULT_NANGLES_INV "2000")
     60 
     61 configure_file(${SCHIFF_SOURCE_DIR}/schiff_version.h.in
     62   ${CMAKE_CURRENT_BINARY_DIR}/schiff_version.h @ONLY)
     63 configure_file(${SCHIFF_SOURCE_DIR}/schiff_args.h.in
     64   ${CMAKE_CURRENT_BINARY_DIR}/schiff_args.h @ONLY)
     65 configure_file(${PROJECT_SOURCE_DIR}/../doc/schiff.1.in
     66   ${CMAKE_CURRENT_BINARY_DIR}/schiff.1 @ONLY)
     67 
     68 set(SCHIFF_FILES_SRC
     69   schiff.c
     70   schiff_args.c
     71   schiff_geometry.c
     72   schiff_mesh.c
     73   schiff_optical_properties.c)
     74 set(SCHIFF_FILES_INC
     75   schiff_geometry.h
     76   schiff_mesh.h
     77   schiff_optical_properties.h
     78   schiff_streamline.h)
     79 set(SCHIFF_FILES_DOC COPYING README.md)
     80 
     81 # Prepend each file in the `SCHIFF_FILES_<SRC|INC|DOC>' list by the absolute
     82 # path of the directory in which they lie
     83 rcmake_prepend_path(SCHIFF_FILES_SRC ${SCHIFF_SOURCE_DIR})
     84 rcmake_prepend_path(SCHIFF_FILES_INC ${SCHIFF_SOURCE_DIR})
     85 rcmake_prepend_path(SCHIFF_FILES_DOC ${PROJECT_SOURCE_DIR}/../)
     86 
     87 set(SCHIFF_FILES_MAN1
     88   ${CMAKE_CURRENT_BINARY_DIR}/schiff.1)
     89 set(SCHIFF_FILES_MAN5
     90   ${PROJECT_SOURCE_DIR}/../doc/schiff-geometry.5
     91   ${PROJECT_SOURCE_DIR}/../doc/schiff-output.5)
     92 
     93 if(CMAKE_COMPILER_IS_GNUCC)
     94   set(MATH_LIB m)
     95 endif()
     96 
     97 add_executable(schiff ${SCHIFF_FILES_SRC} ${SCHIFF_FILES_INC})
     98 target_link_libraries(schiff LibYAML RSys Star3D StarSchiff StarSP ${MATH_LIB})
     99 set_target_properties(schiff PROPERTIES
    100   VERSION ${VERSION}
    101   SOVERSION ${VERSION_MAJOR})
    102 rcmake_copy_runtime_libraries(schiff)
    103 
    104 ################################################################################
    105 # Tests
    106 ################################################################################
    107 # Check that the following command exists
    108 find_program(_bash bash)
    109 find_program(_bc bc)
    110 find_program(_csplit csplit)
    111 find_program(_env env)
    112 
    113 if(NOT _bash OR NOT _bc OR NOT _csplit OR NOT _env)
    114   message(WARNING "Cannot setup the bash test script")
    115 else()
    116   add_test(
    117     NAME test_schiff_cylinder
    118     COMMAND
    119       ${_env} PATH=$ENV{PATH}:$<TARGET_FILE_DIR:schiff>
    120       ${_bash} ${SCHIFF_SOURCE_DIR}/test_schiff_cylinder.sh)
    121   add_test(
    122     NAME test_schiff_sphere
    123     COMMAND
    124       ${_env} PATH=$ENV{PATH}:$<TARGET_FILE_DIR:schiff>
    125       ${_bash} ${SCHIFF_SOURCE_DIR}/test_schiff_sphere.sh
    126     WORKING_DIRECTORY ${_test_sphere_path})
    127 endif()
    128 
    129 ################################################################################
    130 # Define output & install directories
    131 ################################################################################
    132 install(TARGETS schiff
    133   ARCHIVE DESTINATION bin
    134   LIBRARY DESTINATION lib
    135   RUNTIME DESTINATION bin)
    136 install(FILES ${SCHIFF_FILES_DOC} DESTINATION share/doc/schiff)
    137 install(FILES ${SCHIFF_FILES_MAN1} DESTINATION share/man/man1)
    138 install(FILES ${SCHIFF_FILES_MAN5} DESTINATION share/man/man5)
    139 rcmake_install_runtime_libraries(schiff)
    140