xref: /aosp_15_r20/external/OpenCL-Headers/tests/CMakeLists.txt (revision 3cc257528f335c5672e46865a03b8ee020e5fe2d)
1*3cc25752SFrank Pivaif(NOT DEFINED CMAKE_C_STANDARD)
2*3cc25752SFrank Piva  set(CMAKE_C_STANDARD 99)
3*3cc25752SFrank Pivaendif()
4*3cc25752SFrank Pivaif(NOT DEFINED CMAKE_C_STANDARD_REQUIRED)
5*3cc25752SFrank Piva  set(CMAKE_C_STANDARD_REQUIRED ON)
6*3cc25752SFrank Pivaendif()
7*3cc25752SFrank Pivaif(NOT DEFINED CMAKE_CXX_STANDARD)
8*3cc25752SFrank Piva  set(CMAKE_CXX_STANDARD 17)
9*3cc25752SFrank Pivaendif()
10*3cc25752SFrank Pivaif(NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED)
11*3cc25752SFrank Piva  set(CMAKE_CXX_STANDARD_REQUIRED ON)
12*3cc25752SFrank Pivaendif()
13*3cc25752SFrank Piva
14*3cc25752SFrank Piva
15*3cc25752SFrank Piva# Add a test for a given source file for each version of OpenCL
16*3cc25752SFrank Pivafunction(add_header_test NAME SOURCE)
17*3cc25752SFrank Piva  # Some headers include system files which require anonymous structs
18*3cc25752SFrank Piva  # so we cannot test them with /Za:
19*3cc25752SFrank Piva  set(TEST_SKIP_ANSI_TESTING
20*3cc25752SFrank Piva    cl_d3d10_h cl_d3d11_h cl_dx9_media_sharing_h cl_dx9_media_sharing_intel_h cl_icd_h cl_layer_h)
21*3cc25752SFrank Piva  get_filename_component(LANG_DIR "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
22*3cc25752SFrank Piva  if(LANG_DIR MATCHES cpp)
23*3cc25752SFrank Piva    set(CPP_SOURCE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SOURCE}pp")
24*3cc25752SFrank Piva    file(RELATIVE_PATH REL_SOURCE_PATH "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../${SOURCE}")
25*3cc25752SFrank Piva    file(TO_NATIVE_PATH "${REL_SOURCE_PATH}" NATIVE_SOURCE_PATH)
26*3cc25752SFrank Piva    file(WRITE
27*3cc25752SFrank Piva      "${CPP_SOURCE_PATH}"
28*3cc25752SFrank Piva      "#include \"${NATIVE_SOURCE_PATH}\"\n"
29*3cc25752SFrank Piva    )
30*3cc25752SFrank Piva    set(SOURCE_PATH "${CPP_SOURCE_PATH}")
31*3cc25752SFrank Piva    set(LANG cpp)
32*3cc25752SFrank Piva  else()
33*3cc25752SFrank Piva    set(SOURCE_PATH "../${SOURCE}")
34*3cc25752SFrank Piva    set(LANG c)
35*3cc25752SFrank Piva  endif()
36*3cc25752SFrank Piva  foreach(VERSION 100 110 120 200 210 220 300)
37*3cc25752SFrank Piva    set(TEST_EXE ${NAME}_${LANG}_${VERSION})
38*3cc25752SFrank Piva    list(FIND TEST_SKIP_ANSI_TESTING ${NAME} TEST_SKIP_INDEX)
39*3cc25752SFrank Piva    if(NOT (${TEST_SKIP_INDEX} GREATER -1 AND MSVC AND CMAKE_C_FLAGS MATCHES "/Za"))
40*3cc25752SFrank Piva      add_executable(${TEST_EXE} "${SOURCE_PATH}")
41*3cc25752SFrank Piva      target_compile_definitions(${TEST_EXE}
42*3cc25752SFrank Piva        PUBLIC -DCL_TARGET_OPENCL_VERSION=${VERSION}
43*3cc25752SFrank Piva      )
44*3cc25752SFrank Piva      target_include_directories(${TEST_EXE}
45*3cc25752SFrank Piva        PUBLIC ${PROJECT_SOURCE_DIR}
46*3cc25752SFrank Piva      )
47*3cc25752SFrank Piva      add_test(NAME ${TEST_EXE} COMMAND ${TEST_EXE})
48*3cc25752SFrank Piva    endif()
49*3cc25752SFrank Piva  endforeach(VERSION)
50*3cc25752SFrank Pivaendfunction(add_header_test)
51*3cc25752SFrank Piva
52*3cc25752SFrank Pivaadd_subdirectory(lang_c)
53*3cc25752SFrank Pivaif(OPENCL_HEADERS_BUILD_CXX_TESTS)
54*3cc25752SFrank Piva  enable_language(CXX)
55*3cc25752SFrank Piva  add_subdirectory(lang_cpp)
56*3cc25752SFrank Pivaendif()
57