18
18
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
19
# SOFTWARE.
20
20
21
- cmake_minimum_required (VERSION 3.4 FATAL_ERROR )
21
+ # Note: cmake 3.7 is needed to use OpenCL::OpenCL.
22
+ cmake_minimum_required (VERSION 3.7 FATAL_ERROR )
22
23
set_property (GLOBAL PROPERTY USE_FOLDERS ON )
23
24
24
25
set (CMAKE_CXX_STANDARD 11 )
25
26
26
- project (OpenCLExtensionLoader LANGUAGES C CXX )
27
+ project (OpenCLExtensionLoader
28
+ VERSION 0.9
29
+ LANGUAGES C CXX )
27
30
28
31
option (BUILD_SHARED_LIBS "Build shared libs" ON )
29
- option (OPENCL_EXTENSION_LOADER_FORCE_STATIC_LIB "Unconditionally build a static library for the OpenCL Extension Loader " ON )
32
+ option (OPENCL_EXTENSION_LOADER_FORCE_STATIC_LIB "Unconditionally Build a Static Library " ON )
30
33
option (OPENCL_EXTENSION_LOADER_SINGLE_PLATFORM_ONLY "Only Support Extensions from a Single OpenCL Platform" OFF )
34
+ option (OPENCL_EXTENSION_LOADER_INSTALL "Generate Installation Target" ON )
31
35
option (OPENCL_EXTENSION_LOADER_INCLUDE_GL "Include OpenGL Extension APIs" ON )
32
36
option (OPENCL_EXTENSION_LOADER_INCLUDE_EGL "Include EGL Extension APIs" ON )
33
37
option (OPENCL_EXTENSION_LOADER_INCLUDE_DX9 "Include DirectX 9 Extension APIs" OFF )
34
38
option (OPENCL_EXTENSION_LOADER_INCLUDE_D3D10 "Include Direct3D 10 Extension APIs" OFF )
35
39
option (OPENCL_EXTENSION_LOADER_INCLUDE_D3D11 "Include Direct3D 11 Extension APIs" OFF )
36
40
option (OPENCL_EXTENSION_LOADER_INCLUDE_VA_API "Include VA_API Extension APIs" OFF )
37
41
38
- if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME )
42
+ if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME )
39
43
include (CTest )
40
44
find_package (Python3 COMPONENTS Interpreter )
41
45
set (OPENCL_EXTENSION_LOADER_XML_PATH CACHE FILEPATH "Path to cl.xml for OpenCL Extension Loader genereration" )
@@ -59,7 +63,7 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
59
63
set_target_properties (extension_loader_copy PROPERTIES FOLDER "OpenCLExtensionLoader/Generation" )
60
64
endif ()
61
65
62
- if (NOT DEFINED OpenCL_INCLUDE_DIRS )
66
+ if (NOT TARGET OpenCL::OpenCL )
63
67
find_package (OpenCL )
64
68
endif ()
65
69
@@ -74,9 +78,9 @@ if (OPENCL_EXTENSION_LOADER_FORCE_STATIC_LIB)
74
78
else ()
75
79
add_library (OpenCLExt ${OpenCLExtensionLoader_SOURCE_FILES} )
76
80
endif ()
81
+ add_library (OpenCL::OpenCLExt ALIAS OpenCLExt )
77
82
set_target_properties (OpenCLExt PROPERTIES FOLDER "OpenCLExtensionLoader" )
78
83
set_target_properties (OpenCLExt PROPERTIES VERSION "0.9" SOVERSION "0" )
79
- target_include_directories (OpenCLExt SYSTEM PUBLIC ${OpenCL_INCLUDE_DIRS} )
80
84
target_compile_definitions (OpenCLExt PRIVATE CL_TARGET_OPENCL_VERSION=300 )
81
85
if (OPENCL_EXTENSION_LOADER_SINGLE_PLATFORM_ONLY )
82
86
target_compile_definitions (OpenCLExt PRIVATE CLEXT_SINGLE_PLATFORM_ONLY )
@@ -99,9 +103,9 @@ endif()
99
103
if (OPENCL_EXTENSION_LOADER_INCLUDE_VA_API )
100
104
target_compile_definitions (OpenCLExt PRIVATE CLEXT_INCLUDE_VA_API )
101
105
endif ()
102
- target_link_libraries (OpenCLExt PRIVATE ${OpenCL_LIBRARIES} )
106
+ target_link_libraries (OpenCLExt PRIVATE OpenCL::OpenCL )
103
107
104
- if (MSVC )
108
+ if (MSVC )
105
109
#/EHs enable C++ EH (no SEH exceptions)
106
110
#/EHc extern "C" defaults to nothrow
107
111
target_compile_options (OpenCLExt PRIVATE /EHs- /EHc- )
@@ -110,17 +114,49 @@ else()
110
114
endif ()
111
115
112
116
include (GNUInstallDirs )
113
- install (TARGETS OpenCLExt
114
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
115
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
116
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
117
- )
117
+ include (CMakePackageConfigHelpers )
118
+
119
+ if (OPENCL_EXTENSION_LOADER_INSTALL )
120
+ set (OPENCL_EXTENSION_LOADER_CONFIG_PATH "${CMAKE_INSTALL_DATADIR} /cmake/OpenCLExtensionLoader" )
121
+
122
+ install (TARGETS OpenCLExt
123
+ EXPORT OpenCLExtensionLoaderTargets
124
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
125
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
126
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
127
+ )
118
128
119
- if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING )
129
+ export (EXPORT OpenCLExtensionLoaderTargets
130
+ FILE ${CMAKE_CURRENT_BINARY_DIR} /OpenCLExtensionLoader/OpenCLExtensionLoaderTargets.cmake
131
+ NAMESPACE OpenCL::
132
+ )
133
+ install (EXPORT OpenCLExtensionLoaderTargets
134
+ FILE OpenCLExtensionLoaderTargets.cmake
135
+ NAMESPACE OpenCL::
136
+ DESTINATION ${OPENCL_EXTENSION_LOADER_CONFIG_PATH}
137
+ )
138
+
139
+ file (WRITE ${CMAKE_CURRENT_BINARY_DIR} /OpenCLExtensionLoader/OpenCLExtensionLoaderConfig.cmake
140
+ "include(\"\$ {CMAKE_CURRENT_LIST_DIR}/OpenCLExtensionLoaderTargets.cmake\" )"
141
+ )
142
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /OpenCLExtensionLoader/OpenCLExtensionLoaderConfig.cmake
143
+ DESTINATION ${OPENCL_EXTENSION_LOADER_CONFIG_PATH}
144
+ )
145
+
146
+ write_basic_package_version_file (
147
+ ${CMAKE_CURRENT_BINARY_DIR} /OpenCLExtensionLoader/OpenCLExtensionLoaderConfigVersion.cmake
148
+ VERSION ${PROJECT_VERSION}
149
+ COMPATIBILITY AnyNewerVersion
150
+ )
151
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /OpenCLExtensionLoader/OpenCLExtensionLoaderConfigVersion.cmake
152
+ DESTINATION ${OPENCL_EXTENSION_LOADER_CONFIG_PATH}
153
+ )
154
+ endif ()
155
+
156
+ if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING )
120
157
add_subdirectory (tests )
121
158
endif ()
122
159
123
- if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
160
+ if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
124
161
set (CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR} /install" CACHE PATH "Install Path" FORCE )
125
162
endif ()
126
-
0 commit comments