COMMENT =	abseil common libraries (c++)
REVISION =	2
CATEGORIES =	devel

GH_ACCOUNT =	abseil
GH_PROJECT =	${GH_ACCOUNT}-cpp
GH_TAGNAME =	20211102.0

HOMEPAGE =	https://abseil.io/

MAINTAINER =	Andrew Krasavin <noiseless-ak@yandex.ru>, \
		Klemens Nanni <kn@openbsd.org>

# Apache 2.0
PERMIT_PACKAGE =	Yes

SHARED_LIBS +=	absl_bad_any_cast_impl				0.0 # 2103.0.1
SHARED_LIBS +=	absl_bad_optional_access			0.0 # 2103.0.1
SHARED_LIBS +=	absl_bad_variant_access				0.0 # 2103.0.1
SHARED_LIBS +=	absl_base					0.0 # 2103.0.1
SHARED_LIBS +=	absl_city					0.0 # 2103.0.1
SHARED_LIBS +=	absl_civil_time					0.0 # 2103.0.1
SHARED_LIBS +=	absl_cord					0.0 # 2103.0.1
SHARED_LIBS +=	absl_cord_internal				0.0 # 2103.0.1
SHARED_LIBS +=	absl_cordz_functions				0.0 # 2103.0.1
SHARED_LIBS +=	absl_cordz_handle				0.0 # 2103.0.1
SHARED_LIBS +=	absl_cordz_info					0.0 # 2103.0.1
SHARED_LIBS +=	absl_cordz_sample_token				0.0 # 2103.0.1
SHARED_LIBS +=	absl_debugging_internal				0.0 # 2103.0.1
SHARED_LIBS +=	absl_demangle_internal				0.0 # 2103.0.1
SHARED_LIBS +=	absl_examine_stack				0.0 # 2103.0.1
SHARED_LIBS +=	absl_exponential_biased				0.0 # 2103.0.1
SHARED_LIBS +=	absl_failure_signal_handler			0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags					0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_commandlineflag			0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_commandlineflag_internal		0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_config				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_internal				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_marshalling				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_parse				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_private_handle_accessor		0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_program_name				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_reflection				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_usage				0.0 # 2103.0.1
SHARED_LIBS +=	absl_flags_usage_internal			0.0 # 2103.0.1
SHARED_LIBS +=	absl_graphcycles_internal			0.0 # 2103.0.1
SHARED_LIBS +=	absl_hash					0.0 # 2103.0.1
SHARED_LIBS +=	absl_hashtablez_sampler				0.0 # 2103.0.1
SHARED_LIBS +=	absl_int128					0.0 # 2103.0.1
SHARED_LIBS +=	absl_leak_check					0.0 # 2103.0.1
SHARED_LIBS +=	absl_leak_check_disable				0.0 # 2103.0.1
SHARED_LIBS +=	absl_log_severity				0.0 # 2103.0.1
SHARED_LIBS +=	absl_low_level_hash				0.0 # 2103.0.1
SHARED_LIBS +=	absl_malloc_internal				0.0 # 2103.0.1
SHARED_LIBS +=	absl_periodic_sampler				0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_distributions			0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_distribution_test_util	0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_platform			0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_pool_urbg			0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_randen			0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_randen_hwaes		0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_randen_hwaes_impl		0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_randen_slow		0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_internal_seed_material		0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_seed_gen_exception			0.0 # 2103.0.1
SHARED_LIBS +=	absl_random_seed_sequences			0.0 # 2103.0.1
SHARED_LIBS +=	absl_raw_hash_set				0.0 # 2103.0.1
SHARED_LIBS +=	absl_raw_logging_internal			0.0 # 2103.0.1
SHARED_LIBS +=	absl_scoped_set_env				0.0 # 2103.0.1
SHARED_LIBS +=	absl_spinlock_wait				0.0 # 2103.0.1
SHARED_LIBS +=	absl_stacktrace					0.0 # 2103.0.1
SHARED_LIBS +=	absl_status					0.0 # 2103.0.1
SHARED_LIBS +=	absl_statusor					0.0 # 2103.0.1
SHARED_LIBS +=	absl_str_format_internal			0.0 # 2103.0.1
SHARED_LIBS +=	absl_strerror					0.0 # 2103.0.1
SHARED_LIBS +=	absl_strings					0.0 # 2103.0.1
SHARED_LIBS +=	absl_strings_internal				0.0 # 2103.0.1
SHARED_LIBS +=	absl_symbolize					0.0 # 2103.0.1
SHARED_LIBS +=	absl_synchronization				0.0 # 2103.0.1
SHARED_LIBS +=	absl_throw_delegate				0.0 # 2103.0.1
SHARED_LIBS +=	absl_time					0.0 # 2103.0.1
SHARED_LIBS +=	absl_time_zone					0.0 # 2103.0.1
SHARED_LIBS +=	absl_wyhash					0.0 # 2103.0.1

# C++17
COMPILER =		base-clang ports-gcc
COMPILER_LANGS=		c++
WANTLIB =		${COMPILER_LIBCXX} m
MODULES =		devel/cmake

CONFIGURE_ARGS +=	-DBUILD_SHARED_LIBS:BOOL=ON

# Force the same highest C++ standard because of ABI differences.
# https://github.com/abseil/abseil-cpp/issues/819
CONFIGURE_ARGS +=	-DCMAKE_CXX_STANDARD=17

# A future Abseil release will default ABSL_PROPAGATE_CXX_STD=ON
# for CMake >= 3.8. Abseil developers recommend enabling this option
# to ensure that our project builds correctly.
CONFIGURE_ARGS +=	-DABSL_PROPAGATE_CXX_STD:BOOL=ON

.if ${MACHINE_ARCH} == sparc64
# XXX hash/hash_test.cc:614:22: error: use of deleted function 'absl::lts_20211102::hash_internal::PoisonedHash::PoisonedHash()'
NO_TEST =		Yes
.else
# use googletest from ports
CONFIGURE_ARGS +=	-DABSL_USE_EXTERNAL_GOOGLETEST:BOOL=${LOCALBASE}/include/gtest
# turn on tests builds
CONFIGURE_ARGS +=	-DBUILD_TESTING:BOOL=ON

BUILD_DEPENDS +=	devel/gtest>=1.11.0pl20220208
TEST_DEPENDS +=		devel/gtest>=1.11.0pl20220208

# use TEST_TMPDIR instead of /tmp for tests temp data (like in bazel build)
TEST_ENV +=		TEST_TMPDIR=${WRKBUILD}/test_tmp \
			LD_LIBRARY_PATH=/usr/lib:${WRKBUILD}/test_lib

pre-test:
	@mkdir -p ${WRKBUILD}/test_tmp
	@mkdir -p ${WRKBUILD}/test_lib
	cd ${WRKBUILD}/test_lib && \
		 find ${WRKBUILD} -name "*\.so\.*\.*" | xargs -I {} ln -s {} .
.endif

.include <bsd.port.mk>
