[PATCH] D75068: libclang: Add static build support for Windows

2020-04-27 Thread David Zarzycki via Phabricator via cfe-commits
davezarzycki added a comment.

In D75068#2004885 , @cristian.adam 
wrote:

> In D75068#2004072 , @davezarzycki 
> wrote:
>
> > Rather than wholly reverting this, I committed a fix: 
> > 665471907a5c072c6653a38c35f35e5d54cef220 
> > 
> >
> > The problem is that "NOT LIBCLANG_BUILD_STATIC" does not imply PIC, so 
> > there is no point in trying to build the SHARED version. Please let me know 
> > if I somehow missed something. Thanks!
>
>
> @thakis  has a use case at https://reviews.llvm.org/D74907 building a SHARED 
> libclang with `LLVM_ENABLE_PIC` set to `OFF`.
>
> Would the variant `if(LLVM_ENABLE_PIC OR (WIN32 AND NOT 
> LIBCLANG_BUILD_STATIC))`  work for the Fedora case?


Fedora is not WIN32, so sure.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-27 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

In D75068#2004072 , @davezarzycki 
wrote:

> Rather than wholly reverting this, I committed a fix: 
> 665471907a5c072c6653a38c35f35e5d54cef220 
> 
>
> The problem is that "NOT LIBCLANG_BUILD_STATIC" does not imply PIC, so there 
> is no point in trying to build the SHARED version. Please let me know if I 
> somehow missed something. Thanks!


@thakis  has a use case at https://reviews.llvm.org/D74907 building a SHARED 
libclang with `LLVM_ENABLE_PIC` set to `OFF`.

Would the variant `if(LLVM_ENABLE_PIC OR (WIN32 AND NOT 
LIBCLANG_BUILD_STATIC))`  work for the Fedora case?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-26 Thread David Zarzycki via Phabricator via cfe-commits
davezarzycki added a comment.

Rather than wholly reverting this, I committed a fix: 
665471907a5c072c6653a38c35f35e5d54cef220 


The problem is that "NOT LIBCLANG_BUILD_STATIC" does not imply PIC, so there is 
no point in trying to build the SHARED version. Please let me know if I somehow 
missed something. Thanks!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-25 Thread David Zarzycki via Phabricator via cfe-commits
davezarzycki added a comment.

This breaks building libclang on Fedora 32 with clang 10.0 and lld 10.0. Do you 
mind if I revert this tomorrow if a quick fix cannot be found? Here is the 
relevant diagnostics:

FAILED: lib64/libclang.so.11
: && /usr/bin/clang++ -fPIC -Werror=switch -stdlib=libc++ 
-fvisibility-inlines-hidden -Werror=date-time 
-Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter 
-Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic 
-Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default 
-Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor 
-Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections 
-fno-common -Woverloaded-virtual -Wno-nested-anon-types -O2 -DNDEBUG  
-stdlib=libc++ -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=lld -Wl,--color-diagnostics 
  -Wl,-O3 -Wl,--gc-sections  
-Wl,--version-script,"/tmp/_update_lc/r/tools/clang/tools/libclang/libclang.exports"
 -shared -Wl,-soname,libclang.so.11git -o lib64/libclang.so.11 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/ARCMigrate.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/BuildSystem.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndex.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexCXX.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexCodeCompletion.cpp.o
 tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexDiagnostic.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexHigh.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexInclusionStack.cpp.o
 tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexUSRs.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndexer.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXComment.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXCursor.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXIndexDataConsumer.cpp.o
 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXCompilationDatabase.cpp.o
 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXLoadedDiagnostic.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXSourceLocation.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXStoredDiagnostic.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXString.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CXType.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/Indexing.cpp.o 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/FatalErrorHandler.cpp.o  
-Wl,-rpath,"\$ORIGIN/../lib64"  lib64/libclangAST.a  lib64/libclangBasic.a  
lib64/libclangDriver.a  lib64/libclangFrontend.a  lib64/libclangIndex.a  
lib64/libclangLex.a  lib64/libclangSema.a  lib64/libclangSerialization.a  
lib64/libclangTooling.a  lib64/libLLVMSupport.a  lib64/libclangARCMigrate.a  
-ldl  lib64/libLLVMX86CodeGen.a  lib64/libLLVMX86AsmParser.a  
lib64/libLLVMX86Desc.a  lib64/libLLVMX86Disassembler.a  lib64/libLLVMX86Info.a  
lib64/libLLVMAArch64CodeGen.a  lib64/libLLVMAArch64AsmParser.a  
lib64/libLLVMAArch64Desc.a  lib64/libLLVMAArch64Disassembler.a  
lib64/libLLVMAArch64Info.a  lib64/libLLVMAArch64Utils.a  
lib64/libLLVMPowerPCCodeGen.a  lib64/libLLVMPowerPCAsmParser.a  
lib64/libLLVMPowerPCDesc.a  lib64/libLLVMPowerPCDisassembler.a  
lib64/libLLVMPowerPCInfo.a  lib64/libLLVMRISCVCodeGen.a  
lib64/libLLVMRISCVAsmParser.a  lib64/libLLVMRISCVDesc.a  
lib64/libLLVMRISCVDisassembler.a  lib64/libLLVMRISCVInfo.a  
lib64/libLLVMRISCVUtils.a  lib64/libLLVMCore.a  lib64/libLLVMSupport.a  
lib64/libclangFormat.a  lib64/libclangToolingInclusions.a  
lib64/libclangToolingCore.a  lib64/libclangFrontend.a  lib64/libclangDriver.a  
lib64/libLLVMOption.a  lib64/libclangParse.a  lib64/libclangSerialization.a  
lib64/libclangSema.a  lib64/libclangEdit.a  lib64/libclangRewrite.a  
lib64/libclangAnalysis.a  lib64/libclangASTMatchers.a  lib64/libclangAST.a  
lib64/libclangLex.a  lib64/libclangBasic.a  lib64/libLLVMFrontendOpenMP.a  
lib64/libLLVMCFGuard.a  lib64/libLLVMAArch64Desc.a  lib64/libLLVMAArch64Info.a  
lib64/libLLVMAArch64Utils.a  lib64/libLLVMAsmPrinter.a  
lib64/libLLVMDebugInfoDWARF.a  lib64/libLLVMGlobalISel.a  
lib64/libLLVMSelectionDAG.a  lib64/libLLVMCodeGen.a  lib64/libLLVMScalarOpts.a  
lib64/libLLVMAggressiveInstCombine.a  lib64/libLLVMInstCombine.a  
lib64/libLLVMBitWriter.a  lib64/libLLVMTransformUtils.a  lib64/libLLVMTarget.a  
lib64/libLLVMAnalysis.a  lib64/libLLVMProfileData.a  lib64/libLLVMObject.a  
lib64/libLLVMBitReader.a  lib64/libLLVMCore.a  lib64/libLLVMRemarks.a  
lib64/libLLVMBitstreamReader.a  lib64/libLLVMTextAPI.a  lib64/libLLVMMCParser.a 
 lib64/libLLVMMCDisassembler.a  lib64/libLLVMMC.a  lib64/libLLVMBinaryFormat.a  
lib64/libLLVMDebugInfoCodeView.a  lib64/libLLVMDebugInfoMSF.a  
lib64/libLLVMSupport.a  -lz  -lrt  -ldl  -ltinfo  -lpthread  -lm  
/usr/lib64/libz3.so  lib64/libLLVMDemangle.a && :

[PATCH] D75068: libclang: Add static build support for Windows

2020-04-25 Thread Martin Storsjö via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6fb80d9383e4: libclang: Add static build support for Windows 
(authored by cristian.adam, committed by mstorsjo).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068

Files:
  clang/include/clang-c/Platform.h
  clang/tools/libclang/CMakeLists.txt


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -77,14 +77,18 @@
   set(LLVM_EXPORTED_SYMBOL_FILE)
 endif()
 
-if(LLVM_ENABLE_PIC OR WIN32)
+if(LLVM_ENABLE_PIC OR NOT LIBCLANG_BUILD_STATIC)
   set(ENABLE_SHARED SHARED)
 endif()
 
-if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
+if(NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC)
   set(ENABLE_STATIC STATIC)
 endif()
 
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+  unset(ENABLE_STATIC)
+endif()
+
 if(WIN32)
   set(output_name "libclang")
 else()
@@ -113,6 +117,14 @@
   Support
   )
 
+if(ENABLE_STATIC)
+  foreach(name libclang obj.libclang libclang_static)
+if (TARGET ${name})
+  target_compile_definitions(${name} PUBLIC CINDEX_NO_EXPORTS)
+endif()
+  endforeach()
+endif()
+
 if(ENABLE_SHARED)
   if(WIN32)
 set_target_properties(libclang
Index: clang/include/clang-c/Platform.h
===
--- clang/include/clang-c/Platform.h
+++ clang/include/clang-c/Platform.h
@@ -18,14 +18,23 @@
 
 LLVM_CLANG_C_EXTERN_C_BEGIN
 
-/* MSVC DLL import/export. */
-#ifdef _MSC_VER
-  #ifdef _CINDEX_LIB_
-#define CINDEX_LINKAGE __declspec(dllexport)
-  #else
-#define CINDEX_LINKAGE __declspec(dllimport)
+/* Windows DLL import/export. */
+#ifndef CINDEX_NO_EXPORTS
+  #define CINDEX_EXPORTS
+#endif
+#ifdef _WIN32
+  #ifdef CINDEX_EXPORTS
+#ifdef _CINDEX_LIB_
+  #define CINDEX_LINKAGE __declspec(dllexport)
+#else
+  #define CINDEX_LINKAGE __declspec(dllimport)
+#endif
   #endif
-#else
+#elif defined(CINDEX_EXPORTS) && defined(__GNUC__)
+  #define CINDEX_LINKAGE __attribute__((visibility("default")))
+#endif
+
+#ifndef CINDEX_LINKAGE
   #define CINDEX_LINKAGE
 #endif
 


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -77,14 +77,18 @@
   set(LLVM_EXPORTED_SYMBOL_FILE)
 endif()
 
-if(LLVM_ENABLE_PIC OR WIN32)
+if(LLVM_ENABLE_PIC OR NOT LIBCLANG_BUILD_STATIC)
   set(ENABLE_SHARED SHARED)
 endif()
 
-if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
+if(NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC)
   set(ENABLE_STATIC STATIC)
 endif()
 
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+  unset(ENABLE_STATIC)
+endif()
+
 if(WIN32)
   set(output_name "libclang")
 else()
@@ -113,6 +117,14 @@
   Support
   )
 
+if(ENABLE_STATIC)
+  foreach(name libclang obj.libclang libclang_static)
+if (TARGET ${name})
+  target_compile_definitions(${name} PUBLIC CINDEX_NO_EXPORTS)
+endif()
+  endforeach()
+endif()
+
 if(ENABLE_SHARED)
   if(WIN32)
 set_target_properties(libclang
Index: clang/include/clang-c/Platform.h
===
--- clang/include/clang-c/Platform.h
+++ clang/include/clang-c/Platform.h
@@ -18,14 +18,23 @@
 
 LLVM_CLANG_C_EXTERN_C_BEGIN
 
-/* MSVC DLL import/export. */
-#ifdef _MSC_VER
-  #ifdef _CINDEX_LIB_
-#define CINDEX_LINKAGE __declspec(dllexport)
-  #else
-#define CINDEX_LINKAGE __declspec(dllimport)
+/* Windows DLL import/export. */
+#ifndef CINDEX_NO_EXPORTS
+  #define CINDEX_EXPORTS
+#endif
+#ifdef _WIN32
+  #ifdef CINDEX_EXPORTS
+#ifdef _CINDEX_LIB_
+  #define CINDEX_LINKAGE __declspec(dllexport)
+#else
+  #define CINDEX_LINKAGE __declspec(dllimport)
+#endif
   #endif
-#else
+#elif defined(CINDEX_EXPORTS) && defined(__GNUC__)
+  #define CINDEX_LINKAGE __attribute__((visibility("default")))
+#endif
+
+#ifndef CINDEX_LINKAGE
   #define CINDEX_LINKAGE
 #endif
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-24 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam marked an inline comment as done.
cristian.adam added a comment.

@mstorsjo can you merge (again) this on my behalf? Thank you in advance!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-23 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam marked an inline comment as done.
cristian.adam added a comment.

Since I do not have commit rights, I require help to get this merged.




Comment at: clang/tools/libclang/CMakeLists.txt:88
 
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+  unset(ENABLE_STATIC)

rnk wrote:
> Essentially, this is the fix: don't try to build both libclang.lib for static 
> linking and libclang.dll (and implicitly libclang.lib) on Windows. Is that 
> accurate?
Correct. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-23 Thread Reid Kleckner via Phabricator via cfe-commits
rnk accepted this revision.
rnk added a comment.
This revision is now accepted and ready to land.

lgtm, assuming my understanding is correct.




Comment at: clang/tools/libclang/CMakeLists.txt:88
 
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+  unset(ENABLE_STATIC)

Essentially, this is the fix: don't try to build both libclang.lib for static 
linking and libclang.dll (and implicitly libclang.lib) on Windows. Is that 
accurate?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-20 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

@thakis  ping?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-04-06 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

ping


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-03-30 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

Ping


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-03-23 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

Ping.

I find it a bit uncool to revert commits and then be away for a month.

I guess it's my fault for not making the patch perfect in the first place.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-03-18 Thread Martin Storsjö via Phabricator via cfe-commits
mstorsjo added a comment.

@thakis?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-03-16 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

Ping.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-03-09 Thread Martin Storsjö via Phabricator via cfe-commits
mstorsjo added a comment.

@thakis?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-03-09 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

ping?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-02-27 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

ping?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-02-25 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam added a comment.

I've tested this patch with:

  -D LIBCLANG_BUILD_STATIC=OFF
  -D LLVM_ENABLE_PIC=ON

All green https://github.com/cristianadam/llvm-project/actions/runs/44839699

Then:

  -D LIBCLANG_BUILD_STATIC=ON
  -D LLVM_ENABLE_PIC=OFF

All green https://github.com/cristianadam/llvm-project/actions/runs/44755935

And lastly:

  -D LIBCLANG_BUILD_STATIC=OFF
  -D LLVM_ENABLE_PIC=OFF

Which builds on Windows and macOS, and fails on Linux as expected 
https://github.com/cristianadam/llvm-project/actions/runs/44423211

The expected Linux error is:

  /usr/bin/ld: lib/libclangBasic.a(Stack.cpp.o): relocation R_X86_64_TPOFF32 
against `_ZL13BottomOfStack' can not be used when making a shared object; 
recompile with -fPIC
  /usr/bin/ld: lib/libLLVMSupport.a(PrettyStackTrace.cpp.o): relocation 
R_X86_64_TPOFF32 against `_ZL20PrettyStackTraceHead' can not be used when 
making a shared object; recompile with -fPIC
  /usr/bin/ld: lib/libLLVMSupport.a(TimeProfiler.cpp.o): relocation 
R_X86_64_TPOFF32 against `_ZN12_GLOBAL__N_125TimeTraceProfilerInstanceE' can 
not be used when making a shared object; recompile with -fPIC
  /usr/bin/ld: 
tools/clang/tools/libclang/CMakeFiles/obj.libclang.dir/CIndex.cpp.o: relocation 
R_X86_64_PC32 against symbol `clang_getCursorLocation' can not be used when 
making a shared object; recompile with -fPIC
  /usr/bin/ld: final link failed: Bad value

From my point of view it passes all configurations. What do you think?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75068/new/

https://reviews.llvm.org/D75068



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D75068: libclang: Add static build support for Windows

2020-02-24 Thread Cristian Adam via Phabricator via cfe-commits
cristian.adam created this revision.
cristian.adam added reviewers: yvvan, thakis, mstorsjo.
Herald added subscribers: cfe-commits, mgorny.
Herald added a project: clang.

This patch is a squash for:

https://reviews.llvm.org/D74564
https://reviews.llvm.org/D74907

And a fix for the issue that got both changes reverted. The case on Windows 
when both STATIC and SHARED options were generated, which on on Windows is not 
possible.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D75068

Files:
  clang/include/clang-c/Platform.h
  clang/tools/libclang/CMakeLists.txt


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -77,14 +77,18 @@
   set(LLVM_EXPORTED_SYMBOL_FILE)
 endif()
 
-if(LLVM_ENABLE_PIC OR WIN32)
+if(LLVM_ENABLE_PIC OR NOT LIBCLANG_BUILD_STATIC)
   set(ENABLE_SHARED SHARED)
 endif()
 
-if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
+if(NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC)
   set(ENABLE_STATIC STATIC)
 endif()
 
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+  unset(ENABLE_STATIC)
+endif()
+
 if(WIN32)
   set(output_name "libclang")
 else()
@@ -113,6 +117,14 @@
   Support
   )
 
+if(ENABLE_STATIC)
+  foreach(name libclang obj.libclang libclang_static)
+if (TARGET ${name})
+  target_compile_definitions(${name} PUBLIC CINDEX_NO_EXPORTS)
+endif()
+  endforeach()
+endif()
+
 if(ENABLE_SHARED)
   if(WIN32)
 set_target_properties(libclang
Index: clang/include/clang-c/Platform.h
===
--- clang/include/clang-c/Platform.h
+++ clang/include/clang-c/Platform.h
@@ -18,14 +18,23 @@
 
 LLVM_CLANG_C_EXTERN_C_BEGIN
 
-/* MSVC DLL import/export. */
-#ifdef _MSC_VER
-  #ifdef _CINDEX_LIB_
-#define CINDEX_LINKAGE __declspec(dllexport)
-  #else
-#define CINDEX_LINKAGE __declspec(dllimport)
+/* Windows DLL import/export. */
+#ifndef CINDEX_NO_EXPORTS
+  #define CINDEX_EXPORTS
+#endif
+#ifdef _WIN32
+  #ifdef CINDEX_EXPORTS
+#ifdef _CINDEX_LIB_
+  #define CINDEX_LINKAGE __declspec(dllexport)
+#else
+  #define CINDEX_LINKAGE __declspec(dllimport)
+#endif
   #endif
-#else
+#elif defined(CINDEX_EXPORTS) && defined(__GNUC__)
+  #define CINDEX_LINKAGE __attribute__((visibility("default")))
+#endif
+
+#ifndef CINDEX_LINKAGE
   #define CINDEX_LINKAGE
 #endif
 


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -77,14 +77,18 @@
   set(LLVM_EXPORTED_SYMBOL_FILE)
 endif()
 
-if(LLVM_ENABLE_PIC OR WIN32)
+if(LLVM_ENABLE_PIC OR NOT LIBCLANG_BUILD_STATIC)
   set(ENABLE_SHARED SHARED)
 endif()
 
-if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
+if(NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC)
   set(ENABLE_STATIC STATIC)
 endif()
 
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+  unset(ENABLE_STATIC)
+endif()
+
 if(WIN32)
   set(output_name "libclang")
 else()
@@ -113,6 +117,14 @@
   Support
   )
 
+if(ENABLE_STATIC)
+  foreach(name libclang obj.libclang libclang_static)
+if (TARGET ${name})
+  target_compile_definitions(${name} PUBLIC CINDEX_NO_EXPORTS)
+endif()
+  endforeach()
+endif()
+
 if(ENABLE_SHARED)
   if(WIN32)
 set_target_properties(libclang
Index: clang/include/clang-c/Platform.h
===
--- clang/include/clang-c/Platform.h
+++ clang/include/clang-c/Platform.h
@@ -18,14 +18,23 @@
 
 LLVM_CLANG_C_EXTERN_C_BEGIN
 
-/* MSVC DLL import/export. */
-#ifdef _MSC_VER
-  #ifdef _CINDEX_LIB_
-#define CINDEX_LINKAGE __declspec(dllexport)
-  #else
-#define CINDEX_LINKAGE __declspec(dllimport)
+/* Windows DLL import/export. */
+#ifndef CINDEX_NO_EXPORTS
+  #define CINDEX_EXPORTS
+#endif
+#ifdef _WIN32
+  #ifdef CINDEX_EXPORTS
+#ifdef _CINDEX_LIB_
+  #define CINDEX_LINKAGE __declspec(dllexport)
+#else
+  #define CINDEX_LINKAGE __declspec(dllimport)
+#endif
   #endif
-#else
+#elif defined(CINDEX_EXPORTS) && defined(__GNUC__)
+  #define CINDEX_LINKAGE __attribute__((visibility("default")))
+#endif
+
+#ifndef CINDEX_LINKAGE
   #define CINDEX_LINKAGE
 #endif
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits