diff options
author | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2013-02-24 23:06:28 +0100 |
---|---|---|
committer | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2013-02-24 23:06:28 +0100 |
commit | e76b7675f1b15a0a714206b1c6b84c146728d022 (patch) | |
tree | 477d8439c66c40363f6a2c46642293d05fa1fd66 /mk/llvm | |
parent | e9b90eabab5739fb6fb997fad7e43a7e6d7801c4 (diff) | |
download | embtoolkit-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/Makefile | 113 | ||||
-rw-r--r-- | mk/llvm/compiler-rt/compiler-rt.mk | 24 |
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 |