diff options
Diffstat (limited to 'toolchain/llvm/compiler-rt/Makefile')
-rw-r--r-- | toolchain/llvm/compiler-rt/Makefile | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/toolchain/llvm/compiler-rt/Makefile b/toolchain/llvm/compiler-rt/Makefile new file mode 100644 index 0000000..e4a18ba --- /dev/null +++ b/toolchain/llvm/compiler-rt/Makefile @@ -0,0 +1,134 @@ +################################################################################ +# 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/ ?= +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)) + +SANCOMMON_EXTRA_CFLAGS := -fno-rtti + +# +# 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)) + +ASAN_EXTRA_CFLAGS := -fno-rtti + +# +# 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)) + +# +# 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)) + +# +# Common part +# +CC ?= gcc +CXX ?= g++ + +SANCOMMON_CFLAGS := -W -Wall -fPIC -fno-builtin -fno-exceptions +SANCOMMON_CFLAGS += -fomit-frame-pointer -funwind-tables +SANCOMMON_CFLAGS += -fno-stack-protector -fvisibility=hidden -g +# +# FIXME: remove this avec full merge of compiler-rt/llvm/clang-3.3. +# The copy of compiler-rt shipped with EmbToolkit was in the middle of +# compiler-rt-3.3 development. +# +SANCOMMON_CFLAGS += -DASAN_ALLOCATOR_VERSION=1 + +ARFLAGS := rvs + +override CFLAGS := $(CFLAGS) $(SANCOMMON_CFLAGS) +override CPPFLAGS := $(CPPFLAGS) -I$(rootsrc/)include -I$(rootsrc/)lib +override CXXFLAGS := $(CXXFLAGS) $(CFLAGS) + +define __lib_install + $(if $(SYSROOT), + mkdir -p $(SYSROOT)/usr + mkdir -p $(SYSROOT)/usr/$(LIBDIR) + cp lib$(SANCOMMON).a $(SYSROOT)/usr/$(LIBDIR) + cp lib$(ASAN).a $(SYSROOT)/usr/$(LIBDIR) + cp lib$(UBSAN).a $(SYSROOT)/usr/$(LIBDIR)) +endef + +all: lib$(SANCOMMON).a lib$(ASAN).a lib$(UBSAN).a + $(Q)true + +install: all + $(Q)$(__lib_install) + +lib$(SANCOMMON).a: EXTRA_CFLAGS = $(SANCOMMON_EXTRA_CFLAGS) +lib$(SANCOMMON).a: $(SANCOMMON_OBJS) + $(Q)$(AR) $(ARFLAGS) $@ $(SANCOMMON_OBJS) + +lib$(ASAN).a: EXTRA_CFLAGS = $(ASAN_EXTRA_CFLAGS) +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) $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c $< -o $@ + +%.o: %.cc + $(Q)$(CXX) $(CXXFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c $< -o $@ + +clean: + $(Q)rm -rf $(SANCOMMON_OBJS) $(ASAN_OBJS) $(TSAN_OBJS) $(UBSAN_OBJS) + $(Q)rm -rf lib$(SANCOMMON).a lib$(ASAN).a lib$(TSAN).a lib$(UBSAN).a |