diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2012-04-04 22:12:04 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2012-04-04 22:12:04 +0000 |
commit | d51e0a05b4aefc85c356c9bddd8a24efc77721d9 (patch) | |
tree | 476a60df9ac8e664a658e7915af993ed336f5399 /lib | |
parent | 062ed090ed6416fe639a2dcb2d51fbbeb2f1b579 (diff) |
Initial, very rough cut at a new CMake build system for compiler-rt.
Some high-level notes:
1) An explicit goal is to support building compiler-rt as a subproject
build, checked out into the projects/compiler-rt directory. There are
many other possible ways of building the code here, but this is
optimized for development on LLVM/Clang/compiler-rt, and incremental
trial and testing of the toolchain.
2) The current support is targeted at Linux. I would love to see this
generalized to other platforms, but for the sake of simplicity in
testing, I'm focusing here first.
Much of this patch was paired with Manuel, and I credit him with the
majority of the work here.
Some important caveats that I'll be working on in subsequent patches:
1) This uses the host compiler rather than using the just-built-clang.
2) Currently only x86 is supported.
3) Currently, none of the tests are built or run.
4) Uses CMake's builtin globbing which doesn't update correctly.
5) This is still turned off from LLVM's CMake build until these issues
are addressed
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@154060 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CMakeLists.txt | 28 | ||||
-rw-r--r-- | lib/asan/CMakeLists.txt | 12 |
2 files changed, 40 insertions, 0 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 000000000..433e0af71 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,28 @@ +# The top-level lib directory contains a large amount of C code which provides +# generic implementations of the core runtime library along with optimized +# architecture-specific code in various subdirectories. + +file(GLOB GENERIC_SOURCES . "*.c") + +# FIXME: We don't currently support building an atomic library, and as it must +# be a separate library from the runtime library, we need to remove its source +# code from the glob. +file(GLOB ATOMIC . "atomic.c") +list(REMOVE_ITEM GENERIC_SOURCES ${ATOMIC}) + +if(CAN_TARGET_X86_64) + file(GLOB X86_64_SOURCES . "*.c" "*.S") + add_library(clang_rt.x86_64 STATIC ${X86_64_SOURCES} ${GENERIC_SOURCES}) + set_target_properties(clang_rt.x86_64 PROPERTIES COMPILE_FLAGS "${TARGET_X86_64_CFLAGS}") +endif() +if(CAN_TARGET_I386) + file(GLOB I386_SOURCES . "*.c" "*.S") + add_library(clang_rt.i386 STATIC ${I386_SOURCES} ${GENERIC_SOURCES}) + set_target_properties(clang_rt.i386 PROPERTIES COMPILE_FLAGS "${TARGET_I386_CFLAGS}") +endif() + +# Also support building feature-based runtime libraries in their various +# subdircetories. +add_subdirectory(asan) + +# FIXME: Add support for the profile library. diff --git a/lib/asan/CMakeLists.txt b/lib/asan/CMakeLists.txt new file mode 100644 index 000000000..76bb1d8e2 --- /dev/null +++ b/lib/asan/CMakeLists.txt @@ -0,0 +1,12 @@ +# Build for the AddressSanitizer runtime support library. + +file(GLOB ASAN_SOURCES "*.cc") + +if(CAN_TARGET_X86_64) + add_library(clang_rt.asan-x86_64 STATIC ${ASAN_SOURCES}) + set_target_properties(clang_rt.asan-x86_64 PROPERTIES COMPILE_FLAGS "${TARGET_X86_64_CFLAGS}") +endif() +if(CAN_TARGET_I386) + add_library(clang_rt.asan-i386 STATIC ${ASAN_SOURCES}) + set_target_properties(clang_rt.asan-i386 PROPERTIES COMPILE_FLAGS "${TARGET_I386_CFLAGS}") +endif() |