Skip to content

Commit 4dc43f7

Browse files
Initial merge with xeus-clang-repl
1 parent aba3401 commit 4dc43f7

32 files changed

+686
-63
lines changed

.dockerignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/**/*
2+
build

CMakeLists.txt

+73-13
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
# =============
@@ -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']\"")
106146
endif()
107147

108-
find_package(Clang REQUIRED)
148+
#find_package(Clang REQUIRED)
149+
find_package(CppInterOp REQUIRED CONFIG PATHS "${CPPINTEROP_DIR}" "${CPPINTEROP_DIR}/lib")
109150
find_package(argparse REQUIRED)
110151
find_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-
194236
endmacro()
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+
240283
endmacro()
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+
286346
endif()
287347

288348
if(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
@@ -318,18 +378,18 @@ endif ()
318378
# Install xcpp
319379
if (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

Comments
 (0)