Mateusz =?utf-8?q?Mikuła?= <o...@mateuszmikula.dev>, Mateusz =?utf-8?q?Mikuła?= <o...@mateuszmikula.dev>, Mateusz =?utf-8?q?Mikuła?= <o...@mateuszmikula.dev>, Mateusz =?utf-8?q?Mikuła?= <o...@mateuszmikula.dev> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/134...@github.com>
llvmbot wrote: <!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-llvm-support Author: Mateusz Mikuła (mati865) <details> <summary>Changes</summary> With these changes, LLVM and Clang become buildable for Cygwin. GCC config (using MSYS2 GCC): `CFLAGS="-D_GNU_SOURCE=1" CXXFLAGS="-D_GNU_SOURCE=1" CPPFLAGS="-D_GNU_SOURCE=1" cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-cygwin -DLLVM_HOST_TRIPLE=x86_64-pc-cygwin -DLLVM_TARGETS_TO_BUILD="AArch64;X86" -DLIBCLANG_BUILD_STATIC=ON ../llvm` `-D_GNU_SOURCE=1` is important because GCC on Cygwin, opposed to GCC on Linux, does not define it. Clang config (using https://github.com/msys2/MSYS2-packages/pull/5308): `CC=clang CXX=clang++ cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-cygwin -DLLVM_HOST_TRIPLE=x86_64-pc-cygwin -DLLVM_TARGETS_TO_BUILD="AArch64;X86" -DLIBCLANG_BUILD_STATIC=ON ../llvm` Split out from https://github.com/llvm/llvm-project/pull/134458 --- Full diff: https://github.com/llvm/llvm-project/pull/134494.diff 5 Files Affected: - (modified) clang/include/clang/Support/Compiler.h (+1-1) - (modified) clang/tools/CMakeLists.txt (+3-2) - (modified) clang/tools/libclang/CIndexer.cpp (-1) - (modified) clang/tools/libclang/CMakeLists.txt (+2-1) - (modified) llvm/lib/Support/Unix/Signals.inc (+1-1) ``````````diff diff --git a/clang/include/clang/Support/Compiler.h b/clang/include/clang/Support/Compiler.h index 5a74f8e3b6723..e1ae3eda4ccc2 100644 --- a/clang/include/clang/Support/Compiler.h +++ b/clang/include/clang/Support/Compiler.h @@ -50,7 +50,7 @@ #define CLANG_EXPORT_TEMPLATE #endif #elif defined(__ELF__) || defined(__MINGW32__) || defined(_AIX) || \ - defined(__MVS__) + defined(__MVS__) || defined(__CYGWIN__) #define CLANG_ABI LLVM_ATTRIBUTE_VISIBILITY_DEFAULT #define CLANG_TEMPLATE_ABI LLVM_ATTRIBUTE_VISIBILITY_DEFAULT #define CLANG_EXPORT_TEMPLATE diff --git a/clang/tools/CMakeLists.txt b/clang/tools/CMakeLists.txt index 9634eb12080c8..50e3d694236ac 100644 --- a/clang/tools/CMakeLists.txt +++ b/clang/tools/CMakeLists.txt @@ -26,9 +26,10 @@ endif() add_clang_subdirectory(c-index-test) add_clang_subdirectory(clang-refactor) -# For MinGW we only enable shared library if LLVM_LINK_LLVM_DYLIB=ON. +# For MinGW/Cygwin we only enable shared library if LLVM_LINK_LLVM_DYLIB=ON. # Without that option resulting library is too close to 2^16 DLL exports limit. -if(UNIX OR (MSVC AND LLVM_BUILD_LLVM_DYLIB_VIS) OR (MINGW AND LLVM_LINK_LLVM_DYLIB)) +if((UNIX AND NOT CYGWIN) OR (MSVC AND LLVM_BUILD_LLVM_DYLIB_VIS) OR + ((MINGW OR CYGWIN) AND LLVM_LINK_LLVM_DYLIB)) add_clang_subdirectory(clang-shlib) endif() diff --git a/clang/tools/libclang/CIndexer.cpp b/clang/tools/libclang/CIndexer.cpp index 12d9d418dea51..1b9d58bc439ad 100644 --- a/clang/tools/libclang/CIndexer.cpp +++ b/clang/tools/libclang/CIndexer.cpp @@ -29,7 +29,6 @@ #ifdef __CYGWIN__ #include <cygwin/version.h> #include <sys/cygwin.h> -#define _WIN32 1 #endif #ifdef _WIN32 diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt index 299c14660f3d4..37a939ffcada7 100644 --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -106,7 +106,8 @@ if (LLVM_EXPORTED_SYMBOL_FILE) DEPENDS ${LIBCLANG_VERSION_SCRIPT_FILE}) endif() -if(LLVM_ENABLE_PIC OR (WIN32 AND NOT LIBCLANG_BUILD_STATIC)) +if((NOT (WIN32 OR CYGWIN) AND LLVM_ENABLE_PIC) OR + ((WIN32 OR CYGWIN) AND NOT LIBCLANG_BUILD_STATIC)) set(ENABLE_SHARED SHARED) endif() diff --git a/llvm/lib/Support/Unix/Signals.inc b/llvm/lib/Support/Unix/Signals.inc index 30e5f40193974..230763e729520 100644 --- a/llvm/lib/Support/Unix/Signals.inc +++ b/llvm/lib/Support/Unix/Signals.inc @@ -847,7 +847,7 @@ void llvm::sys::PrintStackTrace(raw_ostream &OS, int Depth) { const char *name = strrchr(dlinfo.dli_fname, '/'); if (!name) - OS << format(" %-*s", width, dlinfo.dli_fname); + OS << format(" %-*s", width, (const char *)dlinfo.dli_fname); else OS << format(" %-*s", width, name + 1); `````````` </details> https://github.com/llvm/llvm-project/pull/134494 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits