Commit Graph

659 Commits (dev)

Author SHA1 Message Date
Jeff Becker 1175a583d2
initial working code 4 years ago
Stephen Shelton 13b0a4f2fc
WIP: LokidRpcClient 4 years ago
Stephen Shelton ca9214f50f
Add loki-mq as submodule 4 years ago
Jeff Becker 9bfff61d08
initial wack at lokimq 4 years ago
Stephen Shelton fd4b03f896
WIP: LokidRpcClient 4 years ago
Stephen Shelton 0c0deb0656
Add loki-mq as submodule 4 years ago
Jeff Becker ad882d0d70
initial working code 4 years ago
Stephen Shelton 78256e3228
WIP: LokidRpcClient 4 years ago
Stephen Shelton 7bfd8cdbc9
Add loki-mq as submodule 4 years ago
Jeff Becker 0006751d80
initial wack at lokimq 4 years ago
Stephen Shelton 91725a8530
WIP: LokidRpcClient 4 years ago
Stephen Shelton 11951510bf
Remove libabyss and rpc::Caller/rpc::Server 4 years ago
Stephen Shelton c67db46b12
Add loki-mq as submodule 4 years ago
Thomas Winget 9905a2bd4b static build flag for win/mac static builds in drone config 4 years ago
Thomas Winget 0ecdf60777 static build fixes in cmake stuff
I hate cmake so much.
4 years ago
Thomas Winget 32843510bb libunbound can now be built as a static dep 4 years ago
Thomas Winget df284cb757 proper CMake finding and using of libunbound 4 years ago
Thomas Winget 926d306443 add functionality to download and build static libs
The libs with rules already set up in StaticBuild.cmake are dependencies
which will be introduced in following commits.
4 years ago
Rick V adf253e800
picflags differ slightly on native vs wow64 builds 4 years ago
Rick V 45890133bc
LIBUV_ROOT override for win32
emit PIC code (.reloc) on win32 for aslr
4 years ago
Jason Rhinelander d24feacae0 Modernize how we set up ccache
CMAKE_<LANG>_COMPILER_LAUNCHER was added around cmake 3.4 and, usefully,
can be enabled/disabled via cmake invocation flags (unlike the older
RULE_LAUNCH_COMPILE property).
4 years ago
Jeff Becker e9d1a61053
don't recover from sanitizer errors 4 years ago
Jeff Becker 6af498092b
exit traffic via loki addresses 4 years ago
Jason Rhinelander 5b7d194ff1 Merge remote-tracking branch 'origin/master' into dev 4 years ago
Jason Rhinelander 11342b1d9f Remove travis-ci
We don't have much left there that works -- the one useful build (s390x)
errors out with a no available disk space error, so just give up on it.
4 years ago
Jason Rhinelander be9ddf2ae1 Bring back ghc::filesystem for broke AF macos
macOS doesn't provide `<filesystem>` support when targetting anything
earlier than 10.15.
4 years ago
Jason Rhinelander c5faa86926 cmake refactor
Refactors many things in cmake to improve and simplify:

- don't use variable indirection for target names; target names are
*already* a variable of sorts.  (e.g. ${UTIL_LIB} is now just
lokinet-util).  cmake/basic_definitions.cmake is now gone.

- fix LTO enabling to use the standard cmake (3.9+) LTO mechanism rather
than shoving a bunch of flag hacks through link_libraries and
add_compile_options.  This also now enables LTO when building a shared
library (because previously the -flto hacks were only turned on in the
static code for some reason).

- build liblokinet as *either* shared library or static library, but not
both.  Building both makes things more complicated because they had
different names (lokinet-shared or lokinet-static) and seems pointless:
you generally want one or the other.  Now there is just the liblokinet
target, which will be shared or static depending on the value of
BUILD_SHARED_LIBS.

- Simplify lokinet-cryptography AVX2 code: just build *one* library, and
add in the additional AVX2 files when possible, rather than building two
and needing to merge them.

- Compress STATIC_LINK and STATIC_LINK_RUNTIME into just STATIC_LINK.
It makes no sense to use one of these (_RUNTIME) on Windows and the
other on non-Windows when they appear to try to do the same thing.

- remove a bunch of annotations from `endif(FOO)` -> `endif()`.

- move all the tuntap compilation code (including OS-specific source
file selection) into vendor/CMakeLists.txt and build tuntap as an
intermediate OBJECT library rather than keeping a global variable in 5
different files.

- move release motto define to root cmake; it made no sense being
duplicated in both unix.cmake and win32.cmake

- fix add_log_tag to not stomp on any existing source compile flags with
its definition.  Also use proper compile definition property instead of
cramming it into compile flags.

- make optimization/linker flags less hacky.  There's no reason for us
to force particular optimization flags because the cmake build type
already does that (e.g. -DCMAKE_BUILD_TYPE=Release does -O3).  Not doing
that also silences a bunch of cmake warnings because it thinks "-O0 -g3"
etc.  are link libraries (which is reasonable: that's what the code was
telling cmake they are).

- sets the default build type to RelWithDebInfo which gives us `-O2 -g`
if you don't specify a build type.

- Move PIC up (so that the things loaded in unix.cmake, notably libuv,
have it set).

- Add a custom `curl` interface library that carries the correct link
target and include paths for curl (system or bundled).
4 years ago
Jason Rhinelander ab4ee954b9 Remove DEBIAN option
This hasn't been used in a long time; the debian packaging lives in
separate branches instead.
4 years ago
Jason Rhinelander a45bec7c4f Removed RPI definition
This was a long-obsolete fix for things that don't matter anymore.
4 years ago
Jeff Becker 64157d5d44 track libcurl and libuv with cmake, add libuv submodule 4 years ago
Jeff Becker 39b32a9ccc
move check for std::filesystem and std::optional down 4 years ago
Jeff Becker abc1f67430
check for std::optional as macos can be broke af sometimes 4 years ago
Jeff Becker 1072d9b505
detect travis using environmental vars 4 years ago
Jeff Becker a7d616843f
add shitty check for running in travis with workarounds because god is dead and travis-ci fucking sucks. 4 years ago
Jason Rhinelander 1697bf90fe C++17
Compiles with C++17, replaces ghc::filesystem with std::filesystem,
nonstd::optional with std::optional, and llarp::string_view with
std::string_view.
4 years ago
Jeff 0048badcf9
Merge pull request #1241 from jagerman/fix-systemd
No LINUX variable in cmake
4 years ago
Jason Rhinelander 6080a9427b No LINUX variable in cmake
Just let the pkg_check fail when libsystemd isn't install; it shouldn't
hurt anything.
4 years ago
Jason Rhinelander d8858361f4 No LINUX variable in cmake
Just let the pkg_check fail when libsystemd isn't install; it shouldn't
hurt anything.
4 years ago
Jason Rhinelander 3048ccf3f8 Set -mmacosx-version-min the cmake way 4 years ago
Jason Rhinelander 053a5cb180 Set -mmacosx-version-min the cmake way 4 years ago
Jason Rhinelander a75015bc64 Disable thread safety annotations on AppleClang 4 years ago
Jason Rhinelander b2bd555965 Bump version to 0.7.1
Including mostly windows/macos packaging changes, plus a few minor
fixes.
4 years ago
Jason Rhinelander 44b6ccebbd Move release motto string into CMakeLists.txt
Right after project() which contains the version, so that version +
motto updates are basically in one place (and so that non-Makefile cmake
invocations get it).
4 years ago
Jason Rhinelander 16d2296b11 Add -DBUILD_PACKAGE=ON to make cpack code opt-in 4 years ago
Jason Rhinelander 58133db753 Consolidate cmake vars & definitions
CMake will set version variables itself if you give the version in the
project(), which is cleaner.  Also removes some (nearly) duplicate
definitions and settings added in basic_definitions.cmake for unknown
reasons.

Removes some redundant settings (name, description, version) from the
cpack settings which already default to the values from the project()
call.
4 years ago
Jeff Becker 73eef0427a move cmake unix down 4 years ago
Jeff Becker dbaed61100 make gitlab pump out 32 bit installers, no lto for builds as that is cursed for now. 4 years ago
Jeff Becker 7406dbc964 cpack win32 4 years ago
Jason Rhinelander f8209baf50 Move release motto string into CMakeLists.txt
Right after project() which contains the version, so that version +
motto updates are basically in one place (and so that non-Makefile cmake
invocations get it).
4 years ago
Jason Rhinelander ebb1950941 Add -DBUILD_PACKAGE=ON to make cpack code opt-in 4 years ago
Jason Rhinelander 3dd3d48fbb Consolidate cmake vars & definitions
CMake will set version variables itself if you give the version in the
project(), which is cleaner.  Also removes some (nearly) duplicate
definitions and settings added in basic_definitions.cmake for unknown
reasons.

Removes some redundant settings (name, description, version) from the
cpack settings which already default to the values from the project()
call.
4 years ago
Jeff 5b1941222b
unscrew travis-ci (#1223)
* update travis ci clang-format to clang-format-9 because we use that now
add python3-dev package becuase something inside ci thinks it has python but really does not

* try using python3.6

* try working around hot garbage that is travis-ci

* add deadsnakes repo for python3.8

* prevent nullptr deference when running in unit tests

* move python3.8 to main dependancy matrix and add python3.8 to homebrew deps

* add deadsnake apt repo

* add deadsnakes and python3.8 back to previous matrix

* dev package for python

* toggle hive build in ci

* dont add pybind11 if not bulding hive

* revert setting pyenv shim for travis ci

* make native builds on by default except for windows ci

* only apply native build being off for windows release target becuase that broke macos
4 years ago
Jason Rhinelander 3c6aa002b8 Fix errors and warnings compiling on mac 4 years ago
Jeff Becker 3e7acb72e1
more docs, make doxygen work 4 years ago
Jeff d3091cf9fc
Merge pull request #1167 from tewinget/tooling
RouterHive initial PR
4 years ago
Jeff Becker a02363325e
move cmake unix down 4 years ago
Jeff Becker 3b26b8b24d
make gitlab pump out 32 bit installers, no lto for builds as that is cursed for now. 4 years ago
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 4 years ago
Rick V fd6602bf05
fix versiontag 4 years ago
Rick V 9fa9209114
don't be aggressive
remove libcurl packaging rules. We still build it, but ship only the curl.exe
4 years ago
Rick V e15c57c114
get ready for v0.6
bump version

don't ship the shared object
4 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