/
CMakeLists.txt
146 lines (103 loc) · 3.84 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
cmake_minimum_required(VERSION 3.4.3)
project(ug4_jupyter_kernel)
set(EXECUTABLE_NAME ug4_jupyter_kernel)
# Configuration
# =============
include(GNUInstallDirs)
# We generate the kernel.json file, given the installation prefix and the executable name
configure_file (
"${CMAKE_CURRENT_SOURCE_DIR}/share/jupyter/kernels/ug4_kernel/kernel.json.in"
"${CMAKE_CURRENT_SOURCE_DIR}/share/jupyter/kernels/ug4_kernel/kernel.json"
)
# Dependencies
# ============
# Be sure to use recent versions
# set(xeus_REQUIRED_VERSION 0.25)
# set(cppzmq_REQUIRED_VERSION 4.3.0)
find_package(xeus ${xeus_REQUIRED_VERSION} REQUIRED)
# find_package(cppzmq ${cppzmq_REQUIRED_VERSION} REQUIRED)
#set(xeus-zmq_REQUIRED_VERSION 1.0.0)
#find_package(xeus-zmq ${xeus-zmq_REQUIRED_VERSION} REQUIRED)
#set(xeus-lite_REQUIRED_VERSION 1.0.1)
#find_package(xeus-lite ${xeus-lite_REQUIRED_VERSION} REQUIRED)
# Flags
# =====
include(CheckCXXCompilerFlag)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
if (HAS_CPP14_FLAG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
else()
message(FATAL_ERROR "Unsupported compiler -- xeus requires C++14 support!")
endif()
endif()
# Identify UG4 installation
message(STATUS "UG4_ROOT: $ENV{UG4_ROOT}")
set (MY_UG4_ROOT $ENV{UG4_ROOT})
if(NOT DEFINED ENV{UG4_ROOT})
set(MY_UG4_ROOT "${CMAKE_CURRENT_SOURCE_DIR}../../../")
message(WARNING "Environment variable 'UG4_ROOT' has not been used. " )
else (NOT DEFINED ENV{UG4_ROOT})
message(WARNING "Environment variable 'UG4_ROOT' has been used. " )
endif(NOT DEFINED ENV{UG4_ROOT})
# Target and link
# ===============
# Kernel source files
set(MY_KERNEL_SRC
src/custom_interpreter.cpp
src/custom_interpreter.hpp
${MY_UG4_ROOT}/ugcore/ugbase/ug_shell/ugshell_main.cpp
${MY_UG4_ROOT}/ugcore/ugbase/ug_shell/shell.cpp
)
# Kernel executable
add_executable(${EXECUTABLE_NAME} src/main.cpp ${MY_KERNEL_SRC} )
find_library(ug4_LIBRARY NAMES ug4 HINTS ${MY_UG4_ROOT}/lib REQUIRED)
message(STATUS "ug4-xeus: Using ${ug4_LIBRARY}")
# Find xeus libraries
# find_package(xeus REQUIRED)
set(xeus-zmq_REQUIRED_VERSION 1.0.2)
find_package(xeus-zmq ${xeus-zmq_REQUIRED_VERSION} REQUIRED)
message(STATUS "ug4-xeus: Using ${xeus-zmq_LIBRARY}")
find_package(xtl REQUIRED)
message(STATUS "ug4-xeus: Using ${xtl_INCLUDE_DIRS} ${xtl_LIBRARY}")
find_library(zmq_LIBRARY NAMES zmq REQUIRED PATHS "${xtl_INCLUDE_DIRS}/../lib")
message(STATUS "ug4-xeus: Using ${zmq_INCLUDE_DIRS} ${zmq_LIBRARY}")
if(NOT DEFINED ${xeus_LIBRARY})
find_library(xeus_LIBRARY NAMES xeus REQUIRED PATHS "${xtl_INCLUDE_DIRS}/../lib")
message(STATUS "ug4-xeus: Using ${xeus_LIBRARY}")
endif()
# Expand include path
target_include_directories(${EXECUTABLE_NAME}
PUBLIC
${MY_UG4_ROOT}/ugcore/ugbase
${MY_UG4_ROOT}/externals/BoostForUG4
${xtl_INCLUDE_DIRS}
)
target_link_libraries(${EXECUTABLE_NAME}
PRIVATE ${ug4_LIBRARY}
${xeus-zmq_LIBRARY} xeus ${zmq_LIBRARY} )
if (APPLE)
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
MACOSX_RPATH ON
)
else()
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
BUILD_WITH_INSTALL_RPATH 1
SKIP_BUILD_RPATH FALSE
)
endif()
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
INSTALL_RPATH_USE_LINK_PATH TRUE
)
# Installation
# ============
# Install kernel
install(TARGETS ${EXECUTABLE_NAME}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
# Configuration and data directories for jupyter and my_kernel
set(XJUPYTER_DATA_DIR "share/jupyter" CACHE STRING "Jupyter data directory")
# Install Jupyter kernelspecs
set(UG4_KERNELSPEC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/share/jupyter/kernels)
install(DIRECTORY ${UG4_KERNELSPEC_DIR}
DESTINATION ${XJUPYTER_DATA_DIR}
PATTERN "*.in" EXCLUDE)