import clang-7.0.1-1.module+el8+2560+c32c7af1

This commit is contained in:
CentOS Sources 2019-05-07 05:47:09 -04:00 committed by Andrew Lukoshko
commit dfa85b67dc
11 changed files with 935 additions and 0 deletions

2
.clang.metadata Normal file
View File

@ -0,0 +1,2 @@
427e12762836d808583fb4149c033d02de0a8db2 SOURCES/cfe-7.0.1.src.tar.xz
6f4048482c4cf1818133120565c2dcd1d3a62747 SOURCES/clang-tools-extra-7.0.1.src.tar.xz

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
SOURCES/cfe-7.0.1.src.tar.xz
SOURCES/clang-tools-extra-7.0.1.src.tar.xz

View File

@ -0,0 +1,52 @@
From a1bccf89a02accab69b359ef004faa95257333c0 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 7 Sep 2018 18:27:16 +0000
Subject: [PATCH] Convert clang-format-diff.py to python3 using 2to3
---
tools/clang-format/clang-format-diff.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/clang-format/clang-format-diff.py b/tools/clang-format/clang-format-diff.py
index ffa30e70dd..1525a3815c 100755
--- a/tools/clang-format/clang-format-diff.py
+++ b/tools/clang-format/clang-format-diff.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
#
#===- clang-format-diff.py - ClangFormat Diff Reformatter ----*- python -*--===#
#
@@ -27,7 +27,7 @@ import difflib
import re
import string
import subprocess
-import StringIO
+import io
import sys
@@ -89,9 +89,9 @@ def main():
['-lines', str(start_line) + ':' + str(end_line)])
# Reformat files containing changes in place.
- for filename, lines in lines_by_file.iteritems():
+ for filename, lines in lines_by_file.items():
if args.i and args.verbose:
- print 'Formatting', filename
+ print('Formatting', filename)
command = [args.binary, filename]
if args.i:
command.append('-i')
@@ -109,7 +109,7 @@ def main():
if not args.i:
with open(filename) as f:
code = f.readlines()
- formatted_code = StringIO.StringIO(stdout).readlines()
+ formatted_code = io.StringIO(stdout).readlines()
diff = difflib.unified_diff(code, formatted_code,
filename, filename,
'(before formatting)', '(after formatting)')
--
2.14.3

View File

@ -0,0 +1,61 @@
From 6430ef09aecb30bce588c2d7f35b2294d219c835 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Mon, 26 Nov 2018 19:18:12 -0800
Subject: [PATCH] Convert run-find-all-symbols.py to python3 using 2to3
---
include-fixer/find-all-symbols/tool/run-find-all-symbols.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/include-fixer/find-all-symbols/tool/run-find-all-symbols.py b/include-fixer/find-all-symbols/tool/run-find-all-symbols.py
index 461d959..89a6cf5 100755
--- a/include-fixer/find-all-symbols/tool/run-find-all-symbols.py
+++ b/include-fixer/find-all-symbols/tool/run-find-all-symbols.py
@@ -27,7 +27,7 @@ import argparse
import json
import multiprocessing
import os
-import Queue
+import queue
import shutil
import subprocess
import sys
@@ -40,7 +40,7 @@ def find_compilation_database(path):
result = './'
while not os.path.isfile(os.path.join(result, path)):
if os.path.realpath(result) == '/':
- print 'Error: could not find compilation database.'
+ print('Error: could not find compilation database.')
sys.exit(1)
result += '../'
return os.path.realpath(result)
@@ -50,7 +50,7 @@ def MergeSymbols(directory, args):
"""Merge all symbol files (yaml) in a given directaory into a single file."""
invocation = [args.binary, '-merge-dir='+directory, args.saving_path]
subprocess.call(invocation)
- print 'Merge is finished. Saving results in ' + args.saving_path
+ print('Merge is finished. Saving results in ' + args.saving_path)
def run_find_all_symbols(args, tmpdir, build_path, queue):
@@ -96,7 +96,7 @@ def main():
try:
# Spin up a bunch of tidy-launching threads.
- queue = Queue.Queue(max_task)
+ queue = queue.Queue(max_task)
for _ in range(max_task):
t = threading.Thread(target=run_find_all_symbols,
args=(args, tmpdir, build_path, queue))
@@ -116,7 +116,7 @@ def main():
except KeyboardInterrupt:
# This is a sad hack. Unfortunately subprocess goes
# bonkers with ctrl-c and we start forking merrily.
- print '\nCtrl-C detected, goodbye.'
+ print('\nCtrl-C detected, goodbye.')
os.kill(0, 9)
--
1.8.3.1

View File

@ -0,0 +1,93 @@
From c760f8d703af0c67774681b5a259d5dd3a1e5a77 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 19 Sep 2018 08:53:10 -0700
Subject: [PATCH] Convert scan-view to python3 using 2to3
---
tools/scan-view/bin/scan-view | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/tools/scan-view/bin/scan-view b/tools/scan-view/bin/scan-view
index 1b6e8ba..ca3dac5 100755
--- a/tools/scan-view/bin/scan-view
+++ b/tools/scan-view/bin/scan-view
@@ -7,9 +7,9 @@ import sys
import imp
import os
import posixpath
-import thread
+import _thread
import time
-import urllib
+import urllib.request, urllib.parse, urllib.error
import webbrowser
# How long to wait for server to start.
@@ -27,7 +27,7 @@ kMaxPortsToTry = 100
def url_is_up(url):
try:
- o = urllib.urlopen(url)
+ o = urllib.request.urlopen(url)
except IOError:
return False
o.close()
@@ -35,7 +35,7 @@ def url_is_up(url):
def start_browser(port, options):
- import urllib
+ import urllib.request, urllib.parse, urllib.error
import webbrowser
url = 'http://%s:%d' % (options.host, port)
@@ -52,10 +52,10 @@ def start_browser(port, options):
sys.stderr.flush()
time.sleep(kSleepTimeout)
else:
- print >> sys.stderr, 'WARNING: Unable to detect that server started.'
+ print('WARNING: Unable to detect that server started.', file=sys.stderr)
if options.debug:
- print >> sys.stderr, '%s: Starting webbrowser...' % sys.argv[0]
+ print('%s: Starting webbrowser...' % sys.argv[0], file=sys.stderr)
webbrowser.open(url)
@@ -69,9 +69,9 @@ def run(port, options, root):
import ScanView
try:
- print 'Starting scan-view at: http://%s:%d' % (options.host,
- port)
- print ' Use Ctrl-C to exit.'
+ print('Starting scan-view at: http://%s:%d' % (options.host,
+ port))
+ print(' Use Ctrl-C to exit.')
httpd = ScanView.create_server((options.host, port),
options, root)
httpd.serve_forever()
@@ -80,9 +80,9 @@ def run(port, options, root):
def port_is_open(port):
- import SocketServer
+ import socketserver
try:
- t = SocketServer.TCPServer((kDefaultHost, port), None)
+ t = socketserver.TCPServer((kDefaultHost, port), None)
except:
return False
t.server_close()
@@ -135,7 +135,7 @@ def main():
# Kick off thread to wait for server and start web browser, if
# requested.
if args.startBrowser:
- t = thread.start_new_thread(start_browser, (port, args))
+ t = _thread.start_new_thread(start_browser, (port, args))
run(port, args, args.root)
--
1.8.3.1

View File

@ -0,0 +1,24 @@
From 3f9cebe235dac01f22c8edd84a2d5d075cb90a17 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 5 Sep 2018 21:43:42 -0700
Subject: [PATCH] Don't prefer python2.7
---
CMakeLists.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d4f67f1..f82de1e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -109,7 +109,6 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
if(LLVM_INCLUDE_TESTS)
- set(Python_ADDITIONAL_VERSIONS 2.7)
include(FindPythonInterp)
if(NOT PYTHONINTERP_FOUND)
message(FATAL_ERROR
--
1.8.3.1

View File

@ -0,0 +1,120 @@
From d84a971ba917569829b51fff6057e5fd0d85e402 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Thu, 18 Jan 2018 02:57:51 +0000
Subject: [PATCH] Driver: Prefer vendor supplied gcc toolchain
Summary:
This patch fixes an issue on Fedora where if you had the x86_64 cross
compiler installed on your x86_64 system, then clang would use that compiler
as the default toolchain. This was happening because the cross compiler
is installed to /usr/lib/gcc/x86_64-linux-gnu/ and this directory comes before
the default compiler directory (/usr/lib/gcc/x86_64-redhat-linux/) in the search
list.
This patch re-orders the search list so that vendor supplied gcc toolchains
are selected before toolchains with a generic target, which should prevent
these kind of issues on other OSes too.
Subscribers: srhines, cfe-commits
Differential Revision: https://reviews.llvm.org/D42608
---
lib/Driver/ToolChains/Gnu.cpp | 47 ++++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 23 deletions(-)
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
index 3755673..5a49a6e 100644
--- a/lib/Driver/ToolChains/Gnu.cpp
+++ b/lib/Driver/ToolChains/Gnu.cpp
@@ -1811,18 +1811,19 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
// lifetime or initialization issues.
static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
static const char *const AArch64Triples[] = {
- "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux",
- "aarch64-suse-linux"};
+ "aarch64-redhat-linux", "aarch64-suse-linux",
+ "aarch64-none-linux-gnu", "aarch64-linux-gnu"};
static const char *const AArch64beLibDirs[] = {"/lib"};
static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
"aarch64_be-linux-gnu"};
static const char *const ARMLibDirs[] = {"/lib"};
static const char *const ARMTriples[] = {"arm-linux-gnueabi"};
- static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
- "armv7hl-redhat-linux-gnueabi",
+ static const char *const ARMHFTriples[] = {"armv7hl-redhat-linux-gnueabi",
"armv6hl-suse-linux-gnueabi",
- "armv7hl-suse-linux-gnueabi"};
+ "armv7hl-suse-linux-gnueabi",
+ "arm-linux-gnueabihf",
+ };
static const char *const ARMebLibDirs[] = {"/lib"};
static const char *const ARMebTriples[] = {"armeb-linux-gnueabi"};
static const char *const ARMebHFTriples[] = {
@@ -1830,19 +1831,19 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
static const char *const X86_64Triples[] = {
- "x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
- "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
- "x86_64-redhat-linux", "x86_64-suse-linux",
- "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
- "x86_64-slackware-linux", "x86_64-unknown-linux",
- "x86_64-amazon-linux"};
+ "x86_64-redhat-linux6E", "x86_64-redhat-linux",
+ "x86_64-suse-linux", "x86_64-slackware-linux",
+ "x86_64-manbo-linux-gnu", "x86_64-amazon-linux",
+ "x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
+ "x86_64-pc-linux-gnu", "x86_64-linux-gnu",
+ "x86_64-unknown-linux"};
static const char *const X32LibDirs[] = {"/libx32"};
static const char *const X86LibDirs[] = {"/lib32", "/lib"};
static const char *const X86Triples[] = {
- "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu",
- "i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux",
- "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux",
- "i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu"};
+ "i386-redhat-linux6E", "i686-redhat-linux", "i586-redhat-linux",
+ "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux",
+ "i686-montavista-linux", "i686-linux-gnu", "i686-pc-linux-gnu",
+ "i486-linux-gnu", "i386-linux-gnu", "i586-linux-gnu"};
static const char *const MIPSLibDirs[] = {"/lib"};
static const char *const MIPSTriples[] = {"mips-linux-gnu", "mips-mti-linux",
@@ -1864,16 +1865,16 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
static const char *const PPCTriples[] = {
- "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe",
- "powerpc-suse-linux", "powerpc-montavista-linuxspe"};
+ "powerpc-suse-linux", "powerpc-montavista-linuxspe",
+ "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe"};
static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
static const char *const PPC64Triples[] = {
- "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
- "powerpc64-suse-linux", "ppc64-redhat-linux"};
+ "powerpc64-suse-linux", "ppc64-redhat-linux",
+ "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu"};
static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
static const char *const PPC64LETriples[] = {
- "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
- "powerpc64le-suse-linux", "ppc64le-redhat-linux"};
+ "powerpc64le-suse-linux", "ppc64le-redhat-linux",
+ "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu"};
static const char *const RISCV32LibDirs[] = {"/lib", "/lib32"};
static const char *const RISCVTriples[] = {"riscv32-unknown-linux-gnu",
@@ -1889,8 +1890,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
static const char *const SystemZTriples[] = {
- "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
- "s390x-suse-linux", "s390x-redhat-linux"};
+ "s390x-ibm-linux-gnu", "s390x-suse-linux", "s390x-redhat-linux",
+ "s390x-linux-gnu", "s390x-unknown-linux-gnu"};
using std::begin;
--
1.8.3.1

View File

@ -0,0 +1,42 @@
From 428ca4520a79ec5a6df9c6adc8b8069623868cdb Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 26 Jan 2018 11:38:04 -0800
Subject: [PATCH] GCC compatibility: Ignore -fstack-clash-protection
Reviewers: sylvestre.ledru
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D42593
---
include/clang/Driver/Options.td | 1 +
test/Driver/clang_f_opts.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
index 41f31cf..e9078a2 100644
--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -2705,6 +2705,7 @@ defm single_precision_constant : BooleanFFlag<"single-precision-constant">,
Group<clang_ignored_gcc_optimization_f_Group>;
defm spec_constr_count : BooleanFFlag<"spec-constr-count">, Group<clang_ignored_f_Group>;
defm stack_check : BooleanFFlag<"stack-check">, Group<clang_ignored_f_Group>;
+defm stack_clash_protection : BooleanFFlag<"stack-clash-protection">, Group<clang_ignored_f_Group>;
defm strength_reduce :
BooleanFFlag<"strength-reduce">, Group<clang_ignored_gcc_optimization_f_Group>;
defm tls_model : BooleanFFlag<"tls-model">, Group<clang_ignored_f_Group>;
diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c
index 5755c5d..8710ff4 100644
--- a/test/Driver/clang_f_opts.c
+++ b/test/Driver/clang_f_opts.c
@@ -284,6 +284,7 @@
// RUN: -ffriend-injection \
// RUN: -fno-implement-inlines -fimplement-inlines \
// RUN: -fstack-check \
+// RUN: -fstack-clash-protection \
// RUN: -fforce-addr \
// RUN: -malign-functions=100 \
// RUN: -malign-loops=100 \
--
1.8.3.1

View File

@ -0,0 +1,42 @@
From 3b2afecc227d652f84f883d4018d43971de6a311 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 21 Mar 2018 07:17:00 -0700
Subject: [PATCH] gtest reorg
---
CMakeLists.txt | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2eee8e6..01d290f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -142,12 +142,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")
set(LLVM_UTILS_PROVIDED ON)
set(CLANG_TEST_DEPS FileCheck count not)
endif()
- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest)
- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
- AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
- add_subdirectory(${UNITTEST_DIR} utils/unittest)
- endif()
else()
# Seek installed Lit.
find_program(LLVM_LIT
@@ -477,7 +471,11 @@ endif()
if( CLANG_INCLUDE_TESTS )
- if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h)
+ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest)
+ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
+ AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
+ AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
+ add_subdirectory(${UNITTEST_DIR} utils/unittest)
add_subdirectory(unittests)
list(APPEND CLANG_TEST_DEPS ClangUnitTests)
list(APPEND CLANG_TEST_PARAMS
--
1.8.3.1

View File

@ -0,0 +1,27 @@
From 06cde370a44393d65bae7f61279900b5838b4a2c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Tue, 23 Jan 2018 18:59:20 -0800
Subject: [PATCH] lit.cfg: Add hack so lit can find not and FileCheck
---
test/lit.cfg.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/test/lit.cfg.py b/test/lit.cfg.py
index 5323cfe..5b4184e 100644
--- a/test/lit.cfg.py
+++ b/test/lit.cfg.py
@@ -39,7 +39,10 @@ config.test_source_root = os.path.dirname(__file__)
# test_exec_root: The root path where tests should be run.
config.test_exec_root = os.path.join(config.clang_obj_root, 'test')
+old_llvm_tools_dir = llvm_config.config.llvm_tools_dir
+llvm_config.config.llvm_tools_dir = '/usr/lib@FEDORA_LLVM_LIB_SUFFIX@/llvm'
llvm_config.use_default_substitutions()
+llvm_config.config.llvm_tools_dir = old_llvm_tools_dir
llvm_config.use_clang()
--
1.8.3.1

470
SPECS/clang.spec Normal file
View File

@ -0,0 +1,470 @@
%global maj_ver 7
%global min_ver 0
%global patch_ver 1
%global clang_tools_binaries \
%{_bindir}/clangd \
%{_bindir}/clang-apply-replacements \
%{_bindir}/clang-change-namespace \
%{_bindir}/clang-include-fixer \
%{_bindir}/clang-query \
%{_bindir}/clang-refactor \
%{_bindir}/clang-reorder-fields \
%{_bindir}/clang-rename \
%{_bindir}/clang-tidy
%global clang_binaries \
%{_bindir}/clang \
%{_bindir}/clang++ \
%{_bindir}/clang-%{maj_ver} \
%{_bindir}/clang-check \
%{_bindir}/clang-cl \
%{_bindir}/clang-cpp \
%{_bindir}/clang-format \
%{_bindir}/clang-func-mapping \
%{_bindir}/clang-import-test \
%{_bindir}/clang-offload-bundler \
%{_bindir}/diagtool \
%{_bindir}/hmaptool
%if 0%{?fedora} || 0%{?rhel} > 7
%bcond_without python3
%else
%bcond_with python3
%endif
%ifarch ppc64le
# Too many threads on 32 core ppc64 systems causes OOM errors.
%global _smp_mflags -j8
%endif
Name: clang
Version: %{maj_ver}.%{min_ver}.%{patch_ver}
Release: 1%{?dist}
Summary: A C language family front-end for LLVM
License: NCSA
URL: http://llvm.org
Source0: http://llvm.org/releases/%{version}/cfe-%{version}%{?rc_ver:rc%{rc_ver}}.src.tar.xz
Source1: http://llvm.org/releases/%{version}/clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src.tar.xz
Patch0: 0001-lit.cfg-Add-hack-so-lit-can-find-not-and-FileCheck.patch
Patch1: 0001-GCC-compatibility-Ignore-fstack-clash-protection.patch
Patch2: 0001-Driver-Prefer-vendor-supplied-gcc-toolchain.patch
Patch4: 0001-gtest-reorg.patch
Patch5: 0001-Don-t-prefer-python2.7.patch
Patch6: 0001-Convert-clang-format-diff.py-to-python3-using-2to3.patch
Patch7: 0001-Convert-scan-view-to-python3-using-2to3.patch
# clang-tools-extra patches
Patch100: 0001-Convert-run-find-all-symbols.py-to-python3-using-2to.patch
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: llvm-devel = %{version}
BuildRequires: libxml2-devel
# llvm-static is required, because clang-tablegen needs libLLVMTableGen, which
# is not included in libLLVM.so.
BuildRequires: llvm-static = %{version}
# Required for make check
BuildRequires: llvm-googletest = %{version}
BuildRequires: libxml2-devel
BuildRequires: ncurses-devel
BuildRequires: python3-lit
BuildRequires: python3-sphinx
BuildRequires: libatomic
BuildRequires: %{_bindir}/pathfix.py
BuildRequires: /usr/bin/python3
# Needed for %%multilib_fix_c_header
BuildRequires: multilib-rpm-config
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description
clang: noun
1. A loud, resonant, metallic sound.
2. The strident call of a crane or goose.
3. C-language family front-end toolkit.
The goal of the Clang project is to create a new C, C++, Objective C
and Objective C++ front-end for the LLVM compiler. Its tools are built
as libraries and designed to be loosely-coupled and extensible.
%package libs
Summary: Runtime library for clang
Recommends: compiler-rt%{?_isa} >= %{version}
# libomp does not support s390x.
%ifnarch s390x
Recommends: libomp%{?_isa} >= %{version}
%endif
# clang requires gcc, clang++ requires libstdc++-devel
# - https://bugzilla.redhat.com/show_bug.cgi?id=1021645
# - https://bugzilla.redhat.com/show_bug.cgi?id=1158594
# Making these BuildRequires because they are needed by tests
BuildRequires: libstdc++-devel
BuildRequires: gcc-c++
Requires: libstdc++-devel
Requires: gcc-c++
%description libs
Runtime library for clang.
%package devel
Summary: Development header files for clang.
Requires: %{name}%{?_isa} = %{version}-%{release}
# The clang CMake files reference tools from clang-tools-extra.
Requires: %{name}-tools-extra%{?_isa} = %{version}-%{release}
Requires: llvm-libs%{?_isa} = %{version}
%description devel
Development header files for clang.
%package analyzer
Summary: A source code analysis framework
License: NCSA and MIT
BuildArch: noarch
Requires: %{name} = %{version}-%{release}
# not picked up automatically since files are currently not installed in
# standard Python hierarchies yet
Requires: platform-python
%description analyzer
The Clang Static Analyzer consists of both a source code analysis
framework and a standalone tool that finds bugs in C and Objective-C
programs. The standalone tool is invoked from the command-line, and is
intended to run in tandem with a build of a project or code base.
%package tools-extra
Summary: Extra tools for clang
Requires: llvm-libs%{?_isa} = %{version}
Requires: clang-libs%{?_isa} = %{version}-%{release}
%description tools-extra
A set of extra tools built using Clang's tooling API.
# Put git-clang-format in its own package, because it Requires git and python2
# and we don't want to force users to install all those dependenices if they
# just want clang.
%package -n git-clang-format
Summary: clang-format integration for git
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: git
%description -n git-clang-format
clang-format integration for git.
%prep
%setup -T -q -b 1 -n clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src
%patch100 -p1 -b .find-all-symbols-py3
pathfix.py -i %{__python3} -pn \
clang-tidy/tool/*.py \
include-fixer/find-all-symbols/tool/run-find-all-symbols.py
%setup -q -n cfe-%{version}%{?rc_ver:rc%{rc_ver}}.src
%patch0 -p1 -b .lit-search-path
%patch1 -p1 -b .fstack-clash-protection
%patch2 -p1 -b .vendor-gcc
%patch4 -p1 -b .gtest
%patch5 -p1 -b .no-python2
%patch6 -p1 -b .clang-format-diff-py3
%patch7 -p1 -b .scan-view-py3
mv ../clang-tools-extra-%{version}%{?rc_ver:rc%{rc_ver}}.src tools/extra
%if 0%{?__isa_bits} == 64
sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@/64/g' test/lit.cfg.py
%else
sed -i 's/\@FEDORA_LLVM_LIB_SUFFIX\@//g' test/lit.cfg.py
%endif
pathfix.py -i %{__python3} -pn \
tools/clang-format/*.py \
tools/clang-format/git-clang-format \
utils/hmaptool/hmaptool \
tools/scan-view/bin/scan-view
%build
mkdir -p _build
cd _build
%cmake .. \
-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DLLVM_CONFIG:FILEPATH=%{_bindir}/llvm-config-%{__isa_bits} \
-DCLANG_INCLUDE_TESTS:BOOL=ON \
-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
-DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
\
-DCLANG_ENABLE_ARCMT:BOOL=ON \
-DCLANG_ENABLE_STATIC_ANALYZER:BOOL=ON \
-DCLANG_INCLUDE_DOCS:BOOL=ON \
-DCLANG_PLUGIN_SUPPORT:BOOL=ON \
-DENABLE_LINKER_BUILD_ID:BOOL=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_BUILD_DOCS=ON \
-DLLVM_ENABLE_SPHINX=ON \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
\
-DCLANG_BUILD_EXAMPLES:BOOL=OFF \
-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
%if 0%{?__isa_bits} == 64
-DLLVM_LIBDIR_SUFFIX=64 \
%else
-DLLVM_LIBDIR_SUFFIX= \
%endif
-DLIB_SUFFIX=
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot} -C _build
# multilib fix
%multilib_fix_c_header --file %{_includedir}/clang/Config/config.h
# remove editor integrations (bbedit, sublime, emacs, vim)
rm -vf %{buildroot}%{_datadir}/clang/clang-format-bbedit.applescript
rm -vf %{buildroot}%{_datadir}/clang/clang-format-sublime.py*
rm -vf %{buildroot}%{_datadir}/clang/clang-format.el
rm -vf %{buildroot}%{_datadir}/clang/clang-format.py*
rm -vf %{buildroot}%{_datadir}/clang/bash-autocomplete.sh
# clang-tools-extra
rm -vf %{buildroot}%{_datadir}/clang/clang-include-fixer.py
rm -vf %{buildroot}%{_datadir}/clang/clang-tidy-diff.py
rm -vf %{buildroot}%{_datadir}/clang/run-clang-tidy.py
rm -vf %{buildroot}%{_datadir}/clang/run-find-all-symbols.py
rm -vf %{buildroot}%{_datadir}/clang/clang-include-fixer.el
rm -vf %{buildroot}%{_datadir}/clang/clang-rename.el
rm -vf %{buildroot}%{_datadir}/clang/clang-rename.py
# remove diff reformatter
rm -vf %{buildroot}%{_datadir}/clang/clang-format-diff.py*
# Remove html docs
rm -vRf %{buildroot}%{_docdir}/clang/html
%check
cd _build
PATH=%{_libdir}/llvm:$PATH make %{?_smp_mflags} check-all
%files libs
%{_libdir}/*.so.*
%{_libdir}/*.so
%files
%{_libdir}/clang/
%{clang_binaries}
%{_bindir}/c-index-test
%{_mandir}/man1/clang.1.gz
%{_mandir}/man1/diagtool.1.gz
%files devel
%{_includedir}/clang/
%{_includedir}/clang-c/
%{_libdir}/cmake/
%dir %{_datadir}/clang/
%files analyzer
%{_bindir}/scan-view
%{_bindir}/scan-build
%{_libexecdir}/ccc-analyzer
%{_libexecdir}/c++-analyzer
%{_datadir}/scan-view/
%{_datadir}/scan-build/
%{_mandir}/man1/scan-build.1.*
%files tools-extra
%{clang_tools_binaries}
%{_bindir}/find-all-symbols
%{_bindir}/modularize
%files -n git-clang-format
%{_bindir}/git-clang-format
%changelog
* Fri Dec 14 2018 Tom Stellard <tstellar@redhat.com> - 7.0.1-1
- 7.0.1-1 Release
* Mon Dec 10 2018 Tom Stellard <tstellar@redhat.com> - 7.0.1-0.1.rc3
- 7.0.1-rc3 Release
* Mon Nov 05 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-12
- User helper macro to fixup config.h for multilib
* Sat Oct 27 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-11
- Enable make check
* Mon Oct 15 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-10
- Remove Provides: llvm-toolset-6.0-clang-libs
* Fri Oct 12 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-9
- Add Provides: llvm-toolset-6.0-clang-libs
* Tue Oct 02 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-8
- Don't use python2 for the build
* Mon Oct 01 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-7
- Drop scl macros
* Tue Sep 25 2018 Tomas Orsava <torsava@redhat.com> - 6.0.1-6
- Change Requires from python3 to platform-python
- The python3 package was renamed to platform-python
- Related: rhbz#1619153
* Fri Sep 14 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-5
- Use python3 for git-clang-format
* Thu Sep 13 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-4
- Fix python dependencies
* Tue Aug 07 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-3
- Install ld.so.conf file in the root filesystem
* Thu Aug 02 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-2
- Remove annobin work-around
* Wed Jul 11 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-1
- 6.0.1 Release
* Wed Apr 11 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-7
- Add conditionals to enable building only the clang-libs package
* Fri Apr 06 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-6
- Use cmake from base RHEL
* Mon Mar 19 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-5
- Backport r310435 from clang trunk. rhbz#1558223
* Mon Mar 19 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-4
- Use system gcc instead of dts.
* Tue Feb 06 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-3
- Backport retpoline support
* Sat Jan 20 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-2
- Limit number of build threads on ppc64le to avoid OOM errors
* Tue Jan 09 2018 Tom Stellard <tstellar@redhat.com> - 5.0.1-1
- 5.0.1 Release
* Wed Jun 21 2017 Tom Stellard <tstellar@redhat.com> - 4.0.1-1
- 4.0.1 Release.
* Wed Jun 21 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-15
- Fix Requires for clang-tools-extra
* Wed Jun 21 2017 Tom Stellard <tstellar@redhat.com - 4.0.0-14
- Fix Requires for clang-tools-extra
* Tue Jun 20 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-13
- Drop libomp dependency on s390x
* Thu Jun 15 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-12
- Use libstdc++ from devtoolset-7
* Wed Jun 07 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-11
- Fix libomp requires
* Wed Jun 07 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-10
- Build for llvm-toolset-7 rename
* Tue May 30 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-9
- Use ld from devtoolset in clang toolchain
* Mon May 29 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-8
- Add dependency on libopenmp
* Thu May 25 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-7
- Fix check for gcc install
* Wed May 24 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-6
- Add devtoolset-6 dependency for newer libstdc++
* Fri May 12 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-5
- Add dependency on compiler-rt
* Tue May 02 2017 Tom Stellard <tstellar@redhat.com>
- Fix dependencies with scl
* Mon May 01 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-4
- Build with llvm-toolset-4
* Mon Mar 27 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-3
- Enable eh/rtti, which are required by lldb.
* Fri Mar 24 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-2
- Fix clang-tools-extra build
- Fix install
* Thu Mar 23 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-1
- clang 4.0.0 final release
* Mon Mar 20 2017 David Goerger <david.goerger@yale.edu> - 3.9.1-3
- add clang-tools-extra rhbz#1328091
* Thu Mar 16 2017 Tom Stellard <tstellar@redhat.com> - 3.9.1-2
- Enable build-id by default rhbz#1432403
* Thu Mar 02 2017 Dave Airlie <airlied@redhat.com> - 3.9.1-1
- clang 3.9.1 final release
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Nov 14 2016 Nathaniel McCallum <npmccallum@redhat.com> - 3.9.0-3
- Add Requires: compiler-rt to clang-libs.
- Without this, compiling with certain CFLAGS breaks.
* Tue Nov 1 2016 Peter Robinson <pbrobinson@fedoraproject.org> 3.9.0-2
- Rebuild for new arches
* Fri Oct 14 2016 Dave Airlie <airlied@redhat.com> - 3.9.0-1
- clang 3.9.0 final release
* Fri Jul 01 2016 Stephan Bergmann <sbergman@redhat.com> - 3.8.0-2
- Resolves: rhbz#1282645 add GCC abi_tag support
* Thu Mar 10 2016 Dave Airlie <airlied@redhat.com> 3.8.0-1
- clang 3.8.0 final release
* Thu Mar 03 2016 Dave Airlie <airlied@redhat.com> 3.8.0-0.4
- clang 3.8.0rc3
* Wed Feb 24 2016 Dave Airlie <airlied@redhat.com> - 3.8.0-0.3
- package all libs into clang-libs.
* Wed Feb 24 2016 Dave Airlie <airlied@redhat.com> 3.8.0-0.2
- enable dynamic linking of clang against llvm
* Thu Feb 18 2016 Dave Airlie <airlied@redhat.com> - 3.8.0-0.1
- clang 3.8.0rc2
* Fri Feb 12 2016 Dave Airlie <airlied@redhat.com> 3.7.1-4
- rebuild against latest llvm packages
- add BuildRequires llvm-static
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Jan 28 2016 Dave Airlie <airlied@redhat.com> 3.7.1-2
- just accept clang includes moving to /usr/lib64, upstream don't let much else happen
* Thu Jan 28 2016 Dave Airlie <airlied@redhat.com> 3.7.1-1
- initial build in Fedora.
* Tue Oct 06 2015 Jan Vcelak <jvcelak@fedoraproject.org> 3.7.0-100
- initial version using cmake build system