diff --git a/CMakeLists.txt b/CMakeLists.txt index 16ee4d5d..163e92a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1370,7 +1370,7 @@ else() target_compile_definitions(liblzma PRIVATE HAVE_VISIBILITY=0) endif() -if(WIN32) +if(WIN32 OR CYGWIN) if(BUILD_SHARED_LIBS) # Add the Windows resource file for liblzma.dll. target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc) @@ -1382,8 +1382,12 @@ if(WIN32) # Export the public API symbols with __declspec(dllexport). target_compile_definitions(liblzma PRIVATE DLL_EXPORT) - if(NOT MSVC) - # Create a DEF file. The linker puts the ordinal numbers there + if(NOT MSVC AND NOT CYGWIN) + # Create a DEF file. The Autotools-based build creates a DEF file + # under Cygwin & MSYS2 too but it almost certainly is a useless + # file in that context, so the CMake build omits it. + # + # The linker puts the ordinal numbers in the DEF file # too so the output from the linker isn't our final file. target_link_options(liblzma PRIVATE "-Wl,--output-def,liblzma.def.in") @@ -1848,7 +1852,7 @@ if(HAVE_DECODERS) target_link_libraries("${XZDEC}" PRIVATE liblzma libgnu) - if(WIN32) + if(WIN32 OR CYGWIN) # Add the Windows resource file for xzdec.exe or lzmadec.exe. target_sources("${XZDEC}" PRIVATE "src/xzdec/${XZDEC}_w32res.rc") set_source_files_properties( @@ -1917,7 +1921,7 @@ if(XZ_TOOL_LZMAINFO AND HAVE_DECODERS) target_link_libraries(lzmainfo PRIVATE liblzma libgnu) - if(WIN32) + if(WIN32 OR CYGWIN) # Add the Windows resource file for lzmainfo.exe. target_sources(lzmainfo PRIVATE src/lzmainfo/lzmainfo_w32res.rc) set_source_files_properties(src/lzmainfo/lzmainfo_w32res.rc PROPERTIES @@ -2030,7 +2034,7 @@ if(XZ_TOOL_XZ) this many MiB of RAM if xz cannot determine the amount at runtime") target_compile_definitions(xz PRIVATE "ASSUME_RAM=${XZ_ASSUME_RAM}") - if(WIN32) + if(WIN32 OR CYGWIN) # Add the Windows resource file for xz.exe. target_sources(xz PRIVATE src/xz/xz_w32res.rc) set_source_files_properties(src/xz/xz_w32res.rc PROPERTIES