Skip to content

Instantly share code, notes, and snippets.

@gubatron
Last active January 22, 2020 04:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gubatron/fd67cb0663b1ed53cb9eefb9561016b3 to your computer and use it in GitHub Desktop.
Save gubatron/fd67cb0663b1ed53cb9eefb9561016b3 to your computer and use it in GitHub Desktop.
CMakeList.txt for Bitcoin Unlimited + macOS CLion IDE based development
#
# Author: Angel Leon (@gubatron)
# October 2nd 2018
#
#
# README:
#
# This CmakeLists.txt file is not meant to produce any executables or libraries.
#
# It has been created for CLion or any other cmake compatible IDE users so that they can
# have their entire project built in such a way the IDE can index all symbols without errors.
#
# To build binaries, please use the original Makefile.
#
# This script has not been tested in Windows, nor in Linux, it has only been tested to work on MacOSX.
#
# CHANGELOG:
#
# September 5th 2017, originally created to build bitcoinclassic - @gubatron
# October 2nd 2018, updated for BitcoinUnlimited project - @gubatron
#
# # Usage of this CMakeLists.txt from the command line
#
# cmake .
# make -j 8
#
cmake_minimum_required(VERSION 3.8)
project(bitcoinunlimited)
set(CMAKE_CXX_STANDARD 11)
add_definitions(
# FIX-ME: I already have strlen defined on MacOSX, gotta check how this behaves in other OSes.
-DHAVE_DECL_STRNLEN=1
# GMP Bignum Library
-DUSE_NUM_GMP=1
-DUSE_FIELD_INV_NUM=1
-DUSE_SCALAR_INV_NUM=1
# secp256k1 flags
# for 64bit
-DUSE_BASIC_CONFIG=1
-DUSE_FIELD_INV_BUILTIN=1
-DUSE_SCALAR_INV_BUILTIN=1
-DUSE_FIELD_10X26=1
-DUSE_SCALAR_8X32
-DHAVE___INT128=1
-DJSON_TEST_SRC="${CMAKE_SOURCE_DIR}/src/univalue/test"
-DENABLE_ZMQ=1
-DHAVE_CONFIG_H=1
)
if(EXISTS $ENV{OPENSSL_INCLUDE_PATH})
message(STATUS "OK: ENV[OPENSSL_INCLUDE_PATH] -> $ENV{OPENSSL_INCLUDE_PATH}" )
else()
# Mac Example -> export OPENSSL_INCLUDE_PATH=/usr/local/Cellar/openssl/1.0.2p/include
# (brew install openssl; brew link openssl)
message(FATAL_ERROR "Mandatory OPENSSL_INCLUDE_PATH environment variable not specified")
endif()
if (EXISTS $ENV{ZMQ_ROOT})
message(STATUS "OK: ENV[ZMQ_ROOT] -> $ENV{ZMQ_ROOT}")
else()
#Mac Example -> export ZMQ_ROOT=/usr/local/Cellar/zeromq/4.2.2
message(FATAL_ERROR "Mandatory ZMQ_ROOT environment variable not specified")
endif()
include_directories(
$ENV{OPENSSL_INCLUDE_PATH}
$ENV{ZMQ_ROOT}
/usr/local/include
)
include_directories(
# src/leveldb/port/win # (windows only)
# src/qt
# src/qt/test
src
src/bench
src/blockrelay
src/blockstorage
src/cashlib
#src/compat
src/config
src/consensus
src/crypto
src/fast-cpp-csv-parser
src/leveldb/db
src/leveldb/helpers/memenv
src/leveldb/include
src/leveldb/port
src/leveldb/table
src/leveldb/util
src/obj
src/policy
src/primitives
src/respend
src/respend/test
src/rpc
src/script
src/secp256k1/contrib
src/secp256k1/include
src/secp256k1/src
src/secp256k1/src/java
src/secp256k1/src/modules/ecdh
src/secp256k1/src/modules/recovery
src/support
src/support/allocators
src/test
src/test/data
src/univalue/include
src/univalue/lib
src/univalue/test
src/validation
src/wallet
src/wallet/test
src/zmq
)
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message(STATUS "dir='${dir}'")
endforeach()
set(SOURCE_FILES
#src/config/bitcoin-config.h
# src/
src/addrman.cpp
src/allowed_args.cpp
src/amount.cpp
src/arith_uint256.cpp
src/bandb.cpp
src/banentry.cpp
src/base58.cpp
src/bitcoin-cli.cpp
src/bitcoin-miner.cpp
src/bitcoin-tx.cpp
src/bitcoind.cpp
src/bitnodes.cpp
src/bloom.cpp
src/cashaddr.cpp
src/cashaddrenc.cpp
src/chain.cpp
src/chainparams.cpp
src/chainparamsbase.cpp
src/checkpoints.cpp
src/clientversion.cpp
src/coins.cpp
src/compressor.cpp
src/config.cpp
src/connmgr.cpp
src/core_read.cpp
src/core_write.cpp
src/dbwrapper.cpp
src/dosman.cpp
src/dstencode.cpp
src/expedited.cpp
src/forks_csv.cpp
src/fs.cpp
src/globals.cpp
src/hash.cpp
src/httprpc.cpp
src/httpserver.cpp
src/iblt.cpp
src/init.cpp
src/key.cpp
src/keystore.cpp
src/main.cpp
src/merkleblock.cpp
src/miner.cpp
src/net.cpp
src/netaddress.cpp
src/netbase.cpp
src/nodestate.cpp
src/noui.cpp
src/parallel.cpp
src/pow.cpp
src/protocol.cpp
src/pubkey.cpp
src/random.cpp
src/requestManager.cpp
src/rest.cpp
src/scheduler.cpp
src/sync.cpp
src/timedata.cpp
src/torcontrol.cpp
src/tweak.cpp
src/txadmission.cpp
src/txdb.cpp
src/txmempool.cpp
src/txorphanpool.cpp
src/uahf_fork.cpp
src/ui_interface.cpp
src/uint256.cpp
src/unlimited.cpp
src/util.cpp
src/utilmoneystr.cpp
src/utilstrencodings.cpp
src/utiltime.cpp
src/validationinterface.cpp
src/versionbits.cpp
# src/bench
src/bench/bench.cpp
src/bench/bench_bitcoin.cpp
src/bench/bloom.cpp
src/bench/crypto_hash.cpp
src/bench/Examples.cpp
src/bench/murmur_hash.cpp
src/bench/rollingbloom.cpp
src/bench/verify_script.cpp
# src/blockrelay
src/blockrelay/graphene.cpp
src/blockrelay/blockrelay_common.cpp
src/blockrelay/thinblock.cpp
src/blockrelay/graphene_set.cpp
# src/blockstorage
src/blockstorage/blockleveldb.cpp
src/blockstorage/sequential_files.cpp
src/blockstorage/blockstorage.cpp
# src/cashlib
src/cashlib/cashlib.cpp
# src/consensus
src/consensus/tx_verify.cpp
src/consensus/merkle.cpp
# # src/compat
# src/compat/glibc_compat.cpp
# src/compat/glibc_sanity.cpp
# src/compat/glibcxx_sanity.cpp
# src/compat/strnlen.cpp
# src/crypto
src/crypto/aes.cpp
src/crypto/hmac_sha256.cpp
src/crypto/hmac_sha512.cpp
src/crypto/ripemd160.cpp
src/crypto/sha1.cpp
src/crypto/sha256.cpp
src/crypto/sha256_sse4.cpp
src/crypto/sha512.cpp
# src/policy
src/policy/fees.cpp
src/policy/policy.cpp
# src/primitives
src/primitives/block.cpp
src/primitives/transaction.cpp
# src/respend
src/respend/respenddetector.cpp
src/respend/respendlogger.cpp
src/respend/respendrelayer.cpp
# src/respend/test
src/respend/test/respenddetector_tests.cpp
src/respend/test/respendrelayer_tests.cpp
# src/rpc
src/rpc/blockchain.cpp
src/rpc/client.cpp
src/rpc/mining.cpp
src/rpc/misc.cpp
src/rpc/net.cpp
src/rpc/protocol.cpp
src/rpc/rawtransaction.cpp
src/rpc/server.cpp
# src/script
src/script/bitcoinconsensus.cpp
src/script/interpreter.cpp
src/script/ismine.cpp
src/script/script.cpp
src/script/script_error.cpp
src/script/sigcache.cpp
src/script/sigcommon.cpp
src/script/sign.cpp
src/script/standard.cpp
# src/support
src/support/cleanse.cpp
src/support/pagelocker.cpp
# src/test
src/test/addrman_tests.cpp
src/test/alert_tests.cpp
src/test/allocator_tests.cpp
src/test/arith_uint256_tests.cpp
src/test/bandb_tests.cpp
src/test/base32_tests.cpp
src/test/base58_tests.cpp
src/test/base64_tests.cpp
src/test/bip32_tests.cpp
src/test/bloom_tests.cpp
src/test/bswap_tests.cpp
src/test/cashaddr_tests.cpp
src/test/cashaddrenc_tests.cpp
src/test/checkblock_tests.cpp
src/test/Checkpoints_tests.cpp
src/test/coins_tests.cpp
src/test/compress_tests.cpp
src/test/core_io_tests.cpp
src/test/crypto_tests.cpp
src/test/dbwrapper_tests.cpp
src/test/DoS_tests.cpp
src/test/dstencode_tests.cpp
src/test/excessiveblock_test.cpp
src/test/exploit_tests.cpp
src/test/fastfilter_tests.cpp
src/test/fork_tests.cpp
src/test/forkscsv_tests.cpp
src/test/genversionbits_tests.cpp
src/test/getarg_tests.cpp
src/test/graphene_tests.cpp
src/test/hash_tests.cpp
src/test/iblt_tests.cpp
src/test/key_tests.cpp
src/test/limitedmap_tests.cpp
src/test/main_tests.cpp
src/test/mempool_tests.cpp
src/test/merkle_tests.cpp
src/test/miner_tests.cpp
src/test/multisig_tests.cpp
src/test/net_tests.cpp
src/test/netbase_tests.cpp
src/test/opcodes_tests.cpp
src/test/pmt_tests.cpp
src/test/policyestimator_tests.cpp
src/test/pow_tests.cpp
src/test/prevector_tests.cpp
src/test/reverselock_tests.cpp
src/test/rpc_tests.cpp
src/test/sanity_tests.cpp
src/test/scheduler_tests.cpp
src/test/script_P2SH_tests.cpp
src/test/script_tests.cpp
src/test/scriptflags.cpp
src/test/scriptnum_tests.cpp
src/test/serialize_tests.cpp
src/test/sighash_tests.cpp
src/test/sigopcount_tests.cpp
src/test/skiplist_tests.cpp
src/test/stat_tests.cpp
src/test/streams_tests.cpp
src/test/test_bitcoin.cpp
src/test/test_bitcoin_fuzzy.cpp
src/test/testutil.cpp
src/test/thinblock_data_tests.cpp
src/test/thinblock_tests.cpp
src/test/thinblock_util_tests.cpp
src/test/timedata_tests.cpp
src/test/transaction_tests.cpp
src/test/txvalidationcache_tests.cpp
src/test/uahf_test.cpp
src/test/uint256_tests.cpp
src/test/univalue_tests.cpp
src/test/util_tests.cpp
src/test/versionbits_tests.cpp
# src/qt
# src/qt/addressbookpage.cpp
# src/qt/addresstablemodel.cpp
# src/qt/askpassphrasedialog.cpp
# src/qt/bantablemodel.cpp
# src/qt/bitcoin.cpp
# src/qt/bitcoinaddressvalidator.cpp
# src/qt/bitcoinamountfield.cpp
# src/qt/bitcoingui.cpp
# src/qt/bitcoinstrings.cpp
# src/qt/bitcoinunits.cpp
# src/qt/clientmodel.cpp
# src/qt/coincontroldialog.cpp
# src/qt/coincontroltreewidget.cpp
# src/qt/csvmodelwriter.cpp
# src/qt/editaddressdialog.cpp
# src/qt/guiutil.cpp
# src/qt/intro.cpp
# src/qt/networkstyle.cpp
# src/qt/notificator.cpp
# src/qt/openuridialog.cpp
# src/qt/optionsdialog.cpp
# src/qt/optionsmodel.cpp
# src/qt/overviewpage.cpp
# src/qt/paymentrequestplus.cpp
# src/qt/paymentserver.cpp
# src/qt/peertablemodel.cpp
# src/qt/platformstyle.cpp
# src/qt/qvalidatedlineedit.cpp
# src/qt/qvaluecombobox.cpp
# src/qt/receivecoinsdialog.cpp
# src/qt/receivefreezedialog.cpp
# src/qt/receiverequestdialog.cpp
# src/qt/recentrequeststablemodel.cpp
# src/qt/rpcconsole.cpp
# src/qt/sendcoinsdialog.cpp
# src/qt/sendcoinsentry.cpp
# src/qt/signverifymessagedialog.cpp
# src/qt/splashscreen.cpp
# src/qt/test/bitcoinaddressvalidatortests.cpp
# src/qt/test/compattests.cpp
# src/qt/test/guiutiltests.cpp
# src/qt/test/paymentservertests.cpp
# src/qt/test/test_main.cpp
# src/qt/test/uritests.cpp
# src/qt/trafficgraphwidget.cpp
# src/qt/transactiondesc.cpp
# src/qt/transactiondescdialog.cpp
# src/qt/transactionfilterproxy.cpp
# src/qt/transactionrecord.cpp
# src/qt/transactiontablemodel.cpp
# src/qt/transactionview.cpp
# src/qt/unlimiteddialog.cpp
# src/qt/unlimitedmodel.cpp
# src/qt/utilitydialog.cpp
# src/qt/walletframe.cpp
# src/qt/walletmodel.cpp
# src/qt/walletmodeltransaction.cpp
# src/qt/walletview.cpp
# src/qt/winshutdownmonitor.cpp
# src/univalue/gen
src/univalue/gen/gen.cpp
# src/univalue/lib
src/univalue/lib/univalue.cpp
src/univalue/lib/univalue_get.cpp
src/univalue/lib/univalue_read.cpp
src/univalue/lib/univalue_write.cpp
# src/validation
src/validation/forks.cpp
src/validation/validation.cpp
src/validation/verifydb.cpp
# src/univalue/test
src/univalue/test/no_nul.cpp
src/univalue/test/object.cpp
src/univalue/test/test_json.cpp
src/univalue/test/unitester.cpp
# src/wallet
src/wallet/crypter.cpp
src/wallet/db.cpp
src/wallet/rpcdump.cpp
src/wallet/rpcwallet.cpp
src/wallet/wallet.cpp
#src/wallet/wallet_ismine.cpp # excluded due to include to wallet_ismine.h which does not exist
src/wallet/walletdb.cpp
# src/wallet/test
src/wallet/test/accounting_tests.cpp #error: ambiguous conversion for functional-style cast from 'int' to 'DbEnv'
src/wallet/test/crypto_tests.cpp
src/wallet/test/rpc_wallet_tests.cpp
src/wallet/test/wallet_test_fixture.cpp #error: ambiguous conversion for functional-style cast from 'int' to 'DbEnv'
src/wallet/test/wallet_tests.cpp
src/wallet/test/walletdb_tests.cpp #error: ambiguous conversion for functional-style cast from 'int' to 'DbEnv'
# src/zmq
src/zmq/zmqabstractnotifier.cpp
src/zmq/zmqnotificationinterface.cpp
src/zmq/zmqpublishnotifier.cpp
)
add_library(noexecutable ${SOURCE_FILES})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment