Commit Graph

652 Commits (8b321612da4e129b8eee4e02af755184d2405fe9)

Author SHA1 Message Date
Jeff Becker 2190da8c81
cpack win32 4 years ago
Thomas Winget 138a0b33fb jason's computer can't python3 4 years ago
Thomas Winget 771d0b4489 hive pytest framework in place (and path build test works)! 4 years ago
Jeff Becker a4141617d7 add build infra for toggling hive builds 4 years ago
Jeff Becker 1fdb8b4c94 initial pybind11 introspection code 4 years ago
Rick V c8c9222b01
remove unused rule 4 years ago
Rick V c4e8e52fcc
finally remove C++17 requirement on windows (only needed it for
filesystem)
4 years ago
Rick V dbc559d4ff
finally fix cross-LTO on windows builds 4 years ago
Jason Rhinelander 7a5b105f49 Remove enable_testing() because ctest sucks (and thus we don't use it) 4 years ago
Jason Rhinelander 53c85ebf1d if(LINUX) doesn't work; just try to find libsystemd gently instead 4 years ago
Jason Rhinelander 54236cde9d
Merge pull request #1136 from jagerman/fix-cmake-linux-var
Fix cmake LINUX variable around systemd enabling
4 years ago
Jason Rhinelander b87adab438 Fix cmake LINUX variable around systemd enabling 4 years ago
Jason Rhinelander e3bce76a7c Add EXCLUDE_FROM_ALL to subprojects
Prevent `make install` from installing headers/cmake stuff.
4 years ago
Rick V 5295ada917
systemd is linux only 4 years ago
Jason Rhinelander 51ef8d69f8 Default libsystemd support to enabled if found
WITH_SYSTEMD=ON or =OFF works to explicitly enable/disable, but if
omitted the default is now ON if found and OFF if you don't.
4 years ago
Jason Rhinelander 3be0766f27 Bump XSAN build to bionic and add status message 4 years ago
Jason Rhinelander 0839c16f19 Final abseil purge
Bye-bye Google Boost.
4 years ago
Jason Rhinelander 2e9840ea39 Replace abseil date code with Hinnart's date.h
Howard Hinnart's date.h is the library that was accepted as C++20
date/calendar support, so this is essentially a backport of C++20 date
time support.

(It does support timezone support, but requires more of the library and
that seems like overkill for what we need; this just prints UTC
timestamps instead, which need only a header-only include).
4 years ago
Jason Rhinelander ac1486d0be Replace absl::optional with optional-lite
Step 1 of removing abseil from lokinet.

For the most part this is a drop-in replacement, but there are also a
few changes here to the JSONRPC layer that were needed to work around
current gcc 10 dev snapshot:

- JSONRPC returns a json now instead of an optional<json>.  It doesn't
  make any sense to have a json rpc call that just closes the connection
  with returning anything.  Invoked functions can return a null (default
  constructed) result now if they don't have anything to return (such a
  null value won't be added as "result").
4 years ago
Jason Rhinelander ecdc389e1a Fix typo in option to disable submodule checks 4 years ago
Jason Rhinelander c522bc0537 ghc::filesystem devendor to submodule
Also removed some unused/old options for conditionally not using
ghc::filesystem and a sodium option that wasn't used anywhere.
4 years ago
Jason Rhinelander 3df4eaef2d Devendor cxxopts to submodule 4 years ago
Jason Rhinelander edbe0c7bf4 Devendor gtest to a submodule 4 years ago
Jason Rhinelander 5a787de73b Switch abseil & nlohmann to submodules and update to latest stable
Our current abseil won't build with gcc 10 (its `optional`
implementation appears broken), and spews warnings under slightly older
compilers; updating to the latest stable 2019 branch fixes both issues.
4 years ago
Jason Rhinelander 04fa117399 Use -mcpu=native on ppc64le 4 years ago
Jeff Becker 7aa1b2c27c
monotonic time and run testnet at 20% realtime 4 years ago
Jason Rhinelander 7cec0db371 Simplify CRYPTO_FLAGS logic, remove RYZEN_HACK
We currently spend a bunch of time setting CRYPTO_FLAGS and then just
completely wipe it out if NATIVE_BUILD is specified.

The AMD_RYZEN_HACK is really not needed; it was only some early CPU
microcode and compiler combinations that had trouble detecting Ryzen's
FMA3 support (and Ryzen *doesn't* properly support FMA4--it can be
forced on and runs, but apparently it can give wrong results).
4 years ago
Jason Rhinelander 6f3757e933 Modernize non-AVX2 tuning to haswell
Tuning to an ancient architecture doesn't make a lot of sense; we want
to support the ancient architecture, but don't want to optimize for it.

Also change the AVX2 tuning to use haswell so that optimizations don't
depend on the CPU in the system the build runs on.
4 years ago
Jeff 0c979aaa3f
Merge pull request #1017 from despair86/dev
IX86 builds should only require SSE3 by default
4 years ago
Rick V 6bb95ce718 IX86 builds should only require SSE3, and this still allows debian release mgr to override the target selection flag 4 years ago
Ryan Tharp 60a36a4a7d when STATIC_LINK search for static versions of libraries, delay CURL detection until later 5 years ago
Rick V fd6602bf05
fix versiontag 5 years ago
Rick V 9fa9209114
don't be aggressive
remove libcurl packaging rules. We still build it, but ship only the curl.exe
5 years ago
Rick V e15c57c114
get ready for v0.6
bump version

don't ship the shared object
5 years ago
Stephen Shelton 332f33b049 Remove FS_LIB conditionals 5 years ago
Stephen Shelton 5ce260fce1 Use vendored fs::filesystem on all platforms 5 years ago
Jason Rhinelander 638fb25b47 Put version info into a compiled file
This rewrites the version info using lokid's approach of compiling it
into a .cpp file that gets generated as part of the build (*not* during
the configure stage).

Among other things, this means that changing the version no longer
invalidates ccache or cmake dependencies, and because it depends on
`.git/index` git commits will cause the version to be regenerated,
making the commit tag more reliable (currently if you rebuild without
running cmake your git commit tag doesn't update).
5 years ago
Jeff 512a350783
Merge pull request #953 from majestrate/try-preventing-router-lockup-2019-12-07
try fixing router lockup
5 years ago
Jeff Becker 2eabe98d9b
add systemd watchdog if enabled on compile time 5 years ago
Jason Rhinelander 8d2c22fc72 Replace cppbackport with ghc-filesystem
From https://github.com/gulrak/filesystem which is more up-to-date and
looks better maintained than cppbackport.
5 years ago
Jeff Becker d685057754
update readme and disable curl on windows 5 years ago
Jeff Becker 3878ebd534
use curl to fetch from lokid rpc the identity key 5 years ago
Jeff Becker 70ceca1e72
disable gtest when no unit tests 5 years ago
Jeff Becker 6bd593f3e2
move it more 5 years ago
Jeff Becker 329c9d1044
move more stuff 5 years ago
Jeff Becker a5b1379b88
exclude debian from setting CRYPTO_FLAGS 5 years ago
Jeff Becker c3302018ba
more 5 years ago
Jeff Becker e3724577d3
detect properly for mobile 5 years ago
Jeff Becker ea7884231d
move it 5 years ago
Jeff Becker 9d0d96b70f
get rid of NON_PC_TARGET 5 years ago
Rick V 35c131cb27
restore crypto flags for binary builds 5 years ago
Rick V 9b9ea6e6d0
make that a universal rule 5 years ago
Jeff Becker 3ebea458e9
use vendored libsodium if we dont have a good version 5 years ago
Jeff Becker 168420dba8
finishing touches 5 years ago
Jeff Becker f38240f945
devendor libsodium by default except for android 5 years ago
Jeff 3a6c16aa36
Merge pull request #871 from majestrate/ed25519-signing
Ed25519 signing
5 years ago
Jeff Becker 01c4a9c287
revert a few things 5 years ago
Stephen Shelton 961c8dbddf Prevent in-source-builds with cmake macro 5 years ago
jeff 869ab0b652 Merge remote-tracking branch 'upstream/dev' into vpn-api-2019-10-03 5 years ago
Jason Rhinelander 281fbff42f Fix build on xenial
- xenial's cmake version (3.5.1) builds everything fine and test suite
  passes, so lower the minimum to that.

- add a hack for xenial's kernel header & glibc version breaking if both
  net/if.h and linux/if.h get included.  The only thing we actually need
  from net/if.h that linux/if.h doesn't have is `if_nametoindex`, so
  just hack that definition in for xenial's specific glibc/kernel header
  versions.
5 years ago
jeff c26b67c379 finish wiring up jni shizz 5 years ago
jeff 7d7c6bf38c Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 5 years ago
Michael 77b4efd78b
fixup ios 5 years ago
Michael abc527ca35
Split cmake files for executables into src dirs 5 years ago
jeff 6dc350a8f3 update cmake 5 years ago
jeff 52757fef0e Merge remote-tracking branch 'micheal/background_mode' into vpn-api-2019-10-03 5 years ago
jeff 1e57397c99 revert to c++14 for non win32 5 years ago
jeff 32ed821763 Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 5 years ago
Michael fadedb4a7b
Distinct ios build 5 years ago
Michael 86a07e2a80
Enable more sanitisers 5 years ago
Jeff 35230adbe5
Merge pull request #833 from majestrate/gut-utp-2019-09-19
remove libutp and all such code related to utp
5 years ago
jeff 1853b28590 remove libutp and all such code related to utp 5 years ago
Michael 6719a1790c
Statically link releases 5 years ago
jeff ac2a2aed1d gut libutp and finish making things compile and pass tests 5 years ago
Jeff Becker 0250f79742
Merge remote-tracking branch 'origin/master' 5 years ago
Jeff Becker c01112e4b7
tracy lock contention testing and other fun things 5 years ago
Rick V 5ecc76a332
if cppbackport is built, make that consistent too 5 years ago
Rick V 89f92d3aed
new cmake module 5 years ago
Rick V 4246caf8a1
add build option for constrained node ops and make sure everything is now target-optimised in all configurations (allows debugging on the target using the debug build config)
link libatomic if we're targeting 486

link libatomic.a if we're targeting windows

idk what the hell MSVC does for -arch:IA32

we already set the c++14 flag early on

strip target selection flags from MSVC builds and clang-cl

c++14 does not propagate to compile tests
5 years ago
Rick V 6ade591a6e add native build option 5 years ago
despair 60cf1be757
fix cmake (restore crypto opts) 5 years ago
Michael 7d39f84ef3
Partial fixes for shadow 5 years ago
Michael 429284aedc
Fix static linking on macOS 5 years ago
Michael 6e5cab971f
make windows fixes 5 years ago
Michael 8c5bbcaeeb
Update rcutil and add to build 5 years ago
Michael f9e9227e19
Fix gcc trunk warnings 5 years ago
Jeff Becker 7c8c11a42a
correct cmake paramter for shellhooks 5 years ago
Thomas Winget baf8019fe5 Refactor Router code into more classes
This commit refactors functionality from the Router class into separate,
dedicated classes.
There are a few behavior changes that came as a result of discussion on
what the correct behavior should be.
In addition, many things Router was previously doing can now be provided
callback functions to alert the calling point when the asynchronous
action completes, successfully or otherwise.
5 years ago
Michael 82958de2d7
Tidy up cmake files 5 years ago
Michael 65af2c4266
Normalise build 5 years ago
Michael edcaf8c25c
try actually reading the gtest docs 5 years ago
Michael 42b951aa80
Try to link shared again 5 years ago
Michael cc67794b43
build gtest/gmock in shared mode 5 years ago
Michael 246ff605c4
Try building tests on windows 5 years ago
Michael ac8624698d
Fix some string_view problems 5 years ago
Michael 9f2ec57704
Try forcing avx2 5 years ago
Michael 728661f82c
Explictly enable catching exceptions 5 years ago
Michael 082897eff5
Set PIC everywhere 5 years ago
Michael 2cc180b6a4
Add FindLibUV and migrate 5 years ago
Jeff Becker 095330b787
disable shell hooks by default 5 years ago
Michael 80d1e4aef9
Add in-source version of std::filesystem::permissions 5 years ago
Michael 59e8a7316f
Revert "Merge pull request #668 from michael-loki/remove_cppbackport"
This reverts commit 33142d5005, reversing
changes made to 408a652a01.
5 years ago
Michael 07377b8d5f
Find libuv for Ryan 5 years ago
Michael 1639c58cb6
Remove cppbackport from vendor dir 5 years ago
Jeff Becker e265661adb
try fixing issue number 17 (not done) 5 years ago
Rick V 302fa232d7
I _think_ this is a decent compromise for LTO vs non-LTO builds 5 years ago
Rick V 8a0bd5b532
try fixing libabyss
Why does abyss not inherit the include folders used by the rest of the lokinet build?
5 years ago
Jeff Becker 4c1ac0e991
update for win32 parts 5 years ago
Jeff Becker 9447a1bb25
ammend previous commit 5 years ago
Jeff Becker 473ceedb9d
try linking for freebsd 5 years ago
Jeff Becker 223f2702d3
Merge branch 'fix-big-ooooofff' 5 years ago
Jeff Becker 9deafa4cb8
use libuv 5 years ago
Michael 19802229ac
Update cmake to point to vendor dir 5 years ago
Michael 19578fa8fc
Fix ASAN build 5 years ago
Jeff Becker 3e0585e0b8
remove fatal error message from git revision when not in git 5 years ago
Michael 8c570653ee
Refactor top level cmake file into multiple components 5 years ago
Michael 0b4d787042
More work on router docker image
- Multi-stage docker build (final image only 15MB!)
- Build in release mode
    - Fix bug with release mode
    - Fix compiler being dumb AF
    - Disable FORTIFY for now
- Enable LTO when making a staticly linked release
- Fix some gcc specific warnings
- Refactor cmake stuff into multiple files
5 years ago
Michael 9ee525a006
Fix shadowing warnings 5 years ago
Michael 4143472a17
Add cmake module to target a library as 'system', and fix a few warnings 5 years ago
Rick V 4c4efd1aaa
irrelevant on Microsoft C++ 5 years ago
Rick V 01ec1cc61c
fix windows (#535) 5 years ago
michael-loki 0195152e05 Allow builds on MSVC (#518)
* Import cxxopts to replace getopts usage

* Add visual studio build things

* Fixup abseil build parts

* Replace __attribute__((unused)) with ABSL_ATTRIBUTE_UNUSED

* Fixup minor windows build issues

* Replace getopts usage

* Temporarily fixup .rc files

* More minor windows fixes

* Get a working build

* Revert .rc files

* Revert changes to nodedb
5 years ago
Jeff Becker 2c5fa94170
fix freebsd build 5 years ago
Rick V 853d19209c
Revert "unbreak windows target"
select 64-bit target by default (since normal devs REEEEEEEE at the sight of 4 byte ptrs)
pretty much every _other_ linux/unix has a c++17 windows compiler

This reverts commit a844c61049.
5 years ago
Jeff Becker a844c61049
unbreak windows target 5 years ago
Jeff Becker 3da6551e82
make android compile 5 years ago
Jeff Becker 2edf1da819
add more android stuff 5 years ago
Jeff Becker e178a70929
use shared_ptr for event loop 5 years ago
Michael 25f10d5b11
Fix more address sanitiser issues 5 years ago
Michael 6b5a688e08
Fix Catalog.Iterator test failure 5 years ago
Rick V 07e5978144
only pick one event loop on sol2 5 years ago
Rick V bbba2c0eea
improve windows select loop
add generic svr4 poll(2) event loop
5 years ago
Michael f2c5d32399
Metric collection subsystem 5 years ago
Rick V 490f3f31d0
minimal build system plumbing for backports to oracle solaris 5 years ago
Rick V abb9284167
add sun link libs 5 years ago
Rick V 2e1b2ff8b1
abseil should pick up all of our compile flags (and stop on warnings if enabled), temp disable tuntap on Solaris 5 years ago
Rick V 87cebd9ba6
port abseil-cpp to Solaris 2.x and legacy compiler
fuck oracle with a rusty knife, we only support compilers with a full implementation of G++ (so, basically, only clang)
5 years ago
Rick V 67845e342a
distinguish good solaris from bad solaris 5 years ago
Rick V 866643f099
public releases should run reasonably well on most
devices in spite of the buiild system
currently, the instruction scheduling is tuned for the AMD K10 uarch, which is the CPU
of the unix build agent
5 years ago
Rick V be5e70f9eb
update clang bits for release 5 years ago
Rick V 072ff9a50e
finally make -WX/-Werror optional 5 years ago
Rick V 8443c5ab8c
Support abseil on i686-pc-winnt-gnu 5 years ago
Rick V 53f7360094
added warning for AMD users 5 years ago
Rick V 61fb9a9c82
added some notes to gear up for the #371 putback by @michael-loki
moved platform-specifc stuff *to* platform specifc lib
removed -Wno-format on windows and *actually* turn on proper format checking
here using compiler-specifc extension for C99
5 years ago
Rick V aab8167408
remove AMD FPU hack, remove FPU opts for crypto code in debug mode
see https://www.digitaltrends.com/computing/ryzen-amd-bios-fix-fma3-crash/
AMD has released a fix for Zen and later
5 years ago
Jeff a79f27cfd0
Merge pull request #395 from majestrate/staging
lokinet rpc use http digest auth instead of basic auth
5 years ago
Jeff Becker 990049f423
make rpc do basic auth and shit like that 5 years ago
michael-loki 8ada001bc9
Remove negative thread safety warning flag
This is experimental, and has a bunch of false positives.
5 years ago
Jeff Becker 734a5b5fae
more 5 years ago
Jeff Becker 2218749134
Merge remote-tracking branch 'origin/staging' into staging 5 years ago
Jeff Becker 6a09348c47
today's work 5 years ago
Jeff 1a09a12ee0
Merge branch 'staging' into absl_mutex 5 years ago
Michael 61f3273dc4
Add threading annotations and fix potential deadlocks 5 years ago
Michael c5a129ddff
Convert to use abseil synchronisation primitives 5 years ago
Michael 93399fdbb4
Make nlohmann::json part of the build 5 years ago
Michael c6e6bdb90f
Fix for windows just being the Worst 5 years ago
Michael 4132f883a7
Make libabyss mandatory 5 years ago
Michael a0125ffe86
Move abyss/json to llarp/util/json 5 years ago
Jeff Becker 1d958d95de
* make rpc compile right
* make link sessions introspectable
* make utp write buffers fully flush each tick
5 years ago
Michael 90373b806c
Fix log tag after cmake changes 5 years ago
Jeff cdc19c52fa
Merge branch 'staging' into abstract_router_replacement 5 years ago
Michael 048fa83c39
Finish replacement of Router with AbstractRouter 5 years ago
Rick V e9048559b2
late-breaking hotfix patch for libabyss-win32 5 years ago
Rick V 1bb441a367
fix clang cross-compile nt shared lib 5 years ago
Michael ebf2800c3f Fixup windows 5 years ago
Michael 2997b38e35
Fixup after rebase 5 years ago
Michael 656843e9a3
Fix issues on debian 5 years ago
Michael 1aeacb0043
Refactor CMakeLists into distinct directories 5 years ago
Jeff f84ceb3b6a
Merge pull request #300 from majestrate/staging
add rpc endpoint for dumping internal state
5 years ago
Jeff Becker 46222df421
refactor 5 years ago
Michael 4f3c2a7e80
Add support for building with ccache 5 years ago
Jeff Becker e1522faeaa
add introspection rpc endpoint 5 years ago
Rick V 1fafe27300
damn it 5 years ago
Jeff 1369c3b23c
Merge pull request #283 from despair86/dev
more windows fixes
5 years ago
Rick V 4c19f562f0
A compromise for C++17 ports.
Remove abseil build config for such targets.
Include headers (which should fall through by definition).
Macintosh can go fuck itself.
5 years ago
Rick V 406e3a6b6c
document option correctly 5 years ago
Rick V 72d0720da0
use c++17 stl on windows
While the absl:: namespace is aliased to std:: in a
standard win32 build, it also needlessly adds the
library to the build process, only to discard most
of it at link time. This also makes the distinction
between Abseil STL and G++ STL more explicit, to avoid
some forms of confusion.

From the product page:
"...We think not: if you look at the preprocessor conditional
structure in our string_view.h you'll see that we are trying
to identify whether your C++ installation has std::string_view.
If you do, absl::string_view is defined only as an alias to the
standard type. If you don't, you get a C++11/C++14 compatible
implementation of the type. This means you can adopt Abseil,
and for types we are b you can use the type from the absl
namespace. As soon as your project is built with the appropriate
compiler/standard library version, we'll fall away and leave you
with the standard type, albeit spelled funny. Better: as soon as
you know that your project will only build with the appropriate
language version you can run tools that we will provide to change
the places that refer to absl::string_view to spell it std::string_view
-- since those are the same type, this is safe to do, even across
API boundaries.

So, one reason you might want to adopt Abseil: early access to facilities
from upcoming C++ standard library releases, with a clear migration path."
5 years ago
Rick V 8800cee785
fix crash on exit 5 years ago
Rick V 3931b7d9d7
implement missing libabyss functionality
remove some finished TODOs
5 years ago
Rick V 59c6184233
linker flags have no effect in compilation
and will cause -Werror=unused-command-line-option
on apple cc
5 years ago
Rick V 6d608d292f
add warning message for libg++ runtime 5 years ago
Rick V 00a095b61c
update description 5 years ago
Rick V 7f52c9eae7
restore gtest win32 patch (stripped during gtest rebase)
enable lokinet shared library on win32

TODO: define an API to expose from this library
currently, it resorts to exporting *everything*
including system implementation details that otherwise
should remain hidden out of sight
(i.e. the winsock2 load stubs for new socket API, or entire libstdc++ classes!)
5 years ago
Rick V d0448dfb64
finish moving event loop implementations out of headers
ok

ah so that was the mac build problem
5 years ago
Rick V 6e93697214
surprisingly a full abyss build works
also move the event loop code back into platform lib (!!!)
5 years ago
Rick V f277f368a1
win32 g++ is set to c++17 by default, so we use the _real_ string_view class 5 years ago
Michael 6d8d910aff
Refactor and add tests for bits.hpp 5 years ago
Michael 4c3734a146
Build everything with -fPIC 5 years ago
Ryan Tharp 5769e5c716
Merge pull request #259 from michael-loki/more_dht_tests
More dht tests
5 years ago
Michael 40e85f0f69
Tests for dht::RCNode and dht::ISNode 5 years ago
Michael 1ba6507a2f
Tests for dht::ServiceAddressLookup 5 years ago
Michael b1213c7a7c
Tests for dht::TagLookup 5 years ago
Michael 6055829df4
Remove tl::optional and use absl::optional always 5 years ago
Michael 41f9f5fad6
Import abseil LTS 20181200 5 years ago
Michael 1f95f1e78f
More unit tests of dht internals 5 years ago
Michael 40449df0f1
Split classes out of dht::Context 5 years ago
Michael 9d0d3a4cc9
Fix build on darwin 5 years ago
Michael f4e0cb2d4b
Import latest gtest from upstream - commit 569fba4d742b67753b5374b6686170afb74acb0c 5 years ago
Jeff 832ad942aa
Merge pull request #237 from despair86/dev
separate header and implementation
5 years ago
Jeff Becker cbfbdc506d
Merge branch 'staging' of ssh://github.com/loki-project/loki-network into staging 5 years ago