forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-lang/tcc: fix building with clang
* fix building tcc with clang * allow using tcc as system compiler * update to EAPI 6 Gentoo-Bug: https://bugs.gentoo.org/502452 Package-Manager: portage-2.2.26
- Loading branch information
Showing
3 changed files
with
108 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Fixes the default linker options for portage | ||
# Upstream commit ba286136bf8e48c71ffd6c2fd9ce97e64a6eeeb1 | ||
|
||
diff --git a/libtcc.c b/libtcc.c | ||
index 127806f..dc78643 100644 | ||
--- a/libtcc.c | ||
+++ b/libtcc.c | ||
@@ -1560,6 +1560,10 @@ static int tcc_set_linker(TCCState *s, const char *option) | ||
} else | ||
goto err; | ||
|
||
+ } else if (link_option(option, "as-needed", &p)) { | ||
+ ignoring = 1; | ||
+ } else if (link_option(option, "O", &p)) { | ||
+ ignoring = 1; | ||
} else if (link_option(option, "rpath=", &p)) { | ||
s->rpath = copy_linker_arg(p); | ||
} else if (link_option(option, "section-alignment=", &p)) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Fix compiling tcc with clang. Upstream commit 73ac39c317a20accaf3b25ba833deee0c2e2849f | ||
# Gentoo bug #502452 | ||
diff --git a/lib/libtcc1.c b/lib/libtcc1.c | ||
index cf9babf..b46fb5d 100644 | ||
--- a/lib/libtcc1.c | ||
+++ b/lib/libtcc1.c | ||
@@ -647,6 +647,11 @@ struct __va_list_struct { | ||
char *reg_save_area; | ||
}; | ||
|
||
+#undef __va_start | ||
+#undef __va_arg | ||
+#undef __va_copy | ||
+#undef __va_end | ||
+ | ||
void *__va_start(void *fp) | ||
{ | ||
struct __va_list_struct *ap = |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Copyright 1999-2016 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
EAPI="6" | ||
|
||
inherit toolchain-funcs | ||
|
||
DESCRIPTION="A very small C compiler for ix86/amd64" | ||
HOMEPAGE="http://bellard.org/tcc/" | ||
SRC_URI="http://download.savannah.gnu.org/releases/tinycc/${P}.tar.bz2" | ||
|
||
LICENSE="LGPL-2.1" | ||
SLOT="0" | ||
KEYWORDS="~amd64 ~x86 ~amd64-linux" | ||
|
||
DEPEND="dev-lang/perl" # doc generation | ||
# Both tendra and tinycc install /usr/bin/tcc | ||
RDEPEND="!dev-lang/tendra" | ||
IUSE="test" | ||
|
||
src_prepare() { | ||
# Don't strip | ||
sed -i -e 's|$(INSTALL) -s|$(INSTALL)|' Makefile || die | ||
|
||
# Fix examples | ||
sed -i -e '1{ | ||
i#! /usr/bin/tcc -run | ||
/^#!/d | ||
}' examples/ex*.c || die | ||
sed -i -e '1s/$/ -lX11/' examples/ex4.c || die | ||
|
||
# Fix texi2html invocation | ||
sed -i -e 's/-number//' Makefile || die | ||
sed -i -e 's/--sections//' Makefile || die | ||
|
||
# Fix compiling tcc with clang | ||
eapply "${FILESDIR}"/clang.patch | ||
|
||
# Allows using tcc as the system compiler for Gentoo | ||
eapply "${FILESDIR}"/linker.patch | ||
|
||
eapply_user | ||
} | ||
|
||
src_configure() { | ||
use test && unset CFLAGS LDFLAGS # Tests run with CC=tcc etc, they will fail hard otherwise | ||
# better fixes welcome, it feels wrong to hack the env like this | ||
# not autotools, so call configure directly | ||
./configure --cc="$(tc-getCC)" \ | ||
--prefix="${EPREFIX}/usr" \ | ||
--libdir="${EPREFIX}/usr/$(get_libdir)" \ | ||
--docdir="${EPREFIX}/usr/share/doc/${PF}" | ||
} | ||
|
||
src_compile() { | ||
emake AR="$(tc-getAR)" | ||
} | ||
|
||
src_install() { | ||
emake DESTDIR="${D}" install | ||
|
||
dodoc Changelog README TODO VERSION | ||
#dohtml tcc-doc.html | ||
exeinto /usr/share/doc/${PF}/examples | ||
doexe examples/ex*.c | ||
} | ||
|
||
src_test() { | ||
# this is using tcc bits that don't know as-needed etc. | ||
TCCFLAGS="" emake test | ||
} |