summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam R. Dieter <william.r.dieter@intel.com>2022-06-25 04:46:19 (GMT)
committerWilliam R. Dieter <william.r.dieter@intel.com>2022-08-01 23:34:49 (GMT)
commit3640842df23de476506d1529caf1736052dbcb38 (patch)
tree7d25e7f5512177924e05fcc64404133f93476668
parent5d5a7123034361b6cacff96d3ed20d2bb78c33cc (diff)
downloadCMake-3640842df23de476506d1529caf1736052dbcb38.zip
CMake-3640842df23de476506d1529caf1736052dbcb38.tar.gz
CMake-3640842df23de476506d1529caf1736052dbcb38.tar.bz2
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>
-rw-r--r--Tests/ModuleDefinition/CMakeLists.txt12
1 files changed, 11 insertions, 1 deletions
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")