Tatsh Apprentice
Joined: 22 Jul 2007 Posts: 187
|
Posted: Sun Oct 23, 2011 11:51 pm Post subject: [SOLVED]Ebuild to build LLVM core targeting arm-apple-darwin |
|
|
Solved by using:
Code: |
emake VERBOSE=1 REQUIRES_RTTI=1 || die "emake failed"
|
just like the llvm ebuild.
Outside of Portage, I can compile this perfectly fine with the same exact ./configure line that Portage will use (AFAIK):
Code: |
CFLAGS="-march=native -msse2 -O2 -pipe" LDFLAGS="-Wl,-O1 -Wl,--as-needed" CXXFLAGS="-march=native -msse2 -O2 -pipe" ../llvmgcc42-2335.15/llvmCore/configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/arm-apple-darwin/usr/lib64 --target=arm-apple-darwin --prefix=/usr/arm-apple-darwin/usr --enable-optimized --disable-assertions
|
Ebuild:
Code: | # Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=3
inherit eutils
DESCRIPTION="Apple's LLVM GCC core."
HOMEPAGE="https://github.com/tatsh/xchain"
SRC_URI="http://opensource.apple.com/tarballs/llvmgcc42/llvmgcc42-2335.15.tar.gz"
RESTRICT="mirror"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""
ECONF_SOURCE="../../llvmgcc42-2335.15/llvmCore"
RDEPEND=""
DEPEND="${RDEPEND}
>=cross-arm-apple-darwin/cctools-806
>=cross-arm-apple-darwin/ld64-59.4
>=cross-arm-apple-darwin/sdk-4.2"
src_configure() {
local target="arm-apple-darwin"
mkdir -p "${S}"
cd "${S}"
mkdir llvm-obj
cd llvm-obj
econf \
--target="${target}" \
--prefix="/usr/${target}/usr" \
--enable-optimized \
--disable-assertions
}
src_compile() {
cd "${S}/llvm-obj"
emake || die "emake failed"
}
src_install() {
cd "${S}/llvm-obj"
emake DESTDIR="${D}" install
}
|
For some reason, -fno-rtti is passed on a file (I found a few references to RTTI in the Makefiles of the sources) and GCC (4.5.1) does not like this.
Code: |
llvm[1]: Building Release-Asserts Archive Library libLLVMSupport.a
make[1]: Leaving directory `/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/lib/Support'
make[1]: Entering directory `/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/utils'
make[2]: Entering directory `/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/utils/TableGen'
llvm[2]: Compiling AsmMatcherEmitter.cpp for Release-Asserts build
In file included from /var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/AsmMatcherEmitter.cpp:78:0:
/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/Record.h: In constructor ‘llvm::VarListElementInit::VarListElementInit(llvm::TypedInit*, unsigned int)’:
/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/Record.h:998:54: error: ‘dynamic_cast’ not permitted with -fno-rtti
/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/AsmMatcherEmitter.cpp: In member function ‘void<unnamed>::AsmMatcherInfo::BuildOperandClasses(llvm::CodeGenTarget&)’:
/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/AsmMatcherEmitter.cpp:798:51: error: ‘dynamic_cast’ not permitted with -fno-rtti
/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/AsmMatcherEmitter.cpp:813:58: error: ‘dynamic_cast’ not permitted with -fno-rtti
/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvmgcc42-2335.15/llvmCore/utils/TableGen/AsmMatcherEmitter.cpp:823:58: error: ‘dynamic_cast’ not permitted with -fno-rtti
/bin/rm: cannot remove `/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/utils/TableGen/Release-Asserts/AsmMatcherEmitter.d.tmp': No such file or directory
make[2]: *** [/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/utils/TableGen/Release-Asserts/AsmMatcherEmitter.o] Error 1
make[2]: Leaving directory `/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/utils/TableGen'
make[1]: *** [TableGen/.makeall] Error 2
make[1]: Leaving directory `/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15/llvm-obj/utils'
make: *** [all] Error 1
emake failed
* ERROR: cross-arm-apple-darwin/llvm-4.2.2335.15 failed (compile phase):
* emake failed
*
* Call stack:
* ebuild.sh, line 56: Called src_compile
* environment, line 2509: Called die
* The specific snippet of code:
* emake || die "emake failed"
*
* If you need support, post the output of 'emerge --info =cross-arm-apple-darwin/llvm-4.2.2335.15',
* the complete build log and the output of 'emerge -pqv =cross-arm-apple-darwin/llvm-4.2.2335.15'.
* This ebuild is from an overlay named 'x-tatsh-overlay': '/home/tatsh/usr/tatsh-overlay/'
* The complete build log is located at '/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/temp/environment'.
* S: '/var/tmp/portage/cross-arm-apple-darwin/llvm-4.2.2335.15/work/llvm-4.2.2335.15'
|
If you want to try the ebuild, you need to clone my overlay: https://github.com/tatsh/tatsh-overlay
Built outside of Portage:
Code: |
llvm[1]: Building Release-Asserts Archive Library libLLVMSupport.a
make[1]: Leaving directory `/home/tatsh/dev/apple-darwin/llvm-obj/lib/Support'
make[1]: Entering directory `/home/tatsh/dev/apple-darwin/llvm-obj/utils'
make[2]: Entering directory `/home/tatsh/dev/apple-darwin/llvm-obj/utils/TableGen'
llvm[2]: Compiling AsmMatcherEmitter.cpp for Release-Asserts build
llvm[2]: Compiling AsmWriterEmitter.cpp for Release-Asserts build
llvm[2]: Compiling AsmWriterInst.cpp for Release-Asserts build
llvm[2]: Compiling CallingConvEmitter.cpp for Release-Asserts build
llvm[2]: Compiling ClangDiagnosticsEmitter.cpp for Release-Asserts build
llvm[2]: Compiling CodeEmitterGen.cpp for Release-Asserts build
llvm[2]: Compiling CodeGenDAGPatterns.cpp for Release-Asserts build
|
|
|