@point3/node-rdkafka 3.6.0-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +20 -0
- package/README.md +636 -0
- package/binding.gyp +154 -0
- package/deps/librdkafka/.clang-format +136 -0
- package/deps/librdkafka/.clang-format-cpp +103 -0
- package/deps/librdkafka/.dir-locals.el +10 -0
- package/deps/librdkafka/.formatignore +33 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/.github/CODEOWNERS +1 -0
- package/deps/librdkafka/.github/ISSUE_TEMPLATE +34 -0
- package/deps/librdkafka/.semaphore/run-all-tests.yml +77 -0
- package/deps/librdkafka/.semaphore/semaphore-integration.yml +250 -0
- package/deps/librdkafka/.semaphore/semaphore.yml +378 -0
- package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
- package/deps/librdkafka/CHANGELOG.md +2208 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +209 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2481 -0
- package/deps/librdkafka/LICENSE +26 -0
- package/deps/librdkafka/LICENSE.cjson +22 -0
- package/deps/librdkafka/LICENSE.crc32c +28 -0
- package/deps/librdkafka/LICENSE.fnv1a +18 -0
- package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
- package/deps/librdkafka/LICENSE.lz4 +26 -0
- package/deps/librdkafka/LICENSE.murmur2 +25 -0
- package/deps/librdkafka/LICENSE.nanopb +22 -0
- package/deps/librdkafka/LICENSE.opentelemetry +203 -0
- package/deps/librdkafka/LICENSE.pycrc +23 -0
- package/deps/librdkafka/LICENSE.queue +31 -0
- package/deps/librdkafka/LICENSE.regexp +5 -0
- package/deps/librdkafka/LICENSE.snappy +36 -0
- package/deps/librdkafka/LICENSE.tinycthread +26 -0
- package/deps/librdkafka/LICENSE.wingetopt +49 -0
- package/deps/librdkafka/LICENSES.txt +625 -0
- package/deps/librdkafka/Makefile +125 -0
- package/deps/librdkafka/README.md +199 -0
- package/deps/librdkafka/README.win32 +26 -0
- package/deps/librdkafka/STATISTICS.md +624 -0
- package/deps/librdkafka/configure +214 -0
- package/deps/librdkafka/configure.self +331 -0
- package/deps/librdkafka/debian/changelog +111 -0
- package/deps/librdkafka/debian/compat +1 -0
- package/deps/librdkafka/debian/control +71 -0
- package/deps/librdkafka/debian/copyright +99 -0
- package/deps/librdkafka/debian/gbp.conf +9 -0
- package/deps/librdkafka/debian/librdkafka++1.install +1 -0
- package/deps/librdkafka/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/debian/librdkafka-dev.install +9 -0
- package/deps/librdkafka/debian/librdkafka1.docs +5 -0
- package/deps/librdkafka/debian/librdkafka1.install +1 -0
- package/deps/librdkafka/debian/librdkafka1.symbols +135 -0
- package/deps/librdkafka/debian/rules +19 -0
- package/deps/librdkafka/debian/source/format +1 -0
- package/deps/librdkafka/debian/watch +2 -0
- package/deps/librdkafka/dev-conf.sh +123 -0
- package/deps/librdkafka/examples/CMakeLists.txt +79 -0
- package/deps/librdkafka/examples/Makefile +167 -0
- package/deps/librdkafka/examples/README.md +42 -0
- package/deps/librdkafka/examples/alter_consumer_group_offsets.c +338 -0
- package/deps/librdkafka/examples/consumer.c +271 -0
- package/deps/librdkafka/examples/delete_records.c +233 -0
- package/deps/librdkafka/examples/describe_cluster.c +322 -0
- package/deps/librdkafka/examples/describe_consumer_groups.c +455 -0
- package/deps/librdkafka/examples/describe_topics.c +427 -0
- package/deps/librdkafka/examples/elect_leaders.c +317 -0
- package/deps/librdkafka/examples/globals.json +11 -0
- package/deps/librdkafka/examples/idempotent_producer.c +344 -0
- package/deps/librdkafka/examples/incremental_alter_configs.c +347 -0
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +945 -0
- package/deps/librdkafka/examples/list_consumer_group_offsets.c +359 -0
- package/deps/librdkafka/examples/list_consumer_groups.c +365 -0
- package/deps/librdkafka/examples/list_offsets.c +327 -0
- package/deps/librdkafka/examples/misc.c +287 -0
- package/deps/librdkafka/examples/openssl_engine_example.cpp +248 -0
- package/deps/librdkafka/examples/producer.c +251 -0
- package/deps/librdkafka/examples/producer.cpp +228 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.c +617 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.cpp +467 -0
- package/deps/librdkafka/examples/rdkafka_consume_batch.cpp +264 -0
- package/deps/librdkafka/examples/rdkafka_example.c +853 -0
- package/deps/librdkafka/examples/rdkafka_example.cpp +679 -0
- package/deps/librdkafka/examples/rdkafka_performance.c +1781 -0
- package/deps/librdkafka/examples/transactions-older-broker.c +668 -0
- package/deps/librdkafka/examples/transactions.c +665 -0
- package/deps/librdkafka/examples/user_scram.c +491 -0
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +396 -0
- package/deps/librdkafka/lds-gen.py +73 -0
- package/deps/librdkafka/mainpage.doxy +40 -0
- package/deps/librdkafka/mklove/Makefile.base +329 -0
- package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
- package/deps/librdkafka/mklove/modules/configure.base +2484 -0
- package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
- package/deps/librdkafka/mklove/modules/configure.cc +186 -0
- package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
- package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
- package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
- package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
- package/deps/librdkafka/mklove/modules/configure.host +132 -0
- package/deps/librdkafka/mklove/modules/configure.lib +49 -0
- package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
- package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
- package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
- package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
- package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
- package/deps/librdkafka/mklove/modules/configure.pic +16 -0
- package/deps/librdkafka/mklove/modules/configure.socket +20 -0
- package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
- package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
- package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
- package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
- package/deps/librdkafka/packaging/RELEASE.md +319 -0
- package/deps/librdkafka/packaging/alpine/build-alpine.sh +38 -0
- package/deps/librdkafka/packaging/archlinux/PKGBUILD +30 -0
- package/deps/librdkafka/packaging/cmake/Config.cmake.in +37 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindLZ4.cmake +38 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindZSTD.cmake +27 -0
- package/deps/librdkafka/packaging/cmake/Modules/LICENSE.FindZstd +178 -0
- package/deps/librdkafka/packaging/cmake/README.md +38 -0
- package/deps/librdkafka/packaging/cmake/config.h.in +52 -0
- package/deps/librdkafka/packaging/cmake/parseversion.cmake +60 -0
- package/deps/librdkafka/packaging/cmake/rdkafka.pc.in +12 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_64_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/c11threads_test.c +14 -0
- package/deps/librdkafka/packaging/cmake/try_compile/crc32c_hw_test.c +27 -0
- package/deps/librdkafka/packaging/cmake/try_compile/dlopen_test.c +11 -0
- package/deps/librdkafka/packaging/cmake/try_compile/libsasl2_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_darwin_test.c +6 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_freebsd_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_gnu_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rand_r_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rdkafka_setup.cmake +122 -0
- package/deps/librdkafka/packaging/cmake/try_compile/regex_test.c +10 -0
- package/deps/librdkafka/packaging/cmake/try_compile/strndup_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_64_test.c +8 -0
- package/deps/librdkafka/packaging/cp/README.md +16 -0
- package/deps/librdkafka/packaging/cp/check_features.c +72 -0
- package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
- package/deps/librdkafka/packaging/cp/verify-packages.sh +69 -0
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +32 -0
- package/deps/librdkafka/packaging/debian/changelog +66 -0
- package/deps/librdkafka/packaging/debian/compat +1 -0
- package/deps/librdkafka/packaging/debian/control +49 -0
- package/deps/librdkafka/packaging/debian/copyright +84 -0
- package/deps/librdkafka/packaging/debian/docs +5 -0
- package/deps/librdkafka/packaging/debian/gbp.conf +9 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.dirs +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.install +6 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka.dsc +16 -0
- package/deps/librdkafka/packaging/debian/librdkafka1-dbg.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.dirs +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.install +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postinst.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postrm.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.symbols +64 -0
- package/deps/librdkafka/packaging/debian/rules +19 -0
- package/deps/librdkafka/packaging/debian/source/format +1 -0
- package/deps/librdkafka/packaging/debian/watch +2 -0
- package/deps/librdkafka/packaging/get_version.py +21 -0
- package/deps/librdkafka/packaging/homebrew/README.md +15 -0
- package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +31 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw-static.sh +52 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw.sh +21 -0
- package/deps/librdkafka/packaging/mingw-w64/export-variables.sh +13 -0
- package/deps/librdkafka/packaging/mingw-w64/run-tests.sh +6 -0
- package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +38 -0
- package/deps/librdkafka/packaging/nuget/README.md +84 -0
- package/deps/librdkafka/packaging/nuget/artifact.py +177 -0
- package/deps/librdkafka/packaging/nuget/cleanup-s3.py +143 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/nugetpackage.py +278 -0
- package/deps/librdkafka/packaging/nuget/packaging.py +448 -0
- package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/release.py +167 -0
- package/deps/librdkafka/packaging/nuget/requirements.txt +3 -0
- package/deps/librdkafka/packaging/nuget/staticpackage.py +178 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.nuspec +21 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.props +18 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.targets +19 -0
- package/deps/librdkafka/packaging/nuget/zfile/__init__.py +0 -0
- package/deps/librdkafka/packaging/nuget/zfile/zfile.py +98 -0
- package/deps/librdkafka/packaging/rpm/Makefile +92 -0
- package/deps/librdkafka/packaging/rpm/README.md +23 -0
- package/deps/librdkafka/packaging/rpm/el7-x86_64.cfg +40 -0
- package/deps/librdkafka/packaging/rpm/librdkafka.spec +118 -0
- package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +96 -0
- package/deps/librdkafka/packaging/rpm/tests/Makefile +25 -0
- package/deps/librdkafka/packaging/rpm/tests/README.md +8 -0
- package/deps/librdkafka/packaging/rpm/tests/run-test.sh +42 -0
- package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +56 -0
- package/deps/librdkafka/packaging/rpm/tests/test.c +77 -0
- package/deps/librdkafka/packaging/rpm/tests/test.cpp +34 -0
- package/deps/librdkafka/packaging/tools/Dockerfile +31 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +12 -0
- package/deps/librdkafka/packaging/tools/build-deb-package.sh +64 -0
- package/deps/librdkafka/packaging/tools/build-debian.sh +65 -0
- package/deps/librdkafka/packaging/tools/build-manylinux.sh +68 -0
- package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +139 -0
- package/deps/librdkafka/packaging/tools/distro-build.sh +38 -0
- package/deps/librdkafka/packaging/tools/gh-release-checksums.py +39 -0
- package/deps/librdkafka/packaging/tools/rdutcoverage.sh +25 -0
- package/deps/librdkafka/packaging/tools/requirements.txt +2 -0
- package/deps/librdkafka/packaging/tools/run-in-docker.sh +28 -0
- package/deps/librdkafka/packaging/tools/run-integration-tests.sh +31 -0
- package/deps/librdkafka/packaging/tools/run-style-check.sh +4 -0
- package/deps/librdkafka/packaging/tools/style-format.sh +149 -0
- package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
- package/deps/librdkafka/service.yml +172 -0
- package/deps/librdkafka/src/CMakeLists.txt +374 -0
- package/deps/librdkafka/src/Makefile +103 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +2834 -0
- package/deps/librdkafka/src/cJSON.h +398 -0
- package/deps/librdkafka/src/crc32c.c +430 -0
- package/deps/librdkafka/src/crc32c.h +38 -0
- package/deps/librdkafka/src/generate_proto.sh +66 -0
- package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
- package/deps/librdkafka/src/lz4.c +2727 -0
- package/deps/librdkafka/src/lz4.h +842 -0
- package/deps/librdkafka/src/lz4frame.c +2078 -0
- package/deps/librdkafka/src/lz4frame.h +692 -0
- package/deps/librdkafka/src/lz4frame_static.h +47 -0
- package/deps/librdkafka/src/lz4hc.c +1631 -0
- package/deps/librdkafka/src/lz4hc.h +413 -0
- package/deps/librdkafka/src/nanopb/pb.h +917 -0
- package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
- package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
- package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
- package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
- package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
- package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
- package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
- package/deps/librdkafka/src/queue.h +850 -0
- package/deps/librdkafka/src/rd.h +584 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +202 -0
- package/deps/librdkafka/src/rdatomic.h +230 -0
- package/deps/librdkafka/src/rdavg.h +260 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +200 -0
- package/deps/librdkafka/src/rdbase64.h +43 -0
- package/deps/librdkafka/src/rdbuf.c +1884 -0
- package/deps/librdkafka/src/rdbuf.h +375 -0
- package/deps/librdkafka/src/rdcrc32.c +114 -0
- package/deps/librdkafka/src/rdcrc32.h +170 -0
- package/deps/librdkafka/src/rddl.c +179 -0
- package/deps/librdkafka/src/rddl.h +43 -0
- package/deps/librdkafka/src/rdendian.h +175 -0
- package/deps/librdkafka/src/rdfloat.h +67 -0
- package/deps/librdkafka/src/rdfnv1a.c +113 -0
- package/deps/librdkafka/src/rdfnv1a.h +35 -0
- package/deps/librdkafka/src/rdgz.c +120 -0
- package/deps/librdkafka/src/rdgz.h +46 -0
- package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
- package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
- package/deps/librdkafka/src/rdhttp.c +830 -0
- package/deps/librdkafka/src/rdhttp.h +101 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +5505 -0
- package/deps/librdkafka/src/rdkafka.h +10686 -0
- package/deps/librdkafka/src/rdkafka_admin.c +9794 -0
- package/deps/librdkafka/src/rdkafka_admin.h +661 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1010 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1786 -0
- package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
- package/deps/librdkafka/src/rdkafka_aux.c +409 -0
- package/deps/librdkafka/src/rdkafka_aux.h +174 -0
- package/deps/librdkafka/src/rdkafka_background.c +221 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6337 -0
- package/deps/librdkafka/src/rdkafka_broker.h +744 -0
- package/deps/librdkafka/src/rdkafka_buf.c +543 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
- package/deps/librdkafka/src/rdkafka_cert.c +576 -0
- package/deps/librdkafka/src/rdkafka_cert.h +62 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +7587 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +477 -0
- package/deps/librdkafka/src/rdkafka_conf.c +4880 -0
- package/deps/librdkafka/src/rdkafka_conf.h +732 -0
- package/deps/librdkafka/src/rdkafka_confval.h +97 -0
- package/deps/librdkafka/src/rdkafka_coord.c +623 -0
- package/deps/librdkafka/src/rdkafka_coord.h +132 -0
- package/deps/librdkafka/src/rdkafka_error.c +228 -0
- package/deps/librdkafka/src/rdkafka_error.h +80 -0
- package/deps/librdkafka/src/rdkafka_event.c +502 -0
- package/deps/librdkafka/src/rdkafka_event.h +126 -0
- package/deps/librdkafka/src/rdkafka_feature.c +898 -0
- package/deps/librdkafka/src/rdkafka_feature.h +104 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +1422 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +44 -0
- package/deps/librdkafka/src/rdkafka_header.c +220 -0
- package/deps/librdkafka/src/rdkafka_header.h +76 -0
- package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
- package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
- package/deps/librdkafka/src/rdkafka_int.h +1260 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +819 -0
- package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
- package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
- package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
- package/deps/librdkafka/src/rdkafka_metadata.c +2209 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +345 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
- package/deps/librdkafka/src/rdkafka_mock.c +3661 -0
- package/deps/librdkafka/src/rdkafka_mock.h +610 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1876 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +3113 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +710 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2589 -0
- package/deps/librdkafka/src/rdkafka_msg.h +614 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +98 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +1806 -0
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
- package/deps/librdkafka/src/rdkafka_offset.h +150 -0
- package/deps/librdkafka/src/rdkafka_op.c +997 -0
- package/deps/librdkafka/src/rdkafka_op.h +858 -0
- package/deps/librdkafka/src/rdkafka_partition.c +4896 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1182 -0
- package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
- package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
- package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
- package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
- package/deps/librdkafka/src/rdkafka_proto.h +736 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +128 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1230 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1220 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +7089 -0
- package/deps/librdkafka/src/rdkafka_request.h +732 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +530 -0
- package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
- package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
- package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1666 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +47 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +2129 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +760 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1053 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +997 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +301 -0
- package/deps/librdkafka/src/rdkafka_timer.c +402 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2161 -0
- package/deps/librdkafka/src/rdkafka_topic.h +334 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
- package/deps/librdkafka/src/rdkafka_transport.h +99 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
- package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
- package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
- package/deps/librdkafka/src/rdlist.c +576 -0
- package/deps/librdkafka/src/rdlist.h +434 -0
- package/deps/librdkafka/src/rdlog.c +89 -0
- package/deps/librdkafka/src/rdlog.h +41 -0
- package/deps/librdkafka/src/rdmap.c +508 -0
- package/deps/librdkafka/src/rdmap.h +492 -0
- package/deps/librdkafka/src/rdmurmur2.c +167 -0
- package/deps/librdkafka/src/rdmurmur2.h +35 -0
- package/deps/librdkafka/src/rdports.c +61 -0
- package/deps/librdkafka/src/rdports.h +38 -0
- package/deps/librdkafka/src/rdposix.h +250 -0
- package/deps/librdkafka/src/rdrand.c +80 -0
- package/deps/librdkafka/src/rdrand.h +43 -0
- package/deps/librdkafka/src/rdregex.c +156 -0
- package/deps/librdkafka/src/rdregex.h +43 -0
- package/deps/librdkafka/src/rdsignal.h +57 -0
- package/deps/librdkafka/src/rdstring.c +645 -0
- package/deps/librdkafka/src/rdstring.h +98 -0
- package/deps/librdkafka/src/rdsysqueue.h +404 -0
- package/deps/librdkafka/src/rdtime.h +356 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +549 -0
- package/deps/librdkafka/src/rdunittest.h +232 -0
- package/deps/librdkafka/src/rdvarint.c +134 -0
- package/deps/librdkafka/src/rdvarint.h +165 -0
- package/deps/librdkafka/src/rdwin32.h +382 -0
- package/deps/librdkafka/src/rdxxhash.c +1030 -0
- package/deps/librdkafka/src/rdxxhash.h +328 -0
- package/deps/librdkafka/src/regexp.c +1352 -0
- package/deps/librdkafka/src/regexp.h +41 -0
- package/deps/librdkafka/src/snappy.c +1866 -0
- package/deps/librdkafka/src/snappy.h +62 -0
- package/deps/librdkafka/src/snappy_compat.h +138 -0
- package/deps/librdkafka/src/statistics_schema.json +444 -0
- package/deps/librdkafka/src/tinycthread.c +932 -0
- package/deps/librdkafka/src/tinycthread.h +503 -0
- package/deps/librdkafka/src/tinycthread_extra.c +199 -0
- package/deps/librdkafka/src/tinycthread_extra.h +212 -0
- package/deps/librdkafka/src/win32_config.h +58 -0
- package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
- package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
- package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
- package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
- package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
- package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
- package/deps/librdkafka/src-cpp/Makefile +55 -0
- package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
- package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
- package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
- package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
- package/deps/librdkafka/src-cpp/README.md +16 -0
- package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
- package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
- package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
- package/deps/librdkafka/tests/0000-unittests.c +72 -0
- package/deps/librdkafka/tests/0001-multiobj.c +102 -0
- package/deps/librdkafka/tests/0002-unkpart.c +244 -0
- package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
- package/deps/librdkafka/tests/0004-conf.c +934 -0
- package/deps/librdkafka/tests/0005-order.c +133 -0
- package/deps/librdkafka/tests/0006-symbols.c +163 -0
- package/deps/librdkafka/tests/0007-autotopic.c +136 -0
- package/deps/librdkafka/tests/0008-reqacks.c +179 -0
- package/deps/librdkafka/tests/0009-mock_cluster.c +97 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
- package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
- package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
- package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
- package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
- package/deps/librdkafka/tests/0016-client_swname.c +181 -0
- package/deps/librdkafka/tests/0017-compression.c +140 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +338 -0
- package/deps/librdkafka/tests/0019-list_groups.c +289 -0
- package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
- package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +279 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
- package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
- package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
- package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +121 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +257 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
- package/deps/librdkafka/tests/0042-many_topics.c +252 -0
- package/deps/librdkafka/tests/0043-no_connection.c +77 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
- package/deps/librdkafka/tests/0048-partitioner.c +283 -0
- package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
- package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
- package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
- package/deps/librdkafka/tests/0058-log.cpp +123 -0
- package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
- package/deps/librdkafka/tests/0062-stats_event.c +126 -0
- package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
- package/deps/librdkafka/tests/0064-interceptors.c +481 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +129 -0
- package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
- package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
- package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
- package/deps/librdkafka/tests/0073-headers.c +381 -0
- package/deps/librdkafka/tests/0074-producev.c +87 -0
- package/deps/librdkafka/tests/0075-retry.c +290 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
- package/deps/librdkafka/tests/0077-compaction.c +363 -0
- package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
- package/deps/librdkafka/tests/0079-fork.c +93 -0
- package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
- package/deps/librdkafka/tests/0081-admin.c +5633 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
- package/deps/librdkafka/tests/0083-cb_event.c +233 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
- package/deps/librdkafka/tests/0085-headers.cpp +392 -0
- package/deps/librdkafka/tests/0086-purge.c +368 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
- package/deps/librdkafka/tests/0090-idempotence.c +171 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
- package/deps/librdkafka/tests/0093-holb.c +200 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +658 -0
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
- package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
- package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
- package/deps/librdkafka/tests/0121-clusterid.c +115 -0
- package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
- package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
- package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
- package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +528 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +125 -0
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
- package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
- package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
- package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
- package/deps/librdkafka/tests/0135-sasl_credentials.cpp +143 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +619 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +515 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
- package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
- package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
- package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
- package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +952 -0
- package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +563 -0
- package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
- package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
- package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
- package/deps/librdkafka/tests/0153-memberid.c +128 -0
- package/deps/librdkafka/tests/1000-unktopic.c +164 -0
- package/deps/librdkafka/tests/8000-idle.cpp +60 -0
- package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
- package/deps/librdkafka/tests/CMakeLists.txt +170 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +509 -0
- package/deps/librdkafka/tests/autotest.sh +33 -0
- package/deps/librdkafka/tests/backtrace.gdb +30 -0
- package/deps/librdkafka/tests/broker_version_tests.py +315 -0
- package/deps/librdkafka/tests/buildbox.sh +17 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
- package/deps/librdkafka/tests/cluster_testing.py +191 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
- package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
- package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
- package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
- package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
- package/deps/librdkafka/tests/fuzzers/README.md +31 -0
- package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
- package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
- package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
- package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
- package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
- package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
- package/deps/librdkafka/tests/java/Makefile +13 -0
- package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
- package/deps/librdkafka/tests/java/README.md +14 -0
- package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
- package/deps/librdkafka/tests/java/run-class.sh +11 -0
- package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
- package/deps/librdkafka/tests/performance_plot.py +115 -0
- package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
- package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
- package/deps/librdkafka/tests/requirements.txt +2 -0
- package/deps/librdkafka/tests/run-all-tests.sh +79 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-test-batches.py +157 -0
- package/deps/librdkafka/tests/run-test.sh +140 -0
- package/deps/librdkafka/tests/rusage.c +249 -0
- package/deps/librdkafka/tests/sasl_test.py +289 -0
- package/deps/librdkafka/tests/scenarios/README.md +6 -0
- package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
- package/deps/librdkafka/tests/scenarios/default.json +5 -0
- package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
- package/deps/librdkafka/tests/sockem.c +801 -0
- package/deps/librdkafka/tests/sockem.h +85 -0
- package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
- package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
- package/deps/librdkafka/tests/test.c +7778 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +1028 -0
- package/deps/librdkafka/tests/testcpp.cpp +131 -0
- package/deps/librdkafka/tests/testcpp.h +388 -0
- package/deps/librdkafka/tests/testshared.h +416 -0
- package/deps/librdkafka/tests/tools/README.md +4 -0
- package/deps/librdkafka/tests/tools/stats/README.md +21 -0
- package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
- package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
- package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
- package/deps/librdkafka/tests/trivup/trivup-0.14.0.tar.gz +0 -0
- package/deps/librdkafka/tests/until-fail.sh +87 -0
- package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
- package/deps/librdkafka/vcpkg.json +23 -0
- package/deps/librdkafka/win32/README.md +5 -0
- package/deps/librdkafka/win32/build-package.bat +3 -0
- package/deps/librdkafka/win32/build.bat +19 -0
- package/deps/librdkafka/win32/common.vcxproj +84 -0
- package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
- package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
- package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
- package/deps/librdkafka/win32/librdkafka.sln +226 -0
- package/deps/librdkafka/win32/librdkafka.vcxproj +276 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +15 -0
- package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
- package/deps/librdkafka/win32/package-zip.ps1 +46 -0
- package/deps/librdkafka/win32/packages/repositories.config +4 -0
- package/deps/librdkafka/win32/push-package.bat +4 -0
- package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
- package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
- package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
- package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +253 -0
- package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
- package/deps/librdkafka/win32/wingetopt.c +564 -0
- package/deps/librdkafka/win32/wingetopt.h +101 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +62 -0
- package/lib/admin.js +233 -0
- package/lib/client.js +573 -0
- package/lib/error.js +500 -0
- package/lib/index.js +34 -0
- package/lib/kafka-consumer-stream.js +397 -0
- package/lib/kafka-consumer.js +698 -0
- package/lib/producer/high-level-producer.js +323 -0
- package/lib/producer-stream.js +307 -0
- package/lib/producer.js +375 -0
- package/lib/tools/ref-counter.js +52 -0
- package/lib/topic-partition.js +88 -0
- package/lib/topic.js +42 -0
- package/lib/util.js +29 -0
- package/package.json +61 -0
- package/prebuilds/darwin-arm64/@point3+node-rdkafka.node +0 -0
- package/prebuilds/linux-x64/@point3+node-rdkafka.node +0 -0
- package/util/configure.js +30 -0
- package/util/get-env.js +6 -0
- package/util/test-compile.js +11 -0
- package/util/test-producer-delivery.js +100 -0
|
@@ -0,0 +1,2484 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
#
|
|
4
|
+
# mklove base configure module, implements the mklove configure framework
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
MKL_MODULES="base"
|
|
8
|
+
MKL_CACHEVARS="CFLAGS LDFLAGS PKG_CONFIG_PATH"
|
|
9
|
+
MKL_MKVARS=""
|
|
10
|
+
MKL_DEFINES=""
|
|
11
|
+
MKL_CHECKS=""
|
|
12
|
+
MKL_LOAD_STACK=""
|
|
13
|
+
|
|
14
|
+
MKL_IDNEXT=1
|
|
15
|
+
|
|
16
|
+
# Default mklove directory to PWD/mklove
|
|
17
|
+
[[ -z "$MKLOVE_DIR" ]] && MKLOVE_DIR="$PWD/mklove"
|
|
18
|
+
|
|
19
|
+
MKL_OUTMK="$PWD/_mklout.mk"
|
|
20
|
+
MKL_OUTH="$PWD/_mklout.h"
|
|
21
|
+
MKL_OUTDBG="$PWD/config.log"
|
|
22
|
+
|
|
23
|
+
MKL_GENERATORS="base:mkl_generate_late_vars"
|
|
24
|
+
MKL_CLEANERS=""
|
|
25
|
+
|
|
26
|
+
MKL_FAILS=""
|
|
27
|
+
MKL_LATE_VARS=""
|
|
28
|
+
|
|
29
|
+
MKL_OPTS_SET=""
|
|
30
|
+
|
|
31
|
+
MKL_RED=""
|
|
32
|
+
MKL_GREEN=""
|
|
33
|
+
MKL_YELLOW=""
|
|
34
|
+
MKL_BLUE=""
|
|
35
|
+
MKL_CLR_RESET=""
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
MKL_NO_DOWNLOAD=0
|
|
39
|
+
MKL_INSTALL_DEPS=n
|
|
40
|
+
MKL_SOURCE_DEPS_ONLY=n
|
|
41
|
+
|
|
42
|
+
MKL_DESTDIR_ADDED=n
|
|
43
|
+
|
|
44
|
+
if [[ -z "$MKL_REPO_URL" ]]; then
|
|
45
|
+
MKL_REPO_URL="http://github.com/edenhill/mklove/raw/master"
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
###########################################################################
|
|
51
|
+
#
|
|
52
|
+
# Variable types:
|
|
53
|
+
# env - Standard environment variables.
|
|
54
|
+
# var - mklove runtime variable, cached or not.
|
|
55
|
+
# mkvar - Makefile variables, also sets runvar
|
|
56
|
+
# define - config.h variables/defines
|
|
57
|
+
#
|
|
58
|
+
###########################################################################
|
|
59
|
+
|
|
60
|
+
# Low level variable assignment
|
|
61
|
+
# Arguments:
|
|
62
|
+
# variable name
|
|
63
|
+
# variable value
|
|
64
|
+
function mkl_var0_set {
|
|
65
|
+
export "$1"="$2"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# Sets a runtime variable (only used during configure)
|
|
69
|
+
# If "cache" is provided these variables are cached to config.cache.
|
|
70
|
+
# Arguments:
|
|
71
|
+
# variable name
|
|
72
|
+
# variable value
|
|
73
|
+
# [ "cache" ]
|
|
74
|
+
function mkl_var_set {
|
|
75
|
+
mkl_var0_set "$1" "$2"
|
|
76
|
+
if [[ $3 == "cache" ]]; then
|
|
77
|
+
if ! mkl_in_list "$MKL_CACHEVARS" "$1" ; then
|
|
78
|
+
MKL_CACHEVARS="$MKL_CACHEVARS $1"
|
|
79
|
+
fi
|
|
80
|
+
fi
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
# Unsets a mkl variable
|
|
84
|
+
# Arguments:
|
|
85
|
+
# variable name
|
|
86
|
+
function mkl_var_unset {
|
|
87
|
+
unset $1
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# Appends to a mkl variable (space delimited)
|
|
91
|
+
# Arguments:
|
|
92
|
+
# variable name
|
|
93
|
+
# variable value
|
|
94
|
+
function mkl_var_append {
|
|
95
|
+
if [[ -z ${!1} ]]; then
|
|
96
|
+
mkl_var_set "$1" "$2"
|
|
97
|
+
else
|
|
98
|
+
mkl_var0_set "$1" "${!1} $2"
|
|
99
|
+
fi
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# Prepends to a mkl variable (space delimited)
|
|
104
|
+
# Arguments:
|
|
105
|
+
# variable name
|
|
106
|
+
# variable value
|
|
107
|
+
function mkl_var_prepend {
|
|
108
|
+
if [[ -z ${!1} ]]; then
|
|
109
|
+
mkl_var_set "$1" "$2"
|
|
110
|
+
else
|
|
111
|
+
mkl_var0_set "$1" "$2 ${!1}"
|
|
112
|
+
fi
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
# Shift the first word off a variable.
|
|
116
|
+
# Arguments:
|
|
117
|
+
# variable name
|
|
118
|
+
function mkl_var_shift {
|
|
119
|
+
local n="${!1}"
|
|
120
|
+
mkl_var0_set "$1" "${n#* }"
|
|
121
|
+
return 0
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# Returns the contents of mkl variable
|
|
126
|
+
# Arguments:
|
|
127
|
+
# variable name
|
|
128
|
+
function mkl_var_get {
|
|
129
|
+
echo "${!1}"
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
# Set environment variable (runtime)
|
|
136
|
+
# These variables are not cached nor written to any of the output files,
|
|
137
|
+
# its just simply a helper wrapper for standard envs.
|
|
138
|
+
# Arguments:
|
|
139
|
+
# varname
|
|
140
|
+
# varvalue
|
|
141
|
+
function mkl_env_set {
|
|
142
|
+
mkl_var0_set "$1" "$2"
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
# Append to environment variable
|
|
146
|
+
# Arguments:
|
|
147
|
+
# varname
|
|
148
|
+
# varvalue
|
|
149
|
+
# [ separator (" ") ]
|
|
150
|
+
function mkl_env_append {
|
|
151
|
+
local sep=" "
|
|
152
|
+
if [[ -z ${!1} ]]; then
|
|
153
|
+
mkl_env_set "$1" "$2"
|
|
154
|
+
else
|
|
155
|
+
[ ! -z ${3} ] && sep="$3"
|
|
156
|
+
mkl_var0_set "$1" "${!1}${sep}$2"
|
|
157
|
+
fi
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
# Prepend to environment variable
|
|
162
|
+
# Arguments:
|
|
163
|
+
# varname
|
|
164
|
+
# varvalue
|
|
165
|
+
# [ separator (" ") ]
|
|
166
|
+
function mkl_env_prepend {
|
|
167
|
+
local sep=" "
|
|
168
|
+
if [[ -z ${!1} ]]; then
|
|
169
|
+
mkl_env_set "$1" "$2"
|
|
170
|
+
else
|
|
171
|
+
[ ! -z ${3} ] && sep="$3"
|
|
172
|
+
mkl_var0_set "$1" "$2${sep}${!1}"
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
# Set a make variable (Makefile.config)
|
|
181
|
+
# Arguments:
|
|
182
|
+
# config name
|
|
183
|
+
# variable name
|
|
184
|
+
# value
|
|
185
|
+
function mkl_mkvar_set {
|
|
186
|
+
if [[ ! -z $2 ]]; then
|
|
187
|
+
mkl_env_set "$2" "$3"
|
|
188
|
+
mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2
|
|
189
|
+
fi
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
# Prepends to a make variable (Makefile.config)
|
|
194
|
+
# Arguments:
|
|
195
|
+
# config name
|
|
196
|
+
# variable name
|
|
197
|
+
# value
|
|
198
|
+
# [ separator (" ") ]
|
|
199
|
+
function mkl_mkvar_prepend {
|
|
200
|
+
if [[ ! -z $2 ]]; then
|
|
201
|
+
mkl_env_prepend "$2" "$3" "$4"
|
|
202
|
+
mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2
|
|
203
|
+
fi
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
# Appends to a make variable (Makefile.config)
|
|
208
|
+
# Arguments:
|
|
209
|
+
# config name
|
|
210
|
+
# variable name
|
|
211
|
+
# value
|
|
212
|
+
# [ separator (" ") ]
|
|
213
|
+
function mkl_mkvar_append {
|
|
214
|
+
if [[ ! -z $2 ]]; then
|
|
215
|
+
mkl_env_append "$2" "$3" "$4"
|
|
216
|
+
mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2
|
|
217
|
+
fi
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
# Prepends to a make variable (Makefile.config)
|
|
222
|
+
# Arguments:
|
|
223
|
+
# config name
|
|
224
|
+
# variable name
|
|
225
|
+
# value
|
|
226
|
+
# [ separator (" ") ]
|
|
227
|
+
function mkl_mkvar_prepend {
|
|
228
|
+
if [[ ! -z $2 ]]; then
|
|
229
|
+
mkl_env_prepend "$2" "$3" "$4"
|
|
230
|
+
mkl_in_list "$MKL_MKVARS" "$2"|| mkl_env_append MKL_MKVARS $2
|
|
231
|
+
fi
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
# Return mkvar variable value
|
|
235
|
+
# Arguments:
|
|
236
|
+
# variable name
|
|
237
|
+
function mkl_mkvar_get {
|
|
238
|
+
[[ -z ${!1} ]] && return 1
|
|
239
|
+
echo ${!1}
|
|
240
|
+
return 0
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
# Defines a config header define (config.h)
|
|
246
|
+
# Arguments:
|
|
247
|
+
# config name
|
|
248
|
+
# define name
|
|
249
|
+
# define value (optional, default: 1)
|
|
250
|
+
# if value starts with code: then no "" are added
|
|
251
|
+
function mkl_define_set {
|
|
252
|
+
|
|
253
|
+
if [[ -z $2 ]]; then
|
|
254
|
+
return 0
|
|
255
|
+
fi
|
|
256
|
+
|
|
257
|
+
local stmt=""
|
|
258
|
+
local defid=
|
|
259
|
+
if [[ $2 = *\(* ]]; then
|
|
260
|
+
# macro
|
|
261
|
+
defid="def_${2%%(*}"
|
|
262
|
+
else
|
|
263
|
+
# define
|
|
264
|
+
defid="def_$2"
|
|
265
|
+
fi
|
|
266
|
+
|
|
267
|
+
[[ -z $1 ]] || stmt="// $1\n"
|
|
268
|
+
|
|
269
|
+
local val="$3"
|
|
270
|
+
if [[ -z "$val" ]]; then
|
|
271
|
+
val="$(mkl_def $2 1)"
|
|
272
|
+
fi
|
|
273
|
+
|
|
274
|
+
# Define as code, string or integer?
|
|
275
|
+
if [[ $val == code:* ]]; then
|
|
276
|
+
# Code block, copy verbatim without quotes, strip code: prefix
|
|
277
|
+
val=${val#code:}
|
|
278
|
+
elif [[ ! ( "$val" =~ ^[0-9]+([lL]?[lL][dDuU]?)?$ || \
|
|
279
|
+
"$val" =~ ^0x[0-9a-fA-F]+([lL]?[lL][dDuU]?)?$ ) ]]; then
|
|
280
|
+
# String: quote
|
|
281
|
+
val="\"$val\""
|
|
282
|
+
fi
|
|
283
|
+
# else: unquoted integer/hex
|
|
284
|
+
|
|
285
|
+
stmt="${stmt}#define $2 $val"
|
|
286
|
+
mkl_env_set "$defid" "$stmt"
|
|
287
|
+
mkl_env_append MKL_DEFINES "$defid"
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
# Sets "all" configuration variables, that is:
|
|
295
|
+
# for name set: Makefile variable, config.h define
|
|
296
|
+
# Will convert value "y"|"n" to 1|0 for config.h
|
|
297
|
+
# Arguments:
|
|
298
|
+
# config name
|
|
299
|
+
# variable name
|
|
300
|
+
# value
|
|
301
|
+
function mkl_allvar_set {
|
|
302
|
+
mkl_mkvar_set "$1" "$2" "$3"
|
|
303
|
+
local val=$3
|
|
304
|
+
if [[ $3 = "y" ]]; then
|
|
305
|
+
val=1
|
|
306
|
+
elif [[ $3 = "n" ]]; then
|
|
307
|
+
val=0
|
|
308
|
+
fi
|
|
309
|
+
mkl_define_set "$1" "$2" "$val"
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
###########################################################################
|
|
314
|
+
#
|
|
315
|
+
# Dependency installation, et.al.
|
|
316
|
+
#
|
|
317
|
+
#
|
|
318
|
+
###########################################################################
|
|
319
|
+
|
|
320
|
+
# Returns the local dependency directory.
|
|
321
|
+
function mkl_depdir {
|
|
322
|
+
local dir="$MKLOVE_DIR/deps"
|
|
323
|
+
[[ -d $dir ]] || mkdir -p "$dir"
|
|
324
|
+
if ! grep -q ^deps$ "$MKLOVE_DIR/.gitignore" 2>/dev/null ; then
|
|
325
|
+
echo "deps" >> "$MKLOVE_DIR/.gitignore"
|
|
326
|
+
fi
|
|
327
|
+
|
|
328
|
+
echo "$dir"
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
# Returns the package's installation directory / DESTDIR.
|
|
332
|
+
function mkl_dep_destdir {
|
|
333
|
+
echo "$(mkl_depdir)/dest"
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
# Returns the package's source directory.
|
|
337
|
+
function mkl_dep_srcdir {
|
|
338
|
+
echo "$(mkl_depdir)/src/$1"
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
# Get the static library file name(s) for a package.
|
|
343
|
+
function mkl_lib_static_fnames {
|
|
344
|
+
local name=$1
|
|
345
|
+
mkl_meta_get $name "static" ""
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
# Returns true if previous ./configure ran a dep install for this package.
|
|
350
|
+
function mkl_dep_install_cached {
|
|
351
|
+
local name=$1
|
|
352
|
+
|
|
353
|
+
if [[ -n $(mkl_var_get "MKL_STATUS_${1}_INSTALL") ]] ||
|
|
354
|
+
[[ -n $(mkl_var_get "MKL_STATUS_${1}_INSTALL_SRC") ]]; then
|
|
355
|
+
return 0 # true
|
|
356
|
+
else
|
|
357
|
+
return 1 # false
|
|
358
|
+
fi
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
# Install an external dependency using the platform's native
|
|
362
|
+
# package manager.
|
|
363
|
+
# Should only be called from mkl_dep_install
|
|
364
|
+
#
|
|
365
|
+
# Param 1: config name
|
|
366
|
+
function mkl_dep_install_pkg {
|
|
367
|
+
local name=$1
|
|
368
|
+
local iname="${name}_INSTALL"
|
|
369
|
+
local retcode=1 # default to fail
|
|
370
|
+
local method="none"
|
|
371
|
+
local pkgs
|
|
372
|
+
local cmd
|
|
373
|
+
|
|
374
|
+
mkl_dbg "Attempting native install of dependency $name on $MKL_DISTRO with effective user $EUID"
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
# Try the platform specific installer first.
|
|
378
|
+
case ${MKL_DISTRO}-${EUID} in
|
|
379
|
+
debian-0|ubuntu-0)
|
|
380
|
+
method=apt
|
|
381
|
+
pkgs=$(mkl_meta_get $name deb)
|
|
382
|
+
cmd="apt install -y $pkgs"
|
|
383
|
+
;;
|
|
384
|
+
|
|
385
|
+
centos-0|rhel-0|redhat-0|fedora-0)
|
|
386
|
+
method=yum
|
|
387
|
+
pkgs=$(mkl_meta_get $name rpm)
|
|
388
|
+
cmd="yum install -y $pkgs"
|
|
389
|
+
;;
|
|
390
|
+
|
|
391
|
+
alpine-0)
|
|
392
|
+
method=apk
|
|
393
|
+
pkgs=$(mkl_meta_get $name apk)
|
|
394
|
+
cmd="apk add $pkgs"
|
|
395
|
+
;;
|
|
396
|
+
|
|
397
|
+
osx-*)
|
|
398
|
+
method=brew
|
|
399
|
+
pkgs=$(mkl_meta_get $name brew)
|
|
400
|
+
cmd="brew install $pkgs"
|
|
401
|
+
;;
|
|
402
|
+
|
|
403
|
+
*)
|
|
404
|
+
mkl_dbg "$name: No native installer set for $name on $MKL_DISTRO (euid $EUID)"
|
|
405
|
+
return 1
|
|
406
|
+
;;
|
|
407
|
+
esac
|
|
408
|
+
|
|
409
|
+
if [[ -z $pkgs ]]; then
|
|
410
|
+
mkl_dbg "$name: No packages to install ($method)"
|
|
411
|
+
return 1
|
|
412
|
+
fi
|
|
413
|
+
|
|
414
|
+
mkl_check_begin --verb "installing dependencies ($cmd)" $iname "" no-cache "$name"
|
|
415
|
+
$cmd >>$MKL_OUTDBG 2>&1
|
|
416
|
+
retcode=$?
|
|
417
|
+
|
|
418
|
+
if [[ $retcode -eq 0 ]]; then
|
|
419
|
+
mkl_dbg "Native install of $name (using $method, $cmd) succeeded"
|
|
420
|
+
mkl_check_done "$iname" "" cont "using $method"
|
|
421
|
+
mkl_meta_set $name installed_with "$method"
|
|
422
|
+
elif [[ $method != "none" ]]; then
|
|
423
|
+
mkl_dbg "Native install of $name (using $method, $cmd) failed: retcode $retcode"
|
|
424
|
+
mkl_check_failed "$iname" "" cont "using $method"
|
|
425
|
+
fi
|
|
426
|
+
|
|
427
|
+
return $retcode
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
# Returns 0 (yes) if this dependency has a source builder, else 1 (no)
|
|
432
|
+
function mkl_dep_has_builder {
|
|
433
|
+
local name=$1
|
|
434
|
+
local func="${name}_install_source"
|
|
435
|
+
mkl_func_exists $func
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
# Returns 0 (yes) if this dependency has a package installer, else 1 (no)
|
|
440
|
+
function mkl_dep_has_installer {
|
|
441
|
+
local name=$1
|
|
442
|
+
if mkl_dep_has_builder "$name" || \
|
|
443
|
+
[[ -n $(mkl_meta_get $name deb) ]] || \
|
|
444
|
+
[[ -n $(mkl_meta_get $name rpm) ]] || \
|
|
445
|
+
[[ -n $(mkl_meta_get $name brew) ]] || \
|
|
446
|
+
[[ -n $(mkl_meta_get $name apk) ]]; then
|
|
447
|
+
return 0
|
|
448
|
+
else
|
|
449
|
+
return 1
|
|
450
|
+
fi
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
# Install an external dependency from source.
|
|
455
|
+
#
|
|
456
|
+
# The resulting libraries must be installed in $ddir/usr/lib (or lib64),
|
|
457
|
+
# and include files in $ddir/usr/include.
|
|
458
|
+
#
|
|
459
|
+
# Any dependency installed from source will be linked statically
|
|
460
|
+
# regardless of --enable-static, if the build produced static libraries.
|
|
461
|
+
|
|
462
|
+
#
|
|
463
|
+
# Param 1: config name
|
|
464
|
+
function mkl_dep_install_source {
|
|
465
|
+
local name=$1
|
|
466
|
+
local iname="${name}_INSTALL_SRC"
|
|
467
|
+
local retcode=
|
|
468
|
+
|
|
469
|
+
local func="${name}_install_source"
|
|
470
|
+
|
|
471
|
+
if ! mkl_dep_has_builder $name ; then
|
|
472
|
+
mkl_dbg "No source builder for $name ($func) available"
|
|
473
|
+
return 1
|
|
474
|
+
fi
|
|
475
|
+
|
|
476
|
+
mkl_check_begin --verb "building dependency" $iname "" no-cache "$name"
|
|
477
|
+
|
|
478
|
+
# Create install directory / DESTDIR
|
|
479
|
+
local ddir=$(mkl_dep_destdir $name)
|
|
480
|
+
[[ -d $ddir ]] || mkdir -p "$ddir"
|
|
481
|
+
|
|
482
|
+
# Create and go to source directory
|
|
483
|
+
local sdir=$(mkl_dep_srcdir $name)
|
|
484
|
+
[[ -d $sdir ]] || mkdir -p "$sdir"
|
|
485
|
+
mkl_pushd "$sdir"
|
|
486
|
+
|
|
487
|
+
local ilog="${sdir}/_mkl_install.log"
|
|
488
|
+
|
|
489
|
+
# Build and install
|
|
490
|
+
mkl_dbg "Building $name from source in $sdir (func $func)"
|
|
491
|
+
|
|
492
|
+
libdir="/usr/lib" $func $name "$ddir" >$ilog 2>&1
|
|
493
|
+
retcode=$?
|
|
494
|
+
|
|
495
|
+
mkl_popd # $sdir
|
|
496
|
+
|
|
497
|
+
if [[ $retcode -eq 0 ]]; then
|
|
498
|
+
mkl_dbg "Source install of $name succeeded"
|
|
499
|
+
mkl_check_done "$iname" "" cont "ok" "from source"
|
|
500
|
+
mkl_meta_set $name installed_with "source"
|
|
501
|
+
else
|
|
502
|
+
mkl_dbg "Source install of $name failed"
|
|
503
|
+
mkl_check_failed "$iname" "" disable "source installer failed (see $ilog)"
|
|
504
|
+
mkl_err "$name source build failed, see $ilog for details. First 50 and last 50 lines:"
|
|
505
|
+
head -50 "$ilog"
|
|
506
|
+
echo " .... and last 50 lines ...."
|
|
507
|
+
tail -50 "$ilog"
|
|
508
|
+
fi
|
|
509
|
+
|
|
510
|
+
return $retcode
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
# Tries to resolve/find full paths to static libraries for a module,
|
|
515
|
+
# using the provided scan dir path.
|
|
516
|
+
# Any found libraries are set as STATIC_LIB_.. defines.
|
|
517
|
+
#
|
|
518
|
+
# Param 1: config name
|
|
519
|
+
# Param 2: scandir
|
|
520
|
+
#
|
|
521
|
+
# Returns 0 if libraries were found, else 1.
|
|
522
|
+
function mkl_resolve_static_libs {
|
|
523
|
+
local name="$1"
|
|
524
|
+
local scandir="$2"
|
|
525
|
+
local stlibfnames=$(mkl_lib_static_fnames $name)
|
|
526
|
+
local stlibvar="STATIC_LIB_${name}"
|
|
527
|
+
|
|
528
|
+
if [[ -z $stlibfnames || -n "${!stlibvar}" ]]; then
|
|
529
|
+
mkl_dbg "$name: not resolving static libraries (stlibfnames=$stlibfnames, $stlibvar=${!stlibvar})"
|
|
530
|
+
mkl_allvar_set "$name" "WITH_STATIC_LIB_$name" y
|
|
531
|
+
return 1
|
|
532
|
+
fi
|
|
533
|
+
|
|
534
|
+
local fname=
|
|
535
|
+
local stlibs=""
|
|
536
|
+
mkl_dbg "$name: resolving static libraries from $stlibfnames in $scandir"
|
|
537
|
+
for fname in $stlibfnames ; do
|
|
538
|
+
local stlib=$(find "${scandir}" -name "$fname" 2>/dev/null | head -1)
|
|
539
|
+
if [[ -n $stlib ]]; then
|
|
540
|
+
stlibs="${stlibs} $stlib"
|
|
541
|
+
fi
|
|
542
|
+
done
|
|
543
|
+
|
|
544
|
+
# Trim leading whitespaces
|
|
545
|
+
stlibs=${stlibs# }
|
|
546
|
+
|
|
547
|
+
if [[ -n $stlibs ]]; then
|
|
548
|
+
mkl_dbg "$name: $stlibvar: found static libs: $stlibs"
|
|
549
|
+
mkl_var_set $stlibvar "$stlibs" "cache"
|
|
550
|
+
mkl_allvar_set "$name" "WITH_STATIC_LIB_$name" y
|
|
551
|
+
return 0
|
|
552
|
+
else
|
|
553
|
+
mkl_dbg "$name: did not find any static libraries for $stlibfnames in ${scandir}"
|
|
554
|
+
return 1
|
|
555
|
+
fi
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
# Install an external dependecy
|
|
560
|
+
#
|
|
561
|
+
# Param 1: config name (e.g zstd)
|
|
562
|
+
function mkl_dep_install {
|
|
563
|
+
local name=$1
|
|
564
|
+
local retcode=
|
|
565
|
+
|
|
566
|
+
local ddir=$(mkl_dep_destdir $name)
|
|
567
|
+
|
|
568
|
+
if [[ $MKL_SOURCE_DEPS_ONLY != y ]] || ! mkl_dep_has_builder $name ; then
|
|
569
|
+
#
|
|
570
|
+
# Try native package manager first, or if no source builder
|
|
571
|
+
# is available for this dependency.
|
|
572
|
+
#
|
|
573
|
+
mkl_dep_install_pkg $name
|
|
574
|
+
retcode=$?
|
|
575
|
+
|
|
576
|
+
if [[ $retcode -eq 0 ]]; then
|
|
577
|
+
return $retcode
|
|
578
|
+
fi
|
|
579
|
+
fi
|
|
580
|
+
|
|
581
|
+
#
|
|
582
|
+
# Try source installer.
|
|
583
|
+
#
|
|
584
|
+
mkl_dep_install_source $name
|
|
585
|
+
retcode=$?
|
|
586
|
+
|
|
587
|
+
if [[ $retcode -ne 0 ]]; then
|
|
588
|
+
if [[ $MKL_SOURCE_DEPS_ONLY == y ]]; then
|
|
589
|
+
# Require dependencies, regardless of original action,
|
|
590
|
+
# if --source-deps-only is specified, to ensure
|
|
591
|
+
# that we do indeed link with the desired library.
|
|
592
|
+
mkl_fail "$name" "" fail "Failed to install dependency $name"
|
|
593
|
+
fi
|
|
594
|
+
return $retcode
|
|
595
|
+
fi
|
|
596
|
+
|
|
597
|
+
local ddir=$(mkl_dep_destdir $name)
|
|
598
|
+
|
|
599
|
+
# Find the static library(s), if any.
|
|
600
|
+
if ! mkl_resolve_static_libs "$name" "${ddir}/usr"; then
|
|
601
|
+
# No static libraries found, set up dynamic linker path
|
|
602
|
+
mkl_mkvar_prepend LDFLAGS LDFLAGS "-L${ddir}/usr/lib64 -L${ddir}/usr/lib"
|
|
603
|
+
fi
|
|
604
|
+
|
|
605
|
+
# Add the deps destdir to various build flags so that tools can pick
|
|
606
|
+
# up the artifacts (.pc files, includes, libs, etc) they need.
|
|
607
|
+
if [[ $MKL_DESTDIR_ADDED == n ]]; then
|
|
608
|
+
# Add environment variables so that later built dependencies
|
|
609
|
+
# can find this one.
|
|
610
|
+
mkl_env_prepend LDFLAGS "-L${ddir}/usr/lib64 -L${ddir}/usr/lib"
|
|
611
|
+
mkl_env_prepend CPPFLAGS "-I${ddir}/usr/include"
|
|
612
|
+
mkl_env_prepend PKG_CONFIG_PATH "${ddir}/usr/lib/pkgconfig" ":"
|
|
613
|
+
# And tell pkg-config to get static linker flags.
|
|
614
|
+
mkl_env_set PKG_CONFIG "${PKG_CONFIG} --static"
|
|
615
|
+
MKL_DESTDIR_ADDED=y
|
|
616
|
+
fi
|
|
617
|
+
|
|
618
|
+
# Append the package's install path to compiler and linker flags.
|
|
619
|
+
mkl_dbg "$name: Adding install-deps paths ($ddir) to compiler and linker flags"
|
|
620
|
+
mkl_mkvar_prepend CPPFLAGS CPPFLAGS "-I${ddir}/usr/include"
|
|
621
|
+
|
|
622
|
+
return $retcode
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
# Apply patch to a source dependency.
|
|
627
|
+
#
|
|
628
|
+
# Param 1: config name (e.g. libssl)
|
|
629
|
+
# Param 2: patch number (optional, else all)
|
|
630
|
+
#
|
|
631
|
+
# Returns 0 on success or 1 on error.
|
|
632
|
+
function mkl_patch {
|
|
633
|
+
local name=$1
|
|
634
|
+
local patchnr="$2"
|
|
635
|
+
|
|
636
|
+
if [[ -z $patchnr ]]; then
|
|
637
|
+
patchnr="????"
|
|
638
|
+
fi
|
|
639
|
+
|
|
640
|
+
local patchfile=
|
|
641
|
+
local cnt=0
|
|
642
|
+
for patchfile in $(echo ${MKLOVE_DIR}/modules/patches/${name}.${patchnr}-*.patch | sort); do
|
|
643
|
+
mkl_dbg "$1: applying patch $patchfile"
|
|
644
|
+
patch -p1 < $patchfile
|
|
645
|
+
local retcode=$?
|
|
646
|
+
if [[ $retcode != 0 ]]; then
|
|
647
|
+
mkl_err "mkl_patch: $1: failed to apply patch $patchfile: see source dep build log for details"
|
|
648
|
+
return 1
|
|
649
|
+
fi
|
|
650
|
+
cnt=$(($cnt + 1))
|
|
651
|
+
done
|
|
652
|
+
|
|
653
|
+
if [[ $cnt -lt 1 ]]; then
|
|
654
|
+
mkl_err "mkl_patch: $1: no patches matchign $patchnr found"
|
|
655
|
+
return 1
|
|
656
|
+
fi
|
|
657
|
+
|
|
658
|
+
return 0
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
###########################################################################
|
|
663
|
+
#
|
|
664
|
+
#
|
|
665
|
+
# Check failure functionality
|
|
666
|
+
#
|
|
667
|
+
#
|
|
668
|
+
###########################################################################
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
# Summarize all fatal failures and then exits.
|
|
672
|
+
function mkl_fail_summary {
|
|
673
|
+
echo "
|
|
674
|
+
|
|
675
|
+
"
|
|
676
|
+
|
|
677
|
+
local pkg_cmd=""
|
|
678
|
+
local install_pkgs=""
|
|
679
|
+
mkl_err "###########################################################"
|
|
680
|
+
mkl_err "### Configure failed ###"
|
|
681
|
+
mkl_err "###########################################################"
|
|
682
|
+
mkl_err "### Accumulated failures: ###"
|
|
683
|
+
mkl_err "###########################################################"
|
|
684
|
+
local n
|
|
685
|
+
for n in $MKL_FAILS ; do
|
|
686
|
+
local conf=$(mkl_var_get MKL_FAIL__${n}__conf)
|
|
687
|
+
mkl_err " $conf ($(mkl_var_get MKL_FAIL__${n}__define)) $(mkl_meta_get $conf name)"
|
|
688
|
+
if mkl_meta_exists $conf desc; then
|
|
689
|
+
mkl_err0 " desc: $MKL_YELLOW$(mkl_meta_get $conf desc)$MKL_CLR_RESET"
|
|
690
|
+
fi
|
|
691
|
+
mkl_err0 " module: $(mkl_var_get MKL_FAIL__${n}__module)"
|
|
692
|
+
mkl_err0 " action: $(mkl_var_get MKL_FAIL__${n}__action)"
|
|
693
|
+
mkl_err0 " reason:
|
|
694
|
+
$(mkl_var_get MKL_FAIL__${n}__reason)
|
|
695
|
+
"
|
|
696
|
+
# Dig up some metadata to assist the user
|
|
697
|
+
case $MKL_DISTRO in
|
|
698
|
+
debian|ubuntu)
|
|
699
|
+
local debs=$(mkl_meta_get $conf "deb")
|
|
700
|
+
pkg_cmd="sudo apt install -y"
|
|
701
|
+
if [[ ${#debs} > 0 ]]; then
|
|
702
|
+
install_pkgs="$install_pkgs $debs"
|
|
703
|
+
fi
|
|
704
|
+
;;
|
|
705
|
+
centos|rhel|redhat|fedora)
|
|
706
|
+
local rpms=$(mkl_meta_get $conf "rpm")
|
|
707
|
+
pkg_cmd="sudo yum install -y"
|
|
708
|
+
if [[ ${#rpms} > 0 ]]; then
|
|
709
|
+
install_pkgs="$install_pkgs $rpms"
|
|
710
|
+
fi
|
|
711
|
+
;;
|
|
712
|
+
alpine)
|
|
713
|
+
local apks=$(mkl_meta_get $conf "apk")
|
|
714
|
+
pkg_cmd="apk add "
|
|
715
|
+
if [[ ${#apks} > 0 ]]; then
|
|
716
|
+
install_pkgs="$install_pkgs $apks"
|
|
717
|
+
fi
|
|
718
|
+
;;
|
|
719
|
+
osx)
|
|
720
|
+
local pkgs=$(mkl_meta_get $conf "brew")
|
|
721
|
+
pkg_cmd="brew install"
|
|
722
|
+
if [[ ${#pkgs} > 0 ]]; then
|
|
723
|
+
install_pkgs="$install_pkgs $pkgs"
|
|
724
|
+
fi
|
|
725
|
+
;;
|
|
726
|
+
esac
|
|
727
|
+
done
|
|
728
|
+
|
|
729
|
+
if [[ ! -z $install_pkgs ]]; then
|
|
730
|
+
mkl_err "###########################################################"
|
|
731
|
+
mkl_err "### Installing the following packages might help: ###"
|
|
732
|
+
mkl_err "###########################################################"
|
|
733
|
+
mkl_err0 "$pkg_cmd $install_pkgs"
|
|
734
|
+
mkl_err0 ""
|
|
735
|
+
fi
|
|
736
|
+
exit 1
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
# Checks if there were failures.
|
|
741
|
+
# Returns 0 if there were no failures, else calls failure summary and exits.
|
|
742
|
+
function mkl_check_fails {
|
|
743
|
+
if [[ ${#MKL_FAILS} = 0 ]]; then
|
|
744
|
+
return 0
|
|
745
|
+
fi
|
|
746
|
+
mkl_fail_summary
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
# A check has failed but we want to carry on (and we should!).
|
|
750
|
+
# We fail it all later.
|
|
751
|
+
# Arguments:
|
|
752
|
+
# config name
|
|
753
|
+
# define name
|
|
754
|
+
# action
|
|
755
|
+
# reason
|
|
756
|
+
function mkl_fail {
|
|
757
|
+
local n="$(mkl_env_esc "$1")"
|
|
758
|
+
mkl_var_set "MKL_FAIL__${n}__conf" "$1"
|
|
759
|
+
mkl_var_set "MKL_FAIL__${n}__module" $MKL_MODULE
|
|
760
|
+
mkl_var_set "MKL_FAIL__${n}__define" $2
|
|
761
|
+
mkl_var_set "MKL_FAIL__${n}__action" "$3"
|
|
762
|
+
if [[ -z $(mkl_var_get "MKL_FAIL__${n}__reason") ]]; then
|
|
763
|
+
mkl_var_set "MKL_FAIL__${n}__reason" "$4"
|
|
764
|
+
else
|
|
765
|
+
mkl_var_append "MKL_FAIL__${n}__reason" "
|
|
766
|
+
And also:
|
|
767
|
+
$4"
|
|
768
|
+
fi
|
|
769
|
+
mkl_in_list "$MKL_FAILS" "$n" || mkl_var_append MKL_FAILS "$n"
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
# A check failed, handle it
|
|
774
|
+
# Arguments:
|
|
775
|
+
# config name
|
|
776
|
+
# define name
|
|
777
|
+
# action (fail|disable|ignore|cont)
|
|
778
|
+
# reason
|
|
779
|
+
function mkl_check_failed {
|
|
780
|
+
# Override action based on require directives, unless the action is
|
|
781
|
+
# set to cont (for fallthrough to sub-sequent tests).
|
|
782
|
+
local action="$3"
|
|
783
|
+
if [[ $3 != "cont" ]]; then
|
|
784
|
+
action=$(mkl_meta_get "MOD__$MKL_MODULE" "override_action" $3)
|
|
785
|
+
fi
|
|
786
|
+
|
|
787
|
+
# --fail-fatal option
|
|
788
|
+
[[ $MKL_FAILFATAL ]] && action="fail"
|
|
789
|
+
|
|
790
|
+
mkl_check_done "$1" "$2" "$action" "failed"
|
|
791
|
+
mkl_dbg "Check $1 ($2, action $action (originally $3)) failed: $4"
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
case $action in
|
|
795
|
+
fail)
|
|
796
|
+
# Check failed fatally, fail everything eventually
|
|
797
|
+
mkl_fail "$1" "$2" "$3" "$4"
|
|
798
|
+
return 1
|
|
799
|
+
;;
|
|
800
|
+
|
|
801
|
+
disable)
|
|
802
|
+
# Check failed, disable
|
|
803
|
+
[[ ! -z $2 ]] && mkl_mkvar_set "$1" "$2" "n"
|
|
804
|
+
return 1
|
|
805
|
+
;;
|
|
806
|
+
ignore)
|
|
807
|
+
# Check failed but we ignore the results and set it anyway.
|
|
808
|
+
[[ ! -z $2 ]] && mkl_define_set "$1" "$2" "1"
|
|
809
|
+
[[ ! -z $2 ]] && mkl_mkvar_set "$1" "$2" "y"
|
|
810
|
+
return 1
|
|
811
|
+
;;
|
|
812
|
+
cont)
|
|
813
|
+
# Check failed but we ignore the results and do nothing.
|
|
814
|
+
return 0
|
|
815
|
+
;;
|
|
816
|
+
esac
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
###########################################################################
|
|
823
|
+
#
|
|
824
|
+
#
|
|
825
|
+
# Output generators
|
|
826
|
+
#
|
|
827
|
+
#
|
|
828
|
+
###########################################################################
|
|
829
|
+
|
|
830
|
+
# Generate late variables.
|
|
831
|
+
# Late variables are those referenced in command line option defaults
|
|
832
|
+
# but then never set by --option.
|
|
833
|
+
function mkl_generate_late_vars {
|
|
834
|
+
local n
|
|
835
|
+
for n in $MKL_LATE_VARS ; do
|
|
836
|
+
local func=${n%:*}
|
|
837
|
+
local safeopt=${func#opt_}
|
|
838
|
+
local val=${n#*:}
|
|
839
|
+
if mkl_in_list "$MKL_OPTS_SET" "$safeopt" ; then
|
|
840
|
+
# Skip options set explicitly with --option
|
|
841
|
+
continue
|
|
842
|
+
fi
|
|
843
|
+
# Expand variable references "\$foo" by calling eval
|
|
844
|
+
# and pass it opt_... function.
|
|
845
|
+
$func "$(eval echo $val)"
|
|
846
|
+
done
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
# Generate MKL_DYNAMIC_LIBS and MKL_STATIC_LIBS for Makefile.config
|
|
851
|
+
#
|
|
852
|
+
# Params: $LIBS
|
|
853
|
+
function mkl_generate_libs {
|
|
854
|
+
while [[ $# -gt 0 ]]; do
|
|
855
|
+
if [[ $1 == -l* ]]; then
|
|
856
|
+
mkl_mkvar_append "" MKL_DYNAMIC_LIBS $1
|
|
857
|
+
elif [[ $1 == *.a ]]; then
|
|
858
|
+
mkl_mkvar_append "" MKL_STATIC_LIBS $1
|
|
859
|
+
elif [[ $1 == -framework ]]; then
|
|
860
|
+
mkl_mkvar_append "" MKL_DYNAMIC_LIBS "$1 $2"
|
|
861
|
+
shift # two args
|
|
862
|
+
else
|
|
863
|
+
mkl_dbg "Ignoring arg $1 from LIBS while building STATIC and DYNAMIC lists"
|
|
864
|
+
fi
|
|
865
|
+
shift # remove arg
|
|
866
|
+
done
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
# Generate output files.
|
|
870
|
+
# Must be called following a succesful configure run.
|
|
871
|
+
function mkl_generate {
|
|
872
|
+
|
|
873
|
+
# Generate MKL_STATIC_LIBS and MKL_DYNAMIC_LIBS from LIBS
|
|
874
|
+
mkl_generate_libs $LIBS
|
|
875
|
+
|
|
876
|
+
local mf=
|
|
877
|
+
for mf in $MKL_GENERATORS ; do
|
|
878
|
+
MKL_MODULE=${mf%:*}
|
|
879
|
+
local func=${mf#*:}
|
|
880
|
+
$func || exit 1
|
|
881
|
+
done
|
|
882
|
+
|
|
883
|
+
# Generate a built-in options define based on WITH_..=y
|
|
884
|
+
local with_y=
|
|
885
|
+
for n in $MKL_MKVARS ; do
|
|
886
|
+
if [[ $n == WITH_* ]] && [[ $n != WITH_STATIC_LIB_* ]] && [[ ${!n} == y ]]; then
|
|
887
|
+
with_y="$with_y ${n#WITH_}"
|
|
888
|
+
fi
|
|
889
|
+
done
|
|
890
|
+
with_y="${with_y# }"
|
|
891
|
+
|
|
892
|
+
mkl_allvar_set "BUILT_WITH" "BUILT_WITH" "$with_y"
|
|
893
|
+
|
|
894
|
+
mkl_write_mk "# Automatically generated by $0 $*"
|
|
895
|
+
mkl_write_mk "# Config variables"
|
|
896
|
+
mkl_write_mk "#"
|
|
897
|
+
mkl_write_mk "# Generated by:"
|
|
898
|
+
mkl_write_mk "# $MKL_CONFIGURE_ARGS"
|
|
899
|
+
mkl_write_mk ""
|
|
900
|
+
|
|
901
|
+
# This variable is used by Makefile.base to avoid multiple inclusions.
|
|
902
|
+
mkl_write_mk "MKL_MAKEFILE_CONFIG=y"
|
|
903
|
+
|
|
904
|
+
# Export colors to Makefile.config
|
|
905
|
+
mkl_write_mk "MKL_RED=\t${MKL_RED}"
|
|
906
|
+
mkl_write_mk "MKL_GREEN=\t${MKL_GREEN}"
|
|
907
|
+
mkl_write_mk "MKL_YELLOW=\t${MKL_YELLOW}"
|
|
908
|
+
mkl_write_mk "MKL_BLUE=\t${MKL_BLUE}"
|
|
909
|
+
mkl_write_mk "MKL_CLR_RESET=\t${MKL_CLR_RESET}"
|
|
910
|
+
|
|
911
|
+
local n=
|
|
912
|
+
for n in $MKL_MKVARS ; do
|
|
913
|
+
# Some special variables should be prefixable by the caller, so
|
|
914
|
+
# define them in the makefile as appends.
|
|
915
|
+
local op="="
|
|
916
|
+
case $n in
|
|
917
|
+
CFLAGS|CPPFLAGS|CXXFLAGS|LDFLAGS|LIBS)
|
|
918
|
+
op="+="
|
|
919
|
+
;;
|
|
920
|
+
esac
|
|
921
|
+
mkl_write_mk "$n$op\t${!n}"
|
|
922
|
+
done
|
|
923
|
+
mkl_write_mk "# End of config variables"
|
|
924
|
+
|
|
925
|
+
MKL_OUTMK_FINAL=Makefile.config
|
|
926
|
+
mv $MKL_OUTMK $MKL_OUTMK_FINAL
|
|
927
|
+
|
|
928
|
+
echo "Generated $MKL_OUTMK_FINAL"
|
|
929
|
+
|
|
930
|
+
# Generate config.h
|
|
931
|
+
mkl_write_h "// Automatically generated by $0 $*"
|
|
932
|
+
mkl_write_h "#ifndef _CONFIG_H_"
|
|
933
|
+
mkl_write_h "#define _CONFIG_H_"
|
|
934
|
+
for n in $MKL_DEFINES ; do
|
|
935
|
+
mkl_write_h "${!n}"
|
|
936
|
+
done
|
|
937
|
+
mkl_write_h "#endif /* _CONFIG_H_ */"
|
|
938
|
+
|
|
939
|
+
MKL_OUTH_FINAL=config.h
|
|
940
|
+
mv $MKL_OUTH $MKL_OUTH_FINAL
|
|
941
|
+
|
|
942
|
+
echo "Generated $MKL_OUTH_FINAL"
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
# Remove file noisily, if it exists
|
|
946
|
+
function mkl_rm {
|
|
947
|
+
if [[ -f $fname ]]; then
|
|
948
|
+
echo "Removing $fname"
|
|
949
|
+
rm -f "$fname"
|
|
950
|
+
fi
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
# Remove files generated by configure
|
|
954
|
+
function mkl_clean {
|
|
955
|
+
for fname in Makefile.config config.h config.cache config.log ; do
|
|
956
|
+
mkl_rm "$fname"
|
|
957
|
+
done
|
|
958
|
+
|
|
959
|
+
local mf=
|
|
960
|
+
for mf in $MKL_CLEANERS ; do
|
|
961
|
+
MKL_MODULE=${mf%:*}
|
|
962
|
+
local func=${mf#*:}
|
|
963
|
+
$func || exit 1
|
|
964
|
+
done
|
|
965
|
+
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
# Print summary of succesful configure run
|
|
970
|
+
function mkl_summary {
|
|
971
|
+
|
|
972
|
+
echo "
|
|
973
|
+
Configuration summary:"
|
|
974
|
+
local n=
|
|
975
|
+
for n in $MKL_MKVARS ; do
|
|
976
|
+
# Skip the boring booleans
|
|
977
|
+
if [[ $n == ENABLE_* || $n == WITH_* || $n == WITHOUT_* || $n == HAVE_* || $n == def_* ]]; then
|
|
978
|
+
continue
|
|
979
|
+
fi
|
|
980
|
+
printf " %-24s %s\n" "$n" "${!n}"
|
|
981
|
+
done
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
# Write to mk file
|
|
987
|
+
# Argument:
|
|
988
|
+
# string ..
|
|
989
|
+
function mkl_write_mk {
|
|
990
|
+
echo -e "$*" >> $MKL_OUTMK
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
# Write to header file
|
|
994
|
+
# Argument:
|
|
995
|
+
# string ..
|
|
996
|
+
function mkl_write_h {
|
|
997
|
+
echo -e "$*" >> $MKL_OUTH
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
###########################################################################
|
|
1003
|
+
#
|
|
1004
|
+
#
|
|
1005
|
+
# Logging and debugging
|
|
1006
|
+
#
|
|
1007
|
+
#
|
|
1008
|
+
###########################################################################
|
|
1009
|
+
|
|
1010
|
+
# Debug print
|
|
1011
|
+
# Only visible on terminal if MKL_DEBUG is set.
|
|
1012
|
+
# Always written to config.log
|
|
1013
|
+
# Argument:
|
|
1014
|
+
# string ..
|
|
1015
|
+
function mkl_dbg {
|
|
1016
|
+
if [[ ! -z $MKL_DEBUG ]]; then
|
|
1017
|
+
echo -e "${MKL_BLUE}DBG:$$: $*${MKL_CLR_RESET}" 1>&2
|
|
1018
|
+
fi
|
|
1019
|
+
echo "DBG $$: $*" >> $MKL_OUTDBG
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
# Error print (with color)
|
|
1023
|
+
# Always printed to terminal and config.log
|
|
1024
|
+
# Argument:
|
|
1025
|
+
# string ..
|
|
1026
|
+
function mkl_err {
|
|
1027
|
+
echo -e "${MKL_RED}$*${MKL_CLR_RESET}" 1>&2
|
|
1028
|
+
echo "$*" >> $MKL_OUTDBG
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
# Same as mkl_err but without coloring
|
|
1032
|
+
# Argument:
|
|
1033
|
+
# string ..
|
|
1034
|
+
function mkl_err0 {
|
|
1035
|
+
echo -e "$*" 1>&2
|
|
1036
|
+
echo "$*" >> $MKL_OUTDBG
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
# Standard print
|
|
1040
|
+
# Always printed to terminal and config.log
|
|
1041
|
+
# Argument:
|
|
1042
|
+
# string ..
|
|
1043
|
+
function mkl_info {
|
|
1044
|
+
echo -e "$*" 1>&2
|
|
1045
|
+
echo -e "$*" >> $MKL_OUTDBG
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
###########################################################################
|
|
1055
|
+
#
|
|
1056
|
+
#
|
|
1057
|
+
# Misc helpers
|
|
1058
|
+
#
|
|
1059
|
+
#
|
|
1060
|
+
###########################################################################
|
|
1061
|
+
|
|
1062
|
+
# Returns the absolute path (but not necesarily canonical) of the first argument
|
|
1063
|
+
function mkl_abspath {
|
|
1064
|
+
echo $1 | sed -e "s|^\([^/]\)|$PWD/\1|"
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
# Returns true (0) if function $1 exists, else false (1)
|
|
1068
|
+
function mkl_func_exists {
|
|
1069
|
+
declare -f "$1" > /dev/null
|
|
1070
|
+
return $?
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
# Rename function.
|
|
1074
|
+
# Returns 0 on success or 1 if old function (origname) was not defined.
|
|
1075
|
+
# Arguments:
|
|
1076
|
+
# origname
|
|
1077
|
+
# newname
|
|
1078
|
+
function mkl_func_rename {
|
|
1079
|
+
if ! mkl_func_exists $1 ; then
|
|
1080
|
+
return 1
|
|
1081
|
+
fi
|
|
1082
|
+
local orig=$(declare -f $1)
|
|
1083
|
+
local new="$2${orig#$1}"
|
|
1084
|
+
eval "$new"
|
|
1085
|
+
unset -f "$1"
|
|
1086
|
+
return 0
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
# Push module function for later call by mklove.
|
|
1091
|
+
# The function is renamed to an internal name.
|
|
1092
|
+
# Arguments:
|
|
1093
|
+
# list variable name
|
|
1094
|
+
# module name
|
|
1095
|
+
# function name
|
|
1096
|
+
function mkl_func_push {
|
|
1097
|
+
local newfunc="__mkl__f_${2}_$(( MKL_IDNEXT++ ))"
|
|
1098
|
+
if mkl_func_rename "$3" "$newfunc" ; then
|
|
1099
|
+
mkl_var_append "$1" "$2:$newfunc"
|
|
1100
|
+
fi
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
# Returns value, or the default string if value is empty.
|
|
1106
|
+
# Arguments:
|
|
1107
|
+
# value
|
|
1108
|
+
# default
|
|
1109
|
+
function mkl_def {
|
|
1110
|
+
if [[ ! -z $1 ]]; then
|
|
1111
|
+
echo $1
|
|
1112
|
+
else
|
|
1113
|
+
echo $2
|
|
1114
|
+
fi
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
# Render a string (e.g., evaluate its $varrefs)
|
|
1119
|
+
# Arguments:
|
|
1120
|
+
# string
|
|
1121
|
+
function mkl_render {
|
|
1122
|
+
if [[ $* == *\$* ]]; then
|
|
1123
|
+
eval "echo $*"
|
|
1124
|
+
else
|
|
1125
|
+
echo "$*"
|
|
1126
|
+
fi
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
# Escape a string so that it becomes suitable for being an env variable.
|
|
1130
|
+
# This is a destructive operation and the original string cannot be restored.
|
|
1131
|
+
function mkl_env_esc {
|
|
1132
|
+
echo $* | LC_ALL=C sed -e 's/[^a-zA-Z0-9_]/_/g'
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
# Convert arguments to upper case
|
|
1136
|
+
function mkl_upper {
|
|
1137
|
+
echo "$*" | tr '[:lower:]' '[:upper:]'
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
# Convert arguments to lower case
|
|
1141
|
+
function mkl_lower {
|
|
1142
|
+
echo "$*" | tr '[:upper:]' '[:lower:]'
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
# Checks if element is in list
|
|
1147
|
+
# Arguments:
|
|
1148
|
+
# list
|
|
1149
|
+
# element
|
|
1150
|
+
function mkl_in_list {
|
|
1151
|
+
local n
|
|
1152
|
+
for n in $1 ; do
|
|
1153
|
+
[[ $n == $2 ]] && return 0
|
|
1154
|
+
done
|
|
1155
|
+
return 1
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
# Silent versions of pushd and popd
|
|
1160
|
+
function mkl_pushd {
|
|
1161
|
+
pushd "$1" >/dev/null
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
function mkl_popd {
|
|
1165
|
+
popd >/dev/null
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
###########################################################################
|
|
1170
|
+
#
|
|
1171
|
+
#
|
|
1172
|
+
# Cache functionality
|
|
1173
|
+
#
|
|
1174
|
+
#
|
|
1175
|
+
###########################################################################
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
# Write cache file
|
|
1179
|
+
function mkl_cache_write {
|
|
1180
|
+
[[ ! -z "$MKL_NOCACHE" ]] && return 0
|
|
1181
|
+
echo "# mklove configure cache file generated at $(date)" > config.cache
|
|
1182
|
+
for n in $MKL_CACHEVARS ; do
|
|
1183
|
+
echo "$n=${!n}" >> config.cache
|
|
1184
|
+
done
|
|
1185
|
+
echo "Generated config.cache"
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
# Read cache file
|
|
1190
|
+
function mkl_cache_read {
|
|
1191
|
+
[[ ! -z "$MKL_NOCACHE" ]] && return 0
|
|
1192
|
+
[ -f config.cache ] || return 1
|
|
1193
|
+
|
|
1194
|
+
echo "using cache file config.cache"
|
|
1195
|
+
|
|
1196
|
+
local ORIG_IFS=$IFS
|
|
1197
|
+
IFS="$IFS="
|
|
1198
|
+
while read -r n v ; do
|
|
1199
|
+
[[ -z $n || $n = \#* || -z $v ]] && continue
|
|
1200
|
+
# Don't let cache overwrite variables
|
|
1201
|
+
[[ -n ${n+r} ]] || mkl_var_set $n $v cache
|
|
1202
|
+
done < config.cache
|
|
1203
|
+
IFS=$ORIG_IFS
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
###########################################################################
|
|
1208
|
+
#
|
|
1209
|
+
#
|
|
1210
|
+
# Config name meta data
|
|
1211
|
+
#
|
|
1212
|
+
#
|
|
1213
|
+
###########################################################################
|
|
1214
|
+
|
|
1215
|
+
# Set metadata for config name
|
|
1216
|
+
# This metadata is used by mkl in various situations
|
|
1217
|
+
# Arguments:
|
|
1218
|
+
# config name
|
|
1219
|
+
# metadata key
|
|
1220
|
+
# metadata value (appended)
|
|
1221
|
+
function mkl_meta_set {
|
|
1222
|
+
local metaname="mkl__$1__$2"
|
|
1223
|
+
eval "$metaname=\"\$$metaname $3\""
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
# Returns metadata for config name
|
|
1227
|
+
# Arguments:
|
|
1228
|
+
# config name
|
|
1229
|
+
# metadata key
|
|
1230
|
+
# default (optional)
|
|
1231
|
+
function mkl_meta_get {
|
|
1232
|
+
local metaname="mkl__$1__$2"
|
|
1233
|
+
if [[ ! -z ${!metaname} ]]; then
|
|
1234
|
+
echo ${!metaname}
|
|
1235
|
+
else
|
|
1236
|
+
echo "$3"
|
|
1237
|
+
fi
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
# Checks if metadata exists
|
|
1241
|
+
# Arguments:
|
|
1242
|
+
# config name
|
|
1243
|
+
# metadata key
|
|
1244
|
+
function mkl_meta_exists {
|
|
1245
|
+
local metaname="mkl__$1__$2"
|
|
1246
|
+
if [[ ! -z ${!metaname} ]]; then
|
|
1247
|
+
return 0
|
|
1248
|
+
else
|
|
1249
|
+
return 1
|
|
1250
|
+
fi
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
|
|
1256
|
+
|
|
1257
|
+
###########################################################################
|
|
1258
|
+
#
|
|
1259
|
+
#
|
|
1260
|
+
# Check framework
|
|
1261
|
+
#
|
|
1262
|
+
#
|
|
1263
|
+
###########################################################################
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
# Print that a check is beginning to run
|
|
1267
|
+
# Returns 0 if a cached result was used (do not continue with your tests),
|
|
1268
|
+
# else 1.
|
|
1269
|
+
#
|
|
1270
|
+
# If the check should not be cachable then specify argument 3 as "no-cache",
|
|
1271
|
+
# this is useful when a check not only checks but actually sets config
|
|
1272
|
+
# variables itself (which is not recommended, but desired sometimes).
|
|
1273
|
+
#
|
|
1274
|
+
# Arguments:
|
|
1275
|
+
# [ --verb "verb.." ] (replace "checking for")
|
|
1276
|
+
# config name
|
|
1277
|
+
# define name
|
|
1278
|
+
# action (fail,cont,disable or no-cache)
|
|
1279
|
+
# [ display name ]
|
|
1280
|
+
function mkl_check_begin {
|
|
1281
|
+
local verb="checking for"
|
|
1282
|
+
if [[ $1 == "--verb" ]]; then
|
|
1283
|
+
verb="$2"
|
|
1284
|
+
shift
|
|
1285
|
+
shift
|
|
1286
|
+
fi
|
|
1287
|
+
|
|
1288
|
+
local name=$(mkl_meta_get $1 name "$4")
|
|
1289
|
+
[[ -z $name ]] && name="$1"
|
|
1290
|
+
|
|
1291
|
+
echo -n "$verb $name..."
|
|
1292
|
+
if [[ $3 != "no-cache" ]]; then
|
|
1293
|
+
local status=$(mkl_var_get "MKL_STATUS_$1")
|
|
1294
|
+
# Check cache (from previous run or this one).
|
|
1295
|
+
# Only used cached value if the cached check succeeded:
|
|
1296
|
+
# it is more likely that a failed check has been fixed than the other
|
|
1297
|
+
# way around.
|
|
1298
|
+
if [[ ! -z $status && ( $status = "ok" ) ]]; then
|
|
1299
|
+
mkl_check_done "$1" "$2" "$3" $status "cached"
|
|
1300
|
+
return 0
|
|
1301
|
+
fi
|
|
1302
|
+
fi
|
|
1303
|
+
return 1
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
# Calls the manual_checks function for the given module.
|
|
1308
|
+
# Use this for modules that provide check hooks that require
|
|
1309
|
+
# certain call ordering, such as dependent library checks.
|
|
1310
|
+
#
|
|
1311
|
+
# Param 1: module name
|
|
1312
|
+
function mkl_check {
|
|
1313
|
+
local modname=$1
|
|
1314
|
+
|
|
1315
|
+
local func="${modname}_manual_checks"
|
|
1316
|
+
if ! mkl_func_exists "$func" ; then
|
|
1317
|
+
mkl_fail "Check function for module $modname not found: missing mkl_require $modname ?"
|
|
1318
|
+
return 1
|
|
1319
|
+
fi
|
|
1320
|
+
|
|
1321
|
+
$func
|
|
1322
|
+
return $?
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
# Print that a check is done
|
|
1327
|
+
# Arguments:
|
|
1328
|
+
# config name
|
|
1329
|
+
# define name
|
|
1330
|
+
# action
|
|
1331
|
+
# status (ok|failed)
|
|
1332
|
+
# extra-info (optional)
|
|
1333
|
+
function mkl_check_done {
|
|
1334
|
+
# Clean up configname to be a safe varname
|
|
1335
|
+
local cname=${1//-/_}
|
|
1336
|
+
mkl_var_set "MKL_STATUS_$cname" "$4" cache
|
|
1337
|
+
|
|
1338
|
+
mkl_dbg "Setting $1 ($cname) status to $4 (action $3)"
|
|
1339
|
+
|
|
1340
|
+
local extra=""
|
|
1341
|
+
if [[ $4 = "failed" ]]; then
|
|
1342
|
+
local clr=$MKL_YELLOW
|
|
1343
|
+
extra=" ($3)"
|
|
1344
|
+
case "$3" in
|
|
1345
|
+
fail)
|
|
1346
|
+
clr=$MKL_RED
|
|
1347
|
+
;;
|
|
1348
|
+
cont)
|
|
1349
|
+
extra=""
|
|
1350
|
+
;;
|
|
1351
|
+
esac
|
|
1352
|
+
echo -e " $clr$4$MKL_CLR_RESET${extra}"
|
|
1353
|
+
else
|
|
1354
|
+
[[ ! -z $2 ]] && mkl_define_set "$cname" "$2" "1"
|
|
1355
|
+
[[ ! -z $2 ]] && mkl_mkvar_set "$cname" "$2" "y"
|
|
1356
|
+
[ ! -z "$5" ] && extra=" ($5)"
|
|
1357
|
+
echo -e " $MKL_GREEN$4${MKL_CLR_RESET}$extra"
|
|
1358
|
+
fi
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
# Perform configure check by compiling source snippet
|
|
1363
|
+
# Arguments:
|
|
1364
|
+
# [--sub] (run checker as a sub-check, not doing begin/fail/ok)
|
|
1365
|
+
# [--ldflags="..." ] (appended after "compiler arguments" below)
|
|
1366
|
+
# config name
|
|
1367
|
+
# define name
|
|
1368
|
+
# action (fail|disable)
|
|
1369
|
+
# compiler (CC|CXX)
|
|
1370
|
+
# compiler arguments (optional "", example: "-lzookeeper")
|
|
1371
|
+
# source snippet
|
|
1372
|
+
function mkl_compile_check {
|
|
1373
|
+
|
|
1374
|
+
local sub=0
|
|
1375
|
+
if [[ $1 == --sub ]]; then
|
|
1376
|
+
sub=1
|
|
1377
|
+
shift
|
|
1378
|
+
fi
|
|
1379
|
+
|
|
1380
|
+
local ldf=
|
|
1381
|
+
if [[ $1 == --ldflags=* ]]; then
|
|
1382
|
+
ldf=${1#*=}
|
|
1383
|
+
shift
|
|
1384
|
+
fi
|
|
1385
|
+
|
|
1386
|
+
if [[ $sub -eq 0 ]]; then
|
|
1387
|
+
mkl_check_begin "$1" "$2" "$3" "$1 (by compile)" && return $?
|
|
1388
|
+
fi
|
|
1389
|
+
|
|
1390
|
+
local cflags=
|
|
1391
|
+
|
|
1392
|
+
if [[ $4 = "CXX" ]]; then
|
|
1393
|
+
local ext=cpp
|
|
1394
|
+
cflags="$(mkl_mkvar_get CXXFLAGS)"
|
|
1395
|
+
else
|
|
1396
|
+
local ext=c
|
|
1397
|
+
cflags="$(mkl_mkvar_get CFLAGS)"
|
|
1398
|
+
fi
|
|
1399
|
+
|
|
1400
|
+
local srcfile=$(mktemp _mkltmpXXXXXX)
|
|
1401
|
+
mv "$srcfile" "${srcfile}.$ext"
|
|
1402
|
+
srcfile="$srcfile.$ext"
|
|
1403
|
+
echo "$6" > $srcfile
|
|
1404
|
+
echo "
|
|
1405
|
+
int main () { return 0; }
|
|
1406
|
+
" >> $srcfile
|
|
1407
|
+
|
|
1408
|
+
local cmd="${!4} $cflags $(mkl_mkvar_get CPPFLAGS) -Wall -Werror $srcfile -o ${srcfile}.o $ldf $(mkl_mkvar_get LDFLAGS) $5 $(mkl_mkvar_get LIBS)";
|
|
1409
|
+
mkl_dbg "Compile check $1 ($2) (sub=$sub): $cmd"
|
|
1410
|
+
|
|
1411
|
+
local output
|
|
1412
|
+
output=$($cmd 2>&1)
|
|
1413
|
+
|
|
1414
|
+
if [[ $? != 0 ]] ; then
|
|
1415
|
+
mkl_dbg "compile check for $1 ($2) failed: $cmd: $output"
|
|
1416
|
+
[[ $sub -eq 0 ]] && mkl_check_failed "$1" "$2" "$3" "compile check failed:
|
|
1417
|
+
CC: $4
|
|
1418
|
+
flags: $5
|
|
1419
|
+
$cmd:
|
|
1420
|
+
$output
|
|
1421
|
+
source: $6"
|
|
1422
|
+
local ret=1
|
|
1423
|
+
else
|
|
1424
|
+
[[ $sub -eq 0 ]] && mkl_check_done "$1" "$2" "$3" "ok"
|
|
1425
|
+
local ret=0
|
|
1426
|
+
fi
|
|
1427
|
+
|
|
1428
|
+
# OSX XCode toolchain creates dSYM directories when -g is set,
|
|
1429
|
+
# delete them specifically.
|
|
1430
|
+
rm -rf "$srcfile" "${srcfile}.o" "$srcfile*dSYM"
|
|
1431
|
+
|
|
1432
|
+
return $ret
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
# Low-level: Try to link with a library.
|
|
1437
|
+
# Arguments:
|
|
1438
|
+
# linker flags (e.g. "-lpthreads")
|
|
1439
|
+
function mkl_link_check0 {
|
|
1440
|
+
local libs=$1
|
|
1441
|
+
local srcfile=$(mktemp _mktmpXXXXXX)
|
|
1442
|
+
echo "#include <stdio.h>
|
|
1443
|
+
int main () { FILE *fp = stderr; return fp ? 0 : 0; }" > ${srcfile}.c
|
|
1444
|
+
|
|
1445
|
+
local cmd="${CC} $(mkl_mkvar_get CFLAGS) $(mkl_mkvar_get LDFLAGS) ${srcfile}.c -o ${srcfile}_out $libs";
|
|
1446
|
+
mkl_dbg "Link check for $1: $cmd"
|
|
1447
|
+
|
|
1448
|
+
local output
|
|
1449
|
+
output=$($cmd 2>&1)
|
|
1450
|
+
local retcode=$?
|
|
1451
|
+
|
|
1452
|
+
if [[ $retcode -ne 0 ]] ; then
|
|
1453
|
+
mkl_dbg "Link check for $1 failed: $output"
|
|
1454
|
+
fi
|
|
1455
|
+
|
|
1456
|
+
rm -f $srcfile*
|
|
1457
|
+
return $retcode
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
# Try to link with a library.
|
|
1462
|
+
# Arguments:
|
|
1463
|
+
# config name
|
|
1464
|
+
# define name
|
|
1465
|
+
# action (fail|disable)
|
|
1466
|
+
# linker flags (e.g. "-lpthreads")
|
|
1467
|
+
function mkl_link_check {
|
|
1468
|
+
mkl_check_begin "$1" "$2" "$3" "$1 (by linking)" && return $?
|
|
1469
|
+
|
|
1470
|
+
if mkl_link_check0 "$4" ; then
|
|
1471
|
+
mkl_check_done "$1" "$2" "$3" "ok" "$4"
|
|
1472
|
+
return 0
|
|
1473
|
+
else
|
|
1474
|
+
mkl_dbg "link check for $1 ($2) failed: $output"
|
|
1475
|
+
mkl_check_failed "$1" "$2" "$3" "compile check failed:
|
|
1476
|
+
$output"
|
|
1477
|
+
return 1
|
|
1478
|
+
fi
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
# Tries to figure out if we can use a static library or not.
|
|
1484
|
+
#
|
|
1485
|
+
# WARNING: This function must not emit any stdout output other than the
|
|
1486
|
+
# updated list of libs. Do not use any stdout-printing checker.
|
|
1487
|
+
#
|
|
1488
|
+
# Arguments:
|
|
1489
|
+
# config name (e.g., zstd)
|
|
1490
|
+
# compiler flags (optional "", e.g: "-lzstd")
|
|
1491
|
+
# Returns/outputs:
|
|
1492
|
+
# New list of compiler flags
|
|
1493
|
+
function mkl_lib_check_static {
|
|
1494
|
+
local configname=$1
|
|
1495
|
+
local libs=$2
|
|
1496
|
+
local arfile_var=STATIC_LIB_${configname}
|
|
1497
|
+
local stfnames=$(mkl_lib_static_fnames $configname)
|
|
1498
|
+
|
|
1499
|
+
mkl_dbg "$configname: Check for static library (libs $libs, arfile variable $arfile_var=${!arfile_var}, static filenames $stfnames)"
|
|
1500
|
+
|
|
1501
|
+
# If STATIC_LIB_<configname> specifies .a file(s) we use that instead.
|
|
1502
|
+
if [[ -n ${!arfile_var} ]]; then
|
|
1503
|
+
libs="${!arfile_var}"
|
|
1504
|
+
|
|
1505
|
+
elif [[ $WITH_STATIC_LINKING != y ]]; then
|
|
1506
|
+
# Static linking not enabled
|
|
1507
|
+
echo ""
|
|
1508
|
+
return
|
|
1509
|
+
|
|
1510
|
+
elif [[ $HAS_LDFLAGS_STATIC == y ]] && [[ -n $stfnames ]]; then
|
|
1511
|
+
local libname
|
|
1512
|
+
local stlibs=
|
|
1513
|
+
for libname in $stfnames; do
|
|
1514
|
+
# Convert the static filename to a linker flag:
|
|
1515
|
+
# libzstd.a -> -lzstd
|
|
1516
|
+
libname=${libname#lib}
|
|
1517
|
+
libname="-l${libname%.a}"
|
|
1518
|
+
stlibs="${stlibs}${libname} "
|
|
1519
|
+
done
|
|
1520
|
+
libs="${LDFLAGS_STATIC} $stlibs ${LDFLAGS_DYNAMIC}"
|
|
1521
|
+
mkl_dbg "$configname: after replacing libs: $libs"
|
|
1522
|
+
|
|
1523
|
+
elif [[ $libs == *-L* ]]; then
|
|
1524
|
+
# Try to resolve full static paths using any -Lpaths in $libs
|
|
1525
|
+
local lpath
|
|
1526
|
+
for lpath in $libs; do
|
|
1527
|
+
[[ $lpath == -L* ]] || continue
|
|
1528
|
+
|
|
1529
|
+
lpath="${lpath#-L}"
|
|
1530
|
+
[[ -d $lpath ]] || continue
|
|
1531
|
+
|
|
1532
|
+
if mkl_resolve_static_libs "$configname" "$lpath"; then
|
|
1533
|
+
break
|
|
1534
|
+
fi
|
|
1535
|
+
done
|
|
1536
|
+
|
|
1537
|
+
libs="${!arfile_var}"
|
|
1538
|
+
mkl_dbg "$configname: after -L resolve, libs is $libs"
|
|
1539
|
+
|
|
1540
|
+
else
|
|
1541
|
+
mkl_dbg "$configname: Neither $arfile_var=/path/to/libname.a specified nor static linker flags supported: static linking probably won't work"
|
|
1542
|
+
libs=""
|
|
1543
|
+
fi
|
|
1544
|
+
|
|
1545
|
+
if [[ -z $libs ]]; then
|
|
1546
|
+
echo ""
|
|
1547
|
+
return
|
|
1548
|
+
fi
|
|
1549
|
+
|
|
1550
|
+
# Attempt to link a small program with these static libraries
|
|
1551
|
+
mkl_dbg "$configname: verifying that linking \"$libs\" works"
|
|
1552
|
+
if ! mkl_link_check0 "$libs" ; then
|
|
1553
|
+
mkl_dbg "$configname: Could not use static libray flags: $libs"
|
|
1554
|
+
echo ""
|
|
1555
|
+
return
|
|
1556
|
+
fi
|
|
1557
|
+
|
|
1558
|
+
mkl_allvar_set "$configname" "${configname}_STATIC" "y"
|
|
1559
|
+
|
|
1560
|
+
echo $libs
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
# Checks that the specified lib is available through a number of methods.
|
|
1565
|
+
# compiler flags are automatically appended to "LIBS" mkvar on success.
|
|
1566
|
+
#
|
|
1567
|
+
# If STATIC_LIB_<libname_without_-l> is set to the path of an <libname>.a file
|
|
1568
|
+
# it will be used instead of -l<libname>.
|
|
1569
|
+
#
|
|
1570
|
+
# <definename>_STATIC will be automatically defined (for both Makefile.config
|
|
1571
|
+
# and config.h) if the library is to be linked statically, or was installed
|
|
1572
|
+
# with a source dependency installer.
|
|
1573
|
+
#
|
|
1574
|
+
# Arguments:
|
|
1575
|
+
# [--override-action=<action>] (internal use, overrides action argument)
|
|
1576
|
+
# [--no-static] (do not attempt to link the library statically)
|
|
1577
|
+
# [--libname=<lib>] (library name if different from config name, such as
|
|
1578
|
+
# when the libname includes a dash)
|
|
1579
|
+
# config name (library name (for pkg-config))
|
|
1580
|
+
# define name
|
|
1581
|
+
# action (fail|disable|cont)
|
|
1582
|
+
# compiler (CC|CXX)
|
|
1583
|
+
# compiler flags (optional "", e.g: "-lyajl")
|
|
1584
|
+
# source snippet
|
|
1585
|
+
function mkl_lib_check0 {
|
|
1586
|
+
|
|
1587
|
+
local override_action=
|
|
1588
|
+
local nostaticopt=
|
|
1589
|
+
local libnameopt=
|
|
1590
|
+
local libname=
|
|
1591
|
+
|
|
1592
|
+
while [[ $1 == --* ]]; do
|
|
1593
|
+
if [[ $1 == --override-action=* ]]; then
|
|
1594
|
+
override_action=${1#*=}
|
|
1595
|
+
elif [[ $1 == --no-static ]]; then
|
|
1596
|
+
nostaticopt=$1
|
|
1597
|
+
elif [[ $1 == --libname* ]]; then
|
|
1598
|
+
libnameopt=$1
|
|
1599
|
+
libname="${libnameopt#*=}"
|
|
1600
|
+
else
|
|
1601
|
+
mkl_err "mkl_lib_check: invalid option $1"
|
|
1602
|
+
exit 1
|
|
1603
|
+
fi
|
|
1604
|
+
shift
|
|
1605
|
+
done
|
|
1606
|
+
|
|
1607
|
+
if [[ -z $libname ]]; then
|
|
1608
|
+
libname=$1
|
|
1609
|
+
fi
|
|
1610
|
+
|
|
1611
|
+
local action=$3
|
|
1612
|
+
if [[ -n $override_action ]]; then
|
|
1613
|
+
action=$override_action
|
|
1614
|
+
fi
|
|
1615
|
+
|
|
1616
|
+
# pkg-config result (0=ok)
|
|
1617
|
+
local pkg_conf_failed=1
|
|
1618
|
+
if [[ $WITH_PKGCONFIG == "y" ]]; then
|
|
1619
|
+
# Let pkg-config populate CFLAGS, et.al.
|
|
1620
|
+
# Return on success.
|
|
1621
|
+
mkl_pkg_config_check $nostaticopt $libnameopt "$1" "$2" cont "$4" "$6" && return $?
|
|
1622
|
+
fi
|
|
1623
|
+
|
|
1624
|
+
local libs="$5"
|
|
1625
|
+
local is_static=0
|
|
1626
|
+
|
|
1627
|
+
if [[ -z $nostaticopt ]]; then
|
|
1628
|
+
local stlibs=$(mkl_lib_check_static $1 "$libs")
|
|
1629
|
+
if [[ -n $stlibs ]]; then
|
|
1630
|
+
libs=$stlibs
|
|
1631
|
+
is_static=1
|
|
1632
|
+
fi
|
|
1633
|
+
fi
|
|
1634
|
+
|
|
1635
|
+
if ! mkl_compile_check "$1" "$2" "$action" "$4" "$libs" "$6"; then
|
|
1636
|
+
return 1
|
|
1637
|
+
fi
|
|
1638
|
+
|
|
1639
|
+
if [[ -n $libs ]]; then
|
|
1640
|
+
# Add libraries in reverse order to make sure inter-dependencies
|
|
1641
|
+
# are resolved in the correct order.
|
|
1642
|
+
# E.g., check for crypto and then ssl should result in -lssl -lcrypto
|
|
1643
|
+
mkl_dbg "$1: from lib_check: LIBS: prepend $libs"
|
|
1644
|
+
mkl_mkvar_prepend "$1" LIBS "$libs"
|
|
1645
|
+
if [[ $is_static == 0 ]]; then
|
|
1646
|
+
# Static libraries are automatically bundled with
|
|
1647
|
+
# librdkafka-static.a so there is no need to add them as an
|
|
1648
|
+
# external linkage dependency.
|
|
1649
|
+
mkl_mkvar_prepend "$1" MKL_PKGCONFIG_LIBS_PRIVATE "$libs"
|
|
1650
|
+
fi
|
|
1651
|
+
fi
|
|
1652
|
+
|
|
1653
|
+
return 0
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
# Wrapper for mkl_lib_check0 which attempts dependency installation
|
|
1658
|
+
# if --install-deps is specified.
|
|
1659
|
+
#
|
|
1660
|
+
# See mkl_lib_check0 for arguments and details.
|
|
1661
|
+
function mkl_lib_check {
|
|
1662
|
+
|
|
1663
|
+
local arg=
|
|
1664
|
+
local name=
|
|
1665
|
+
|
|
1666
|
+
# Find config name parameter (first non-option (--...))
|
|
1667
|
+
for arg in $* ; do
|
|
1668
|
+
if [[ $arg == --* ]]; then
|
|
1669
|
+
continue
|
|
1670
|
+
fi
|
|
1671
|
+
name=$arg
|
|
1672
|
+
break
|
|
1673
|
+
done
|
|
1674
|
+
|
|
1675
|
+
if [[ $MKL_INSTALL_DEPS != y ]] || ! mkl_dep_has_installer "$name" ; then
|
|
1676
|
+
mkl_lib_check0 "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
|
|
1677
|
+
return $?
|
|
1678
|
+
fi
|
|
1679
|
+
|
|
1680
|
+
|
|
1681
|
+
# Automatic dependency installation mode:
|
|
1682
|
+
# First pass is lib check with cont,
|
|
1683
|
+
# if it fails, attempt dependency installation,
|
|
1684
|
+
# and then make second with caller's fail-action.
|
|
1685
|
+
|
|
1686
|
+
local retcode=
|
|
1687
|
+
|
|
1688
|
+
# With --source-deps-only we want to make sure the dependency
|
|
1689
|
+
# being used is in-fact from the dependency builder (if supported),
|
|
1690
|
+
# rather than a system installed alternative, so skip the pre-check and
|
|
1691
|
+
# go directly to dependency installation/build below.
|
|
1692
|
+
if [[ $MKL_SOURCE_DEPS_ONLY != y ]] || ! mkl_dep_has_builder $name ; then
|
|
1693
|
+
mkl_lib_check0 --override-action=cont "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
|
|
1694
|
+
retcode=$?
|
|
1695
|
+
if [[ $retcode -eq 0 ]]; then
|
|
1696
|
+
# Successful on first pass
|
|
1697
|
+
return $retcode
|
|
1698
|
+
fi
|
|
1699
|
+
else
|
|
1700
|
+
mkl_dbg "$name: skipping dependency pre-check in favour of --source-deps-only"
|
|
1701
|
+
fi
|
|
1702
|
+
|
|
1703
|
+
# Install dependency
|
|
1704
|
+
if ! mkl_dep_install "$name" ; then
|
|
1705
|
+
return 1
|
|
1706
|
+
fi
|
|
1707
|
+
|
|
1708
|
+
# Second pass: check again, this time fail hard
|
|
1709
|
+
mkl_lib_check0 --override-action=fail "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
|
|
1710
|
+
return $?
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
# Check for library with pkg-config
|
|
1716
|
+
# Automatically sets CFLAGS and LIBS from pkg-config information.
|
|
1717
|
+
# Arguments:
|
|
1718
|
+
# [--no-static] (do not attempt to link the library statically)
|
|
1719
|
+
# [--libname=<lib>] (library name if different from config name, such as
|
|
1720
|
+
# when the libname includes a dash)
|
|
1721
|
+
# config name
|
|
1722
|
+
# define name
|
|
1723
|
+
# action (fail|disable|ignore|cont)
|
|
1724
|
+
# compiler (CC|CXX)
|
|
1725
|
+
# source snippet
|
|
1726
|
+
function mkl_pkg_config_check {
|
|
1727
|
+
|
|
1728
|
+
local nostaticopt=
|
|
1729
|
+
if [[ $1 == --no-static ]]; then
|
|
1730
|
+
nostaticopt=$1
|
|
1731
|
+
shift
|
|
1732
|
+
fi
|
|
1733
|
+
|
|
1734
|
+
local libname=$1
|
|
1735
|
+
if [[ $1 == --libname* ]]; then
|
|
1736
|
+
libname="${libnameopt#*=}"
|
|
1737
|
+
shift
|
|
1738
|
+
fi
|
|
1739
|
+
|
|
1740
|
+
local cname="${1}_PKGCONFIG"
|
|
1741
|
+
mkl_check_begin "$cname" "$2" "no-cache" "$1 (by pkg-config)" && return $?
|
|
1742
|
+
|
|
1743
|
+
local cflags=
|
|
1744
|
+
local cmd="${PKG_CONFIG} --short-errors --cflags $libname"
|
|
1745
|
+
mkl_dbg "pkg-config check $libname for CFLAGS ($2): $cmd"
|
|
1746
|
+
|
|
1747
|
+
cflags=$($cmd 2>&1)
|
|
1748
|
+
if [[ $? != 0 ]]; then
|
|
1749
|
+
mkl_dbg "'$cmd' failed: $cflags"
|
|
1750
|
+
# Clear define name ($2): caller may have additional checks
|
|
1751
|
+
mkl_check_failed "$cname" "" "$3" "'$cmd' failed:
|
|
1752
|
+
$cflags"
|
|
1753
|
+
return 1
|
|
1754
|
+
fi
|
|
1755
|
+
|
|
1756
|
+
if [[ $(mkl_meta_get $1 installed_with) == "source" && \
|
|
1757
|
+
$WITH_STATIC_LINKING == y && \
|
|
1758
|
+
$MKL_SOURCE_DEPS_ONLY == y ]]; then
|
|
1759
|
+
# If attempting static linking and we're using source-only
|
|
1760
|
+
# dependencies, then there is no need for pkg-config since
|
|
1761
|
+
# the source installer will have set the required flags.
|
|
1762
|
+
mkl_check_failed "$cname" "" "ignore" "pkg-config ignored for static build"
|
|
1763
|
+
return 1
|
|
1764
|
+
fi
|
|
1765
|
+
|
|
1766
|
+
local libs=
|
|
1767
|
+
cmd="${PKG_CONFIG} --short-errors --libs $libname"
|
|
1768
|
+
mkl_dbg "pkg-config check $libname for LIBS ($2): $cmd"
|
|
1769
|
+
libs=$($cmd 2>&1)
|
|
1770
|
+
if [[ $? != 0 ]]; then
|
|
1771
|
+
mkl_dbg "${PKG_CONFIG} --libs $libname failed: $libs"
|
|
1772
|
+
# Clear define name ($2): caller may have additional checks
|
|
1773
|
+
mkl_check_failed "$cname" "" "$3" "pkg-config --libs failed"
|
|
1774
|
+
return 1
|
|
1775
|
+
fi
|
|
1776
|
+
|
|
1777
|
+
mkl_dbg "$1: from pkg-config: CFLAGS '$CFLAGS', LIBS '$LIBS'"
|
|
1778
|
+
|
|
1779
|
+
local snippet="$5"
|
|
1780
|
+
if [[ -n $snippet ]]; then
|
|
1781
|
+
mkl_dbg "$1: performing compile check using pkg-config info"
|
|
1782
|
+
|
|
1783
|
+
if ! mkl_compile_check --sub "$1" "$2" "no-cache" "$4" "$cflags $libs" "$snippet"; then
|
|
1784
|
+
mkl_check_failed "$cname" "" "$3" "compile check failed"
|
|
1785
|
+
return 1
|
|
1786
|
+
fi
|
|
1787
|
+
fi
|
|
1788
|
+
|
|
1789
|
+
mkl_mkvar_append $1 "MKL_PKGCONFIG_REQUIRES_PRIVATE" "$libname"
|
|
1790
|
+
|
|
1791
|
+
mkl_mkvar_append $1 "CFLAGS" "$cflags"
|
|
1792
|
+
|
|
1793
|
+
if [[ -z $nostaticopt ]]; then
|
|
1794
|
+
local stlibs=$(mkl_lib_check_static $1 "$libs")
|
|
1795
|
+
if [[ -n $stlibs ]]; then
|
|
1796
|
+
libs=$stlibs
|
|
1797
|
+
else
|
|
1798
|
+
# if we don't find a static library to bundle into the
|
|
1799
|
+
# -static.a, we need to export a pkgconfig dependency
|
|
1800
|
+
# so it can be resolved when linking downstream packages
|
|
1801
|
+
mkl_mkvar_append $1 "MKL_PKGCONFIG_REQUIRES" "$libname"
|
|
1802
|
+
fi
|
|
1803
|
+
fi
|
|
1804
|
+
|
|
1805
|
+
mkl_dbg "$1: from pkg-config: LIBS: prepend $libs"
|
|
1806
|
+
mkl_mkvar_prepend "$1" LIBS "$libs"
|
|
1807
|
+
|
|
1808
|
+
mkl_check_done "$1" "$2" "$3" "ok"
|
|
1809
|
+
|
|
1810
|
+
return 0
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
# Check that a command runs and exits succesfully.
|
|
1815
|
+
# Arguments:
|
|
1816
|
+
# config name
|
|
1817
|
+
# define name (optional, can be empty)
|
|
1818
|
+
# action
|
|
1819
|
+
# command
|
|
1820
|
+
function mkl_command_check {
|
|
1821
|
+
mkl_check_begin "$1" "$2" "$3" "$1 (by command)" && return $?
|
|
1822
|
+
|
|
1823
|
+
local out=
|
|
1824
|
+
out=$($4 2>&1)
|
|
1825
|
+
if [[ $? != 0 ]]; then
|
|
1826
|
+
mkl_dbg "$1: $2: $4 failed: $out"
|
|
1827
|
+
mkl_check_failed "$1" "$2" "$3" "command '$4' failed:
|
|
1828
|
+
$out"
|
|
1829
|
+
return 1
|
|
1830
|
+
fi
|
|
1831
|
+
|
|
1832
|
+
mkl_check_done "$1" "$2" "$3" "ok"
|
|
1833
|
+
|
|
1834
|
+
return 0
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
# Check that a program is executable, but will not execute it.
|
|
1839
|
+
# Arguments:
|
|
1840
|
+
# config name
|
|
1841
|
+
# define name (optional, can be empty)
|
|
1842
|
+
# action
|
|
1843
|
+
# program name (e.g, objdump)
|
|
1844
|
+
function mkl_prog_check {
|
|
1845
|
+
mkl_check_begin --verb "checking executable" "$1" "$2" "$3" "$1" && return $?
|
|
1846
|
+
|
|
1847
|
+
local out=
|
|
1848
|
+
out=$(command -v "$4" 2>&1)
|
|
1849
|
+
if [[ $? != 0 ]]; then
|
|
1850
|
+
mkl_dbg "$1: $2: $4 is not executable: $out"
|
|
1851
|
+
mkl_check_failed "$1" "$2" "$3" "$4 is not executable"
|
|
1852
|
+
return 1
|
|
1853
|
+
fi
|
|
1854
|
+
|
|
1855
|
+
mkl_check_done "$1" "$2" "$3" "ok"
|
|
1856
|
+
|
|
1857
|
+
return 0
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
# Checks that the check for the given config name passed.
|
|
1864
|
+
# This does not behave like the other checks, if the given config name passed
|
|
1865
|
+
# its test then nothing is printed. Else the configure will fail.
|
|
1866
|
+
# Arguments:
|
|
1867
|
+
# checked config name
|
|
1868
|
+
function mkl_config_check {
|
|
1869
|
+
local status=$(mkl_var_get "MKL_STATUS_$1")
|
|
1870
|
+
[[ $status = "ok" ]] && return 0
|
|
1871
|
+
mkl_fail $1 "" "fail" "$MKL_MODULE requires $1"
|
|
1872
|
+
return 1
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
# Checks that all provided config names are set.
|
|
1877
|
+
# Arguments:
|
|
1878
|
+
# config name
|
|
1879
|
+
# define name
|
|
1880
|
+
# action
|
|
1881
|
+
# check_config_name1
|
|
1882
|
+
# check_config_name2..
|
|
1883
|
+
function mkl_config_check_all {
|
|
1884
|
+
local cname=
|
|
1885
|
+
local res="ok"
|
|
1886
|
+
echo start this now for $1
|
|
1887
|
+
for cname in ${@:4}; do
|
|
1888
|
+
local st=$(mkl_var_get "MKL_STATUS_$cname")
|
|
1889
|
+
[[ $status = "ok" ]] && continue
|
|
1890
|
+
mkl_fail $1 $2 $3 "depends on $cname"
|
|
1891
|
+
res="failed"
|
|
1892
|
+
done
|
|
1893
|
+
|
|
1894
|
+
echo "try res $res"
|
|
1895
|
+
mkl_check_done "$1" "$2" "$3" $res
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
# Check environment variable
|
|
1900
|
+
# Arguments:
|
|
1901
|
+
# config name
|
|
1902
|
+
# define name
|
|
1903
|
+
# action
|
|
1904
|
+
# environment variable
|
|
1905
|
+
function mkl_env_check {
|
|
1906
|
+
mkl_check_begin "$1" "$2" "$3" "$1 (by env $4)" && return $?
|
|
1907
|
+
|
|
1908
|
+
if [[ -z ${!4} ]]; then
|
|
1909
|
+
mkl_check_failed "$1" "$2" "$3" "environment variable $4 not set"
|
|
1910
|
+
return 1
|
|
1911
|
+
fi
|
|
1912
|
+
|
|
1913
|
+
mkl_check_done "$1" "$2" "$3" "ok" "${!4}"
|
|
1914
|
+
|
|
1915
|
+
return 0
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+
# Run all checks
|
|
1920
|
+
function mkl_checks_run {
|
|
1921
|
+
# Set up common variables
|
|
1922
|
+
mkl_allvar_set "" MKL_APP_NAME $(mkl_meta_get description name)
|
|
1923
|
+
mkl_allvar_set "" MKL_APP_DESC_ONELINE "$(mkl_meta_get description oneline)"
|
|
1924
|
+
|
|
1925
|
+
# Call checks functions in dependency order
|
|
1926
|
+
local mf
|
|
1927
|
+
for mf in $MKL_CHECKS ; do
|
|
1928
|
+
MKL_MODULE=${mf%:*}
|
|
1929
|
+
local func=${mf#*:}
|
|
1930
|
+
|
|
1931
|
+
if mkl_func_exists $func ; then
|
|
1932
|
+
$func
|
|
1933
|
+
else
|
|
1934
|
+
mkl_err "Check function $func from $MKL_MODULE disappeared ($mf)"
|
|
1935
|
+
fi
|
|
1936
|
+
unset MKL_MODULE
|
|
1937
|
+
done
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
# Check for color support in terminal.
|
|
1942
|
+
# If the terminal supports colors, the function will alter
|
|
1943
|
+
# MKL_RED
|
|
1944
|
+
# MKL_GREEN
|
|
1945
|
+
# MKL_YELLOW
|
|
1946
|
+
# MKL_BLUE
|
|
1947
|
+
# MKL_CLR_RESET
|
|
1948
|
+
function mkl_check_terminal_color_support {
|
|
1949
|
+
local use_color=false
|
|
1950
|
+
local has_tput=false
|
|
1951
|
+
|
|
1952
|
+
if [[ -z ${TERM} ]]; then
|
|
1953
|
+
# tput and dircolors require $TERM
|
|
1954
|
+
mkl_dbg "\$TERM is not set! Cannot check for color support in terminal."
|
|
1955
|
+
return 1
|
|
1956
|
+
elif hash tput 2>/dev/null; then
|
|
1957
|
+
has_tput=true
|
|
1958
|
+
[[ $(tput colors 2>/dev/null) -ge 8 ]] && use_color=true
|
|
1959
|
+
mkl_dbg "tput reports color support: ${use_color}"
|
|
1960
|
+
elif hash dircolors 2>/dev/null; then
|
|
1961
|
+
# Enable color support only on colorful terminals.
|
|
1962
|
+
# dircolors --print-database uses its own built-in database
|
|
1963
|
+
# instead of using /etc/DIR_COLORS. Try to use the external file
|
|
1964
|
+
# first to take advantage of user additions.
|
|
1965
|
+
local safe_term=${TERM//[^[:alnum:]]/?}
|
|
1966
|
+
local match_lhs=""
|
|
1967
|
+
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
|
|
1968
|
+
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
|
|
1969
|
+
[[ -z ${match_lhs} ]] && match_lhs=$(dircolors --print-database)
|
|
1970
|
+
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
|
|
1971
|
+
mkl_dbg "dircolors reports color support: ${use_color}"
|
|
1972
|
+
fi
|
|
1973
|
+
|
|
1974
|
+
if ${use_color}; then
|
|
1975
|
+
if ${has_tput}; then
|
|
1976
|
+
# In theory, user could have set different escape sequences
|
|
1977
|
+
# Because tput is available we can use it to query the right values ...
|
|
1978
|
+
mkl_dbg "Using color escape sequences from tput"
|
|
1979
|
+
MKL_RED=$(tput setaf 1)
|
|
1980
|
+
MKL_GREEN=$(tput setaf 2)
|
|
1981
|
+
MKL_YELLOW=$(tput setaf 3)
|
|
1982
|
+
MKL_BLUE=$(tput setaf 4)
|
|
1983
|
+
MKL_CLR_RESET=$(tput sgr0)
|
|
1984
|
+
else
|
|
1985
|
+
mkl_dbg "Using hard-code ANSI color escape sequences"
|
|
1986
|
+
MKL_RED="\033[031m"
|
|
1987
|
+
MKL_GREEN="\033[032m"
|
|
1988
|
+
MKL_YELLOW="\033[033m"
|
|
1989
|
+
MKL_BLUE="\033[034m"
|
|
1990
|
+
MKL_CLR_RESET="\033[0m"
|
|
1991
|
+
fi
|
|
1992
|
+
else
|
|
1993
|
+
mkl_dbg "Did not detect color support in \"$TERM\" terminal!"
|
|
1994
|
+
fi
|
|
1995
|
+
|
|
1996
|
+
return 0
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
###########################################################################
|
|
2003
|
+
#
|
|
2004
|
+
#
|
|
2005
|
+
# Module functionality
|
|
2006
|
+
#
|
|
2007
|
+
#
|
|
2008
|
+
###########################################################################
|
|
2009
|
+
|
|
2010
|
+
# Downloads module from repository.
|
|
2011
|
+
# Arguments:
|
|
2012
|
+
# module name
|
|
2013
|
+
# Returns:
|
|
2014
|
+
# module file name
|
|
2015
|
+
function mkl_module_download {
|
|
2016
|
+
local modname="$1"
|
|
2017
|
+
local url="$MKL_REPO_URL/modules/configure.$modname"
|
|
2018
|
+
local tmpfile=""
|
|
2019
|
+
|
|
2020
|
+
fname="${MKLOVE_DIR}/modules/configure.$modname"
|
|
2021
|
+
|
|
2022
|
+
if [[ $url != http*://* ]]; then
|
|
2023
|
+
# Local path, just copy file.
|
|
2024
|
+
if [[ ! -f $url ]]; then
|
|
2025
|
+
mkl_err "Module $modname not found at $url"
|
|
2026
|
+
return 1
|
|
2027
|
+
fi
|
|
2028
|
+
|
|
2029
|
+
if ! cp "$url" "$fname" ; then
|
|
2030
|
+
mkl_err "Failed to copy $url to $fname"
|
|
2031
|
+
return 1
|
|
2032
|
+
fi
|
|
2033
|
+
|
|
2034
|
+
echo "$fname"
|
|
2035
|
+
return 0
|
|
2036
|
+
fi
|
|
2037
|
+
|
|
2038
|
+
# Download
|
|
2039
|
+
mkl_info "${MKL_BLUE}downloading missing module $modname from $url${MKL_CLR_RESET}"
|
|
2040
|
+
|
|
2041
|
+
tmpfile=$(mktemp _mkltmpXXXXXX)
|
|
2042
|
+
local out=
|
|
2043
|
+
out=$(curl -fLs -o "$tmpfile" "$url" 2>&1)
|
|
2044
|
+
|
|
2045
|
+
if [[ $? -ne 0 ]]; then
|
|
2046
|
+
rm -f "$tmpfile"
|
|
2047
|
+
mkl_err "Failed to download $modname:"
|
|
2048
|
+
mkl_err0 $out
|
|
2049
|
+
return 1
|
|
2050
|
+
fi
|
|
2051
|
+
|
|
2052
|
+
# Move downloaded file into place replacing the old file.
|
|
2053
|
+
mv "$tmpfile" "$fname" || return 1
|
|
2054
|
+
|
|
2055
|
+
# "Return" filename
|
|
2056
|
+
echo "$fname"
|
|
2057
|
+
|
|
2058
|
+
return 0
|
|
2059
|
+
}
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
# Load module by name or filename
|
|
2063
|
+
# Arguments:
|
|
2064
|
+
# "require"|"try"
|
|
2065
|
+
# filename
|
|
2066
|
+
# [ module arguments ]
|
|
2067
|
+
function mkl_module_load {
|
|
2068
|
+
local try=$1
|
|
2069
|
+
shift
|
|
2070
|
+
local fname=$1
|
|
2071
|
+
shift
|
|
2072
|
+
local modname=${fname#*configure.}
|
|
2073
|
+
local bypath=1
|
|
2074
|
+
|
|
2075
|
+
# Check if already loaded
|
|
2076
|
+
if mkl_in_list "$MKL_MODULES" "$modname"; then
|
|
2077
|
+
return 0
|
|
2078
|
+
fi
|
|
2079
|
+
|
|
2080
|
+
if [[ $fname = $modname ]]; then
|
|
2081
|
+
# Module specified by name, find the file.
|
|
2082
|
+
bypath=0
|
|
2083
|
+
for fname in configure.$modname \
|
|
2084
|
+
${MKLOVE_DIR}/modules/configure.$modname ; do
|
|
2085
|
+
[[ -s $fname ]] && break
|
|
2086
|
+
done
|
|
2087
|
+
fi
|
|
2088
|
+
|
|
2089
|
+
# Calling module
|
|
2090
|
+
local cmod=$MKL_MODULE
|
|
2091
|
+
[[ -z $cmod ]] && cmod="base"
|
|
2092
|
+
|
|
2093
|
+
if [[ ! -s $fname ]]; then
|
|
2094
|
+
# Attempt to download module, if permitted
|
|
2095
|
+
if [[ $MKL_NO_DOWNLOAD != 0 || $bypath == 1 ]]; then
|
|
2096
|
+
mkl_err "Module $modname not found at $fname (required by $cmod) and downloads disabled"
|
|
2097
|
+
if [[ $try = "require" ]]; then
|
|
2098
|
+
mkl_fail "$modname" "none" "fail" \
|
|
2099
|
+
"Module $modname not found (required by $cmod) and downloads disabled"
|
|
2100
|
+
fi
|
|
2101
|
+
return 1
|
|
2102
|
+
fi
|
|
2103
|
+
|
|
2104
|
+
fname=$(mkl_module_download "$modname")
|
|
2105
|
+
if [[ $? -ne 0 ]]; then
|
|
2106
|
+
mkl_err "Module $modname not found (required by $cmod)"
|
|
2107
|
+
if [[ $try = "require" ]]; then
|
|
2108
|
+
mkl_fail "$modname" "none" "fail" \
|
|
2109
|
+
"Module $modname not found (required by $cmod)"
|
|
2110
|
+
return 1
|
|
2111
|
+
fi
|
|
2112
|
+
fi
|
|
2113
|
+
|
|
2114
|
+
# Now downloaded, try loading the module again.
|
|
2115
|
+
mkl_module_load $try "$fname" "$@"
|
|
2116
|
+
return $?
|
|
2117
|
+
fi
|
|
2118
|
+
|
|
2119
|
+
# Set current module
|
|
2120
|
+
local save_MKL_MODULE=$MKL_MODULE
|
|
2121
|
+
MKL_MODULE=$modname
|
|
2122
|
+
|
|
2123
|
+
mkl_dbg "Loading module $modname (required by $cmod) from $fname"
|
|
2124
|
+
|
|
2125
|
+
# Source module file (positional arguments are available to module)
|
|
2126
|
+
source $fname
|
|
2127
|
+
|
|
2128
|
+
# Restore current module (might be recursive)
|
|
2129
|
+
MKL_MODULE=$save_MKL_MODULE
|
|
2130
|
+
|
|
2131
|
+
# Add module to list of modules
|
|
2132
|
+
mkl_var_append MKL_MODULES $modname
|
|
2133
|
+
|
|
2134
|
+
# Rename module's special functions so we can call them separetely later.
|
|
2135
|
+
mkl_func_rename "options" "${modname}_options"
|
|
2136
|
+
mkl_func_rename "install_source" "${modname}_install_source"
|
|
2137
|
+
mkl_func_rename "manual_checks" "${modname}_manual_checks"
|
|
2138
|
+
mkl_func_push MKL_CHECKS "$modname" "checks"
|
|
2139
|
+
mkl_func_push MKL_GENERATORS "$modname" "generate"
|
|
2140
|
+
mkl_func_push MKL_CLEANERS "$modname" "clean"
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2143
|
+
|
|
2144
|
+
# Require and load module
|
|
2145
|
+
# Must only be called from module file outside any function.
|
|
2146
|
+
# Arguments:
|
|
2147
|
+
# [ --try ] Dont fail if module doesn't exist
|
|
2148
|
+
# module1
|
|
2149
|
+
# [ "must" "pass" ]
|
|
2150
|
+
# [ module arguments ... ]
|
|
2151
|
+
function mkl_require {
|
|
2152
|
+
local try="require"
|
|
2153
|
+
if [[ $1 = "--try" ]]; then
|
|
2154
|
+
local try="try"
|
|
2155
|
+
shift
|
|
2156
|
+
fi
|
|
2157
|
+
|
|
2158
|
+
local mod=$1
|
|
2159
|
+
shift
|
|
2160
|
+
local override_action=
|
|
2161
|
+
|
|
2162
|
+
# Check for cyclic dependencies
|
|
2163
|
+
if mkl_in_list "$MKL_LOAD_STACK" "$mod"; then
|
|
2164
|
+
mkl_err "Cyclic dependency detected while loading $mod module:"
|
|
2165
|
+
local cmod=
|
|
2166
|
+
local lmod=$mod
|
|
2167
|
+
for cmod in $MKL_LOAD_STACK ; do
|
|
2168
|
+
mkl_err " $lmod required by $cmod"
|
|
2169
|
+
lmod=$cmod
|
|
2170
|
+
done
|
|
2171
|
+
mkl_fail base "" fail "Cyclic dependency detected while loading module $mod"
|
|
2172
|
+
return 1
|
|
2173
|
+
fi
|
|
2174
|
+
|
|
2175
|
+
mkl_var_prepend MKL_LOAD_STACK "$mod"
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
if [[ "$1 $2" == "must pass" ]]; then
|
|
2179
|
+
shift
|
|
2180
|
+
shift
|
|
2181
|
+
override_action="fail"
|
|
2182
|
+
fi
|
|
2183
|
+
|
|
2184
|
+
if [[ ! -z $override_action ]]; then
|
|
2185
|
+
mkl_meta_set "MOD__$mod" "override_action" "$override_action"
|
|
2186
|
+
fi
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
mkl_module_load $try $mod "$@"
|
|
2190
|
+
local ret=$?
|
|
2191
|
+
|
|
2192
|
+
mkl_var_shift MKL_LOAD_STACK
|
|
2193
|
+
|
|
2194
|
+
return $ret
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2197
|
+
|
|
2198
|
+
|
|
2199
|
+
###########################################################################
|
|
2200
|
+
#
|
|
2201
|
+
#
|
|
2202
|
+
# Usage options
|
|
2203
|
+
#
|
|
2204
|
+
#
|
|
2205
|
+
###########################################################################
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
MKL_USAGE="Usage: ./configure [OPTIONS...]
|
|
2209
|
+
|
|
2210
|
+
mklove configure script - mklove, not autoconf
|
|
2211
|
+
Copyright (c) 2014-2023, Magnus Edenhill - https://github.com/edenhill/mklove
|
|
2212
|
+
"
|
|
2213
|
+
|
|
2214
|
+
function mkl_usage {
|
|
2215
|
+
echo "$MKL_USAGE"
|
|
2216
|
+
local name=$(mkl_meta_get description name)
|
|
2217
|
+
|
|
2218
|
+
if [[ ! -z ${name} ]]; then
|
|
2219
|
+
echo " $name - $(mkl_meta_get description oneline)
|
|
2220
|
+
$(mkl_meta_get description copyright)
|
|
2221
|
+
"
|
|
2222
|
+
fi
|
|
2223
|
+
|
|
2224
|
+
local og
|
|
2225
|
+
for og in $MKL_USAGE_GROUPS ; do
|
|
2226
|
+
og="MKL_USAGE_GROUP__$og"
|
|
2227
|
+
echo "${!og}"
|
|
2228
|
+
done
|
|
2229
|
+
|
|
2230
|
+
echo "Honoured environment variables:
|
|
2231
|
+
CC, CPP, CXX, CFLAGS, CPPFLAGS, CXXFLAGS, LDFLAGS, LIBS,
|
|
2232
|
+
LD, NM, OBJDUMP, STRIP, RANLIB, PKG_CONFIG, PKG_CONFIG_PATH,
|
|
2233
|
+
STATIC_LIB_<libname>=.../libname.a
|
|
2234
|
+
|
|
2235
|
+
"
|
|
2236
|
+
|
|
2237
|
+
}
|
|
2238
|
+
|
|
2239
|
+
|
|
2240
|
+
|
|
2241
|
+
# Add usage option informative text
|
|
2242
|
+
# Arguments:
|
|
2243
|
+
# text
|
|
2244
|
+
function mkl_usage_info {
|
|
2245
|
+
MKL_USAGE="$MKL_USAGE
|
|
2246
|
+
$1"
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
# Add option to usage output
|
|
2251
|
+
# Arguments:
|
|
2252
|
+
# option group ("Standard", "Cross-Compilation", etc..)
|
|
2253
|
+
# variable name
|
|
2254
|
+
# option ("--foo", "--foo=*", "--foo=args_required")
|
|
2255
|
+
# help
|
|
2256
|
+
# default (optional)
|
|
2257
|
+
# assignvalue (optional, default:"y")
|
|
2258
|
+
# function block (optional)
|
|
2259
|
+
#
|
|
2260
|
+
# If option takes the form --foo=* then arguments are optional.
|
|
2261
|
+
function mkl_option {
|
|
2262
|
+
local optgroup=$1
|
|
2263
|
+
local varname=$2
|
|
2264
|
+
|
|
2265
|
+
# Fixed width between option name and help in usage output
|
|
2266
|
+
local pad=" "
|
|
2267
|
+
if [[ ${#3} -lt ${#pad} ]]; then
|
|
2268
|
+
pad=${pad:0:$(expr ${#pad} - ${#3})}
|
|
2269
|
+
else
|
|
2270
|
+
pad=""
|
|
2271
|
+
fi
|
|
2272
|
+
|
|
2273
|
+
# Add to usage output
|
|
2274
|
+
local optgroup_safe=$(mkl_env_esc $optgroup)
|
|
2275
|
+
if ! mkl_in_list "$MKL_USAGE_GROUPS" "$optgroup_safe" ; then
|
|
2276
|
+
mkl_env_append MKL_USAGE_GROUPS "$optgroup_safe"
|
|
2277
|
+
mkl_env_set "MKL_USAGE_GROUP__$optgroup_safe" "$optgroup options:
|
|
2278
|
+
"
|
|
2279
|
+
fi
|
|
2280
|
+
|
|
2281
|
+
local defstr=""
|
|
2282
|
+
[[ ! -z $5 ]] && defstr=" [$5]"
|
|
2283
|
+
mkl_env_append "MKL_USAGE_GROUP__$optgroup_safe" " $3 $pad $4$defstr
|
|
2284
|
+
"
|
|
2285
|
+
|
|
2286
|
+
local optname="${3#--}"
|
|
2287
|
+
local safeopt=
|
|
2288
|
+
local optval=""
|
|
2289
|
+
if [[ $3 == *=* ]]; then
|
|
2290
|
+
optname="${optname%=*}"
|
|
2291
|
+
optval="${3#*=}"
|
|
2292
|
+
if [[ $optval == '*' ]]; then
|
|
2293
|
+
# Avoid globbing of --foo=* optional arguments
|
|
2294
|
+
optval='\*'
|
|
2295
|
+
fi
|
|
2296
|
+
fi
|
|
2297
|
+
|
|
2298
|
+
safeopt=$(mkl_env_esc $optname)
|
|
2299
|
+
|
|
2300
|
+
mkl_meta_set "MKL_OPT_ARGS" "$safeopt" "$optval"
|
|
2301
|
+
|
|
2302
|
+
#
|
|
2303
|
+
# Optional variable scoping by prefix: "env:", "mk:", "def:"
|
|
2304
|
+
#
|
|
2305
|
+
local setallvar="mkl_allvar_set ''"
|
|
2306
|
+
local setmkvar="mkl_mkvar_set ''"
|
|
2307
|
+
|
|
2308
|
+
if [[ $varname = env:* ]]; then
|
|
2309
|
+
# Set environment variable (during configure runtime only)
|
|
2310
|
+
varname=${varname#*:}
|
|
2311
|
+
setallvar=mkl_env_set
|
|
2312
|
+
setmkvar=mkl_env_set
|
|
2313
|
+
elif [[ $varname = mk:* ]]; then
|
|
2314
|
+
# Set Makefile.config variable
|
|
2315
|
+
varname=${varname#*:}
|
|
2316
|
+
setallvar="mkl_mkvar_append ''"
|
|
2317
|
+
setmkvar="mkl_mkvar_append ''"
|
|
2318
|
+
elif [[ $varname = def:* ]]; then
|
|
2319
|
+
# Set config.h define
|
|
2320
|
+
varname=${varname#*:}
|
|
2321
|
+
setallvar="mkl_define_set ''"
|
|
2322
|
+
setmkvar="mkl_define_set ''"
|
|
2323
|
+
fi
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
if [[ ! -z $7 ]]; then
|
|
2327
|
+
# Function block specified.
|
|
2328
|
+
eval "function opt_$safeopt { $7 }"
|
|
2329
|
+
else
|
|
2330
|
+
# Add default implementation of function simply setting the value.
|
|
2331
|
+
# Application may override this by redefining the function after calling
|
|
2332
|
+
# mkl_option.
|
|
2333
|
+
if [[ $optval = "PATH" ]]; then
|
|
2334
|
+
# PATH argument: make it an absolute path.
|
|
2335
|
+
# Only set the make variable (not config.h)
|
|
2336
|
+
eval "function opt_$safeopt { $setmkvar $varname \"\$(mkl_abspath \$(mkl_render \$1))\"; }"
|
|
2337
|
+
else
|
|
2338
|
+
# Standard argument: simply set the value
|
|
2339
|
+
if [[ -z "$6" ]]; then
|
|
2340
|
+
eval "function opt_$safeopt { $setallvar $varname \"\$1\"; }"
|
|
2341
|
+
else
|
|
2342
|
+
eval "function opt_$safeopt { $setallvar $varname \"$6\"; }"
|
|
2343
|
+
fi
|
|
2344
|
+
fi
|
|
2345
|
+
fi
|
|
2346
|
+
|
|
2347
|
+
# If default value is provided and does not start with "$" (variable ref)
|
|
2348
|
+
# then set it right away.
|
|
2349
|
+
# $ variable refs are set after all checks have run during the
|
|
2350
|
+
# generating step.
|
|
2351
|
+
if [[ ${#5} != 0 ]] ; then
|
|
2352
|
+
if [[ $5 = *\$* ]]; then
|
|
2353
|
+
mkl_var_append "MKL_LATE_VARS" "opt_$safeopt:$5"
|
|
2354
|
+
else
|
|
2355
|
+
opt_$safeopt $5
|
|
2356
|
+
fi
|
|
2357
|
+
fi
|
|
2358
|
+
|
|
2359
|
+
if [[ ! -z $varname ]]; then
|
|
2360
|
+
# Add variable to list
|
|
2361
|
+
MKL_CONFVARS="$MKL_CONFVARS $varname"
|
|
2362
|
+
fi
|
|
2363
|
+
|
|
2364
|
+
}
|
|
2365
|
+
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
# Adds a toggle (--enable-X, --disable-X) option.
|
|
2369
|
+
# Arguments:
|
|
2370
|
+
# option group ("Standard", ..)
|
|
2371
|
+
# variable name (WITH_FOO)
|
|
2372
|
+
# option (--enable-foo, --enable-foo=*, or --enable-foo=req)
|
|
2373
|
+
# help ("foo.." ("Enable" and "Disable" will be prepended))
|
|
2374
|
+
# default (y or n)
|
|
2375
|
+
|
|
2376
|
+
function mkl_toggle_option {
|
|
2377
|
+
|
|
2378
|
+
# Add option argument
|
|
2379
|
+
mkl_option "$1" "$2" "$3" "$4" "$5"
|
|
2380
|
+
|
|
2381
|
+
# Add corresponding "--disable-foo" option for "--enable-foo".
|
|
2382
|
+
local disname="${3/--enable/--disable}"
|
|
2383
|
+
local dishelp="${4/Enable/Disable}"
|
|
2384
|
+
mkl_option "$1" "$2" "$disname" "$dishelp" "" "n"
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
# Adds a toggle (--enable-X, --disable-X) option with builtin checker.
|
|
2388
|
+
# This is the library version.
|
|
2389
|
+
# Arguments:
|
|
2390
|
+
# option group ("Standard", ..)
|
|
2391
|
+
# config name (foo, must be same as pkg-config name)
|
|
2392
|
+
# variable name (WITH_FOO)
|
|
2393
|
+
# action (fail or disable)
|
|
2394
|
+
# option (--enable-foo)
|
|
2395
|
+
# help (defaults to "Enable <config name>")
|
|
2396
|
+
# linker flags (-lfoo)
|
|
2397
|
+
# default (y or n)
|
|
2398
|
+
|
|
2399
|
+
function mkl_toggle_option_lib {
|
|
2400
|
+
|
|
2401
|
+
local help="$6"
|
|
2402
|
+
[[ -z "$help" ]] && help="Enable $2"
|
|
2403
|
+
|
|
2404
|
+
# Add option argument
|
|
2405
|
+
mkl_option "$1" "$3" "$5" "$help" "$8"
|
|
2406
|
+
|
|
2407
|
+
# Add corresponding "--disable-foo" option for "--enable-foo".
|
|
2408
|
+
local disname="${5/--enable/--disable}"
|
|
2409
|
+
local dishelp="${help/Enable/Disable}"
|
|
2410
|
+
mkl_option "$1" "$3" "$disname" "$dishelp" "" "n"
|
|
2411
|
+
|
|
2412
|
+
# Create checks
|
|
2413
|
+
eval "function _tmp_func { mkl_lib_check \"$2\" \"$3\" \"$4\" CC \"$7\"; }"
|
|
2414
|
+
mkl_func_push MKL_CHECKS "$MKL_MODULE" _tmp_func
|
|
2415
|
+
}
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
# Downloads, verifies checksum, and extracts an archive to
|
|
2420
|
+
# the current directory.
|
|
2421
|
+
#
|
|
2422
|
+
# Arguments:
|
|
2423
|
+
# url Archive URL
|
|
2424
|
+
# shabits The SHA algorithm bit count used to verify the checksum. E.g., "256".
|
|
2425
|
+
# checksum Expected checksum of archive (use "" to not perform check)
|
|
2426
|
+
function mkl_download_archive {
|
|
2427
|
+
local url="$1"
|
|
2428
|
+
local shabits="$2"
|
|
2429
|
+
local exp_checksum="$3"
|
|
2430
|
+
|
|
2431
|
+
local tmpfile=$(mktemp _mkltmpXXXXXX)
|
|
2432
|
+
|
|
2433
|
+
# Try both wget and curl
|
|
2434
|
+
if ! wget -nv -O "$tmpfile" "$url" ; then
|
|
2435
|
+
if ! curl -fLsS -o "$tmpfile" "$url" ; then
|
|
2436
|
+
rm -f "$tmpfile"
|
|
2437
|
+
echo -e "ERROR: Download of $url failed" 1>&2
|
|
2438
|
+
return 1
|
|
2439
|
+
fi
|
|
2440
|
+
fi
|
|
2441
|
+
|
|
2442
|
+
if [[ -n $exp_checksum ]]; then
|
|
2443
|
+
# Verify checksum
|
|
2444
|
+
|
|
2445
|
+
local checksum_tool=""
|
|
2446
|
+
|
|
2447
|
+
# OSX has shasum by default, on Linux it is typically in
|
|
2448
|
+
# some Perl package that may or may not be installed.
|
|
2449
|
+
if $(which shasum >/dev/null 2>&1); then
|
|
2450
|
+
checksum_tool="shasum -b -a ${shabits}"
|
|
2451
|
+
else
|
|
2452
|
+
# shaXsum is available in Linux coreutils
|
|
2453
|
+
checksum_tool="sha${shabits}sum"
|
|
2454
|
+
fi
|
|
2455
|
+
|
|
2456
|
+
local checksum=$($checksum_tool "$tmpfile" | cut -d' ' -f1)
|
|
2457
|
+
if [[ $? -ne 0 ]]; then
|
|
2458
|
+
rm -f "$tmpfile"
|
|
2459
|
+
echo "ERROR: Failed to verify checksum of $url with $checksum_tool" 1>&2
|
|
2460
|
+
return 1
|
|
2461
|
+
fi
|
|
2462
|
+
|
|
2463
|
+
if [[ $checksum != $exp_checksum ]]; then
|
|
2464
|
+
rm -f "$tmpfile"
|
|
2465
|
+
echo "ERROR: $url: $checksum_tool: Checksum mismatch: expected $exp_checksum, calculated $checksum" 1>&2
|
|
2466
|
+
return 1
|
|
2467
|
+
fi
|
|
2468
|
+
|
|
2469
|
+
echo "### Checksum of $url verified ($checksum_tool):"
|
|
2470
|
+
echo "### Expected: $exp_checksum"
|
|
2471
|
+
echo "### Calculated: $checksum"
|
|
2472
|
+
fi
|
|
2473
|
+
|
|
2474
|
+
tar xzf "$tmpfile" --strip-components 1
|
|
2475
|
+
if [[ $? -ne 0 ]]; then
|
|
2476
|
+
rm -f "$tmpfile"
|
|
2477
|
+
echo "ERROR: $url: failed to extract archive" 1>&2
|
|
2478
|
+
return 1
|
|
2479
|
+
fi
|
|
2480
|
+
|
|
2481
|
+
|
|
2482
|
+
rm -f "$tmpfile"
|
|
2483
|
+
return 0
|
|
2484
|
+
}
|