Skip to content

Commit c7b0e5a

Browse files
Initial merge with xeus-clang-repl
1 parent eb4d98a commit c7b0e5a

32 files changed

+680
-79
lines changed

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/**/*
2+
build

CMakeLists.txt

Lines changed: 74 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,50 @@ if (NOT DEFINED XEUS_CPP_KERNELSPEC_PATH)
3535
set(XEUS_CPP_KERNELSPEC_PATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/")
3636
endif ()
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
# =============
@@ -93,7 +133,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
93133
if(NOT XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
94134
add_compile_options(-Wunused-parameter -Wextra -Wreorder)
95135
endif()
96-
136+
97137

98138
CHECK_CXX_COMPILER_FLAG("-std=c++17" HAS_CPP_17_FLAG)
99139
if (HAS_CPP_17_FLAG)
@@ -108,12 +148,12 @@ if(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
108148
set(EMSCRIPTEN_FEATURES "${EMSCRIPTEN_FEATURES} -s \"EXTRA_EXPORTED_RUNTIME_METHODS=[ENV']\"")
109149
endif()
110150

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")
115153
find_package(argparse REQUIRED)
116154
find_package(pugixml REQUIRED)
155+
##set(Python_FIND_VIRTUALENV ONLY)
156+
##find_package(Python COMPONENTS Interpreter Development)
117157

118158
# Source files
119159
# ============
@@ -196,7 +236,6 @@ macro(xeus_cpp_set_kernel_options target_name)
196236
find_package(Threads)
197237
target_link_libraries(${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT})
198238
endif()
199-
200239
endmacro()
201240

202241
# Common macro for shared and static library
@@ -232,7 +271,8 @@ macro(xeus_cpp_create_target target_name linkage output_name)
232271
set(XEUS_CPP_XEUS_TARGET xeus-static)
233272
endif ()
234273

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)
236276
if (WIN32 OR CYGWIN)
237277
#
238278
elseif (APPLE)
@@ -242,7 +282,7 @@ macro(xeus_cpp_create_target target_name linkage output_name)
242282
find_package(Threads) # TODO: add Threads as a dependence of xeus-static?
243283
target_link_libraries(${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT})
244284
endif()
245-
285+
246286
endmacro()
247287

248288
# xeus-cpp-headers
@@ -289,6 +329,23 @@ if (XEUS_CPP_BUILD_EXECUTABLE)
289329
xeus_cpp_set_common_options(xcpp)
290330
xeus_cpp_set_kernel_options(xcpp)
291331
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+
292349
endif()
293350

294351
if(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
@@ -324,18 +381,18 @@ endif ()
324381
# Install xcpp
325382
if (XEUS_CPP_BUILD_EXECUTABLE)
326383
install(TARGETS xcpp
327-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
384+
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
385+
RUNTIME DESTINATION ${CMAKE_VENV_PATH}/bin)
328386

329387
# Configuration and data directories for jupyter and xeus-cpp
330388
set(XJUPYTER_DATA_DIR "share/jupyter" CACHE STRING "Jupyter data directory")
331-
332389
# 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)
334391
install(DIRECTORY ${KERNELSPEC_DIR}
335392
DESTINATION ${XJUPYTER_DATA_DIR}
393+
# DESTINATION ${CMAKE_INSTALL_PREFIX}/${XJUPYTER_DATA_DIR}
336394
PATTERN "*.in" EXCLUDE)
337395

338-
339396
# Extra path for installing Jupyter kernelspec
340397
if (XEXTRA_JUPYTER_DATA_DIR)
341398
install(DIRECTORY ${KERNELSPEC_DIR}
@@ -403,4 +460,4 @@ endif ()
403460

404461
if(XEUS_CPP_INCLUDE_DOCS)
405462
add_subdirectory(docs)
406-
endif()
463+
endif()

0 commit comments

Comments
 (0)