Skip to content

Commit 54703bc

Browse files
committed
build: override cmake default DPC++ compile/link lines for Windows
Use DPC++ compiler for both build and link steps Remove tool-chain, define required compilers for Windows in CMakeLists.txt
1 parent 6eb1274 commit 54703bc

File tree

8 files changed

+39
-141
lines changed

8 files changed

+39
-141
lines changed

CMakeLists.txt

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,30 @@ else()
3636
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
3737
endif()
3838

39+
# Define required compilers for Windows before project
40+
if(WIN32)
41+
set(CMAKE_CXX_COMPILER "clang-cl")
42+
set(CMAKE_C_COMPILER "clang-cl")
43+
endif()
44+
3945
project(oneMKL VERSION 0.1.0 LANGUAGES CXX)
4046

4147
option(BUILD_SHARED_LIBS "Build dynamic libraries" ON)
4248

49+
# Override default CXX compile/link lines for Windows after project
50+
if(WIN32)
51+
set(CMAKE_CXX_STANDARD 14)
52+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function -w")
53+
foreach (flag_var
54+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
55+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
56+
string(REPLACE "/MD" "" ${flag_var} "${${flag_var}}")
57+
endforeach()
58+
set(CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> -fsycl /nologo <DEFINES> <INCLUDES> /EHsc <FLAGS> /Fo<OBJECT> -c <SOURCE>")
59+
set(CMAKE_CXX_CREATE_STATIC_LIBRARY "lib /nologo <OBJECTS> /out:<TARGET>")
60+
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> -fsycl /nologo <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
61+
endif()
62+
4363
## Backends
4464
option(ENABLE_MKLCPU_BACKEND "" ON)
4565
option(ENABLE_MKLGPU_BACKEND "" ON)
@@ -90,23 +110,6 @@ option(BUILD_FUNCTIONAL_TESTS "" ON)
90110
## Documentation
91111
option(BUILD_DOC "" OFF)
92112

93-
# Set compilation flags
94-
if(UNIX)
95-
set(CMAKE_CXX_STANDARD 11)
96-
else()
97-
set(CMAKE_CXX_STANDARD 14)
98-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function")
99-
foreach (flag_var
100-
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
101-
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
102-
string(REGEX REPLACE "/M[TD]+[d]*" "" ${flag_var} "${${flag_var}}")
103-
endforeach()
104-
endif()
105-
106-
set(CMAKE_CXX_REQUIRED ON)
107-
set(CMAKE_CXX_EXTENSIONS OFF)
108-
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
109-
110113
# Set output directories for the project
111114
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
112115
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
@@ -118,8 +121,12 @@ add_subdirectory(cmake)
118121
# Include general cmake config files
119122
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
120123

121-
# Find necessary packages
122-
find_package(Compiler REQUIRED)
124+
# Add DPC++ options for Linux
125+
if(WIN32)
126+
add_library(ONEMKL::SYCL::SYCL INTERFACE IMPORTED)
127+
else()
128+
find_package(Compiler REQUIRED)
129+
endif()
123130

124131
# Add source directory and output to bin/
125132
add_subdirectory(src bin)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ cmake --install . --prefix <path_to_install_dir>
501501
```bash
502502
# Inside <path to onemkl>
503503
md build && cd build
504-
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE="..\cmake\toolchain\intel_clang-cl-toolchain.cmake"
504+
cmake .. -G Ninja
505505
[-DMKL_ROOT=<mkl_install_prefix>] \ # required only if environment variable MKLROOT is not set
506506
[-DREF_BLAS_ROOT=<reference_blas_install_prefix>] # required only for testing
507507

cmake/FindMKL.cmake

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ if (ENABLE_MKLCPU_BACKEND OR ENABLE_MKLGPU_BACKEND)
4242
list(APPEND MKL_LIBRARIES ${MKL_C})
4343
endif()
4444

45+
include(FindPackageHandleStandardArgs)
4546
foreach(lib ${MKL_LIBRARIES})
4647
find_library(${lib}_file NAMES ${lib}
4748
HINTS $ENV{MKLROOT} ${MKL_ROOT}
@@ -55,7 +56,7 @@ find_path(MKL_INCLUDE mkl.h
5556
HINTS $ENV{MKLROOT} ${MKL_ROOT}
5657
PATH_SUFFIXES include)
5758

58-
if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
59+
if(${CMAKE_SIZEOF_VOID_P} EQUAL 8 OR ENABLE_MKLGPU_BACKEND)
5960
set(MKL_COPT "-DMKL_ILP64")
6061
else()
6162
set(MKL_COPT "")
@@ -65,30 +66,29 @@ if(UNIX)
6566
list(APPEND MKL_LINK_PREFIX "-Wl,-rpath,${MKL_LIB_DIR}")
6667
list(APPEND MKL_LINK_PREFIX "-L${MKL_LIB_DIR}")
6768
set(LIB_PREFIX "-l")
68-
set(OPENCL_LIBNAME "OpenCL")
69+
set(LIB_SUFFIX "")
70+
set(OPENCL_LIBNAME "-lOpenCL")
6971
else()
70-
list(APPEND MKL_LINK_PREFIX "-LIBPATH:\"${MKL_LIB_DIR}\"")
71-
set(LIB_PREFIX "")
72+
set(LIB_PREFIX "${MKL_LIB_DIR}/")
73+
set(LIB_SUFFIX ".lib")
7274
set(OPENCL_LIBNAME "OpenCL.lib")
7375
endif()
7476

7577
if (ENABLE_MKLCPU_BACKEND OR ENABLE_MKLGPU_BACKEND)
7678
set(MKL_LINK_C ${MKL_LINK_PREFIX})
7779
foreach(lib ${MKL_C})
78-
list(APPEND MKL_LINK_C ${LIB_PREFIX}${lib})
80+
list(APPEND MKL_LINK_C ${LIB_PREFIX}${lib}${LIB_SUFFIX})
7981
endforeach()
8082
if(ENABLE_MKLCPU_THREAD_TBB)
8183
list(APPEND MKL_LINK_C ${TBB_LINK})
8284
endif()
8385
if(ENABLE_MKLGPU_BACKEND)
84-
set(MKL_LINK_SYCL ${MKL_LINK_PREFIX} ${LIB_PREFIX}${MKL_SYCL} ${MKL_LINK_C} ${LIB_PREFIX}${OPENCL_LIBNAME} )
86+
set(MKL_LINK_SYCL ${MKL_LINK_PREFIX} ${LIB_PREFIX}${MKL_SYCL}${LIB_SUFFIX} ${MKL_LINK_C} ${OPENCL_LIBNAME} )
8587
endif()
8688
endif()
8789

88-
#Workaround for soname problem
89-
include(FindPackageHandleStandardArgs)
9090
if (ENABLE_MKLCPU_BACKEND)
9191
find_package_handle_standard_args(MKL REQUIRED_VARS MKL_INCLUDE MKL_COPT MKL_LINK_C)
9292
else(ENABLE_MKLGPU_BACKEND)
9393
find_package_handle_standard_args(MKL REQUIRED_VARS MKL_INCLUDE MKL_COPT MKL_LINK_SYCL)
94-
endif()
94+
endif()

cmake/FindNETLIB.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
include_guard()
2121

22+
include(FindPackageHandleStandardArgs)
2223
find_library(NETLIB_CBLAS_LIBRARY NAMES cblas.dll.lib cblas.lib cblas HINTS ${REF_BLAS_ROOT} PATH_SUFFIXES lib lib64)
2324
find_package_handle_standard_args(NETLIB REQUIRED_VARS NETLIB_CBLAS_LIBRARY)
2425
find_library(NETLIB_BLAS_LIBRARY NAMES blas.dll.lib blas.lib blas HINTS ${REF_BLAS_ROOT} PATH_SUFFIXES lib lib64)
@@ -33,8 +34,6 @@ endif()
3334
list(APPEND NETLIB_LINK ${NETLIB_CBLAS_LIBRARY})
3435
list(APPEND NETLIB_LINK ${NETLIB_BLAS_LIBRARY})
3536

36-
37-
include(FindPackageHandleStandardArgs)
3837
find_package_handle_standard_args(NETLIB REQUIRED_VARS NETLIB_INCLUDE NETLIB_LINK)
3938

4039
add_library(ONEMKL::NETLIB::NETLIB UNKNOWN IMPORTED)

cmake/FindTBB.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ find_library(TBB_LIBRARIES NAMES tbb
4646
if(UNIX)
4747
set(TBB_LINK "-Wl,-rpath,${TBB_LIB_DIR} -L${TBB_LIB_DIR} -ltbb")
4848
else()
49-
set(TBB_LINK "-LIBPATH:\"${TBB_LIB_DIR}\" tbb.lib")
49+
set(TBB_LINK ${TBB_LIBRARIES})
5050
endif()
5151
include(FindPackageHandleStandardArgs)
5252
find_package_handle_standard_args(TBB REQUIRED_VARS TBB_LIBRARIES TBB_LINK)

cmake/toolchain/intel_clang-cl-toolchain.cmake

Lines changed: 0 additions & 54 deletions
This file was deleted.

cmake/toolchain/intel_clang-toolchain.cmake

Lines changed: 0 additions & 54 deletions
This file was deleted.

deps/googletest/cmake/internal_utils.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ macro(config_compiler_and_linker)
7171
set(cxx_base_flags "-GS -W4 -WX -wd4251 -wd4275 -nologo -J -Zi")
7272
set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
7373
set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
74-
set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
74+
set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1 -DGTEST_HAS_SEH=0")
7575
set(cxx_no_exception_flags "-EHs-c- -D_HAS_EXCEPTIONS=0")
7676
set(cxx_no_rtti_flags "-GR-")
7777
# Suppress "unreachable code" warning

0 commit comments

Comments
 (0)