@@ -35,10 +35,50 @@ if (NOT DEFINED XEUS_CPP_KERNELSPEC_PATH)
35
35
set (XEUS_CPP_KERNELSPEC_PATH "${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_BINDIR} /" )
36
36
endif ()
37
37
38
- configure_file (
39
- "${CMAKE_CURRENT_SOURCE_DIR} /share/jupyter/kernels/xcpp/kernel.json.in"
40
- "${CMAKE_CURRENT_SOURCE_DIR} /share/jupyter/kernels/xcpp/kernel.json"
41
- )
38
+ set (CMAKE_CPLUS_INCLUDE_PATH "$ENV{CPLUS_INCLUDE_PATH} " )
39
+ set (CMAKE_PATH "$ENV{PATH} " )
40
+ set (CMAKE_LD_LIBRARY_PATH "$ENV{LD_LIBRARY_PATH} " )
41
+ set (CMAKE_PYTHONPATH "$ENV{PYTHONPATH} " )
42
+ set (CMAKE_VENV_PATH "$ENV{VENV} " )
43
+
44
+ message (STATUS "Debug: Replace in kernels" )
45
+ message (STATUS "Debug: CMAKE_CPLUS_INCLUDE_PATH=${CMAKE_CPLUS_INCLUDE_PATH} " )
46
+ message (STATUS "Debug: CMAKE_PATH=${CMAKE_PATH} " )
47
+ message (STATUS "Debug: CMAKE_LD_LIBRARY_PATH=${CMAKE_LD_LIBRARY_PATH} " )
48
+ message (STATUS "Debug: CMAKE_PYTHONPATH=${CMAKE_PYTHONPATH} " )
49
+ message (STATUS "Debug: CMAKE_VENV_PATH=${CMAKE_VENV_PATH} " )
50
+ message (STATUS "Debug: CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} " )
51
+ message (STATUS "Debug: CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} " )
52
+
53
+
54
+ function (configure_kernel kernel )
55
+ configure_file (
56
+ "${CMAKE_CURRENT_SOURCE_DIR} /${kernel} /kernel.json.in"
57
+ "${CMAKE_CURRENT_BINARY_DIR} /${kernel} /kernel.json"
58
+ )
59
+ file (GLOB files "${CMAKE_CURRENT_SOURCE_DIR} /${kernel} /*.png" )
60
+ foreach (file ${files} )
61
+ configure_file (
62
+ "${file} "
63
+ "${CMAKE_CURRENT_BINARY_DIR} /${kernel} /"
64
+ COPYONLY
65
+ )
66
+ endforeach ()
67
+ file (GLOB files "${CMAKE_CURRENT_SOURCE_DIR} /${kernel} /*.svg" )
68
+ foreach (file ${files} )
69
+ configure_file (
70
+ "${file} "
71
+ "${CMAKE_CURRENT_BINARY_DIR} /${kernel} /"
72
+ COPYONLY
73
+ )
74
+ endforeach ()
75
+ endfunction ()
76
+
77
+ file (GLOB _kernels LIST_DIRECTORIES true RELATIVE "${CMAKE_CURRENT_SOURCE_DIR} " "share/jupyter/kernels/*" )
78
+ foreach (_kernel IN LISTS _kernels )
79
+ message ("Configure kernel: ${_kernel} " )
80
+ configure_kernel ("${_kernel} " )
81
+ endforeach ()
42
82
43
83
# Build options
44
84
# =============
@@ -93,7 +133,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
93
133
if (NOT XEUS_CPP_EMSCRIPTEN_WASM_BUILD )
94
134
add_compile_options (-Wunused-parameter -Wextra -Wreorder )
95
135
endif ()
96
-
136
+
97
137
98
138
CHECK_CXX_COMPILER_FLAG ("-std=c++17" HAS_CPP_17_FLAG )
99
139
if (HAS_CPP_17_FLAG )
@@ -108,12 +148,12 @@ if(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
108
148
set (EMSCRIPTEN_FEATURES "${EMSCRIPTEN_FEATURES} -s \" EXTRA_EXPORTED_RUNTIME_METHODS=[ENV']\" " )
109
149
endif ()
110
150
111
- find_package (Clang REQUIRED )
112
- include (AddLLVM )
113
- include (HandleLLVMOptions )
114
- add_definitions (${LLVM_DEFINITIONS} )
151
+ #find_package(Clang REQUIRED)
152
+ find_package (CppInterOp REQUIRED CONFIG PATHS "${CPPINTEROP_DIR} " "${CPPINTEROP_DIR} /lib" )
115
153
find_package (argparse REQUIRED )
116
154
find_package (pugixml REQUIRED )
155
+ ##set(Python_FIND_VIRTUALENV ONLY)
156
+ ##find_package(Python COMPONENTS Interpreter Development)
117
157
118
158
# Source files
119
159
# ============
@@ -196,7 +236,6 @@ macro(xeus_cpp_set_kernel_options target_name)
196
236
find_package (Threads )
197
237
target_link_libraries (${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT} )
198
238
endif ()
199
-
200
239
endmacro ()
201
240
202
241
# Common macro for shared and static library
@@ -232,7 +271,8 @@ macro(xeus_cpp_create_target target_name linkage output_name)
232
271
set (XEUS_CPP_XEUS_TARGET xeus-static )
233
272
endif ()
234
273
235
- target_link_libraries (${target_name} PUBLIC ${XEUS_CPP_XEUS_TARGET} clangInterpreter pugixml argparse::argparse xtl )
274
+ ## target_link_libraries(${target_name} PUBLIC ${XEUS_CPP_XEUS_TARGET} clangInterpreter pugixml argparse::argparse xtl)
275
+ target_link_libraries (${target_name} PUBLIC ${XEUS_CPP_XEUS_TARGET} clangCppInterOp pugixml argparse::argparse xtl )
236
276
if (WIN32 OR CYGWIN )
237
277
#
238
278
elseif (APPLE )
@@ -242,7 +282,7 @@ macro(xeus_cpp_create_target target_name linkage output_name)
242
282
find_package (Threads ) # TODO: add Threads as a dependence of xeus-static?
243
283
target_link_libraries (${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT} )
244
284
endif ()
245
-
285
+
246
286
endmacro ()
247
287
248
288
# xeus-cpp-headers
@@ -289,6 +329,23 @@ if (XEUS_CPP_BUILD_EXECUTABLE)
289
329
xeus_cpp_set_common_options (xcpp )
290
330
xeus_cpp_set_kernel_options (xcpp )
291
331
target_link_libraries (xcpp PRIVATE xeus-zmq )
332
+
333
+ ##set_target_properties(xcpp PROPERTIES
334
+ ## ENABLE_EXPORTS 1
335
+ ## CXX_STANDARD ${CMAKE_CXX_STANDARD}
336
+ ##)
337
+ ##target_link_libraries(xcpp PUBLIC xeus-cpp pthread Python::Python)
338
+ ##
339
+ ###TODO: We may be need sse RPATH
340
+ ###set_target_properties(xcpp clangCppInterOp PROPERTIES
341
+ ### INSTALL_RPATH_USE_LINK_PATH TRUE
342
+ ###)
343
+ ##if(APPLE)
344
+ ## target_link_libraries(xcpp PUBLIC -Wl,-w -Wl,-bind_at_load -Wl,-undefined,dynamic_lookup)
345
+ ##elseif(NOT MSVC)
346
+ ## target_link_libraries(xcpp PUBLIC -Wl,--unresolved-symbols=ignore-in-object-files)
347
+ ##endif()
348
+
292
349
endif ()
293
350
294
351
if (XEUS_CPP_EMSCRIPTEN_WASM_BUILD )
@@ -324,18 +381,18 @@ endif ()
324
381
# Install xcpp
325
382
if (XEUS_CPP_BUILD_EXECUTABLE )
326
383
install (TARGETS xcpp
327
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
384
+ # RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
385
+ RUNTIME DESTINATION ${CMAKE_VENV_PATH} /bin )
328
386
329
387
# Configuration and data directories for jupyter and xeus-cpp
330
388
set (XJUPYTER_DATA_DIR "share/jupyter" CACHE STRING "Jupyter data directory" )
331
-
332
389
# Install xcpp Jupyter kernelspec
333
- set (KERNELSPEC_DIR ${CMAKE_CURRENT_SOURCE_DIR } /share/jupyter/kernels )
390
+ set (KERNELSPEC_DIR ${CMAKE_CURRENT_BINARY_DIR } /share/jupyter/kernels )
334
391
install (DIRECTORY ${KERNELSPEC_DIR}
335
392
DESTINATION ${XJUPYTER_DATA_DIR}
393
+ # DESTINATION ${CMAKE_INSTALL_PREFIX}/${XJUPYTER_DATA_DIR}
336
394
PATTERN "*.in" EXCLUDE )
337
395
338
-
339
396
# Extra path for installing Jupyter kernelspec
340
397
if (XEXTRA_JUPYTER_DATA_DIR )
341
398
install (DIRECTORY ${KERNELSPEC_DIR}
@@ -403,4 +460,4 @@ endif ()
403
460
404
461
if (XEUS_CPP_INCLUDE_DOCS )
405
462
add_subdirectory (docs )
406
- endif ()
463
+ endif ()
0 commit comments