-
Paul Dechamps authored
Removed doxygen from blaster module in CMakeLists.txt of the root folder. It is still included in dartflo (if it is installed)
Paul Dechamps authoredRemoved doxygen from blaster module in CMakeLists.txt of the root folder. It is still included in dartflo (if it is installed)
CMakeLists.txt 4.35 KiB
# Copyright 2023 University of Liège
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------
PROJECT(BLASTER)
# ----------------------------------------------------------------------------
CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
# -- I/O
# Lib/Exe dir
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH
"Single output directory for building all libraries.")
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH
"Single output directory for building all executables.")
MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
# Build type
IF(NOT CMAKE_BUILD_TYPE)
SET( CMAKE_BUILD_TYPE "Release" CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
# Additional modules and macros
LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake")
# -- C/C++
# Set specific languages flags
SET(CMAKE_CXX_STANDARD 11) # newer way to set C++11 (requires cmake>=3.1)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
IF((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Intel"))
IF(NOT APPLE)
SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-as-needed")
ENDIF()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") # add verbosity
ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE)
ADD_DEFINITIONS(-D_USE_MATH_DEFINES) # otherwise M_PI is undefined
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") # parallel build with MSVC
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") # add verbosity
ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-register")
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything") # add verbosity
ENDIF()
# -- DEPENDENCIES
# Python
# use Python3_ROOT_DIR if wrong python found (e.g. anaconda)
FIND_PACKAGE(Python3 COMPONENTS Interpreter Development)
SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
SET(PYTHON_LIBRARIES ${Python3_LIBRARIES})
SET(PYTHON_INCLUDE_PATH ${Python3_INCLUDE_DIRS})
SET(PYTHONLIBS_VERSION_STRING ${Python3_VERSION})
# SWIG
FIND_PACKAGE(SWIG REQUIRED)
IF(CMAKE_GENERATOR MATCHES "Visual Studio") # not MSVC because of nmake & jom
SET(CMAKE_SWIG_OUTDIR "${EXECUTABLE_OUTPUT_PATH}/$(Configuration)/")
ELSE()
SET(CMAKE_SWIG_OUTDIR "${EXECUTABLE_OUTPUT_PATH}")
ENDIF()
# -- DEFINE (for SWIG to detect definitions)
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) # to find "amfe_def.h"
# -- CTest
ENABLE_TESTING()
# -- INSTALL
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -m site --user-site OUTPUT_VARIABLE PY_SITE OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING(REGEX REPLACE "\\\\" "/" PY_SITE ${PY_SITE})
SET(CMAKE_INSTALL_PREFIX "${PY_SITE}/blaster" CACHE STRING "Install location" FORCE)
SET(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT FALSE)
ELSE()
IF(NOT(CMAKE_INSTALL_PREFIX MATCHES "blaster$"))
SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/blaster" CACHE STRING "Install location" FORCE)
ENDIF()
ENDIF()
IF(UNIX)
IF(APPLE)
SET(CMAKE_INSTALL_RPATH "@loader_path")
ELSE()
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}")
ENDIF()
ENDIF()
# -- Sub directories
ADD_SUBDIRECTORY( modules )
ADD_SUBDIRECTORY( blast )
# -- FINAL
MESSAGE(STATUS "PROJECT: ${CMAKE_PROJECT_NAME}")
MESSAGE(STATUS "* SYSTEM NAME=\"${CMAKE_SYSTEM_NAME}\"")
MESSAGE(STATUS "* CXX COMPILER: ${CMAKE_CXX_COMPILER_ID}")
MESSAGE(STATUS "* CXX STANDARD: ${CMAKE_CXX_STANDARD}")
MESSAGE(STATUS "* INSTALL DIR: ${CMAKE_INSTALL_PREFIX}")
MESSAGE(STATUS "* BUILD TYPE: ${CMAKE_BUILD_TYPE}")
MESSAGE(STATUS "* VTK SUPPORT: ${USE_VTK}")
MESSAGE(STATUS "* MKL SUPPORT: ${USE_MKL}")
MESSAGE(STATUS "* MUMPS SUPPORT: ${USE_MUMPS}")