@@ -213,6 +213,9 @@ set(XEUS_CPP_SRC
213213 src/xoptions.cpp
214214 src/xparser.cpp
215215 src/xutils.cpp
216+
217+ # magics
218+ src/xmagics/pythonexec.cpp
216219)
217220
218221if (NOT EMSCRIPTEN)
@@ -377,6 +380,31 @@ macro(xeus_cpp_create_target target_name linkage output_name)
377380 target_link_libraries (${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT} )
378381 endif ()
379382
383+ # Python Stuff
384+ if (NOT EMSCRIPTEN)
385+ find_package (Python COMPONENTS Interpreter Development)
386+
387+ target_include_directories (${target_name} PRIVATE ${Python_INCLUDE_DIRS} )
388+ target_link_libraries (${target_name} PUBLIC ${Python_LIBRARIES} )
389+ target_compile_options (${target_name} PRIVATE ${Python_CFLAGS_OTHER} )
390+ else ()
391+ set (Python_INCLUDE_DIRS
392+ "${CMAKE_PREFIX_PATH} /include/python3.11" )
393+ set (Python_LIBRARIES
394+ "python3.11"
395+ "m"
396+ "bz2"
397+ "libz.a"
398+ "sqlite3"
399+ "ffi"
400+ )
401+ set (Python_CFLAGS_OTHER "-sUSE_ZLIB=1" "-sUSE_BZIP2=1" )
402+
403+ target_include_directories (${target_name} PRIVATE ${Python_INCLUDE_DIRS} )
404+ target_link_libraries (${target_name} PUBLIC ${Python_LIBRARIES} )
405+ target_compile_options (${target_name} PRIVATE ${Python_CFLAGS_OTHER} )
406+ endif ()
407+
380408endmacro ()
381409
382410# xeus-cpp-headers
@@ -437,18 +465,28 @@ endif()
437465if (EMSCRIPTEN)
438466 include (WasmBuildOptions)
439467 find_package (xeus-lite REQUIRED)
468+ link_directories (BEFORE "${CMAKE_INSTALL_PREFIX} /lib" )
440469 add_executable (xcpp src/main_emscripten_kernel.cpp )
441470 target_link_libraries (xcpp PRIVATE xeus-lite)
442471 xeus_cpp_set_kernel_options(xcpp)
443472 xeus_wasm_compile_options(xcpp)
444473 xeus_wasm_link_options(xcpp "web,worker" )
445474 # TODO: Remove the exported runtime methods
446475 # after the next xeus release.
476+ # , \"ffi_call\", \"ffi_closure_alloc\", \"ffi_prep_cif\", \"ffi_prep_cif_var\", \"ffi_prep_closure_loc\", \"ffi_type_double\", \"ffi_type_float\", \"ffi_type_longdouble\", \"ffi_type_pointer\", \"ffi_type_sint16\", \"ffi_type_sint32\", \"ffi_type_sint64\", \"ffi_type_sint8\", \"ffi_type_uint16\", \"ffi_type_uint32\", \"ffi_type_uint64\", \"ffi_type_uint8\", \"ffi_type_void\"
447477 target_link_options (xcpp
448478 PUBLIC "SHELL: -s EXPORTED_RUNTIME_METHODS='[\" FS\" ,\" PATH\" ,\" LDSO\" ,\" loadDynamicLibrary\" ,\" ERRNO_CODES\" ]'"
449479 PUBLIC "SHELL: --preload-file ${SYSROOT_PATH} /include@/include"
480+ PUBLIC "SHELL: --preload-file ${CPyCppyy_DIR} /include/CPyCppyy@/include/CPyCppyy"
481+ PUBLIC "SHELL: --preload-file ${CPyCppyy_BUILD_DIR} /libcppyy.so@/lib/python3.11/site-packages/libcppyy.so"
482+ PUBLIC "SHELL: --preload-file ${Cppyy_Backend_DIR} /python/cppyy_backend@/lib/python3.11/site-packages/cppyy_backend"
483+ PUBLIC "SHELL: --preload-file ${Cppyy_DIR} /python/cppyy@/lib/python3.11/site-packages/cppyy"
484+ PUBLIC "SHELL: --preload-file ${Cppyy_DIR} /python/cppyy_compat@/lib/python3.11/site-packages/cppyy_compat"
485+ PUBLIC "SHELL: --preload-file ${CMAKE_PREFIX_PATH} /lib/python3.11@/lib/python3.11"
486+ PUBLIC "SHELL: --preload-file ${CMAKE_PREFIX_PATH} /include/clang@/include/clang"
487+ PUBLIC "SHELL: --preload-file ${CMAKE_PREFIX_PATH} /include/clang-c@/include/clang-c"
450488 PUBLIC "SHELL: --post-js ${CMAKE_CURRENT_SOURCE_DIR} /wasm_patches/post.js"
451- )
489+ )
452490 # TODO: Emscripten supports preloading files just once before it generates
453491 # the xcpp.data file (containing the binary representation of the file(s) we
454492 # want to include in our application).
0 commit comments