From 3640842df23de476506d1529caf1736052dbcb38 Mon Sep 17 00:00:00 2001 From: "William R. Dieter" <william.r.dieter@intel.com> Date: Fri, 24 Jun 2022 21:46:19 -0700 Subject: Tests: Update ModuleDefinition for IntelLLVM MSVC Frontend Variant IntelLLVM for MSVC uses the compiler for linking. The /DEF flag needs to be passed to the linker, and the compiler does not accept it, unless it is prefixed with `/Qoption,link,`. Rather than explicitly set the LINK_FLAGS target property, as is done for other MSVC frontend variants, add the .def file to the sources for `add_library`. `add_library` will wrap the `/DEF` flag using `CMAKE_${lang}_LINKER_WRAPPER_FLAG`. Presumably, this should work for any MSVC front end, but leave the original test to avoid changing a test that is working. Signed-off-by: William R. Dieter <william.r.dieter@intel.com> --- Tests/ModuleDefinition/CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Tests/ModuleDefinition/CMakeLists.txt b/Tests/ModuleDefinition/CMakeLists.txt index 567fb4b..483bd8b 100644 --- a/Tests/ModuleDefinition/CMakeLists.txt +++ b/Tests/ModuleDefinition/CMakeLists.txt @@ -15,7 +15,17 @@ add_custom_command(OUTPUT example_dll_gen.def add_library(example_dll_gen SHARED example_dll_gen.c example_dll_gen.def) # Test /DEF:<file> flag recognition for VS. -if(MSVC OR CMAKE_C_COMPILER_ID STREQUAL "Intel") +if(MSVC AND CMAKE_C_COMPILER_ID STREQUAL "IntelLLVM") + # IntelLLVM for MSVC frontend variant needs the /DEF flag wrapped to be sent + # to the linker, which happens automatically when the DEF file is added + # to the sources. + add_library(example_dll_2 SHARED + example_dll_2.c + "${ModuleDefinition_SOURCE_DIR}/example_dll_2.def" + ) + set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS EXAMPLE_DLL_2) + set(example_dll_2 example_dll_2) +elseif(MSVC OR CMAKE_C_COMPILER_ID STREQUAL "Intel") add_library(example_dll_2 SHARED example_dll_2.c) set_property(TARGET example_dll_2 PROPERTY LINK_FLAGS /DEF:"${ModuleDefinition_SOURCE_DIR}/example_dll_2.def") -- cgit v0.12