--- /dev/null
+--- tools/clang/lib/Driver/Driver.cpp 2017-03-16 16:12:19.870312677 +0300
++++ tools/clang/lib/Driver/Driver.cpp 2017-03-17 11:21:40.124870280 +0300
+@@ -64,6 +64,11 @@
+ if (!this->VFS)
+ this->VFS = vfs::getRealFileSystem();
+
++ // Skip /emul if we work in accelerated environment
++#define QEMU_ACCEL_DIR "/emul"
++ if (ClangExecutable.substr(0, sizeof(QEMU_ACCEL_DIR) - 1) == QEMU_ACCEL_DIR)
++ ClangExecutable = ClangExecutable.drop_front(sizeof(QEMU_ACCEL_DIR) - 1);
++
+ Name = llvm::sys::path::filename(ClangExecutable);
+ Dir = llvm::sys::path::parent_path(ClangExecutable);
+ InstalledDir = Dir; // Provide a sensible default installed dir.
+@@ -74,7 +79,8 @@
+ if (ClangResourceDir != "") {
+ llvm::sys::path::append(P, ClangResourceDir);
+ } else {
+- StringRef ClangLibdirSuffix(CLANG_LIBDIR_SUFFIX);
++ const char* NO_LIBDIR_SUFFIX = std::getenv("CLANG_NO_LIBDIR_SUFFIX");
++ StringRef ClangLibdirSuffix(NO_LIBDIR_SUFFIX?"":CLANG_LIBDIR_SUFFIX);
+ llvm::sys::path::append(P, "..", Twine("lib") + ClangLibdirSuffix, "clang",
+ CLANG_VERSION_STRING);
+ }
Source2: lldb.tar.gz
Source1001: llvm.manifest
+Source1002: libstdcxx_path_patch
+Source1003: driver_patch
+
BuildRequires: cmake
BuildRequires: python
BuildRequires: python-devel
#BuildRequires: swig
Requires: libllvm = %{version}-%{release}
-%define install_prefix /usr/local
+%define install_prefix /usr/
%define sdk_install_prefix /home/owner/share/tmp/sdk_tools/lldb
%define sdk_bin_dir %{sdk_install_prefix}/bin
%define system_lib_dir /usr/lib
%endif
+%ifarch armv7l
+%define ARCH armv7l
+%define ABI eabi
+%endif
+%ifarch armv7hl
+%define ARCH armv7hl
+%define ABI eabihf
+%endif
+%ifarch %ix86
+%define ARCH i586
+%endif
+%ifarch x86_64
+%define ARCH x86_64
+%endif
+%ifarch aarch64
+%define ARCH aarch64
+%endif
+%define host_arch %{ARCH}-tizen-linux-gnu%{?ABI}
%description
LLVM is a compiler infrastructure designed for compile-time, link-time, runtime,
Illinois and Apple. It currently supports compilation of C and C++ programs,
using front-ends derived from GCC 4.0.1. A new front-end for the C family of
languages is in development. The compiler infrastructure
-includes mirror sets of programming tools as well as libraries with equivalent
+includes mirror sets of programming tools as well as libraries with equivalent
functionality.
%package devel
gzip -dc %{SOURCE2} | tar -xf -
%endif
pwd
+# Enable Tizen Toolchain libraries search for Clang
+patch -p1 < %{SOURCE1002}
+patch -p1 < %{SOURCE1003}
#cd lldb
#%patch2001 -p0
#cd ../..
mkdir build
cd build
-%ifnarch aarch64
cmake \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DLLVM_BUILD_LLVM_DYLIB=1 \
-DLLDB_DISABLE_LIBEDIT=1 \
-DLLDB_DISABLE_PYTHON=1 \
-%ifarch x86_64
+ -DLLVM_TARGET_ARCH=%{ARCH} \
+ -DLLVM_HOST_TRIPLE=%{host_arch} \
+ -DLLDB_DISABLE_CURSES=1 \
+%ifarch x86_64 aarch64
-DLLVM_LIBDIR_SUFFIX=64 \
%endif
%ifarch %ix86
- -DCMAKE_LIBRARY_ARCHITECTURE=i386-linux-gnu \
- -DLLVM_TARGET_ARCH=X86 \
- -DLLVM_HOST_TRIPLE=i386-linux-gnu \
- -DCMAKE_C_FLAGS="-m32" \
- -DCMAKE_CXX_FLAGS="-m32" \
+ -DCMAKE_C_FLAGS="-m32" \
+ -DCMAKE_CXX_FLAGS="-m32" \
%endif
- -DLLDB_DISABLE_CURSES=1 \
..
-%else
-cmake \
- -DCMAKE_C_COMPILER=/usr/bin/gcc \
- -DCMAKE_CXX_COMPILER=/usr/bin/g++ \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX=%{install_prefix} \
- -DLLVM_ENABLE_ASSERTIONS=No \
- -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64' \
- -DLLVM_BUILD_LLVM_DYLIB=1 \
- -DLLVM_LIBDIR_SUFFIX=64 \
- ..
-%endif
make %{?jobs:-j%jobs}
%install
cd build
%make_install
+ln -sf %{install_prefix}/bin/clang++ %{buildroot}%{install_prefix}/bin/clang++-3.8
+mkdir -p %{buildroot}%{bindir}
# copy lldb for sdk
mkdir -p %{buildroot}%{sdk_bin_dir}
mkdir -p %{buildroot}%{sdk_lib_dir}
%{install_prefix}/bin/clang
%{install_prefix}/bin/clang++
%{install_prefix}/bin/clang-3.8
+%{install_prefix}/bin/clang++-3.8
%{install_prefix}/bin/clang-check
%{install_prefix}/bin/clang-cl
%{install_prefix}/bin/clang-format