aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt (follow)
AgeCommit message (Collapse)AuthorFilesLines
2017-08-04debug_utilities: only build for debug buildsmoneromooo-monero1-0/+3
2017-08-03cn_deserialize: move to new debug_utilities subdirectorymoneromooo-monero1-0/+1
2017-04-03IOS CMAKE build settingsJaquee1-9/+15
2017-02-21update copyright year, fix occasional lack of newline at line endRiccardo Spagni1-1/+1
2017-02-08extract some basic code from libcryptonote_core into libcryptonote_basickenshi841-0/+1
2016-09-26Dropped "bit" from bitmonero.Randi Joseph1-4/+4
2016-09-18cmake: support BUILD_SHARED_LIBS built-in optionredfish1-1/+1
Support building internal libraries as shared. This reduces development time by eliminating the need to re-link all binaries every time non-interface code in the library changes. Instead, can hack on libxyz, then `make libxyz`, and re-run monerod. By default BUILD_SHARED_LIBS is OFF in release build type, and ON in debug build type, but can be overriden with -D.
2016-09-18cmake: transitive deps and remove deprecated LINK_*redfish1-1/+1
Keep the immediate direct deps at the library that depends on them, declare deps as PUBLIC so that targets that link against that library get the library's deps as transitive deps. Break dep cycle between blockchain_db <-> crytonote_core. No code refactoring, just hide cycle from cmake so that it doesn't complain (cycles are allowed only between static libs, not shared libs). This is in preparation for supproting BUILD_SHARED_LIBS cmake built-in option for building internal libs as shared.
2016-09-03cmake: fix def propagation, fixes 32-bit buildredfish1-0/+2
32-bit build would fail to link with 'mdb_env_create undefined' (because for 32-bit build, mdb_env_create_vl32 is defined instead). This bug was introduced with the recent change to virtual object libraries. The problem is that the COMPILE_DEFINITIONS property was not propagated from dependee target (lmdb) to depedent target's (blockchain_db) virtual object lib (obj_blockchain_db). This patch makes that happen. I chose to include INTERFACE_COMPILE_DEFINITIONS because there should not be a need to propagate private defs, but it doesn't make a difference in this case.
2016-09-03fix leftover add_directoryRiccardo Spagni1-1/+0
2016-08-30cmake: merge libs via virtual object librariesredfish1-2/+7
CMake issued a warming about policy CMP0026: access of LOCATION target property at config time was disallowed. Offending code was the code that merged static libraries to generate libwallet_merged.a. This patch does that same merge task in a much simpler way. And, since it doesn't violate the policy, the warning went away.
2016-08-28ringct: import of Shen Noether's ring confidential transactionsmoneromooo-monero1-0/+1
2016-08-19cmake: fix typo in handling of STACK_TRACEredfish1-1/+1
This fixes the log output not getting redirected to log file.
2016-07-28cmake: cleanup logic that sets flags per target/subdirredfish1-0/+12
The previous logic that used a COMMON_*_FLAGS intermediate variable and then re-assigned CMAKE_*_FLAGS before including each subdirectory was confusing and ugly. This PR is the right way to do it. This commit is purely refactoring: built binaries unchanged.
2016-03-25remove connectivity tool, comment it out from munin plugins tooRiccardo Spagni1-1/+0
2016-02-12cmake: Fix overly broad use of dynamic link settingswarptangent1-9/+0
Remove LINK_SEARCH_START_STATIC and LINK_SEARCH_END_STATIC. This is more appropriate when the compiler flag -static is used. This had been causing CMake to omit the linker flags necesssary to distinguish static and dynamic library linking. CMake had assumed static linking for the target, causing it to omit explicit static link flags. That is problematic without the -static compile flag being set. With a library located in system directories, like libboost_date_time, the full static path (.a), though found correctly by CMake, was treated by the linker as a dynamic library. This is because target_link_libraries() transforms the full path to -l<libname> if it's in a system directory. Without -static or explicit linker flags, the dynamic library (.so) is linked. Removing the above two properties removes the assumption of static. So -Wl;-Bstatic is inserted where needed. This causes -l<libname> to properly refer to the static library instead of dynamic.
2015-12-31updated copyright yearRiccardo Spagni1-1/+1
2015-12-15Replace tabs with two spaces for consistency with rest of codebasewarptangent1-8/+8
Remove trailing whitespace in same files.
2015-07-15** CHANGES ARE EXPERIMENTAL (FOR TESTING ONLY)NoodleDoodleNoodleDoodleNoodleDoodleNoo1-0/+4
Bockchain: 1. Optim: Multi-thread long-hash computation when encountering groups of blocks. 2. Optim: Cache verified txs and return result from cache instead of re-checking whenever possible. 3. Optim: Preload output-keys when encoutering groups of blocks. Sort by amount and global-index before bulk querying database and multi-thread when possible. 4. Optim: Disable double spend check on block verification, double spend is already detected when trying to add blocks. 5. Optim: Multi-thread signature computation whenever possible. 6. Patch: Disable locking (recursive mutex) on called functions from check_tx_inputs which causes slowdowns (only seems to happen on ubuntu/VMs??? Reason: TBD) 7. Optim: Removed looped full-tx hash computation when retrieving transactions from pool (???). 8. Optim: Cache difficulty/timestamps (735 blocks) for next-difficulty calculations so that only 2 db reads per new block is needed when a new block arrives (instead of 1470 reads). Berkeley-DB: 1. Fix: 32-bit data errors causing wrong output global indices and failure to send blocks to peers (etc). 2. Fix: Unable to pop blocks on reorganize due to transaction errors. 3. Patch: Large number of transaction aborts when running multi-threaded bulk queries. 4. Patch: Insufficient locks error when running full sync. 5. Patch: Incorrect db stats when returning from an immediate exit from "pop block" operation. 6. Optim: Add bulk queries to get output global indices. 7. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 8. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 9. Optim: Added thread-safe buffers used when multi-threading bulk queries. 10. Optim: Added support for nosync/write_nosync options for improved performance (*see --db-sync-mode option for details) 11. Mod: Added checkpoint thread and auto-remove-logs option. 12. *Now usable on 32-bit systems like RPI2. LMDB: 1. Optim: Added custom comparison for 256-bit key tables (minor speed-up, TBD: get actual effect) 2. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 3. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 4. Optim: Added support for sync/writemap options for improved performance (*see --db-sync-mode option for details) 5. Mod: Auto resize to +1GB instead of multiplier x1.5 ETC: 1. Minor optimizations for slow-hash for ARM (RPI2). Incomplete. 2. Fix: 32-bit saturation bug when computing next difficulty on large blocks. [PENDING ISSUES] 1. Berkely db has a very slow "pop-block" operation. This is very noticeable on the RPI2 as it sometimes takes > 10 MINUTES to pop a block during reorganization. This does not happen very often however, most reorgs seem to take a few seconds but it possibly depends on the number of outputs present. TBD. 2. Berkeley db, possible bug "unable to allocate memory". TBD. [NEW OPTIONS] (*Currently all enabled for testing purposes) 1. --fast-block-sync arg=[0:1] (default: 1) a. 0 = Compute long hash per block (may take a while depending on CPU) b. 1 = Skip long-hash and verify blocks based on embedded known good block hashes (faster, minimal CPU dependence) 2. --db-sync-mode arg=[[safe|fast|fastest]:[sync|async]:[nblocks_per_sync]] (default: fastest:async:1000) a. safe = fdatasync/fsync (or equivalent) per stored block. Very slow, but safest option to protect against power-out/crash conditions. b. fast/fastest = Enables asynchronous fdatasync/fsync (or equivalent). Useful for battery operated devices or STABLE systems with UPS and/or systems with battery backed write cache/solid state cache. Fast - Write meta-data but defer data flush. Fastest - Defer meta-data and data flush. Sync - Flush data after nblocks_per_sync and wait. Async - Flush data after nblocks_per_sync but do not wait for the operation to finish. 3. --prep-blocks-threads arg=[n] (default: 4 or system max threads, whichever is lower) Max number of threads to use when computing long-hash in groups. 4. --show-time-stats arg=[0:1] (default: 1) Show benchmark related time stats. 5. --db-auto-remove-logs arg=[0:1] (default: 1) For berkeley-db only. Auto remove logs if enabled. **Note: lmdb and berkeley-db have changes to the tables and are not compatible with official git head version. At the moment, you need a full resync to use this optimized version. [PERFORMANCE COMPARISON] **Some figures are approximations only. Using a baseline machine of an i7-2600K+SSD+(with full pow computation): 1. The optimized lmdb/blockhain core can process blocks up to 585K for ~1.25 hours + download time, so it usually takes 2.5 hours to sync the full chain. 2. The current head with memory can process blocks up to 585K for ~4.2 hours + download time, so it usually takes 5.5 hours to sync the full chain. 3. The current head with lmdb can process blocks up to 585K for ~32 hours + download time and usually takes 36 hours to sync the full chain. Averate procesing times (with full pow computation): lmdb-optimized: 1. tx_ave = 2.5 ms / tx 2. block_ave = 5.87 ms / block memory-official-repo: 1. tx_ave = 8.85 ms / tx 2. block_ave = 19.68 ms / block lmdb-official-repo (0f4a036437fd41a5498ee5e74e2422ea6177aa3e) 1. tx_ave = 47.8 ms / tx 2. block_ave = 64.2 ms / block **Note: The following data denotes processing times only (does not include p2p download time) lmdb-optimized processing times (with full pow computation): 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.25 hours processing time (--db-sync-mode=fastest:async:1000). 2. Laptop, Dual-core / 4-threads U4200 (3Mb) - 4.90 hours processing time (--db-sync-mode=fastest:async:1000). 3. Embedded, Quad-core / 4-threads Z3735F (2x1Mb) - 12.0 hours processing time (--db-sync-mode=fastest:async:1000). lmdb-optimized processing times (with per-block-checkpoint) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 10 minutes processing time (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with full pow computation) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.8 hours processing time (--db-sync-mode=fastest:async:1000). 2. RPI2. Improved from estimated 3 months(???) into 2.5 days (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with per-block-checkpoint) 1. RPI2. 12-15 hours (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000).
2015-05-08Rename src/blockchain_converter/ to src/blockchain_utilities/warptangent1-1/+1
Update appropriate files (CMakeLists.txt, README.md)
2015-04-07Merge BlockchainDB into upstreamThomas Winget1-0/+3
2015-04-01Merge remote-tracking branch 'monero-official/master' into network-1.6-work1rfree2monero1-0/+1
2015-03-25Merge upstream updates into blockchain branchThomas Winget1-0/+1
2015-03-06Moved BlockchainDB into its own src/ subfolderThomas Winget1-0/+1
Ostensibly janitorial work, but should be more relevant later down the line. Things that depend on core cryptonote things (i.e. cryptonote_core) don't necessarily depend on BlockchainDB and thus have no need to have BlockchainDB baked in with them.
2015-02-24Daemonize changes pulled in -- daemon buildsThomas Winget1-0/+1
many RPC functions added by the daemonize changes (and related changes on the upstream dev branch that were not merged) were commented out (apart from return). Other than that, this *should* work...at any rate, it builds, and that's something.
2015-02-202014 network limit 1.0a +utils +toc -doc -drmonerorfree2monero1-0/+2
commands and options for network limiting works very well e.g. for 50 KiB/sec up and down ToS (QoS) flag peer number limit TODO some spikes in ingress/download TODO problems when other up and down limit added "otshell utils" - simple logging (with colors, text files channels)
2015-01-04very, VERY primitive blockchain converterThomas Winget1-0/+2
hard-coded config folder, hard-coded BlockchainDB subclass. Needs finessing, but should be testable this way. update for rebase (warptangent 2015-01-04) fix conflicts with upstream CMakeLists.txt files src/CMakeLists.txt (edit original commit) src/blockchain_converter/CMakeLists.txt (add)
2015-01-02year updated in licenseRiccardo Spagni1-1/+1
2014-11-18cmake: place binaries together in the build treeBen Boeckel1-0/+3
This allows Windows to copy binaries to one place rather than to each executable directory.
2014-10-24cmake: Windows and static builds need thisBen Boeckel1-1/+1
2014-10-24cmake: support 2.8.7Ben Boeckel1-1/+1
Older versions of CMake support LINK_{PUBLIC,PRIVATE} while newer versions prefer PUBLIC and PRIVATE instead, but still support the LINK_ prefix.
2014-10-23cmake: fix up miniupnpc's defineBen Boeckel1-3/+5
It's only necessary on Windows builds and new versions renamed the define without any compatibility bridge.
2014-10-23cmake: handle private vs. public headersBen Boeckel1-0/+13
2014-10-23cmake: refactor common code with librariesBen Boeckel1-0/+12
2014-10-23cmake: refactor common code with executablesBen Boeckel1-0/+24
2014-10-23cmake: put each library into its own directoryBen Boeckel1-51/+10
This cleans up the CMake code and shows patterns more easily (to be refactored in the next commit).
2014-10-07miniupnpc static define changeRiccardo Spagni1-0/+2
2014-10-06fix for mingw not playing nicely with libunbound configure, fix for ↵Riccardo Spagni1-4/+4
correctly finding static libs on various operating systems
2014-10-06use the correct CMake variable for static buildsRiccardo Spagni1-4/+4
2014-10-05fixed conflict in CMakeListsRiccardo Spagni1-1/+5
2014-10-02remove pthreads, successfully tested on gcc 4.9.1 without pthreadsRiccardo Spagni1-4/+4
2014-10-02Stop copying word list files to build directoryOran Juice1-2/+0
2014-09-28Merge with origin/masterOran Juice1-4/+8
2014-09-27Informs about old style mnemonics from older wallet and provides a new one. ↵Oran Juice1-4/+1
CMakeLists.txt update.
2014-09-24redo FindUnbound.cmakeRiccardo Spagni1-4/+4
2014-09-24Copies word lists directory to the location of the executableOran Juice1-1/+6
2014-09-23Updated CMake files -- added libunbound linker flagThomas Winget1-4/+4
CMake config file written, but was unable to test/get it working properly because of a bug in CMake with functions related to find_package. Simple "-lunbound" flag used in its stead for now. May not build on non-Linux systems, not sure yet.
2014-09-23Moved mnemonics code to src/mnemonicsOran Juice1-1/+5
2014-09-15Force CMake to link the runtime staticallyZachary Michaels1-0/+4
2014-09-11added license to CMakefluffypony1-0/+30
2014-09-10miniupnpc changes for freebsdfluffypony1-2/+2
2014-09-10replace ftime with gettimeofday on FreeBSD because lcompat is stupidfluffypony1-4/+4
2014-09-10make FreeBSD use -lcompat till we can fix ftime()fluffypony1-4/+4
2014-06-11Link to pthreads on non-apple unixZachary Michaels1-4/+4
2014-04-18Bitmonero releasethankful_for_today1-1/+1
2014-04-09Port mapping with UPnPAntonio Juarez1-4/+6
2014-03-03moved all stuff to githubAntonio Juarez1-0/+44