summaryrefslogtreecommitdiff
path: root/lib/CMakeLists.txt
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2012-04-04 22:12:04 +0000
committerChandler Carruth <chandlerc@gmail.com>2012-04-04 22:12:04 +0000
commitd51e0a05b4aefc85c356c9bddd8a24efc77721d9 (patch)
tree476a60df9ac8e664a658e7915af993ed336f5399 /lib/CMakeLists.txt
parent062ed090ed6416fe639a2dcb2d51fbbeb2f1b579 (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/CMakeLists.txt')
-rw-r--r--lib/CMakeLists.txt28
1 files changed, 28 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.