@@ -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