aboutsummaryrefslogtreecommitdiff
path: root/depends/funcs.mk
AgeCommit message (Collapse)Author
2024-08-16build: Generate `toolchain.cmake` in dependsHennadii Stepanov
2024-08-16depends: Rename `cmake_system` -> `cmake_system_name`Hennadii Stepanov
2024-06-10depends: remove FORCE_USE_SYSTEM_CLANGfanquake
2024-05-22depends: remove cctools & libtapifanquake
2024-05-13depends: set RANLIB for CMakefanquake
2024-05-13depends: set NM for CMakefanquake
2024-05-13depends: set AR for CMakefanquake
2024-04-25depends: pass verbose through to cmake based makeMax Edwards
When running depends with V=1 this will now enable verbose output from makefiles generated by cmake.
2024-03-25depends: always set CMAKE_POSITION_INDEPENDENT_CODE=ONfanquake
Rather than potentially having to set this per-package, set it globally, as this should always be what we want. Without doing this, changes in later commits will have to add this per-package. Similar to https://github.com/bitcoin/bitcoin/pull/29488, which is the Autotools equivalent.
2024-03-25depends: always set CMAKE_INSTALL_LIBDIR=lib/fanquake
Rather than setting this per package, set it globally, as this is always what we want. Without doing this, later commit will have to add the same doc + change to more packages.
2024-03-14depends: always configure with --with-picfanquake
We currently do this sporadically. Not only amongst packages, but across OS's, i.e sometimes it's done for BSDs/Android, and sometimes not. Configure with `--with-pic` globally instead. I think this generally makes more sense, and should not have any downsides. See related discussion in https://github.com/bitcoin/bitcoin/pull/28846#discussion_r1399123100.
2024-03-08depends: don't use -h with touch on OpenBSDfanquake
Should fix #29447.
2024-01-26depends: remove (darwin) libtool now that it's no longer usedCory Fields
Note that this is completely unrelated to gnu usage of libtool.
2024-01-11[depends] Allow PATH with spaces in directory names.Mark Friedenbach
added test and update code based on feedback
2023-04-19depends: reuse _config_opts for CMake optionsCory Fields
This will allow us to use the existing machinery for filtering by arch, os, debug/release, etc. For example, the following becomes possible for libevent: $(package)_config_opts_release=-DEVENT__DISABLE_DEBUG_MODE Now the define is only set when not building depends with DEBUG=1
2023-02-07Merge bitcoin/bitcoin#21995: build: Make dependency package archive ↵fanquake
timestamps deterministic 6ebe57622cb70df529879b15f291166177f2827c build: Make dependency package archive timestamps deterministic (Hennadii Stepanov) Pull request description: This PR makes testing changes like bitcoin/bitcoin#20641, bitcoin/bitcoin#21593, bitcoin/bitcoin#22142, bitcoin/bitcoin#24279, bitcoin/bitcoin#24285 as easy as comparing hashes. With this PR: ``` $ make -C depends clean $ make -C depends HOST=x86_64-w64-mingw32 $ find depends/built/x86_64-w64-mingw32 -name '*.hash' | sort | xargs cat 1f685a61cbf205f81977ecf88cba91fa1ccdfbe77ab4ec3405dcd33ceb778af4 bdb-4.8.30-ca950bd6d13.tar.gz 08a9acde276e6e5e5c8913e3ad07eeecda184a996882ae226b3ed056c7ec1b01 boost-1.80.0-b537c466dcb.tar.gz 144c6d92e4108fcc90740bee27007db58a88336a97be6367f9c8ba4cc208af27 libevent-2.1.12-stable-e13b2bdd8b8.tar.gz e3c9c9609bf32bfd460432c6ab99a64e9f8750ed775a193925ff4f5aed363e4c libnatpmp-07004b97cf691774efebe70404cf22201e4d330d-82255b84667.tar.gz 62c6a089a4b24a413eccd2f389bf4c8b0716423b0ace5e87e984069635da9f83 miniupnpc-2.2.2-c43fc4cf2f6.tar.gz 78762700066273e597698a78479a506b33532ea565d18ef561614b9fc3820cf5 qrencode-3.4.4-663de0dc628.tar.gz 5e2183faf91838510a48e6dbb4b65ae74a7d48ba1abc070b82767c4076582360 qt-5.15.5-986926343e2.tar.gz 9f8459f8d27fc3af9146712be6ba6577f15741429936504a950cc51c17da1ba8 sqlite-3380500-bec6a4d3299.tar.gz 0eca5d01d427de50be4bd57c8bb100ab69b017792c32b8733e2b20443f4c9c28 zeromq-4.3.4-8ae81bab6f4.tar.gz ``` As an example, here is an evidence that bitcoin/bitcoin#24279 is a strict refactoring change: ``` $ git fetch origin pull/24279/head $ git cherry-pick 706026838d917a3d853e03e83db040f1fd4aeb74 $ git cherry-pick 3f90ddea8a6a2061cfb347a1d77df2c0a6fa238c $ make -C depends clean $ make -C depends HOST=x86_64-w64-mingw32 $ find depends/built/x86_64-w64-mingw32 -name '*.hash' | sort | xargs cat 1f685a61cbf205f81977ecf88cba91fa1ccdfbe77ab4ec3405dcd33ceb778af4 bdb-4.8.30-c7faf31d5ca.tar.gz 08a9acde276e6e5e5c8913e3ad07eeecda184a996882ae226b3ed056c7ec1b01 boost-1.80.0-1af3dd1d99e.tar.gz 144c6d92e4108fcc90740bee27007db58a88336a97be6367f9c8ba4cc208af27 libevent-2.1.12-stable-6228a9f8534.tar.gz e3c9c9609bf32bfd460432c6ab99a64e9f8750ed775a193925ff4f5aed363e4c libnatpmp-07004b97cf691774efebe70404cf22201e4d330d-41aa6194ecc.tar.gz 62c6a089a4b24a413eccd2f389bf4c8b0716423b0ace5e87e984069635da9f83 miniupnpc-2.2.2-6a93027769c.tar.gz 78762700066273e597698a78479a506b33532ea565d18ef561614b9fc3820cf5 qrencode-3.4.4-d40cb2d45c9.tar.gz 5e2183faf91838510a48e6dbb4b65ae74a7d48ba1abc070b82767c4076582360 qt-5.15.5-120c3cb745d.tar.gz 9f8459f8d27fc3af9146712be6ba6577f15741429936504a950cc51c17da1ba8 sqlite-3380500-bbd4d813c69.tar.gz 0eca5d01d427de50be4bd57c8bb100ab69b017792c32b8733e2b20443f4c9c28 zeromq-4.3.4-df0858a19d2.tar.gz ``` ACKs for top commit: TheCharlatan: Code review ACK 6ebe57622cb70df529879b15f291166177f2827c Tree-SHA512: 20e0222781f5dcb50126c11677d0671bcdd7be144b2e528c75a02983acc494206552fb35039697ccd094de27a21b3fb439e9965c34feb8a6d74627fa20a9a5e7
2022-12-09build: Fix depends build system when working with subtargetsHennadii Stepanov
2022-12-07build: Move environment variables into `$(package)_config_env`Hennadii Stepanov
2022-12-07build: Make $(package)_*_env available to all $(package)_*_cmdsHennadii Stepanov
2022-12-02build: Make dependency package archive timestamps deterministicHennadii Stepanov
2022-05-01build: Fix `libmultiprocess` cross-compiling to Linux hostsHennadii Stepanov
To successfully call the `capnp_generate_cpp()` function, the `libmultiprocess` build system must be provided with paths to the native `capnp` and `capnpc-c++` tools.
2022-04-14depends: Add file-based logging for individual packagesHennadii Stepanov
2022-04-13Merge bitcoin/bitcoin#24285: build, refactor: Drop useless `call` Make functionlaanwj
e644591426fb4ee1bba5c4bfdde85eb378258272 build, refactor: Drop useless `call` Make function (Hennadii Stepanov) Pull request description: Using the [`call`](https://www.gnu.org/software/make/manual/html_node/Call-Function.html) function with `$(package)_*_cmds` is effectively noop because the latter, which could be found in `<package>.mk` files, do not use temporary `$(1)` variable at all. This PR removes useless calls of the `call` function, and makes code more readable and easier to reason about. No change in resulted dependency binaries could be easy verified with bitcoin/bitcoin/#21995. ACKs for top commit: laanwj: Code review ACK e644591426fb4ee1bba5c4bfdde85eb378258272 shaavan: Code review ACK e644591426fb4ee1bba5c4bfdde85eb378258272 Tree-SHA512: 8481fa0dc5bbf7dd6a180f7fae5a2ccc07f85b50c7a966bceb2d7e010e07e5f211ee3f74f8ac79bc5acfde5f0764264d599d959ff3ebb8511b1b4a33f79509bd
2022-02-10build: add a default build tar in dependsfanquake
This is so we can override it later for BSDs.
2022-02-07build, refactor: Drop useless `call` Make functionHennadii Stepanov
2021-12-17Merge bitcoin/bitcoin#22283: build: Replace $(AT) with .SILENTW. J. van der Laan
8494dcae0e32716fd7cc7abeacf0a795a1303e6a Replace $(AT) with .SILENCE. (Dmitry Goncharov) Pull request description: This reduces the amount of syntax noise in the makefiles. Setting V=1 still enables verbose logging. The only noticeable difference in behavior is that, unless V=1 is specified, make won't print its own messages like make: Nothing to be done for 'all', make: 'all' is up to date, or touch <file>, if -t is specified. ACKs for top commit: laanwj: Tested ACK 8494dcae0e32716fd7cc7abeacf0a795a1303e6a Tree-SHA512: 66b9111229995aa54a9e87f4571648727d89b8529caec651063cdfe5c00a64341371b648701d192b2334df0614617a00c28eaa56c7f08ee9c00127cada0293ab
2021-12-10build: Include native_X.mk before X.mkHennadii Stepanov
This change fixes some weirdness like `make print-capnp_version` output in depends.
2021-07-19Replace $(AT) with .SILENCE.Dmitry Goncharov
This reduces the amount of syntax noise in the makefiles.
2021-04-08depends: Fix id_string invocationsCarl Dong
We now use a script named gen_id to generate the base build_id/host_id. This solves 2 problems: 1. GNU Make special-casing exit code 127 (command not found) meant that warnings about missing tools would propagate to the user's terminal and broke our opportunistic build_id construction. 2. This change ensures that we don't have arbitrary characters in our make variables that would be misinterpreted by Make. See comments in depends/Makefile and depends/gen_id for more information.
2021-03-31build: set --build when configuring packages in dependsfanquake
After reading https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.70/autoconf.html#Specifying-Target-Triplets, my understanding is that this change should mostly be a no-op, as --build defaults to the output of config.guess, however, this may be slightly more correct > For historical reasons, whenever you specify --host, be sure to > specify --build too; this will be fixed in the future. and will quell some warnings in depends (#16354). If anything, this also explicitly enables cross-compilation mode when `--host` differs from `--build`. As for "fixed in the future", this is the case for Autoconf 2.70+.
2021-01-07depends: Delay expansion of per-package varsCarl Dong
Prior to this commit, when int_vars was called for packages, it would immediately expand the "single-dollar variables", which may be defined in terms of variables which are not yet determined (e.g. variables defined in package/*.mk, which are included after int_vars is called). This is required for the next commit as after that commit, for darwin cross-builds: 0. int_vars is defined in terms of $(1)_cc 1. $(1)_cc is defined in terms of darwin_CC 2. ... which is defined in terms of clang_resource_dir 3. ... which is defined in terms of native_cctools_clang_version 4. which is undetermined at the time when int_vars is being expanded and evaluated
2020-09-30depends: Set CMAKE_INSTALL_RPATH for native packagesRussell Yanofsky
After #19685 started setting LDFLAGS, the INSTALL_RPATH_USE_LINK_PATH cmake option used in the libmultiprocess build no longer works, so it is neccessary to set CMAKE_INSTALL_RPATH as a fallback. It's unclear currently whether the bad interaction between INSTALL_RPATH_USE_LINK_PATH and LDFLAGS is a bug, but the issue is reported: https://github.com/bitcoin/bitcoin/issues/19981#issuecomment-696680877 https://discourse.cmake.org/t/install-rpath-use-link-path-not-working-when-cmake-exe-linker-flags-ldflags-is-set/1892 Commands useful for building / testing this change make -C depends MULTIPROCESS=1 print-libmultiprocess_cmake make -C depends MULTIPROCESS=1 print-native_libmultiprocess_cmake make -C depends MULTIPROCESS=1 HOST=x86_64-apple-darwin16 print-libmultiprocess_cmake rm -rvf depends/x86_64-pc-linux-gnu/native depends/work/staging depends/work/build make -C depends MULTIPROCESS=1 V=1 native_libmultiprocess_staged for f in `find -name mpgen`; do echo == $f ==; readelf -d $f | grep -i path; done make -C depends MULTIPROCESS=1 V=1 native_libmultiprocess_built find -name CMakeCache.txt Fixes #19981
2020-09-16build: Fix target nameHennadii Stepanov
2020-08-18depends: Specify LDFLAGS to cmake as wellCarl Dong
2020-08-18depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMakeCarl Dong
This is similar to how we do it for qt.mk.
2020-08-18depends: Cleanup CMake invocationCarl Dong
2020-08-07depends: More robust cmake invocationCarl Dong
Specify well-known env vars instead of using a workaround to split up CC and CXX.
2020-07-07depends: Decouple toolchain + binutilsCarl Dong
For now they remain the same, but in the next commit, we will assign them differently according to wether or not we're using system clang.
2020-05-12depends: add MULTIPROCESS depends optionRussell Yanofsky
Builds required packages and passes --enable-multiprocess option to bitcoin build
2020-04-10Revert "Merge #16367: Multiprocess build support"MarcoFalke
This reverts the changes made in merge commit 1b307613604883daea4913a65da30ae073c9dc4d: This reverts commit b919efadff3d0393f4a8c3c1dc735f7ac5c665bb. This reverts commit d54f64c6c700be0604190f52c84fc5f1cdd9f02f. This reverts commit 787f40668dc15980c3d6de028d7950c08175d84a. This reverts commit d6306466626635e6fee44385e6a688c8dc118eb5. This reverts commit e6e44eedd56ecaf59f3fabf8e07ab7dee0ddb1b6.
2020-04-05libmultiprocess depends buildRussell Yanofsky
2019-10-11build: only pass --disable-dependency-tracking to packages that understand itfanquake
By blanket passing --disable-dependency-tracking to all depends packages we end up with some warnings like: configure: WARNING: unrecognized options: --disable-dependency-tracking So instead, only pass it to packages that understand it. Related to https://github.com/bitcoin/bitcoin/issues/16354.
2019-04-08Merge #15446: Improve depends debuggabilityMarcoFalke
6d44c5ebf9 depends: Add commands for each package for each stage (Carl Dong) 80f0e05b70 depends: Preprocessing doesn't care about deps (Carl Dong) Pull request description: Adds make targets for each package for each stage, e.g. ```sh make zeromq_configured ``` ACKs for commit 6d44c5: MarcoFalke: ACK 6d44c5ebf97af4b357079fe4bc2130f98e1d0fd2 (Haven't looked at the code changes, but adding this feature makes sense) ryanofsky: ACK 6d44c5ebf97af4b357079fe4bc2130f98e1d0fd2 Tree-SHA512: f1ac0aecfd2372aed09ca63603e2634552cb3f6ff9d610f958e2a66952d7d9e870b4c32b7d996886879e6d3016532272e8b1a10c13ed7b31009c6c96f786db9f
2019-03-18depends: tar: Always extract as yourselfCarl Dong
For normal users, --no-same-owner is default, but not so for root, where it is assumed that root can change ownership willy-nilly. This is not the case for privilege-limited container environments where we gaslight the process into thinking it's root.
2019-02-19depends: Add commands for each package for each stageCarl Dong
2019-02-19depends: Preprocessing doesn't care about depsCarl Dong
2016-04-04depends: fix fallback downloadsCory Fields
In some cases, failed downloads wouldn't trigger a fallback download attempt. Namely, checksum mismatches.
2016-04-04depends: create a hostid and buildid and add option for saltsCory Fields
These add very simple sanity checks to ensure that the build/host toolchains have not changed since the last run. If they have, all ids will change and packages will be rebuilt. For more complicated usage (like parsing dpkg), HOST_ID_SALT/BUILD_ID_SALT may be used to introduce arbitrary data to the ids.
2015-05-14depends: sanity-check sources and cached buildsCory Fields
In some cases (Travis), sources and build caches may be moved around in-between builds, and we can't necessarily trust that everything is still intact. This introduces pre-build checks that verify against stashed checksums. Note that this will cause all sources to be re-downloaded, since cached sources weren't trustworthy before this.
2015-01-31depends: fix typosMichael Ford