1SUMMARY="C++ Common Libraries"
2DESCRIPTION="Abseil is an open-source collection of C++ code (compliant to \
3C++11) designed to augment the C++ standard library."
4HOMEPAGE="https://abseil.io"
5COPYRIGHT="2017-2023 The Abseil Authors"
6LICENSE="Apache v2"
7REVISION="1"
8SOURCE_URI="http://github.com/abseil/abseil-cpp/archive/$portVersion/abseil-$portVersion.tar.gz"
9CHECKSUM_SHA256="5366d7e7fa7ba0d915014d387b66d0d002c03236448e1ba9ef98122c13b35c36"
10SOURCE_DIR="abseil-cpp-$portVersion"
11PATCHES="abseil_cpp-$portVersion.patchset"
12
13ARCHITECTURES="all !x86_gcc2"
14SECONDARY_ARCHITECTURES="x86"
15
16libVersion="2301.0.0"
17libVersionCompat="$libVersion compat >= $libVersion"
18libs="
19bad_optional_access bad_variant_access bad_any_cast_impl base city \
20civil_time cord cord_internal cordz_functions cordz_handle cordz_info \
21cordz_sample_token crc32c crc_cord_state crc_cpu_detect crc_internal \
22debugging_internal demangle_internal die_if_null examine_stack \
23exponential_biased failure_signal_handler flags flags_commandlineflag \
24flags_commandlineflag_internal flags_config flags_internal flags_marshalling \
25flags_parse flags_private_handle_accessor flags_program_name flags_reflection \
26flags_usage flags_usage_internal graphcycles_internal hash hashtablez_sampler \
27int128 leak_check log_entry log_flags log_globals log_initialize log_internal_check_op \
28log_internal_conditions log_internal_format log_internal_globals log_internal_log_sink_set \
29log_internal_message log_internal_nullguard log_internal_proto log_severity log_sink \
30low_level_hash malloc_internal \
31periodic_sampler random_distributions random_internal_distribution_test_util \
32random_internal_platform random_internal_pool_urbg random_internal_randen \
33random_internal_randen_hwaes random_internal_randen_hwaes_impl \
34random_internal_randen_slow random_internal_seed_material \
35random_seed_gen_exception random_seed_sequences raw_hash_set \
36raw_logging_internal scoped_set_env spinlock_wait stacktrace status statusor \
37str_format_internal strerror strings strings_internal symbolize \
38synchronization throw_delegate time time_zone"
39PROVIDES="
40	abseil_cpp$secondaryArchSuffix = $portVersion
41	"
42for lib in $libs; do
43	PROVIDES+="
44		lib:libabsl_$lib$secondaryArchSuffix = $libVersionCompat"
45done
46REQUIRES="
47	haiku$secondaryArchSuffix
48	lib:libstdc++$secondaryArchSuffix
49	"
50
51PROVIDES_devel="
52	abseil_cpp${secondaryArchSuffix}_devel = $portVersion
53	"
54for lib in $libs; do
55	PROVIDES_devel+="
56		devel:libabsl_$lib$secondaryArchSuffix = $libVersionCompat"
57done
58REQUIRES_devel="
59	abseil_cpp$secondaryArchSuffix == $portVersion base
60	"
61
62BUILD_REQUIRES="
63	haiku${secondaryArchSuffix}_devel
64	"
65BUILD_PREREQUIRES="
66	cmd:cmake
67	cmd:gcc$secondaryArchSuffix
68	cmd:make
69	cmd:pkg_config$secondaryArchSuffix
70	"
71
72debugList=()
73for lib in $libs; do
74	debugList+=("$libDir"/libabsl_$lib.so.$libVersion)
75done
76defineDebugInfoPackage abseil_cpp$secondaryArchSuffix "${debugList[@]}"
77
78BUILD()
79{
80	cmake -B build -S . $cmakeDirArgs \
81		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
82		-DCMAKE_CXX_FLAGS="-DNDEBUG" \
83		-DCMAKE_CXX_STANDARD=17 \
84		-DBUILD_SHARED_LIBS=ON \
85		-DCMAKE_POSITION_INDEPENDENT_CODE=ON
86	make -C build $jobArgs
87}
88
89INSTALL()
90{
91	make -C build install PREFIX=$prefix
92
93	for lib in $libs; do
94		prepareInstalledDevelLibs libabsl_$lib
95	done
96
97	fixPkgconfig
98
99	# devel package
100	packageEntries devel \
101		$developDir \
102		$libDir/cmake
103}
104