| cmake_minimum_required(VERSION 3.5.1) |
| |
| set( CONFORMANCE_SUFFIX "" ) |
| set(CLConform_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) |
| |
| project(CLConform${CONFORMANCE_SUFFIX}) |
| |
| set(CMAKE_C_STANDARD 99) |
| set(CMAKE_C_STANDARD_REQUIRED ON) |
| set(CMAKE_CXX_STANDARD 11) |
| set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| |
| add_definitions(-DCL_TARGET_OPENCL_VERSION=300) |
| add_definitions(-DCL_USE_DEPRECATED_OPENCL_2_2_APIS=1) |
| add_definitions(-DCL_USE_DEPRECATED_OPENCL_2_1_APIS=1) |
| add_definitions(-DCL_USE_DEPRECATED_OPENCL_2_0_APIS=1) |
| add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_2_APIS=1) |
| add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_1_APIS=1) |
| add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_0_APIS=1) |
| |
| option(USE_CL_EXPERIMENTAL "Use Experimental definitions" OFF) |
| if(USE_CL_EXPERIMENTAL) |
| add_definitions(-DCL_EXPERIMENTAL) |
| endif(USE_CL_EXPERIMENTAL) |
| |
| #----------------------------------------------------------- |
| # Default Configurable Test Set |
| #----------------------------------------------------------- |
| option(D3D10_IS_SUPPORTED "Run DirectX 10 interop tests" OFF) |
| option(D3D11_IS_SUPPORTED "Run DirectX 11 interop tests" OFF) |
| option(GL_IS_SUPPORTED "Run OpenGL interop tests" OFF) |
| option(GLES_IS_SUPPORTED "Run OpenGL ES interop tests" OFF) |
| |
| |
| #----------------------------------------------------------- |
| # Tests prefix and suffix |
| #----------------------------------------------------------- |
| # Set the prefix and suffix for the generated executables |
| # For example, if you want the api executable to be test_conformance_api_12 |
| # Set prefix to "test_conformance_" and suffix to "_12" |
| set(CONFORMANCE_PREFIX "test_" ) |
| set(CONFORMANCE_SUFFIX "" ) |
| |
| #----------------------------------------------------------- |
| # Vendor Customization |
| #----------------------------------------------------------- |
| #Vendor Customization File can be included here to provide a way to automatically |
| #build driver as a dependency of the conformance tests, or other such CMake customization |
| include(CMakeVendor.txt OPTIONAL) |
| |
| # CL_INCLUDE_DIR - path to dir with OpenCL headers |
| if(CL_INCLUDE_DIR AND CL_LIB_DIR) |
| link_directories(${CL_LIB_DIR}) |
| else(CL_INCLUDE_DIR AND CL_LIB_DIR) |
| message(STATUS "OpenCL hasn't been found!") |
| message(FATAL_ERROR "Either install OpenCL or pass -DCL_INCLUDE_DIR and -DCL_LIB_DIR") |
| endif(CL_INCLUDE_DIR AND CL_LIB_DIR) |
| |
| # CLConform_GL_LIBRARIES_DIR - path to OpenGL libraries |
| if(GL_IS_SUPPORTED AND CLConform_GL_LIBRARIES_DIR) |
| link_directories(${CLConform_GL_LIBRARIES_DIR}) |
| endif (GL_IS_SUPPORTED AND CLConform_GL_LIBRARIES_DIR) |
| |
| include(CheckFunctionExists) |
| include(CheckIncludeFiles) |
| include(CheckCXXCompilerFlag) |
| |
| if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") |
| set(CLConform_TARGET_ARCH ARM) |
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)") |
| set(CLConform_TARGET_ARCH ARM64) |
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") |
| set(CLConform_TARGET_ARCH x86_64) |
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*") |
| set(CLConform_TARGET_ARCH x86) |
| endif() |
| |
| if(NOT DEFINED CLConform_TARGET_ARCH) |
| message (FATAL_ERROR "Target architecture not recognised. Exiting.") |
| endif() |
| |
| macro(add_cxx_flag_if_supported flag) |
| string(REGEX REPLACE "[-=+]" "" FLAG_NO_SIGNS ${flag}) |
| check_cxx_compiler_flag(${flag} COMPILER_SUPPORTS_${FLAG_NO_SIGNS}) |
| if(COMPILER_SUPPORTS_${FLAG_NO_SIGNS}) |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") |
| endif() |
| endmacro(add_cxx_flag_if_supported) |
| |
| if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") |
| add_cxx_flag_if_supported(-Wmisleading-indentation) |
| add_cxx_flag_if_supported(-Wunused-variable) |
| add_cxx_flag_if_supported(-Wno-narrowing) |
| add_cxx_flag_if_supported(-Wno-format) |
| add_cxx_flag_if_supported(-Werror) |
| add_cxx_flag_if_supported(-Wno-error=cpp) # Allow #warning directive |
| add_cxx_flag_if_supported(-Wno-error=unknown-pragmas) # Issue #785 |
| add_cxx_flag_if_supported(-Wno-error=asm-operand-widths) # Issue #784 |
| |
| # -msse -mfpmath=sse to force gcc to use sse for float math, |
| # avoiding excess precision problems that cause tests like int2float |
| # to falsely fail. -ffloat-store also works, but WG suggested |
| # that sse would be better. |
| if(${CLConform_TARGET_ARCH} STREQUAL "x86_64" OR ${CLConform_TARGET_ARCH} |
| STREQUAL "x86") |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -mfpmath=sse") |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -mfpmath=sse") |
| |
| add_cxx_flag_if_supported(-frounding-math) |
| endif() |
| else() |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D__SSE__") |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D__SSE__") |
| endif() |
| |
| # Set a module's COMPILE_FLAGS if using gcc or clang. |
| macro(set_gnulike_module_compile_flags flags) |
| if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") |
| SET_SOURCE_FILES_PROPERTIES( |
| ${${MODULE_NAME}_SOURCES} |
| PROPERTIES |
| COMPILE_FLAGS ${flags} |
| ) |
| endif() |
| endmacro(set_gnulike_module_compile_flags) |
| |
| if(MSVC) |
| # Don't warn when using standard non-secure functions. |
| add_compile_definitions(_CRT_SECURE_NO_WARNINGS) |
| # Don't warn about using the portable "strdup" function. |
| add_compile_definitions(_CRT_NONSTDC_NO_DEPRECATE) |
| # Fix std::min and std::max handling with windows.harness. |
| add_compile_definitions(NOMINMAX) |
| endif() |
| |
| if( WIN32 AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel" ) |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qlong-double -Qpc80 /DWIN32 /D_WINDOWS /W3 /GR /EHsc -nologo -Od -D_CRT_NONSTDC_NO_WARNINGS -EHsc -Wall -Qdiag-disable:68,111,177,186,161,869,1028,2259,2553,181,239,265,1188 -fp:strict -fp:source") |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qlong-double -Qpc80 /DWIN32 /D_WINDOWS /W3 /GR /EHsc -nologo -Od -D_CRT_NONSTDC_NO_WARNINGS -EHsc -Wall -Qdiag-disable:68,111,177,186,161,869,1028,2259,2553,181,239,265,1188 -fp:strict -fp:source") |
| endif() |
| |
| list(APPEND CLConform_LIBRARIES ${OPENCL_LIBRARIES}) |
| if(ANDROID) |
| list(APPEND CLConform_LIBRARIES m) |
| endif() |
| if(NOT DEFINED LINK_PTHREAD) |
| if(ANDROID OR WIN32) |
| set(LINK_PTHREAD OFF) |
| else() |
| set(LINK_PTHREAD ON) |
| endif() |
| endif() |
| if(LINK_PTHREAD) |
| list(APPEND CLConform_LIBRARIES pthread) |
| endif() |
| |
| if(APPLE) |
| find_library(corefoundation CoreFoundation) |
| find_library(iokit IOKit) |
| list(APPEND CLConform_LIBRARIES ${corefoundation}) |
| list(APPEND CLConform_LIBRARIES ${iokit}) |
| endif(APPLE) |
| |
| include_directories(SYSTEM ${CL_INCLUDE_DIR}) |
| include_directories(${CLConform_SOURCE_DIR}/test_common/harness |
| ${CLConform_SOURCE_DIR}/test_common/gles |
| ${CLConform_SOURCE_DIR}/test_common/gl |
| ${CLConform_SOURCE_DIR}/test_common) |
| |
| add_subdirectory(test_common) |
| add_subdirectory(test_conformance) |