blob: 27d9bec71ada29c6a615b29e12e372c25bebf206 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{13..14} )
LLVM_COMPAT=( 22 )
inherit cmake llvm-r2 python-single-r1 toolchain-funcs
DESCRIPTION="Find unused include directives in C/C++ programs"
HOMEPAGE="https://include-what-you-use.org/"
SRC_URI="
https://github.com/${PN}/${PN}/archive/${PV}.tar.gz
-> ${P}.tar.gz
"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~arm64 ~x86"
RDEPEND="
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${LLVM_SLOT}=
')
${PYTHON_DEPS}
"
DEPEND="${RDEPEND}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
pkg_setup() {
llvm-r2_pkg_setup
python-single-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
python_fix_shebang .
}
src_configure() {
local mycmakeargs=(
# The libiwyu.so library is BUILDTREE_ONLY, i.e., it is not
# meant as public library, but enabling shared libs would
# result in the include-what-you-use executable to reference
# libiwyu.so, which is not going to be installed installed
# (because it has no installation rule).
-DBUILD_SHARED_LIBS=OFF
# Note [llvm install path]
# Unfortunately all binaries using clang driver
# have to reside at the same path depth as
# 'clang' binary itself. See bug #625972
# Thus as a hack we install it to the same directory
# as llvm/clang itself.
-DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix)"
# Relative path to the clang library
# https://github.com/include-what-you-use/include-what-you-use/commit/e046d23571876e72719ef96a36ff0cb1cb2e64b6
-DIWYU_RESOURCE_DIR="../../../clang/${LLVM_SLOT}"
)
cmake_src_configure
}
# tc-cpp-is-true and tc-get-cxx-stdlib smashed together
tc-cxx-is-true() {
local CONDITION=${1}
$(tc-getCXX) ${CPPFLAGS} ${CXXFLAGS} -x c++ -E -P - <<-EOF >/dev/null 2>&1
#if __cplusplus >= 202002L
#include <version>
#else
#include <ciso646>
#endif
#if ${CONDITION}
true
#else
#error false
#endif
EOF
}
src_test() {
local -a CMAKE_SKIP_TESTS=()
if tc-cxx-is-true "defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE >= 15)"; then
CMAKE_SKIP_TESTS+=(
cxx.test_precomputed_tpl_args
cxx.test_precomputed_tpl_args_cpp14
)
fi
# There could be failures with older libcxx versions as well.
if tc-cxx-is-true "defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION >= 210101)"; then
CMAKE_SKIP_TESTS+=(
cxx.test_badinc
cxx.test_expl_inst_macro
cxx.test_iterator
cxx.test_libbuiltins
cxx.test_no_char_traits
cxx.test_overloaded_class
cxx.test_placement_new
cxx.test_precomputed_tpl_args
cxx.test_precomputed_tpl_args_cpp14
cxx.test_stl_container_provides_allocator
)
fi
cmake_src_test
}
|