summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2019-06-05 20:07:24 +0200
committerMichael Olbrich <m.olbrich@pengutronix.de>2019-08-18 10:00:20 +0200
commit2e993995ce1445246e8a463eabc28b4c773a6fb8 (patch)
tree85200ff771c1c1249dc2bc75c98c16bc393d80c0
parentfa6485d075a2c5be8f5c492e14b1a7b88fbb4a23 (diff)
downloadOSELAS.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--Kconfig4
-rw-r--r--rules/cross-clang.in33
-rw-r--r--rules/cross-clang.make101
3 files changed, 137 insertions, 1 deletions
diff --git a/Kconfig b/Kconfig
index 238bc4c..5dcff3d 100644
--- a/Kconfig
+++ b/Kconfig
@@ -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