#
# Copyright(c) 2006 to 2022 ZettaScale Technology and others
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
# v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#
set(_sources
test_alias.idl
test_basic.idl
test_union.idl
test_typedef_member.idl
test_struct_inherit.idl
test_struct_inherit_appendable.idl
test_struct_inherit_mutable.idl
test_struct_external.idl
test_union_external.idl
test_optional.idl
test_optional_mutable.idl
test_struct_alignment.idl
test_struct_r.idl
test_union_member_types_r.idl
test_union_r.idl
test_bounded_seq.idl
test_bounded_str.idl
test_enum.idl
test_bool.idl
test_bitmask.idl
test_struct_keys.idl
test_struct_inherit_mutable_keys.idl
test_key_seq.idl
)
set(_includes "${_includes}\\;${CMAKE_SOURCE_DIR}/src/core/cdr/include")
set(_includes "${_includes}\\;${CMAKE_SOURCE_DIR}/src/core/ddsc/include")
set(_includes "${_includes}\\;${CMAKE_SOURCE_DIR}/src/core/ddsi/include")
set(_includes "${_includes}\\;${CMAKE_SOURCE_DIR}/src/ddsrt/include")
set(_includes "${_includes}\\;${CMAKE_BINARY_DIR}/src/ddsrt/include")
set(_includes "${_includes}\\;${CMAKE_BINARY_DIR}/src/core/include")
set(_includes "${_includes}\\;${CMAKE_CURRENT_SOURCE_DIR}")
set(CMAKE_VERBOSE_MAKEFILE ON)
if(MSVC)
if(CMAKE_CL_64)
if(MSVC_VERSION GREATER 1599)
# VS 10 and later:
set(CMAKE_MSVC_ARCH x64)
else()
# VS 9 and earlier:
set(CMAKE_MSVC_ARCH amd64)
endif()
else()
set(CMAKE_MSVC_ARCH x86)
endif()
# Add the include dir from the Windows Kits directory
# code from https://gitlab.kitware.com/cmake/cmake/-/blob/v3.17.3/Modules/InstallRequiredSystemLibraries.cmake
get_filename_component(windows_kits_dir
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE)
set(programfilesx86 "ProgramFiles(x86)")
if(";${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION};$ENV{UCRTVersion};$ENV{WindowsSDKVersion};" MATCHES [=[;(10\.[0-9.]+)[;\]]=])
set(__ucrt_version "${CMAKE_MATCH_1}/")
else()
set(__ucrt_version "")
endif()
find_path(WINDOWS_KITS_DIR
NAMES
Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll
Redist/ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll
PATHS
$ENV{CMAKE_WINDOWS_KITS_10_DIR}
"${windows_kits_dir}"
"$ENV{ProgramFiles}/Windows Kits/10"
"$ENV{${programfilesx86}}/Windows Kits/10"
)
set(_windows_kit_includes "${WINDOWS_KITS_DIR}/include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set(_windows_kit_libs "${WINDOWS_KITS_DIR}/lib/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
# get msvc root
get_filename_component(_msvc_dir ${CMAKE_C_COMPILER} DIRECTORY)
set(_msvc_dir "${_msvc_dir}/../../..")
# Add include directory VC/Tools/MSVC/[version]/include
set(_includes "${_includes}\\;${_msvc_dir}/include")
set(_includes "${_includes}\\;${_windows_kit_includes}/ucrt")
set(_includes "${_includes}\\;${_windows_kit_includes}/um")
set(_includes "${_includes}\\;${_windows_kit_includes}/shared")
# Add library paths
set(_libs "${_msvc_dir}/lib/${CMAKE_MSVC_ARCH}")
set(_libs "${_libs}\\;${_windows_kit_libs}/ucrt/${CMAKE_MSVC_ARCH}")
set(_libs "${_libs}\\;${_windows_kit_libs}/um/${CMAKE_MSVC_ARCH}")
endif()
if(ENABLE_TYPELIB)
set(_type_meta 1)
endif()
set(_dir "${CMAKE_CURRENT_SOURCE_DIR}")
foreach(_source ${_sources})
set(_source "${_dir}/${_source}")
get_filename_component(_base "${_source}" NAME_WE)
add_test(
NAME "idlc_${_base}"
COMMAND ${CMAKE_COMMAND} -P "${_dir}/Compile.cmake" ${_source})
set_property(
TEST "idlc_${_base}"
APPEND PROPERTY ENVIRONMENT
"CC=${CMAKE_C_COMPILER}"
"IDLC=$<TARGET_FILE:CycloneDDS::idlc>"
"MAINC=${CMAKE_CURRENT_SOURCE_DIR}/main.c"
"TEST_INCLUDE_PATHS=${_includes}"
"TEST_LIB_PATHS=${_libs}"
"CDDS_LIB_PATH=$<TARGET_LINKER_FILE_DIR:CycloneDDS::ddsc>"
"CDDS_BIN_PATH=$<TARGET_FILE_DIR:CycloneDDS::ddsc>"
"SANITIZER=${SANITIZER}"
"HAS_TYPE_META=${_type_meta}")
if(APPLE)
if("${CMAKE_OSX_SYSROOT}" STREQUAL "")
execute_process(COMMAND xcrun --show-sdk-path OUTPUT_VARIABLE _osx_sysroot)
string(STRIP ${_osx_sysroot} _osx_sysroot)
set_property(
TEST "idlc_${_base}"
APPEND PROPERTY ENVIRONMENT
"OSX_SYSROOT=${_osx_sysroot}")
else()
set_property(
TEST "idlc_${_base}"
APPEND PROPERTY ENVIRONMENT
"OSX_SYSROOT=${CMAKE_OSX_SYSROOT}")
endif()
endif()
endforeach()