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.
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).
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.
* 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
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).
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").
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.
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).
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.
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).
- 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.
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
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.
- 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
* 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
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.
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
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."
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!)