@@ -35,10 +35,50 @@ if (NOT DEFINED XEUS_CPP_KERNELSPEC_PATH)
3535 set (XEUS_CPP_KERNELSPEC_PATH "${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_BINDIR} /" )
3636endif ()
3737
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 ()
4282
4383# Build options
4484# =============
@@ -90,7 +130,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
90130 if (NOT XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
91131 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder" )
92132 endif ()
93-
133+
94134
95135 CHECK_CXX_COMPILER_FLAG("-std=c++17" HAS_CPP_17_FLAG)
96136 if (HAS_CPP_17_FLAG)
@@ -105,9 +145,12 @@ if(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
105145 set (EMSCRIPTEN_FEATURES "${EMSCRIPTEN_FEATURES} -s \" EXTRA_EXPORTED_RUNTIME_METHODS=[ENV']\" " )
106146endif ()
107147
108- find_package (Clang REQUIRED)
148+ #find_package(Clang REQUIRED)
149+ find_package (CppInterOp REQUIRED CONFIG PATHS "${CPPINTEROP_DIR} " "${CPPINTEROP_DIR} /lib" )
109150find_package (argparse REQUIRED)
110151find_package (pugixml REQUIRED)
152+ ##set(Python_FIND_VIRTUALENV ONLY)
153+ ##find_package(Python COMPONENTS Interpreter Development)
111154
112155# Source files
113156# ============
@@ -190,7 +233,6 @@ macro(xeus_cpp_set_kernel_options target_name)
190233 find_package (Threads)
191234 target_link_libraries (${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT} )
192235 endif ()
193-
194236endmacro ()
195237
196238# Common macro for shared and static library
@@ -226,7 +268,8 @@ macro(xeus_cpp_create_target target_name linkage output_name)
226268 set (XEUS_CPP_XEUS_TARGET xeus-static )
227269 endif ()
228270
229- target_link_libraries (${target_name} PUBLIC ${XEUS_CPP_XEUS_TARGET} clangInterpreter pugixml argparse::argparse xtl)
271+ ## target_link_libraries(${target_name} PUBLIC ${XEUS_CPP_XEUS_TARGET} clangInterpreter pugixml argparse::argparse xtl)
272+ target_link_libraries (${target_name} PUBLIC ${XEUS_CPP_XEUS_TARGET} clangCppInterOp pugixml argparse::argparse xtl)
230273 if (WIN32 OR CYGWIN )
231274 #
232275 elseif (APPLE )
@@ -236,7 +279,7 @@ macro(xeus_cpp_create_target target_name linkage output_name)
236279 find_package (Threads) # TODO: add Threads as a dependence of xeus-static?
237280 target_link_libraries (${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT} )
238281 endif ()
239-
282+
240283endmacro ()
241284
242285# xeus-cpp-headers
@@ -283,6 +326,23 @@ if (XEUS_CPP_BUILD_EXECUTABLE)
283326 xeus_cpp_set_common_options(xcpp)
284327 xeus_cpp_set_kernel_options(xcpp)
285328 target_link_libraries (xcpp PRIVATE xeus-zmq)
329+
330+ ##set_target_properties(xcpp PROPERTIES
331+ ## ENABLE_EXPORTS 1
332+ ## CXX_STANDARD ${CMAKE_CXX_STANDARD}
333+ ##)
334+ ##target_link_libraries(xcpp PUBLIC xeus-cpp pthread Python::Python)
335+ ##
336+ ###TODO: We may be need sse RPATH
337+ ###set_target_properties(xcpp clangCppInterOp PROPERTIES
338+ ### INSTALL_RPATH_USE_LINK_PATH TRUE
339+ ###)
340+ ##if(APPLE)
341+ ## target_link_libraries(xcpp PUBLIC -Wl,-w -Wl,-bind_at_load -Wl,-undefined,dynamic_lookup)
342+ ##elseif(NOT MSVC)
343+ ## target_link_libraries(xcpp PUBLIC -Wl,--unresolved-symbols=ignore-in-object-files)
344+ ##endif()
345+
286346endif ()
287347
288348if (XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
@@ -318,18 +378,18 @@ endif ()
318378# Install xcpp
319379if (XEUS_CPP_BUILD_EXECUTABLE)
320380 install (TARGETS xcpp
321- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
381+ # RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
382+ RUNTIME DESTINATION ${CMAKE_VENV_PATH} /bin)
322383
323384 # Configuration and data directories for jupyter and xeus-cpp
324385 set (XJUPYTER_DATA_DIR "share/jupyter" CACHE STRING "Jupyter data directory" )
325-
326386 # Install xcpp Jupyter kernelspec
327- set (KERNELSPEC_DIR ${CMAKE_CURRENT_SOURCE_DIR } /share/jupyter/kernels)
387+ set (KERNELSPEC_DIR ${CMAKE_CURRENT_BINARY_DIR } /share/jupyter/kernels)
328388 install (DIRECTORY ${KERNELSPEC_DIR}
329389 DESTINATION ${XJUPYTER_DATA_DIR}
390+ # DESTINATION ${CMAKE_INSTALL_PREFIX}/${XJUPYTER_DATA_DIR}
330391 PATTERN "*.in" EXCLUDE )
331392
332-
333393 # Extra path for installing Jupyter kernelspec
334394 if (XEXTRA_JUPYTER_DATA_DIR)
335395 install (DIRECTORY ${KERNELSPEC_DIR}
0 commit comments