Commit Graph

95 Commits

Author SHA1 Message Date
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
74cc73d46b DOWNLOAD_SODIUM=FORCE to always download libsodium
This bypasses the check for a compatible local libsodium.
2020-02-06 16:28:35 -04:00
Jason Rhinelander
2b93ccb393 Bump libsodium required version to 1.0.18
We use crypto_core_ed25519_scalar_mul which is only exported by
libsodium >= 1.0.18.
2020-02-02 16:38:48 -04:00
Jason Rhinelander
955c475dbe Enable cpu detection on amd64
The optional runtime detection shouldn't rely on being compiled in avx2
mode.
2020-01-08 20:45:25 -04:00
Jason Rhinelander
6069b726e1 Fix ntru avx2 compilation when DOWNLOAD_SODIUM
We don't explicitly have to link against it, but it doesn't hurt *and*
this also pulls in the proper sodium include path, which we do need.
2020-01-07 19:58:18 -04:00
Jason Rhinelander
210cb837c6 Enable -avx2 -fma for ntru even when compiling without AVX2 support
This code is runtime guarded with CPU feature tests, so even if we are
making a non-AVX2 build we still want to compile the avx code path with
-mavx2 -mfma so that it can be opportunistically used when run on
AVX2-supporting CPUs (particularly for the debs and release binaries).
2020-01-07 18:39:46 -04:00
Jason Rhinelander
54b644e280 Add -DDOWNLOAD_SODIUM to re-enabled dl&build of sodium
Also supported in the Makefile (e.g. `make DOWNLOAD_SODIUM=ON`)

Also DRYs out the Makefile a little.
2019-12-16 20:52:44 -04:00
Jeff Becker
30a8bb681f
more 2019-12-16 09:04:35 -05:00
Jeff Becker
31150fa4d0
require version 2019-12-16 09:03:19 -05:00
Jason Rhinelander
cdca34e628 Fix runtime AVX2 detection
The feature flags come via __cpuid_count instead of __cpuid

Also removes a couple unneeded headers.
2019-11-21 11:50:04 -04:00
Jason Rhinelander
57ccb1fd5c Move sodium download into separate cmake include 2019-10-31 17:49:08 -03:00
Jeff Becker
c1a81d26f1
pull in libsodium if local version sucks 2019-10-31 15:30:02 -04:00
Rick V
d02d4ac044
remove vendored libsodium 2019-10-30 18:02:35 -05:00
Jeff
49b410b437
Merge pull request #888 from majestrate/fix-broken-build-2019-10-30
fix typo in cmake
2019-10-30 13:02:54 -04:00
Jeff Becker
fc4900094f
if this works i'll be pissed at gcc 2019-10-30 12:58:54 -04:00
Jeff Becker
2cb15e7e0b
enable see2 when used 2019-10-30 12:45:51 -04:00
Jeff Becker
0a204b7760
try disabling extra calls for some reason sodium_memcmp destroys the stack and i have no idea why 2019-10-30 12:39:15 -04:00
Jason Rhinelander
0774213e87 Fix cmake sodium version check 2019-10-30 13:25:23 -03:00
Jeff Becker
f228eca39e
fix typo 2019-10-30 10:46:29 -04:00
Jeff Becker
3ebea458e9
use vendored libsodium if we dont have a good version 2019-10-29 12:31:36 -04:00
Jeff Becker
f38240f945
devendor libsodium by default except for android 2019-10-29 12:01:58 -04:00
Rick V
294b98527d
clang-format remaining code, use __asm__ for avx2 port since we
insist on straight C99 without extensions (asm isn't special in
C99, __asm__ is)
2019-09-03 08:02:35 -05:00
Rick V
595b15d538
make format crypto/ 2019-09-03 08:02:35 -05:00
Rick V
b3a975ff8e
sun fix
fix testing on sun
2019-08-27 06:53:08 -05:00
Jeff Becker
1f761a1cb0
* fix arm cross compile on ubuntu disco
* add toolchain option for cross compile
2019-07-16 09:41:43 -04:00
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
2019-04-28 17:04:52 +01:00
Michael
4143472a17
Add cmake module to target a library as 'system', and fix a few warnings 2019-04-25 00:27:31 +01:00
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
2019-04-19 13:24:33 -05:00
Jeff Becker
3da6551e82
make android compile 2019-04-08 11:54:19 -04:00
Ryan Tharp
98e3753764 fix typo 2019-02-18 05:12:13 -08:00
Ryan Tharp
25d00e2974 Merge remote-tracking branch 'origin/master' 2019-02-18 02:00:36 -08:00
Ryan Tharp
ad91071633 Fix undefined behaviors and misaligned member access 2019-02-18 01:59:33 -08:00
Michael
90373b806c
Fix log tag after cmake changes 2019-02-15 20:49:10 +00:00
Michael
1aeacb0043
Refactor CMakeLists into distinct directories 2019-02-12 01:19:37 +00:00
Michael
3b3926a0ea
Refactor CMakeLists into distinct directories 2019-02-09 16:30:29 +00:00
despair
d9863128b9 the intrinsic variant is 32-bit clean
the ASM variant is not

found it

fix

something is wrong with the external build

hmm

why is this critical section doing nothing

fix multiple init

debug init

ok fixed
2018-11-19 04:29:36 -06:00
Jeff Becker
9db99d4d04
fix debian build 2018-11-13 10:16:14 -05:00
despair
907e557696 fuck the apple compiler
bad merge!

make -Werror optional for end-users
2018-11-12 23:39:47 -06:00
Jeff Becker
d408b08889
make windows cross compile pass, make format parts of libutp 2018-11-09 07:56:04 -05:00
Jeff Becker
fd87f2ac96
purge VLAs from the codebase 2018-11-09 07:25:14 -05:00
Jeff Becker
04a249a503
Merge remote-tracking branch 'rick/dev' 2018-11-08 07:36:18 -05:00
Jeff Becker
960aa479e9
fixes for ancient rpi toolchain 2018-11-08 07:31:50 -05:00
despair
2a5a0f1577 fix warnings on windows
up next: fix netbsd
2018-11-07 18:09:49 -06:00
Jeff Becker
7a78832841
Merge remote-tracking branch 'rick/dev' 2018-11-07 11:05:47 -05:00
Jeff Becker
7090a012f3
Merge remote-tracking branch 'micheal/wextra' into dev 2018-11-07 10:57:34 -05:00
Michael Thorpe
33bfaf7ecd
Enable -Wextra
test criteria:
- test build on macOS
- test build in debian docker container
- test build in fedora docker container
2018-11-07 15:31:13 +00:00
despair
04e620ebf2 add iocp tcp connect
msys2 grabs its reactos sdk headers straight out of git
most cross-compilers use the versioned releases (v6 as of last week)

huh. for once setting the windows version macros doesn't break anything.
2018-11-06 17:54:34 -06:00
Michael Thorpe
a2d5d80779
Enable warnings as errors
test criteria:
- Built from clean on macOS
2018-11-06 22:48:17 +00:00
Jeff Becker
f1cca956f9
make android compile again 2018-11-06 09:06:09 -05:00
despair
5a32ccf220 scan-build fixes on win32 code paths 2018-10-30 00:16:34 -05:00