summaryrefslogtreecommitdiff
path: root/mk/llvm
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2013-02-24 23:06:28 +0100
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2013-02-24 23:06:28 +0100
commite76b7675f1b15a0a714206b1c6b84c146728d022 (patch)
tree477d8439c66c40363f6a2c46642293d05fa1fd66 /mk/llvm
parente9b90eabab5739fb6fb997fad7e43a7e6d7801c4 (diff)
downloadembtoolkit-e76b7675f1b15a0a714206b1c6b84c146728d022.tar.gz
embtoolkit-e76b7675f1b15a0a714206b1c6b84c146728d022.tar.bz2
embtoolkit-e76b7675f1b15a0a714206b1c6b84c146728d022.tar.xz
Toolchain: llvm/compiler-rt: initial build infrastructure
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
Diffstat (limited to 'mk/llvm')
-rw-r--r--mk/llvm/compiler-rt/Makefile113
-rw-r--r--mk/llvm/compiler-rt/compiler-rt.mk24
2 files changed, 132 insertions, 5 deletions
diff --git a/mk/llvm/compiler-rt/Makefile b/mk/llvm/compiler-rt/Makefile
new file mode 100644
index 0000000..3395755
--- /dev/null
+++ b/mk/llvm/compiler-rt/Makefile
@@ -0,0 +1,113 @@
+################################################################################
+# Copyright 2013 Abdoulaye Walsimou GAYE <awg@embtoolkit.org>. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
+# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+################################################################################
+
+rootsrc ?= $(shell pwd)
+ARCH_NAME :=
+LIBDIR ?= lib
+
+#
+# Sanitizer common part
+#
+SANCOMMON := sanitizer_common
+SANCOMMON_CXXSRCS := $(wildcard $(rootsrc)/lib/sanitizer_common/*.cc)
+SANCOMMON_CXXSRCS += $(wildcard $(rootsrc)/lib/interception/*.cc)
+SANCOMMON_CSRCS := $(wildcard $(rootsrc)/lib/sanitizer_common/*.c)
+SANCOMMON_CSRCS += $(wildcard $(rootsrc)/lib/interception/*.c)
+SANCOMMON_OBJS := $(patsubst %.cc,%.o,$(SANCOMMON_CXXSRCS))
+SANCOMMON_OBJS += $(patsubst %.c,%.o,$(SANCOMMON_CSRCS))
+
+#
+# Address sanitizer part
+#
+ASAN := asan
+ASAN_CXXSRCS := $(wildcard $(rootsrc)/lib/asan/*.cc)
+ASAN_CSRCS := $(wildcard $(rootsrc)/lib/asan/*.c)
+ASAN_OBJS := $(patsubst %.cc,%.o,$(ASAN_CXXSRCS))
+ASAN_OBJS += $(patsubst %.c,%.o,$(ASAN_CSRCS))
+CLANG_ASAN := clang_rt.asan-$(ARCH_NAME)
+
+#
+# Thread sanitizer part
+#
+TSAN := tsan
+TSAN_CXXSRCS := $(wildcard $(rootsrc)/lib/tsan/rtl/*.cc)
+TSAN_CSRCS := $(wildcard $(rootsrc)/lib/tsan/rtl/*.c)
+TSAN_OBJS := $(patsubst %.cc,%.o,$(TSAN_CXXSRCS))
+TSAN_OBJS += $(patsubst %.c,%.o,$(TSAN_CSRCS))
+CLANG_TSAN := clang_rt.tsan-$(ARCH_NAME)
+
+#
+# Undefined behavior sanitizer part
+#
+UBSAN := ubsan
+UBSAN_CXXSRCS := $(wildcard $(rootsrc)/lib/ubsan/*.cc)
+UBSAN_CSRCS := $(wildcard $(rootsrc)/lib/ubsan/*.c)
+UBSAN_OBJS := $(patsubst %.cc,%.o,$(UBSAN_CXXSRCS))
+UBSAN_OBJS += $(patsubst %.c,%.o,$(UBSAN_CSRCS))
+CLANG_UBSAN := clang_rt.ubsan-$(ARCH_NAME)
+
+CC ?= gcc
+CXX ?= g++
+
+ARFLAGS := rvs
+
+override CFLAGS := -W -Wall -fno-exceptions $(CFLAGS) -I$(rootsrc)/include -I$(rootsrc)/lib
+override CXXFLAGS := $(CXXFLAGS) $(CFLAGS)
+
+define __lib_install
+ $(if $(SYSROOT),
+ mkdir -p $(SYSROOT)/usr
+ mkdir -p $(SYSROOT)/usr/$(LIBDIR))
+endef
+
+all: lib$(SANCOMMON).a lib$(ASAN).a lib$(UBSAN).a
+ $(Q)true
+
+install: all
+ $(Q)true
+
+lib$(SANCOMMON).a: $(SANCOMMON_OBJS)
+ $(Q)$(AR) $(ARFLAGS) $@ $(SANCOMMON_OBJS)
+
+lib$(ASAN).a: $(ASAN_OBJS)
+ $(Q)$(AR) $(ARFLAGS) $@ $(ASAN_OBJS)
+
+lib$(TSAN).a: $(TSAN_OBJS)
+ $(Q)$(AR) $(ARFLAGS) $@ $(TSAN_OBJS)
+
+lib$(UBSAN).a: $(UBSAN_OBJS)
+ $(Q)$(AR) $(ARFLAGS) $@ $(UBSAN_OBJS)
+
+%.o: %.c
+ $(Q)$(CC) -fno-builtin -fPIC -DPIC $(CFLAGS) -c $< -o $@
+
+%.o: %.cc
+ $(Q)$(CXX) -fno-builtin -fPIC -DPIC $(CXXFLAGS) -c $< -o $@
+
+clean:
+ $(Q)rm -rf $(SANCOMMON_OBJS) $(ASAN_OBJS) $(TSAN_OBJS)
+ $(Q)rm -rf lib$(SANCOMMON).a lib$(ASAN).a lib$(TSAN).a lib$(UBSAN).a
+
diff --git a/mk/llvm/compiler-rt/compiler-rt.mk b/mk/llvm/compiler-rt/compiler-rt.mk
index 878965f..2e527a5 100644
--- a/mk/llvm/compiler-rt/compiler-rt.mk
+++ b/mk/llvm/compiler-rt/compiler-rt.mk
@@ -1,6 +1,6 @@
################################################################################
# Embtoolkit
-# Copyright(C) 2012 Abdoulaye Walsimou GAYE <awg@embtoolkit.org>.
+# Copyright(C) 2012-2013 Abdoulaye Walsimou GAYE <awg@embtoolkit.org>.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -29,11 +29,25 @@ COMPILER-RT_SITE := http://llvm.org/releases/$(COMPILER-RT_VERSION)
COMPILER-RT_GIT_SITE := http://llvm.org/git/compiler-rt.git
COMPILER-RT_PACKAGE := compiler-rt-$(COMPILER-RT_VERSION).src.tar.gz
COMPILER-RT_SRC_DIR := $(embtk_toolsb)/compiler-rt-$(COMPILER-RT_VERSION).src
-COMPILER-RT_BUILD_DIR := $(embtk_toolsb)/compiler-rt-build
+COMPILER-RT_BUILD_DIR := $(call __embtk_pkg_srcdir,compiler-rt)
-COMPILER-RT_CONFIGURE_OPTS :=
-COMPILER-RT_PREFIX := $(embtk_tools)
+COMPILER-RT_MAKE_OPTS := CC="$(TARGETCC)" CFLAGS="$(TARGET_CFLAGS)"
+COMPILER-RT_MAKE_OPTS += CXX="$(TARGETCXX)" LIBDIR="$(LIBDIR)"
+COMPILER-RT_MAKE_OPTS += AR=$(TARGETAR) RANLIB=$(TARGETRANLIB)
+COMPILER-RT_MAKE_OPTS += SYSROOT="$(embtk_sysroot)"
define embtk_install_compiler-rt
- $(call __embtk_install_pkg,compiler-rt)
+ $(call embtk_makeinstall_pkg,compiler-rt)
+endef
+
+define embtk_beforeinstall_compiler-rt
+ ln -sf $(EMBTK_ROOT)/mk/llvm/compiler-rt/Makefile \
+ $(COMPILER-RT_BUILD_DIR)/Makefile
+endef
+
+define embtk_cleanup_compiler-rt
+ if [ -e $(LIBCXXRT_BUILD_DIR)/Makefile ]; then \
+ $(MAKE) -C $(COMPILER-RT_BUILD_DIR) clean; \
+ fi
+ rm -rf $(COMPILER-RT_BUILD_DIR)/Makefile
endef