-
Notifications
You must be signed in to change notification settings - Fork 626
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add CMake build system for valkey #1196
base: unstable
Are you sure you want to change the base?
Conversation
Signed-off-by: Eran Ifrah <[email protected]>
@PingXie see this PR instead. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## unstable #1196 +/- ##
============================================
- Coverage 70.69% 70.69% -0.01%
============================================
Files 114 114
Lines 63076 63076
============================================
- Hits 44594 44592 -2
- Misses 18482 18484 +2
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to use WITH_TLS
instead of USE_TLS
? Then we have a single TLS related building variable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @eifrah-aws
Is it possible to generate |
- Force function names to lowercase in YAML config file - Parse version from version.h instead of hard-coding it - Fixed typo - Moved utility functions into their own module `Utils.cmake` - macOS: do not hard code "/usr/bin/clang", instead use `find_program` - Support for WITH_TLS=module|yes|off|1|0 - Support for WITH_RDMA=module|off|0 - Fixed (never worked for the original Makefile as well): build TLS as module on macOS Signed-off-by: Eran Ifrah <[email protected]>
Replacing this PR #1082
NOTE:
This PR was tested on:
gmake
for buildingvalkey
With this PR, users are able to build valkey using
CMake
.Example usage:
Build
valkey-server
in Release mode with TLS enabled and usingjemalloc
as the allocator:Build
valkey-unit-tests
:Current features supported by this PR:
jemalloc
,tcmalloc
,tcmalloc_minimal
andlibc
), e.g. to enablejemalloc
pass-DWITH_MALLOC=jemalloc
tocmake
-DWITH_TLS=1
tocmake
)-DWITH_SANITIZER=<address|thread|undefined>
tocmake
valkey-unit-tests
executablevalkey
under/home/you/root
pass-DCMAKE_INSTALL_PREFIX=/home/you/root
Why using
CMake
? To list some of the advantages of usingCMake
:compile_commands.json
which is required byclangd
to get a compiler accuracy code completion (in other words: your VScode will thank you)More build examples:
ASAN build:
ASAN with jemalloc:
As seen by the previous examples, any combination is allowed and co-exist on the same source tree.
Valkey installation
With this new
CMake
, it is possible to install the binary by runningmake install
or creating a packagemake package
(currently supported on Debian like distros)Example 1: build & install using
make install
:Example 2: create a
.deb
installer:Example 3: create installer for non Debian systems (e.g. FreeBSD or macOS):
Current
CMake
PR status:jemalloc
,libc
,tcmalloc
andtcmalloc_minimal
).deb
packagingrelease.h
commands.def
fmtargs.h
test_files.h