diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2019-06-05 20:07:24 +0200 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2019-08-18 10:00:20 +0200 |
commit | 2e993995ce1445246e8a463eabc28b4c773a6fb8 (patch) | |
tree | 85200ff771c1c1249dc2bc75c98c16bc393d80c0 | |
parent | fa6485d075a2c5be8f5c492e14b1a7b88fbb4a23 (diff) | |
download | OSELAS.Toolchain-2e993995ce1445246e8a463eabc28b4c773a6fb8.tar.gz OSELAS.Toolchain-2e993995ce1445246e8a463eabc28b4c773a6fb8.tar.xz |
cross-clang: new package
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r-- | Kconfig | 4 | ||||
-rw-r--r-- | rules/cross-clang.in | 33 | ||||
-rw-r--r-- | rules/cross-clang.make | 101 |
3 files changed, 137 insertions, 1 deletions
@@ -64,6 +64,7 @@ source "workspace/rules/cross-elf2flt.in" source "workspace/rules/kernel-headers.in" source "workspace/rules/cross-gcc.in" source "workspace/rules/cross-llvm.in" +source "workspace/rules/cross-clang.in" source "workspace/rules/cross-gdb.in" source "workspace/rules/cross-toolchain.in" source "workspace/rules/host-fake-makeinfo.in" @@ -114,7 +115,8 @@ config PREFIX_JAVA config PREFIX_TCID string - default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-glibc-${PTXCONF_GLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_GLIBC + default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-glibc-${PTXCONF_GLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_GLIBC && !CROSS_CLANG + default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-clang-${PTXCONF_CROSS_CLANG_VERSION}-glibc-${PTXCONF_GLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_GLIBC && CROSS_CLANG default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-uclibc-${PTXCONF_UCLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_UCLIBC default "gcc-${PTXCONF_CROSS_GCC_VERSION}-newlib-${PTXCONF_NEWLIB_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}" if LIBC_NEWLIB default "gcc-${PTXCONF_CROSS_GCC_VERSION}-libc-${PTXCONF_AVRLIB_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}" if LIBC_AVR diff --git a/rules/cross-clang.in b/rules/cross-clang.in new file mode 100644 index 0000000..a272018 --- /dev/null +++ b/rules/cross-clang.in @@ -0,0 +1,33 @@ +menuconfig CROSS_CLANG + tristate + select HOST_CMAKE + select CROSS_LLVM + prompt "clang " + help + Clang project is a C, C++, Objective C and Objective C++ + front-end for the LLVM compiler. Its goal is to offer a + replacement to the GNU Compiler Collection (GCC). + +if CROSS_CLANG + +config CROSS_CLANG_VERSION + string + prompt "clang version" + default "${PTXCONF_CROSS_LLVM_VERSION}" + help + Specify the version of clang here. + The default ${PTXCONF_CROSS_LLVM_VERSION} is usually correct. + +config CROSS_CLANG_MD5 + string + prompt "clang source md5sum" + +config CROSS_CLANG_LICENSE + string + prompt "clang license" + +config CROSS_CLANG_LICENSE_FILES + string + prompt "clang license files" + +endif diff --git a/rules/cross-clang.make b/rules/cross-clang.make new file mode 100644 index 0000000..2ff45e0 --- /dev/null +++ b/rules/cross-clang.make @@ -0,0 +1,101 @@ +# -*-makefile-*- +# +# Copyright (C) 2019 by Michael Olbrich <m.olbrich@pengutronix.de> +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +CROSS_PACKAGES-$(PTXCONF_CROSS_CLANG) += cross-clang + +# +# Paths and names +# +CROSS_CLANG_VERSION := $(call remove_quotes,$(PTXCONF_CROSS_CLANG_VERSION)) +CROSS_CLANG_MD5 := $(call remove_quotes,$(PTXCONF_CROSS_CLANG_MD5)) +CROSS_CLANG := cfe-$(CROSS_CLANG_VERSION) +CROSS_CLANG_SUFFIX := src.tar.xz +CROSS_CLANG_URL := https://releases.llvm.org/$(CROSS_CLANG_VERSION)/$(CROSS_CLANG).$(CROSS_CLANG_SUFFIX) +CROSS_CLANG_SOURCE := $(SRCDIR)/$(CROSS_CLANG).$(CROSS_CLANG_SUFFIX) +CROSS_CLANG_DIR := $(CROSS_BUILDDIR)/$(CROSS_CLANG) +CROSS_CLANG_LICENSE := $(call remove_quotes,$(PTXCONF_CROSS_CLANG_LICENSE)) +CROSS_CLANG_LICENSE_FILES := $(call remove_quotes,$(PTXCONF_CROSS_CLANG_LICENSE_FILES)) + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +CROSS_CLANG_DEVPKG := NO + +# +# autoconf +# +CROSS_CLANG_CONF_TOOL := cmake +CROSS_CLANG_CONF_OPT = \ + $(HOST_CMAKE_OPT) \ + -G Ninja \ + -DCMAKE_INSTALL_PREFIX=$(PTXCONF_PREFIX_CROSS) \ + -DCMAKE_SKIP_INSTALL_RPATH=ON \ + -DCMAKE_SKIP_RPATH=ON \ + -DENABLE_LINKER_BUILD_ID=ON \ + -DLLVM_ENABLE_LIBXML2=OFF \ + -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \ + -DLLVM_CONFIG=$(CROSS_LLVM_DIR)-build/bin/llvm-config + +CROSS_CLANG_LDFLAGS := \ + -Wl,-rpath,$$ORIGIN/../lib + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +CROSS_CLANG_MAKE_ENV := \ + DESTDIR=$(PTXCONF_DESTDIR) + +CROSS_CLANG_CROSS_TOOLS := \ + clang \ + clang++ \ + clang-cpp + +CROSS_CLANG_TARGET_EXTRA := \ + --target=$(PTXCONF_GNU_TARGET) \ + $(filter-out --%, \ + $(subst --with-arch,-march, \ + $(subst --with-cpu,-mcpu, \ + $(subst --with-float,-mfloat-abi, \ + $(subst --with-fpu,-mfpu, \ + $(subst --with-fpmath,-mfpmath, \ + $(subst --with-mode=,-m, \ + $(subst --with-tune,-mtune, \ + $(PTXCONF_CROSS_GCC_CONFIG_EXTRA))))))))) + +define ptx/cross-clang-wrapper-impl +rm -f '$(2)' +echo '#!/bin/sh' > '$(2)' +echo 'd="$$(dirname $$(readlink -f "$${0}"))"' >> '$(2)' +echo '. "$$d/.$(PTXCONF_GNU_TARGET).flags"' >> '$(2)' +echo 'exec "$$d/$(1)" $${flags} \ + --sysroot="$$(dirname "$$d")/sysroot-$(PTXCONF_GNU_TARGET)" "$$@"' \ + >> '$(2)' +chmod +x '$(2)' + +endef +define ptx/cross-clang-wrapper +$(call ptx/cross-clang-wrapper-impl,$(strip $(1)),$(strip \ + $(PTXCONF_SYSROOT_CROSS)/bin/$(PTXCONF_GNU_TARGET)-$(tool))) +endef + +$(STATEDIR)/cross-clang.install: + @$(call targetinfo) + @$(call world/install, CROSS_CLANG) + @echo "flags='$(CROSS_CLANG_TARGET_EXTRA)'" > $(CROSS_CLANG_PKGDIR)/bin/.$(PTXCONF_GNU_TARGET).flags + @$(foreach tool,$(CROSS_CLANG_CROSS_TOOLS), \ + $(call ptx/cross-clang-wrapper,$(tool))) + @$(call touch) + +# vim: syntax=make |