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