diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index b5a32932..d630397f 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -95,6 +95,9 @@ jobs:
run: |
mkdir -p build
cd build
+ export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
+ echo $LD_LIBRARY_PATH
+ find "$CONDA_PREFIX/include"
cmake .. \
-DCMAKE_PREFIX_PATH=$CONDA_PREFIX \
-DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50d05828..08299132 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -123,7 +123,7 @@ endif()
find_package(argparse REQUIRED)
find_package(pugixml REQUIRED)
-
+find_package(OpenMP)
# Configuration
# =============
@@ -135,8 +135,15 @@ function(configure_kernel kernel)
set(XEUS_CPP_PATH "$ENV{PATH}")
set(XEUS_CPP_LD_LIBRARY_PATH "$ENV{LD_LIBRARY_PATH}")
set(XEUS_CPP_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/clang/${CPPINTEROP_LLVM_VERSION_MAJOR})
- set(XEUS_CPP_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include)
+ set(XEUS_CPP_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include/)
+
+ if(${kernel} MATCHES "omp/$")
+ set(XEUS_CPP_OMP "${OpenMP_CXX_FLAGS}")
+ endif()
+ message(Configure_Kernel "${kernel}")
+ message(CPP_OMP_FLAG "${XEUS_CPP_OMP}")
+ message(CPP_INCLUDE_DIR "${XEUS_CPP_INCLUDE_DIR}")
if (WIN32)
string(REPLACE "\\" "/" kernel "${kernel}")
string(REPLACE "\\" "/" XEUS_CPP_PATH "${XEUS_CPP_PATH}")
@@ -167,7 +174,9 @@ message("Configure kernels: ...")
configure_kernel("/share/jupyter/kernels/xcpp11/")
configure_kernel("/share/jupyter/kernels/xcpp14/")
configure_kernel("/share/jupyter/kernels/xcpp17/")
+configure_kernel("/share/jupyter/kernels/xcpp17-omp/")
configure_kernel("/share/jupyter/kernels/xcpp20/")
+configure_kernel("/share/jupyter/kernels/xcpp20-omp/")
# Source files
# ============
diff --git a/environment-dev.yml b/environment-dev.yml
index 28348596..eccb9153 100644
--- a/environment-dev.yml
+++ b/environment-dev.yml
@@ -20,4 +20,5 @@ dependencies:
- jupyter_kernel_test>=0.4.3
- nbval
- pytest-rerunfailures
- - doctest
\ No newline at end of file
+ - doctest
+ - llvm-openmp
diff --git a/share/jupyter/kernels/xcpp11/kernel.json.in b/share/jupyter/kernels/xcpp11/kernel.json.in
index 1f4f73a6..05ac80b5 100644
--- a/share/jupyter/kernels/xcpp11/kernel.json.in
+++ b/share/jupyter/kernels/xcpp11/kernel.json.in
@@ -10,7 +10,7 @@
"{connection_file}",
"-resource-dir", "@XEUS_CPP_RESOURCE_DIR@",
"-I", "@XEUS_CPP_INCLUDE_DIR@",
- "-std=c++11"@XEUS_CPP_OMP@
+ "-std=c++11","@XEUS_CPP_OMP@"
],
"language": "cpp",
"metadata": {"debugger": false}
diff --git a/share/jupyter/kernels/xcpp14/kernel.json.in b/share/jupyter/kernels/xcpp14/kernel.json.in
index b6718dcf..35d7ce2a 100644
--- a/share/jupyter/kernels/xcpp14/kernel.json.in
+++ b/share/jupyter/kernels/xcpp14/kernel.json.in
@@ -13,7 +13,7 @@
"-std=c++14",
"-fno-exceptions",
"-O2",
- "-v"@XEUS_CPP_OMP@
+ "-v","@XEUS_CPP_OMP@"
],
"language": "cpp",
"metadata": {"debugger": false}
diff --git a/share/jupyter/kernels/xcpp17-omp/kernel.json.in b/share/jupyter/kernels/xcpp17-omp/kernel.json.in
index f74379f1..c3215c94 100644
--- a/share/jupyter/kernels/xcpp17-omp/kernel.json.in
+++ b/share/jupyter/kernels/xcpp17-omp/kernel.json.in
@@ -10,7 +10,7 @@
"{connection_file}",
"-resource-dir", "@XEUS_CPP_RESOURCE_DIR@",
"-I", "@XEUS_CPP_INCLUDE_DIR@",
- "-std=c++17"@XEUS_CPP_OMP@
+ "-std=c++17","@XEUS_CPP_OMP@"
],
"language": "cpp",
"metadata": {"debugger": false
diff --git a/share/jupyter/kernels/xcpp17/kernel.json.in b/share/jupyter/kernels/xcpp17/kernel.json.in
index ea76e2d9..efda6c85 100644
--- a/share/jupyter/kernels/xcpp17/kernel.json.in
+++ b/share/jupyter/kernels/xcpp17/kernel.json.in
@@ -10,7 +10,7 @@
"{connection_file}",
"-resource-dir", "@XEUS_CPP_RESOURCE_DIR@",
"-I", "@XEUS_CPP_INCLUDE_DIR@",
- "-std=c++17"@XEUS_CPP_OMP@
+ "-std=c++17","@XEUS_CPP_OMP@"
],
"language": "cpp",
"metadata": {"debugger": false
diff --git a/share/jupyter/kernels/xcpp20-omp/kernel.json.in b/share/jupyter/kernels/xcpp20-omp/kernel.json.in
new file mode 100644
index 00000000..604f2231
--- /dev/null
+++ b/share/jupyter/kernels/xcpp20-omp/kernel.json.in
@@ -0,0 +1,19 @@
+{
+ "display_name": "C++20 (xcpp+OpenMP)",
+ "env": {
+ "PATH":"@XEUS_CPP_PATH@",
+ "LD_LIBRARY_PATH":"@XEUS_CPP_LD_LIBRARY_PATH@",
+ "CPLUS_INCLUDE_PATH":"@CMAKE_CPLUS_INCLUDE_PATH@"
+ },
+ "argv": [
+ "@XEUS_CPP_KERNELSPEC_PATH@xcpp",
+ "-f",
+ "{connection_file}",
+ "-resource-dir", "@XEUS_CPP_RESOURCE_DIR@",
+ "-I", "@XEUS_CPP_INCLUDE_DIR@",
+ "-std=c++20","@XEUS_CPP_OMP@"
+ ],
+ "language": "cpp",
+ "metadata": {"debugger": false
+ }
+}
diff --git a/share/jupyter/kernels/xcpp20-omp/logo-32x32.png b/share/jupyter/kernels/xcpp20-omp/logo-32x32.png
new file mode 100644
index 00000000..c09c4585
Binary files /dev/null and b/share/jupyter/kernels/xcpp20-omp/logo-32x32.png differ
diff --git a/share/jupyter/kernels/xcpp20-omp/logo-64x64.png b/share/jupyter/kernels/xcpp20-omp/logo-64x64.png
new file mode 100644
index 00000000..396c2446
Binary files /dev/null and b/share/jupyter/kernels/xcpp20-omp/logo-64x64.png differ
diff --git a/share/jupyter/kernels/xcpp20-omp/logo-svg.svg b/share/jupyter/kernels/xcpp20-omp/logo-svg.svg
new file mode 100644
index 00000000..5e117077
--- /dev/null
+++ b/share/jupyter/kernels/xcpp20-omp/logo-svg.svg
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/share/jupyter/kernels/xcpp20/kernel.json.in b/share/jupyter/kernels/xcpp20/kernel.json.in
index 3736754f..509e0326 100644
--- a/share/jupyter/kernels/xcpp20/kernel.json.in
+++ b/share/jupyter/kernels/xcpp20/kernel.json.in
@@ -10,7 +10,7 @@
"{connection_file}",
"-resource-dir", "@XEUS_CPP_RESOURCE_DIR@",
"-I", "@XEUS_CPP_INCLUDE_DIR@",
- "-std=c++20"@XEUS_CPP_OMP@
+ "-std=c++20","@XEUS_CPP_OMP@"
],
"language": "cpp",
"metadata": {"debugger": false
diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py
index f6c470a9..814a7d41 100644
--- a/test/test_xcpp_kernel.py
+++ b/test/test_xcpp_kernel.py
@@ -70,7 +70,7 @@ def test_continuation(self) -> None:
if platform.system() != 'Windows':
class XCppTests(jupyter_kernel_test.KernelTests):
- kernel_name = 'xcpp20'
+ kernel_name = 'xcpp20-omp'
# language_info.name in a kernel_info_reply should match this
language_name = 'C++'
@@ -131,6 +131,17 @@ class XCppTests(jupyter_kernel_test.KernelTests):
'mime': 'image/png'
}
]
+ code_omp="""
+ #include
+ #include
+ #include
+ """
+ def test_xcpp_omp(self):
+ self.flush_channels()
+ reply, output_msgs = self.execute_helper(code=self.code_omp,timeout=20)
+ self.assertEqual(output_msgs[0]['msg_type'], 'stream')
+ self.assertEqual(output_msgs[0]['content']['name'], 'stderr')
+ self.assertEqual(output_msgs[0]['content']['text'], '2')
class XCppTests2(jupyter_kernel_test.KernelTests):
@@ -145,4 +156,4 @@ class XCppTests2(jupyter_kernel_test.KernelTests):
if __name__ == '__main__':
- unittest.main()
\ No newline at end of file
+ unittest.main()