Commit Graph

543 Commits

Author SHA1 Message Date
Thomas Winget
df284cb757 proper CMake finding and using of libunbound 2020-06-15 18:32:57 -04:00
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.
2020-06-15 16:32:44 -04:00
Rick V
adf253e800
picflags differ slightly on native vs wow64 builds 2020-06-12 15:19:10 -05:00
Rick V
45890133bc
LIBUV_ROOT override for win32
emit PIC code (.reloc) on win32 for aslr
2020-06-12 15:18:57 -05:00
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).
2020-06-10 13:34:02 -03:00
Jeff Becker
e9d1a61053
don't recover from sanitizer errors 2020-05-23 16:07:20 -04:00
Jeff Becker
6af498092b
exit traffic via loki addresses 2020-05-23 16:07:19 -04:00
Jason Rhinelander
5b7d194ff1 Merge remote-tracking branch 'origin/master' into dev 2020-05-22 00:45:24 -03:00
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.
2020-05-20 20:43:26 -03:00
Jason Rhinelander
be9ddf2ae1 Bring back ghc::filesystem for broke AF macos
macOS doesn't provide `<filesystem>` support when targetting anything
earlier than 10.15.
2020-05-20 19:18:27 -03:00
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).
2020-05-17 23:31:23 -03:00
Jason Rhinelander
ab4ee954b9 Remove DEBIAN option
This hasn't been used in a long time; the debian packaging lives in
separate branches instead.
2020-05-17 21:29:05 -03:00
Jason Rhinelander
a45bec7c4f Removed RPI definition
This was a long-obsolete fix for things that don't matter anymore.
2020-05-17 21:28:25 -03:00
Jeff Becker
64157d5d44 track libcurl and libuv with cmake, add libuv submodule 2020-05-17 14:53:28 -03:00
Jeff Becker
39b32a9ccc
move check for std::filesystem and std::optional down 2020-05-15 09:43:53 -04:00
Jeff Becker
abc1f67430
check for std::optional as macos can be broke af sometimes 2020-05-15 09:40:24 -04:00
Jeff Becker
1072d9b505
detect travis using environmental vars 2020-05-15 09:12:00 -04:00
Jeff Becker
a7d616843f
add shitty check for running in travis with workarounds because god is dead and travis-ci fucking sucks. 2020-05-15 09:01:47 -04:00
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.
2020-05-01 17:43:27 -03:00
Jeff
0048badcf9
Merge pull request #1241 from jagerman/fix-systemd
No LINUX variable in cmake
2020-04-22 11:43:35 -04:00
Jason Rhinelander
6080a9427b No LINUX variable in cmake
Just let the pkg_check fail when libsystemd isn't install; it shouldn't
hurt anything.
2020-04-22 12:02:05 -03:00
Jason Rhinelander
d8858361f4 No LINUX variable in cmake
Just let the pkg_check fail when libsystemd isn't install; it shouldn't
hurt anything.
2020-04-22 12:00:09 -03:00
Jason Rhinelander
3048ccf3f8 Set -mmacosx-version-min the cmake way 2020-04-21 20:01:24 -03:00
Jason Rhinelander
053a5cb180 Set -mmacosx-version-min the cmake way 2020-04-21 20:00:37 -03:00
Jason Rhinelander
a75015bc64 Disable thread safety annotations on AppleClang 2020-04-21 16:42:10 -03:00
Jason Rhinelander
b2bd555965 Bump version to 0.7.1
Including mostly windows/macos packaging changes, plus a few minor
fixes.
2020-04-21 16:27:21 -03:00
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).
2020-04-21 16:25:30 -03:00
Jason Rhinelander
16d2296b11 Add -DBUILD_PACKAGE=ON to make cpack code opt-in 2020-04-21 16:25:29 -03:00
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.
2020-04-21 16:20:09 -03:00
Jeff Becker
73eef0427a move cmake unix down 2020-04-21 16:11:39 -03:00
Jeff Becker
dbaed61100 make gitlab pump out 32 bit installers, no lto for builds as that is cursed for now. 2020-04-21 16:11:39 -03:00
Jeff Becker
7406dbc964 cpack win32 2020-04-21 16:11:39 -03:00
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).
2020-04-19 23:18:48 -03:00
Jason Rhinelander
ebb1950941 Add -DBUILD_PACKAGE=ON to make cpack code opt-in 2020-04-19 23:18:41 -03:00
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.
2020-04-19 23:16:23 -03:00
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
2020-04-18 16:58:41 -03:00
Jason Rhinelander
3c6aa002b8 Fix errors and warnings compiling on mac 2020-04-10 14:26:50 -03:00
Jeff Becker
3e7acb72e1
more docs, make doxygen work 2020-04-07 13:16:22 -04:00
Jeff
d3091cf9fc
Merge pull request #1167 from tewinget/tooling
RouterHive initial PR
2020-04-07 13:13:02 -04:00
Jeff Becker
a02363325e
move cmake unix down 2020-04-02 11:08:08 -04:00
Jeff Becker
3b26b8b24d
make gitlab pump out 32 bit installers, no lto for builds as that is cursed for now. 2020-04-02 11:08:08 -04:00
Jeff Becker
2190da8c81
cpack win32 2020-04-02 11:08:07 -04:00
Thomas Winget
138a0b33fb jason's computer can't python3 2020-03-03 19:57:09 -05:00
Thomas Winget
771d0b4489 hive pytest framework in place (and path build test works)! 2020-03-03 19:57:09 -05:00
Jeff Becker
a4141617d7 add build infra for toggling hive builds 2020-03-03 19:57:09 -05:00
Jeff Becker
1fdb8b4c94 initial pybind11 introspection code 2020-03-03 19:57:09 -05:00
Rick V
c8c9222b01
remove unused rule 2020-03-03 15:33:11 -06:00
Rick V
c4e8e52fcc
finally remove C++17 requirement on windows (only needed it for
filesystem)
2020-03-03 15:33:10 -06:00
Rick V
dbc559d4ff
finally fix cross-LTO on windows builds 2020-03-03 15:33:10 -06:00
Jason Rhinelander
7a5b105f49 Remove enable_testing() because ctest sucks (and thus we don't use it) 2020-03-03 12:35:01 -04:00