@@ -36,32 +36,66 @@ runs:
36
36
URL=https://github.com/intel/llvm/releases/download/${{ inputs.DPCPP_VERSION }}/sycl_linux.tar.gz;
37
37
else
38
38
echo "Will use latest DPCPP version"
39
- latest=$(curl -sS https://api.github.com/repos/intel/llvm/releases | jq -r '[.[].tag_name|select(match("nightly-[0-9]{4}-[0-9]{2}-[0-9]{2}"))][0]')
39
+ # Use grep and sed instead of jq to avoid additional dependencies
40
+ latest=$(curl -sS https://api.github.com/repos/intel/llvm/releases | \
41
+ grep '"tag_name":' | \
42
+ grep 'nightly-[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' | \
43
+ head -1 | \
44
+ sed 's/.*"tag_name": *"\([^"]*\)".*/\1/')
40
45
URL=https://github.com/intel/llvm/releases/download/${latest}/sycl_linux.tar.gz;
41
46
fi
42
47
echo "Downloading DPCPP from ${URL}"
43
48
sudo wget -q $URL
44
49
sudo tar -xf sycl_linux.tar.gz
45
50
sudo rm sycl_linux.tar.gz
46
51
popd
52
+
53
+ # Detect system C++ compiler and standard library automatically
54
+ echo "=== Detecting system C++ environment ==="
55
+ SYSTEM_GCC_VERSION=$(gcc --version | head -1 | grep -o '[0-9]\+\.[0-9]\+' | head -1 | cut -d. -f1)
56
+ SYSTEM_CXX_INCLUDE_DIR="/usr/include/c++/${SYSTEM_GCC_VERSION}"
57
+ SYSTEM_CXX_ARCH_INCLUDE_DIR="/usr/include/x86_64-linux-gnu/c++/${SYSTEM_GCC_VERSION}"
58
+ SYSTEM_GCC_LIB_DIR="/usr/lib/gcc/x86_64-linux-gnu/${SYSTEM_GCC_VERSION}"
59
+
60
+ echo "Detected GCC version: ${SYSTEM_GCC_VERSION}"
61
+ echo "C++ include directory: ${SYSTEM_CXX_INCLUDE_DIR}"
62
+ echo "C++ arch include directory: ${SYSTEM_CXX_ARCH_INCLUDE_DIR}"
63
+ echo "GCC library directory: ${SYSTEM_GCC_LIB_DIR}"
64
+
65
+ # Verify directories exist, fallback to available versions if needed
66
+ if [[ ! -d "$SYSTEM_CXX_INCLUDE_DIR" ]]; then
67
+ echo "Primary C++ include dir not found, searching for alternatives..."
68
+ SYSTEM_CXX_INCLUDE_DIR=$(find /usr/include/c++/ -maxdepth 1 -type d -name '[0-9]*' | sort -V | tail -1)
69
+ if [[ -n "$SYSTEM_CXX_INCLUDE_DIR" ]]; then
70
+ DETECTED_VERSION=$(basename "$SYSTEM_CXX_INCLUDE_DIR")
71
+ SYSTEM_CXX_ARCH_INCLUDE_DIR="/usr/include/x86_64-linux-gnu/c++/${DETECTED_VERSION}"
72
+ SYSTEM_GCC_LIB_DIR="/usr/lib/gcc/x86_64-linux-gnu/${DETECTED_VERSION}"
73
+ echo "Using fallback C++ version: ${DETECTED_VERSION}"
74
+ fi
75
+ fi
76
+
47
77
cat <<EOF | tee setvars.sh
48
- export PATH=$DPCPP_PATH/bin:$PATH
49
- export C_INCLUDE_PATH=$DPCPP_PATH/include:$C_INCLUDE_PATH
50
- export CPLUS_INCLUDE_PATH=$DPCPP_PATH/include:$CPLUS_INCLUDE_PATH
51
- export LD_LIBRARY_PATH=$DPCPP_PATH/lib:$LD_LIBRARY_PATH
78
+ export PATH=$DPCPP_PATH/bin:/bin:/usr/bin:/usr/local/bin:\$PATH
79
+ export C_INCLUDE_PATH=$DPCPP_PATH/include:${SYSTEM_CXX_INCLUDE_DIR}:${SYSTEM_CXX_ARCH_INCLUDE_DIR}:/usr/include/x86_64-linux-gnu:/usr/include:\$C_INCLUDE_PATH
80
+ export CPLUS_INCLUDE_PATH=$DPCPP_PATH/include:${SYSTEM_CXX_INCLUDE_DIR}:${SYSTEM_CXX_ARCH_INCLUDE_DIR}:/usr/include/x86_64-linux-gnu:/usr/include:\$CPLUS_INCLUDE_PATH
81
+ export LD_LIBRARY_PATH=$DPCPP_PATH/lib:/usr/lib/x86_64-linux-gnu:${SYSTEM_GCC_LIB_DIR}:/usr/lib:\$LD_LIBRARY_PATH
82
+ export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:${SYSTEM_GCC_LIB_DIR}:/usr/lib:\$LIBRARY_PATH
52
83
export CC=$DPCPP_PATH/bin/clang
53
84
export CXX=$DPCPP_PATH/bin/clang++
85
+ # Configure DPC++ to use system C++ standard library with proper linking
86
+ export CXXFLAGS="-stdlib=libstdc++ -I${SYSTEM_CXX_INCLUDE_DIR} -I${SYSTEM_CXX_ARCH_INCLUDE_DIR} \$CXXFLAGS"
87
+ export LDFLAGS="-L/usr/lib/x86_64-linux-gnu -L${SYSTEM_GCC_LIB_DIR} -L/usr/lib \$LDFLAGS"
54
88
EOF
55
89
- name : Install DPCPP
56
90
if : inputs.DPCPP_RELEASE == 'RELEASE'
57
91
shell : bash
58
92
run : |
59
93
shopt -s expand_aliases
60
94
which sudo || alias sudo=""
61
- wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
62
- sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
63
- rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
64
- echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
95
+ wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | \
96
+ gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
97
+ echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | \
98
+ sudo tee /etc/apt/sources.list.d/oneAPI.list
65
99
sudo apt update
66
100
sudo apt install -y intel-oneapi-runtime-libs intel-oneapi-compiler-dpcpp-cpp
67
101
. /opt/intel/oneapi/setvars.sh
0 commit comments