2
2
# PI Esimd CPU library
3
3
# Create Shared library for libpi_esimd_cpu.so.
4
4
5
- include (ExternalProject)
6
-
7
5
include_directories ("${sycl_inc_dir} " )
8
- # FIXME/TODO: 'pi.h' is included in 'pi_esimd_cpu.cpp', and CL_*_INTEL
9
- # and CL_*_KHR definitions in 'pi.h' are from
10
- # ${OPENCL_INCLUDE}. Remove build dependency on OpenCL
11
6
include_directories (${OpenCL_INCLUDE_DIR} )
12
-
13
- file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_build)
14
- file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install)
15
-
16
- if (MSVC )
17
- set (LIBCM ${LLVM_BINARY_DIR} /pi_esimd_cpu_deps/lib/libcm${CMAKE_STATIC_LIBRARY_SUFFIX} )
18
- set (LIBIGFXCMRT_EMU ${LLVM_BINARY_DIR} /pi_esimd_cpu_deps/lib/igfxcmrt64_emu${CMAKE_STATIC_LIBRARY_SUFFIX} )
19
- else ()
20
- set (LIBCM ${LLVM_BINARY_DIR} /pi_esimd_cpu_deps/lib/libcm${CMAKE_SHARED_LIBRARY_SUFFIX} )
21
- set (LIBIGFXCMRT_EMU ${LLVM_BINARY_DIR} /pi_esimd_cpu_deps/lib/libigfxcmrt_emu${CMAKE_SHARED_LIBRARY_SUFFIX} )
22
- endif ()
23
-
24
- if (DEFINED CM_LOCAL_SOURCE_DIR)
25
- # Using local CM directory for online building without downloading
26
- if (MSVC )
27
- ExternalProject_Add(cm-emu
28
- DOWNLOAD_COMMAND ""
29
- SOURCE_DIR ${CM_LOCAL_SOURCE_DIR}
30
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_build
31
- INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install
32
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
33
- BUILD_BYPRODUCTS ${LIBCM} ${LIBIGFXCMRT_EMU}
34
- )
35
- else ()
36
- ExternalProject_Add(cm-emu
37
- DOWNLOAD_COMMAND ""
38
- SOURCE_DIR ${CM_LOCAL_SOURCE_DIR}
39
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_build
40
- INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install
41
- CMAKE_ARGS -DLIBVA_INSTALL_PATH=/usr
42
- -D__SYCL_EXPLICIT_SIMD_PLUGIN__=true
43
- -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
44
- BUILD_BYPRODUCTS ${LIBCM} ${LIBIGFXCMRT_EMU}
45
- )
46
- endif ()
47
- else ()
48
- # Downloading pre-built CM Package
49
- if (NOT DEFINED CM_PACKAGE_URL)
50
- if (MSVC )
51
- message (FATAL_ERROR "ESIMD_CPU is not supported under Windows environment yet" )
52
- else ()
53
- # FIXME/TODO : Use 'generic' package instead of 'u18.04'
54
- set (CM_PACKAGE_URL "https://github.com/intel/cm-cpu-emulation/releases/download/v2021-07-21/intel-cmemu-1.0.1.u18.04-release.x86_64.tar.xz" )
55
- endif ()
56
- endif ()
57
- file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install)
58
- ExternalProject_Add(cm-emu
59
- URL ${CM_PACKAGE_URL}
60
- CONFIGURE_COMMAND ""
61
- BUILD_COMMAND ""
62
- UPDATE_COMMAND ""
63
- INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install
64
- INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR} /cm-emu-prefix /src/cm-emu/ <INSTALL_DIR>
65
- BUILD_BYPRODUCTS ${LIBCM} ${LIBIGFXCMRT_EMU}
66
- )
67
- endif ()
68
- ExternalProject_Add_Step(cm-emu llvminstall
69
- COMMAND ${CMAKE_COMMAND} -E make_directory ${LLVM_BINARY_DIR} /pi_esimd_cpu_deps && ${CMAKE_COMMAND} -E copy_directory <INSTALL_DIR>/ ${LLVM_BINARY_DIR} /pi_esimd_cpu_deps
70
- COMMENT "Installing cm-emu into the LLVM binary directory"
71
- DEPENDEES install
72
- )
73
-
74
- include_directories (${LLVM_BINARY_DIR} /pi_esimd_cpu_deps/include /igfxcmrt_emu)
75
- include_directories (${LLVM_BINARY_DIR} /pi_esimd_cpu_deps/include /libcm/cm)
76
-
77
- # Compilation flag to exclude lines in header files imported from CM
78
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__SYCL_EXPLICIT_SIMD_PLUGIN__" )
79
-
80
- set (CMAKE_CXX_STANDARD 17)
81
-
82
- # Compilation option modification to prevent build termination caused by
83
- # warnings from CM-imported files
84
- if (MSVC )
85
- string (REPLACE "/W4" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
86
- else ()
87
- string (REPLACE "-pedantic" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
88
- endif ()
7
+ include_directories (${LIBCMRT_INCLUDE} )
89
8
90
9
add_library (pi_esimd_cpu SHARED
91
10
"${sycl_inc_dir} /CL/sycl/detail/pi.h"
@@ -112,42 +31,16 @@ else()
112
31
)
113
32
endif ()
114
33
115
- add_dependencies (pi_esimd_cpu OpenCL-Headers)
116
- add_dependencies (pi_esimd_cpu cm-emu)
117
34
add_dependencies (sycl-toolchain pi_esimd_cpu)
118
35
119
- target_link_libraries (pi_esimd_cpu PRIVATE sycl ${LIBCM} ${LIBIGFXCMRT_EMU} )
36
+ add_dependencies (pi_esimd_cpu
37
+ OpenCL-Headers)
38
+
39
+ target_link_libraries (pi_esimd_cpu PRIVATE sycl)
120
40
set_target_properties (pi_esimd_cpu PROPERTIES LINKER_LANGUAGE CXX)
121
41
122
42
add_common_options(pi_esimd_cpu)
123
43
124
44
install (TARGETS pi_esimd_cpu
125
- LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT pi_esimd_cpu
126
- RUNTIME DESTINATION "bin" COMPONENT pi_esimd_cpu)
127
-
128
- # Copy CM Header files to $(INSTALL)/include/sycl/CL/
129
- install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install/include /libcm/cm/
130
- DESTINATION ${SYCL_INCLUDE_DIR} /CL
131
- COMPONENT libcmrt-headers
132
- FILES_MATCHING PATTERN "*.h"
133
- )
134
-
135
- # Copy '.so' files to '$(INSTALL)/lib'
136
- if (MSVC )
137
- install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install/lib/
138
- DESTINATION ${CMAKE_INSTALL_PREFIX} /lib
139
- COMPONENT libcmrt-libs
140
- FILES_MATCHING PATTERN "*.lib"
141
- )
142
- install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install/bin/
143
- DESTINATION ${CMAKE_INSTALL_PREFIX} /bin
144
- COMPONENT libcmrt-dlls
145
- FILES_MATCHING PATTERN "*.dll"
146
- )
147
- else ()
148
- install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /cm-emu_install/lib/
149
- DESTINATION ${CMAKE_INSTALL_PREFIX} /lib
150
- COMPONENT libcmrt-sos
151
- FILES_MATCHING PATTERN "*.so"
152
- )
153
- endif ()
45
+ LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT pi_esimd_cpu
46
+ RUNTIME DESTINATION "bin" COMPONENT pi_esimd_cpu)
0 commit comments