Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intel oneAPI DPC++/C++ Compiler support #229

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
19 changes: 19 additions & 0 deletions .conan/profiles/compiler/intel
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[settings]
compiler=intel-cc
compiler.mode=icx

{% set os = detect_api.detect_os() %}
{% if os == "Linux" %}
[conf]
tools.intel:installation_path=/opt/intel/oneapi/
[buildenv]
CC=icx
CXX=icpx
{% endif %}
{% if os == "Windows" %}
[conf]
tools.intel:installation_path=C:\Program Files (x86)\Intel\oneAPI
[buildenv]
CC=icx
CXX=icx
{% endif %}
4 changes: 4 additions & 0 deletions .conan/profiles/intel/2023.2/compiler
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
include(../../compiler/intel)

[settings]
compiler.version=2023.2
7 changes: 7 additions & 0 deletions .conan/profiles/intel/2023.2/x64-libstdc++-debug
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
include(../../default)
include(../../arch/x64)
include(../../cpp/23)
include(../../config/debug)
include(../../os/current)
include(../../packages/settings)
include(compiler)
7 changes: 7 additions & 0 deletions .conan/profiles/intel/2023.2/x64-libstdc++-msr
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
include(../../default)
include(../../arch/x64)
include(../../cpp/23)
include(../../config/min-size-rel)
include(../../os/current)
include(../../packages/settings)
include(compiler)
7 changes: 7 additions & 0 deletions .conan/profiles/intel/2023.2/x64-libstdc++-release
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
include(../../default)
include(../../arch/x64)
include(../../cpp/23)
include(../../config/release)
include(../../os/current)
include(../../packages/settings)
include(compiler)
7 changes: 7 additions & 0 deletions .conan/profiles/intel/2023.2/x64-libstdc++-rwdi
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
include(../../default)
include(../../arch/x64)
include(../../cpp/23)
include(../../config/rel-with-deb-info)
include(../../os/current)
include(../../packages/settings)
include(compiler)
2 changes: 1 addition & 1 deletion .conan/profiles/packages/settings
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% set os = detect_api.detect_os() %}
{% if os == "Linux" -%}
{% if os == "Linux" %}
[settings]
mold*:build_type=Release
onetbb*:build_type=Release
Expand Down
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ include(GNUInstallDirs)
include(CMakeDependentOption)
include(CMakePackageConfigHelpers)

option(MORPHEUS_BUILD_WITH_INTEL "Enable Intel oneAPI DPC++/C++ Compiler" ON)
option(MORPHEUS_LINK_WITH_MOLD "Enable the mold linker" ON)
cmake_dependent_option(MORPHEUS_CODE_COVERAGE "Enable code coverage" ON "\"${CMAKE_CXX_COMPILER_ID}\" STREQUAL \"Clang\" OR \"${CMAKE_CXX_COMPILER_ID}\" STREQUAL \"GNU\"" OFF)
cmake_dependent_option(MORPHEUS_INCLUDE_NATVIS "Enable inclusion of a natvis files for debugging" ON "\"${CMAKE_CXX_COMPILER_ID}\" STREQUAL \"MSVC\"" OFF)
Expand Down
8 changes: 8 additions & 0 deletions cmake/compiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,12 @@ target_compile_options(MorpheusConfig
$<$<CXX_COMPILER_ID:MSVC>:${MSVC_WARNINGS}>
$<$<CXX_COMPILER_ID:GNU>:${GCC_WARNINGS}>
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:${CLANG_WARNINGS}>
<$<CXX_COMPILER_ID:IntelLLVM>:${CLANG_WARNINGS}>
)

if (${MORPHEUS_BUILD_WITH_INTEL})
find_package(IntelSYSCL REQUIRED)
message(STATUS "Morpheus: found Intel One API DPC++/C++ Compiler.")
set(CMAKE_C_COMPILER icx PARENT_SCOPE)
set(CMAKE_CXX_COMPILER icpx PARENT_SCOPE)
endif()
2 changes: 1 addition & 1 deletion cmake/linker.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

include_guard(GLOBAL)

if (${MORPHEUS_LINK_WITH_MOLD})
if (${MORPHEUS_LINK_WITH_MOLD} AND NOT ${MORPHEUS_BUILD_WITH_INTEL})
find_program(MOLD_BIN mold REQUIRED)
if(MOLD_BIN)
message(STATUS "Morpheus: Mold linker found: ${MOLD_BIN}. Enabling mold as active linker.")
Expand Down
2 changes: 1 addition & 1 deletion conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def _minimum_cpp_standard(self):
@property
def _minimum_compilers_version(self):
return {
# "intel-cc": "??"
"intel-cc": "2023.2",
"msvc": "16",
"gcc": "11",
"clang": "13",
Expand Down