From 61b5ff5ab4e5848e5e98b811cf0accf5d3b8db22 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 8 Jun 2010 19:23:49 +0000 Subject: [PATCH] Teach the PrintFunctionNames example to be a proper module, so that Clang can load it as a plugin. Original fix by Troy D. Straszheim, which I extended with Darwin support. Fixes PR6801. llvm-svn: 105630 --- clang/CMakeLists.txt | 8 ++++++- .../PrintFunctionNames/CMakeLists.txt | 22 +++---------------- .../examples/clang-interpreter/CMakeLists.txt | 2 ++ clang/tools/libclang/CMakeLists.txt | 3 ++- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index 1be646dfd2e3..e366275af962 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -41,6 +41,10 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-common -Woverloaded-virtual -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings") endif () +if (APPLE) + set(CMAKE_MODULE_LINKER_FLAGS "-Wl,-flat_namespace -Wl,-undefined -Wl,suppress") +endif () + macro(add_clang_library name) set(srcs ${ARGN}) if(MSVC_IDE OR XCODE) @@ -54,7 +58,9 @@ macro(add_clang_library name) ../../include/clang${dir}/*.def) set(srcs ${srcs} ${headers}) endif(MSVC_IDE OR XCODE) - if (SHARED_LIBRARY) + if (MODULE) + set(libkind MODULE) + elseif (SHARED_LIBRARY) set(libkind SHARED) else() set(libkind) diff --git a/clang/examples/PrintFunctionNames/CMakeLists.txt b/clang/examples/PrintFunctionNames/CMakeLists.txt index 49dd22ad8d0d..5ea75db42e02 100644 --- a/clang/examples/PrintFunctionNames/CMakeLists.txt +++ b/clang/examples/PrintFunctionNames/CMakeLists.txt @@ -1,26 +1,10 @@ -set(SHARED_LIBRARY TRUE) +set(MODULE TRUE) set(LLVM_NO_RTTI 1) -set(LLVM_USED_LIBS - clangIndex - clangFrontend - clangDriver - clangSema - clangAnalysis - clangAST - clangParse - clangLex - clangBasic) - -set( LLVM_LINK_COMPONENTS - bitreader - mc - core - ) - add_clang_library(PrintFunctionNames PrintFunctionNames.cpp) set_target_properties(PrintFunctionNames PROPERTIES - LINKER_LANGUAGE CXX) + LINKER_LANGUAGE CXX + PREFIX "") diff --git a/clang/examples/clang-interpreter/CMakeLists.txt b/clang/examples/clang-interpreter/CMakeLists.txt index 0f63b5f5b91b..1aa9b2b59224 100644 --- a/clang/examples/clang-interpreter/CMakeLists.txt +++ b/clang/examples/clang-interpreter/CMakeLists.txt @@ -18,8 +18,10 @@ set(LLVM_LINK_COMPONENTS jit interpreter nativecodegen + asmparser bitreader bitwriter + codegen ipo selectiondag ) diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt index 62c973852dc1..562b17ef01be 100644 --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -3,8 +3,9 @@ set(SHARED_LIBRARY TRUE) set(LLVM_NO_RTTI 1) set(LLVM_USED_LIBS - clangFrontend + clangFrontend clangDriver + clangCodeGen clangSema clangAnalysis clangAST