|
@@ -3,9 +3,10 @@ project(scattnlay VERSION 2.3)
|
|
|
|
|
|
cmake_host_system_information(RESULT HOSTNAME QUERY HOSTNAME)
|
|
|
|
|
|
-message("Build type is: " ${CMAKE_BUILD_TYPE})
|
|
|
+message("Build type is: ${CMAKE_BUILD_TYPE}")
|
|
|
message("Host OS System: ${CMAKE_HOST_SYSTEM}")
|
|
|
message("Hostname: ${HOSTNAME}")
|
|
|
+message("CMake version: ${CMAKE_VERSION}")
|
|
|
|
|
|
# Select flags.
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
@@ -13,7 +14,7 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g ")
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
|
|
|
|
|
|
-set(CMAKE_CXX_STANDARD 14)
|
|
|
+set(CMAKE_CXX_STANDARD 17)
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
|
@@ -21,7 +22,7 @@ add_compile_options(-Wall)
|
|
|
add_compile_options(-funroll-loops -fstrict-aliasing)
|
|
|
|
|
|
# Set options
|
|
|
-option(ENABLE_MP "Use multiple precision" ON)
|
|
|
+option(ENABLE_MP "Use multiple precision" OFF)
|
|
|
if (${ENABLE_MP})
|
|
|
add_compile_options(-DMULTI_PRECISION=100)
|
|
|
endif ()
|
|
@@ -41,8 +42,7 @@ if (USE_STATIC_LIBRARIES)
|
|
|
endif ()
|
|
|
set(Boost_USE_MULTITHREADED OFF)
|
|
|
set(Boost_USE_STATIC_RUNTIME OFF)
|
|
|
-find_package(Boost
|
|
|
- REQUIRED COMPONENTS chrono filesystem iostreams regex serialization system timer)
|
|
|
+find_package(Boost REQUIRED)
|
|
|
if (Boost_INCLUDE_DIRS)
|
|
|
if (${Boost_VERSION} VERSION_LESS 1.60.0)
|
|
|
message(FATAL_ERROR
|
|
@@ -54,18 +54,19 @@ if (Boost_INCLUDE_DIRS)
|
|
|
include_directories(${Boost_INCLUDE_DIRS})
|
|
|
endif ()
|
|
|
|
|
|
-#Find Python and NumPy
|
|
|
+#Find Python, NumPy and PyBind11
|
|
|
find_package(Python COMPONENTS Interpreter Development)
|
|
|
|
|
|
include_directories(${Python_INCLUDE_DIRS})
|
|
|
|
|
|
-message("Python_EXECUTABLE:${Python_EXECUTABLE}")
|
|
|
-message("Python_FOUND:${Python_FOUND}")
|
|
|
-message("Python_VERSION:${Python_VERSION}")
|
|
|
-message("Python_Development_FOUND:${Python_Development_FOUND}")
|
|
|
-message("Python_LIBRARIES:${Python_LIBRARIES}")
|
|
|
+message("Python_EXECUTABLE: ${Python_EXECUTABLE}")
|
|
|
+message("Python_FOUND: ${Python_FOUND}")
|
|
|
+message("Python_VERSION: ${Python_VERSION}")
|
|
|
+message("Python_Development_FOUND: ${Python_Development_FOUND}")
|
|
|
+message("Python_LIBRARIES: ${Python_LIBRARIES}")
|
|
|
+message("Python_INCLUDE_DIRS: ${Python_INCLUDE_DIRS}")
|
|
|
|
|
|
-# This comes to hand if we also need to use the NumPy C API
|
|
|
+# Ensure that numpy is installed and read its include dir
|
|
|
exec_program(${Python_EXECUTABLE}
|
|
|
ARGS "-c \"import numpy; print(numpy.get_include())\""
|
|
|
OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
|
|
@@ -75,5 +76,28 @@ if (NUMPY_NOT_FOUND)
|
|
|
message(FATAL_ERROR "NumPy headers not found")
|
|
|
endif ()
|
|
|
|
|
|
+# Ensure that pybind11 is installed and read its include dir
|
|
|
+exec_program(${Python_EXECUTABLE}
|
|
|
+ ARGS "-c \"import pybind11; print(pybind11.get_include())\""
|
|
|
+ OUTPUT_VARIABLE PYBIND11_INCLUDE_DIR
|
|
|
+ RETURN_VALUE PYBIND11_NOT_FOUND
|
|
|
+ )
|
|
|
+if (PYBIND11_NOT_FOUND)
|
|
|
+ message(FATAL_ERROR "PyBind11 headers not found")
|
|
|
+endif ()
|
|
|
+
|
|
|
#include_directories(src)
|
|
|
add_subdirectory(src)
|
|
|
+
|
|
|
+#
|
|
|
+# Copy all python scripts to the build directory.
|
|
|
+#
|
|
|
+set(Python_SCRIPTS scattnlay/__init__.py scattnlay/main.py)
|
|
|
+
|
|
|
+foreach (_script ${Python_SCRIPTS})
|
|
|
+ configure_file(
|
|
|
+ ${PROJECT_SOURCE_DIR}/${_script}
|
|
|
+ ${PROJECT_BINARY_DIR}/${_script}
|
|
|
+ COPYONLY
|
|
|
+ )
|
|
|
+endforeach ()
|