diff options
author | William R. Dieter <william.r.dieter@intel.com> | 2022-06-25 04:46:19 (GMT) |
---|---|---|
committer | William R. Dieter <william.r.dieter@intel.com> | 2022-08-01 23:34:49 (GMT) |
commit | 3640842df23de476506d1529caf1736052dbcb38 (patch) | |
tree | 7d25e7f5512177924e05fcc64404133f93476668 | |
parent | 5d5a7123034361b6cacff96d3ed20d2bb78c33cc (diff) | |
download | CMake-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.txt | 12 |
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") |