mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 11:57:28 -03:00
16b31cc4c5
b685f60a08
build: mac_alias 2.1.1 (fanquake)5d2cbdf772
macdeploy: use Python 3.6 (fanquake)a42aa94c54
macdeploy: remove runHDIUtil in favor of directly calling subprocess.run (fanquake)adaa26202b
macdeploy: remove existing Bitcoin-Core.dmg if present (fanquake)ccb0325b1b
macdeploy: move qt_conf to where it's used (fanquake)6390a04862
macdeploy: consolidate .DS_Store generation (fanquake)32347cd56a
macdeploy: assume plistlib is available (fanquake)0ab4018c12
macdeploy: have a single level of logging output (fanquake)827d382aa7
macdeploy: remove add-resources argument (fanquake)464b34d4c3
macdeploy: remove codesigning argument (fanquake)4d70d3d7fe
build: automatically determine macOS translations (fanquake) Pull request description: This consolidates our macOS build code so that `.DS_Store` generation is the same when running `make deploy` for macOS when building on Linux and macOS, rather than maintaining two version of code that essentially do the same thing (just slightly differently). It also removes unused code and any AppleScript usage, automates finding translation files and generally simplifies `macdeployqtplus`. It also gets rid of the annoying "popping up" behaviour during DMG generation, names the created image `Bitcoin-Core.dmg` rather than `Bitcoin-Qt.dmg`. ACKs for top commit: dergoegge: ACKb685f60a08
- Less and cleaner code looks good. I tested this with `make deploy` and everything still works + the popup during DMG generation is gone. Tree-SHA512: dcd38344e2dfcfa7ffbccf6226a71425c4d16b421a4881d5ee37b8e7ef393b3e8077262444c39b11912269d8cf688aba897e6518cba8361eb24a03fdd03b8caf
357 lines
13 KiB
Makefile
357 lines
13 KiB
Makefile
# Copyright (c) 2013-2020 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
# Pattern rule to print variables, e.g. make print-top_srcdir
|
|
print-%:
|
|
@echo $* = $($*)
|
|
|
|
ACLOCAL_AMFLAGS = -I build-aux/m4
|
|
SUBDIRS = src
|
|
if ENABLE_MAN
|
|
SUBDIRS += doc/man
|
|
endif
|
|
.PHONY: deploy FORCE
|
|
|
|
export PYTHONPATH
|
|
|
|
if BUILD_BITCOIN_LIBS
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
|
pkgconfig_DATA = libbitcoinconsensus.pc
|
|
endif
|
|
|
|
BITCOIND_BIN=$(top_builddir)/src/$(BITCOIN_DAEMON_NAME)$(EXEEXT)
|
|
BITCOIN_QT_BIN=$(top_builddir)/src/qt/$(BITCOIN_GUI_NAME)$(EXEEXT)
|
|
BITCOIN_CLI_BIN=$(top_builddir)/src/$(BITCOIN_CLI_NAME)$(EXEEXT)
|
|
BITCOIN_TX_BIN=$(top_builddir)/src/$(BITCOIN_TX_NAME)$(EXEEXT)
|
|
BITCOIN_WALLET_BIN=$(top_builddir)/src/$(BITCOIN_WALLET_TOOL_NAME)$(EXEEXT)
|
|
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win64-setup$(EXEEXT)
|
|
|
|
empty :=
|
|
space := $(empty) $(empty)
|
|
|
|
OSX_APP=Bitcoin-Qt.app
|
|
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
|
OSX_DMG = $(OSX_VOLNAME).dmg
|
|
OSX_BACKGROUND_SVG=background.svg
|
|
OSX_BACKGROUND_IMAGE=background.tiff
|
|
OSX_BACKGROUND_IMAGE_DPIS=36 72
|
|
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
|
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
|
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
|
|
|
|
DIST_CONTRIB = \
|
|
$(top_srcdir)/contrib/linearize/linearize-data.py \
|
|
$(top_srcdir)/contrib/linearize/linearize-hashes.py
|
|
|
|
DIST_SHARE = \
|
|
$(top_srcdir)/share/genbuild.sh \
|
|
$(top_srcdir)/share/rpcauth
|
|
|
|
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
|
|
$(top_srcdir)/contrib/devtools/security-check.py
|
|
|
|
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
|
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
|
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
|
|
$(top_srcdir)/doc/README_windows.txt
|
|
|
|
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_INSTALLER_ICONS) \
|
|
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_SVG) \
|
|
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
|
|
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
|
|
|
|
COVERAGE_INFO = $(COV_TOOL_WRAPPER) baseline.info \
|
|
test_bitcoin_filtered.info total_coverage.info \
|
|
baseline_filtered.info functional_test.info functional_test_filtered.info \
|
|
test_bitcoin_coverage.info test_bitcoin.info fuzz.info fuzz_filtered.info fuzz_coverage.info
|
|
|
|
dist-hook:
|
|
-$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf -
|
|
|
|
$(BITCOIN_WIN_INSTALLER): all-recursive
|
|
$(MKDIR_P) $(top_builddir)/release
|
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release
|
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release
|
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release
|
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_TX_BIN) $(top_builddir)/release
|
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_WALLET_BIN) $(top_builddir)/release
|
|
@test -f $(MAKENSIS) && echo 'OutFile "$@"' | cat $(top_builddir)/share/setup.nsi - | $(MAKENSIS) -V2 - || \
|
|
echo error: could not build $@
|
|
@echo built $@
|
|
|
|
$(OSX_APP)/Contents/PkgInfo:
|
|
$(MKDIR_P) $(@D)
|
|
@echo "APPL????" > $@
|
|
|
|
$(OSX_APP)/Contents/Resources/empty.lproj:
|
|
$(MKDIR_P) $(@D)
|
|
@touch $@
|
|
|
|
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
|
|
$(MKDIR_P) $(@D)
|
|
$(INSTALL_DATA) $< $@
|
|
|
|
$(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS)
|
|
$(MKDIR_P) $(@D)
|
|
$(INSTALL_DATA) $< $@
|
|
|
|
$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: all-recursive
|
|
$(MKDIR_P) $(@D)
|
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $@
|
|
|
|
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
|
|
$(MKDIR_P) $(@D)
|
|
echo '{ CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@
|
|
|
|
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
|
|
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
|
|
$(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
|
|
|
|
osx_volname:
|
|
echo $(OSX_VOLNAME) >$@
|
|
|
|
if BUILD_DARWIN
|
|
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) $(OSX_BACKGROUND_IMAGE)
|
|
$(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR) -dmg
|
|
|
|
$(OSX_BACKGROUND_IMAGE).png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
|
|
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 36 -p 36 -o $@
|
|
$(OSX_BACKGROUND_IMAGE)@2x.png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
|
|
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 72 -p 72 -o $@
|
|
$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE).png $(OSX_BACKGROUND_IMAGE)@2x.png
|
|
tiffutil -cathidpicheck $^ -out $@
|
|
|
|
deploydir: $(OSX_DMG)
|
|
else
|
|
APP_DIST_DIR=$(top_builddir)/dist
|
|
APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications
|
|
|
|
$(APP_DIST_DIR)/Applications:
|
|
@rm -f $@
|
|
@cd $(@D); $(LN_S) /Applications $(@F)
|
|
|
|
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
|
|
|
$(OSX_DMG): $(APP_DIST_EXTRAS)
|
|
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
|
|
|
|
dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
|
|
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d $* -p $* | $(IMAGEMAGICK_CONVERT) - $@
|
|
OSX_BACKGROUND_IMAGE_DPIFILES := $(foreach dpi,$(OSX_BACKGROUND_IMAGE_DPIS),dpi$(dpi).$(OSX_BACKGROUND_IMAGE))
|
|
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIFILES)
|
|
$(MKDIR_P) $(@D)
|
|
$(TIFFCP) -c none $(OSX_BACKGROUND_IMAGE_DPIFILES) $@
|
|
|
|
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
|
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR)
|
|
|
|
deploydir: $(APP_DIST_EXTRAS)
|
|
endif
|
|
|
|
if TARGET_DARWIN
|
|
appbundle: $(OSX_APP_BUILT)
|
|
deploy: $(OSX_DMG)
|
|
endif
|
|
if TARGET_WINDOWS
|
|
deploy: $(BITCOIN_WIN_INSTALLER)
|
|
endif
|
|
|
|
$(BITCOIN_QT_BIN): FORCE
|
|
$(MAKE) -C src qt/$(@F)
|
|
|
|
$(BITCOIND_BIN): FORCE
|
|
$(MAKE) -C src $(@F)
|
|
|
|
$(BITCOIN_CLI_BIN): FORCE
|
|
$(MAKE) -C src $(@F)
|
|
|
|
$(BITCOIN_TX_BIN): FORCE
|
|
$(MAKE) -C src $(@F)
|
|
|
|
$(BITCOIN_WALLET_BIN): FORCE
|
|
$(MAKE) -C src $(@F)
|
|
|
|
if USE_LCOV
|
|
LCOV_FILTER_PATTERN = \
|
|
-p "/usr/local/" \
|
|
-p "/usr/include/" \
|
|
-p "/usr/lib/" \
|
|
-p "/usr/lib64/" \
|
|
-p "src/leveldb/" \
|
|
-p "src/crc32c/" \
|
|
-p "src/bench/" \
|
|
-p "src/univalue" \
|
|
-p "src/crypto/ctaes" \
|
|
-p "src/secp256k1" \
|
|
-p "depends"
|
|
|
|
DIR_FUZZ_SEED_CORPUS ?= qa-assets/fuzz_seed_corpus
|
|
|
|
$(COV_TOOL_WRAPPER):
|
|
@echo 'exec $(COV_TOOL) "$$@"' > $(COV_TOOL_WRAPPER)
|
|
@chmod +x $(COV_TOOL_WRAPPER)
|
|
|
|
baseline.info: $(COV_TOOL_WRAPPER)
|
|
$(LCOV) -c -i -d $(abs_builddir)/src -o $@
|
|
|
|
baseline_filtered.info: baseline.info
|
|
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
|
|
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
|
|
|
|
fuzz.info: baseline_filtered.info
|
|
@TIMEOUT=15 test/fuzz/test_runner.py $(DIR_FUZZ_SEED_CORPUS) -l DEBUG
|
|
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src --t fuzz-tests -o $@
|
|
$(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src
|
|
|
|
fuzz_filtered.info: fuzz.info
|
|
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
|
|
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
|
|
|
|
test_bitcoin.info: baseline_filtered.info
|
|
$(MAKE) -C src/ check
|
|
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src -t test_bitcoin -o $@
|
|
$(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src
|
|
|
|
test_bitcoin_filtered.info: test_bitcoin.info
|
|
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
|
|
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
|
|
|
|
functional_test.info: test_bitcoin_filtered.info
|
|
@TIMEOUT=15 test/functional/test_runner.py $(EXTENDED_FUNCTIONAL_TESTS)
|
|
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src --t functional-tests -o $@
|
|
$(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src
|
|
|
|
functional_test_filtered.info: functional_test.info
|
|
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
|
|
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
|
|
|
|
fuzz_coverage.info: fuzz_filtered.info
|
|
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a fuzz_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
|
|
|
|
test_bitcoin_coverage.info: baseline_filtered.info test_bitcoin_filtered.info
|
|
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a test_bitcoin_filtered.info -o $@
|
|
|
|
total_coverage.info: test_bitcoin_filtered.info functional_test_filtered.info
|
|
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a test_bitcoin_filtered.info -a functional_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
|
|
|
|
fuzz.coverage/.dirstamp: fuzz_coverage.info
|
|
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
|
|
@touch $@
|
|
|
|
test_bitcoin.coverage/.dirstamp: test_bitcoin_coverage.info
|
|
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
|
|
@touch $@
|
|
|
|
total.coverage/.dirstamp: total_coverage.info
|
|
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
|
|
@touch $@
|
|
|
|
cov_fuzz: fuzz.coverage/.dirstamp
|
|
|
|
cov: test_bitcoin.coverage/.dirstamp total.coverage/.dirstamp
|
|
|
|
endif
|
|
|
|
dist_noinst_SCRIPTS = autogen.sh
|
|
|
|
EXTRA_DIST = $(DIST_SHARE) $(DIST_CONTRIB) $(WINDOWS_PACKAGING) $(OSX_PACKAGING) $(BIN_CHECKS)
|
|
|
|
EXTRA_DIST += \
|
|
test/functional \
|
|
test/fuzz
|
|
|
|
EXTRA_DIST += \
|
|
test/util/bitcoin-util-test.py \
|
|
test/util/data/bitcoin-util-test.json \
|
|
test/util/data/blanktxv1.hex \
|
|
test/util/data/blanktxv1.json \
|
|
test/util/data/blanktxv2.hex \
|
|
test/util/data/blanktxv2.json \
|
|
test/util/data/tt-delin1-out.hex \
|
|
test/util/data/tt-delin1-out.json \
|
|
test/util/data/tt-delout1-out.hex \
|
|
test/util/data/tt-delout1-out.json \
|
|
test/util/data/tt-locktime317000-out.hex \
|
|
test/util/data/tt-locktime317000-out.json \
|
|
test/util/data/tx394b54bb.hex \
|
|
test/util/data/txcreate1.hex \
|
|
test/util/data/txcreate1.json \
|
|
test/util/data/txcreate2.hex \
|
|
test/util/data/txcreate2.json \
|
|
test/util/data/txcreatedata1.hex \
|
|
test/util/data/txcreatedata1.json \
|
|
test/util/data/txcreatedata2.hex \
|
|
test/util/data/txcreatedata2.json \
|
|
test/util/data/txcreatedata_seq0.hex \
|
|
test/util/data/txcreatedata_seq0.json \
|
|
test/util/data/txcreatedata_seq1.hex \
|
|
test/util/data/txcreatedata_seq1.json \
|
|
test/util/data/txcreatemultisig1.hex \
|
|
test/util/data/txcreatemultisig1.json \
|
|
test/util/data/txcreatemultisig2.hex \
|
|
test/util/data/txcreatemultisig2.json \
|
|
test/util/data/txcreatemultisig3.hex \
|
|
test/util/data/txcreatemultisig3.json \
|
|
test/util/data/txcreatemultisig4.hex \
|
|
test/util/data/txcreatemultisig4.json \
|
|
test/util/data/txcreatemultisig5.json \
|
|
test/util/data/txcreateoutpubkey1.hex \
|
|
test/util/data/txcreateoutpubkey1.json \
|
|
test/util/data/txcreateoutpubkey2.hex \
|
|
test/util/data/txcreateoutpubkey2.json \
|
|
test/util/data/txcreateoutpubkey3.hex \
|
|
test/util/data/txcreateoutpubkey3.json \
|
|
test/util/data/txcreatescript1.hex \
|
|
test/util/data/txcreatescript1.json \
|
|
test/util/data/txcreatescript2.hex \
|
|
test/util/data/txcreatescript2.json \
|
|
test/util/data/txcreatescript3.hex \
|
|
test/util/data/txcreatescript3.json \
|
|
test/util/data/txcreatescript4.hex \
|
|
test/util/data/txcreatescript4.json \
|
|
test/util/data/txcreatescript5.hex \
|
|
test/util/data/txcreatescript6.hex \
|
|
test/util/data/txcreatesignv1.hex \
|
|
test/util/data/txcreatesignv1.json \
|
|
test/util/data/txcreatesignv2.hex \
|
|
test/util/rpcauth-test.py
|
|
|
|
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
|
|
|
|
.INTERMEDIATE: $(COVERAGE_INFO)
|
|
|
|
DISTCHECK_CONFIGURE_FLAGS = --enable-man
|
|
|
|
doc/doxygen/.stamp: doc/Doxyfile FORCE
|
|
$(MKDIR_P) $(@D)
|
|
$(DOXYGEN) $^
|
|
$(AM_V_at) touch $@
|
|
|
|
if HAVE_DOXYGEN
|
|
docs: doc/doxygen/.stamp
|
|
else
|
|
docs:
|
|
@echo "error: doxygen not found"
|
|
endif
|
|
|
|
clean-docs:
|
|
rm -rf doc/doxygen
|
|
|
|
clean-local: clean-docs
|
|
rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ fuzz.coverage/ test/tmp/ cache/ $(OSX_APP)
|
|
rm -rf test/functional/__pycache__ test/functional/test_framework/__pycache__ test/cache share/rpcauth/__pycache__
|
|
rm -rf osx_volname dist/ dpi36.background.tiff dpi72.background.tiff
|
|
|
|
test-security-check:
|
|
if TARGET_DARWIN
|
|
$(AM_V_at) $(PYTHON) $(top_srcdir)/contrib/devtools/test-security-check.py TestSecurityChecks.test_MACHO
|
|
$(AM_V_at) $(PYTHON) $(top_srcdir)/contrib/devtools/test-symbol-check.py TestSymbolChecks.test_MACHO
|
|
endif
|
|
if TARGET_WINDOWS
|
|
$(AM_V_at) $(PYTHON) $(top_srcdir)/contrib/devtools/test-security-check.py TestSecurityChecks.test_PE
|
|
endif
|
|
if TARGET_LINUX
|
|
$(AM_V_at) $(PYTHON) $(top_srcdir)/contrib/devtools/test-security-check.py TestSecurityChecks.test_ELF
|
|
$(AM_V_at) $(PYTHON) $(top_srcdir)/contrib/devtools/test-symbol-check.py TestSymbolChecks.test_ELF
|
|
endif
|