Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
1616cea
added meson base
Mar 17, 2021
62b9a29
removed redundant config set
Jul 9, 2021
cad384d
Disable `FORTIFY_SOURCE` when not optimizing
Pamplemousse Jul 9, 2021
1756680
Compiling without Boehm works
Pamplemousse Jul 9, 2021
9ea5634
simplified function checks
Jul 10, 2021
2760ed4
correct typo in sodium comment
Jul 12, 2021
06be81c
simplified header checks
Jul 12, 2021
82788bd
fix EOF@EOL typos
Jul 12, 2021
4949b45
corrected indentation
Jul 12, 2021
f872910
fixed typos
Jul 12, 2021
969ea76
Merge pull request #7 from Pamplemousse/disable_gc
Jul 12, 2021
de209e8
Merge pull request #6 from Pamplemousse/no_fortify_sources
Jul 12, 2021
1ad66ea
Add `meson` to the flake
Pamplemousse Jul 7, 2021
2db6428
update OS specific checks
Jul 12, 2021
f5de5bb
.gitignore conventional meson build directory
Ericson2314 Jul 25, 2021
fbb2fa4
meson: Skip rust, it is no longer used.
Ericson2314 Jul 25, 2021
25fb6d0
meson: remove option since libsodium is mandatory dep
Ericson2314 Jul 25, 2021
16571f9
meson: Make options for deps auto not bool
Ericson2314 Jul 25, 2021
db264f8
meson: Put some closing ')' and ']' on next line
Ericson2314 Jul 25, 2021
e6b5b06
Avoid `join_paths` just for being relative current directory
Ericson2314 Jul 25, 2021
9c60e6a
Merge pull request #8 from Pamplemousse/flake_with_meson
Jul 26, 2021
b2c9b76
Merge pull request #9 from Ericson2314/meson-improvements
Jul 26, 2021
3d051ca
standardised optional dependencies flags for optional libraries
Jul 26, 2021
13bcb69
refactor aws-sdk-cpp dep file to improve readability
Jul 26, 2021
33fae4e
improve syntax in meson files
Jul 26, 2021
ff82b32
Update flake.nix
Aug 3, 2021
61a5bbf
added meson buildsystem
Aug 5, 2021
62dcbc0
meson: Generate documentation
Pamplemousse Aug 5, 2021
50ca01f
`nlohmann` is not a dependency
Pamplemousse Aug 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 1 addition & 13 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Makefile.config
perl/Makefile.config

# /
/build
/aclocal.m4
/autom4te.cache
/precompiled-headers.h.gch
Expand All @@ -11,19 +12,6 @@ perl/Makefile.config
/svn-revision
/libtool

# /doc/manual/
/doc/manual/*.1
/doc/manual/*.5
/doc/manual/*.8
/doc/manual/generated/*
/doc/manual/nix.json
/doc/manual/conf-file.json
/doc/manual/builtins.json
/doc/manual/src/SUMMARY.md
/doc/manual/src/command-ref/new-cli
/doc/manual/src/command-ref/conf-file.md
/doc/manual/src/expressions/builtins.md

# /scripts/
/scripts/nix-profile.sh
/scripts/nix-reduce-build
Expand Down
7 changes: 7 additions & 0 deletions dependencies/archive/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# LibArchive Dependency File
#============================================================================


# Look for libarchive, a required dependency
#--------------------------------------------------
libarchive_dep = cpp.find_library('archive')
59 changes: 59 additions & 0 deletions dependencies/aws-sdk-cpp/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# aws s3 dependency file
#============================================================================


# Look for aws-cpp-sdk, an optional dependency
#--------------------------------------------------
aws_sdk_cpp_dep_list = [
dependency('aws-cpp-sdk-core', required: get_option('enable_s3')),
dependency('aws-cpp-sdk-s3', required: get_option('enable_s3')),
dependency('aws-cpp-sdk-transfer', required: get_option('enable_s3'))
]

aws_sdk_cpp_dep = declare_dependency(dependencies : aws_sdk_cpp_dep_list)

# check if dependencies are found
#--------------------------------------------------
check_aws_sdk_cpp = true
foreach dep : aws_sdk_cpp_dep_list
if not dep.found()
check_aws_sdk_cpp = false
endif
endforeach


# set config variable(s)
#--------------------------------------------------
config_h.set(
'ENABLE_S3',
check_aws_sdk_cpp.to_int(),
description : 'Whether to enable S3 support via aws-sdk-cpp.')

if check_aws_sdk_cpp
check_s3client = cpp.check_header(
'aws/s3/S3Client.h',
dependencies: aws_sdk_cpp_dep)

if check_s3client
config_h.set(
'HAVE_AWS_S3_S3CLIENT_H', 1,
description : 'Whether to enable S3 support via aws-sdk-cpp.')
endif

aws_version = meson.get_compiler('cpp').get_define(
'AWS_SDK_VERSION_STRING',
prefix : '#include <aws/core/VersionConfig.h>'
).strip('"').split('.')

config_h.set(
'AWS_VERSION_MAJOR', aws_version[0],
description : 'Major version of aws-sdk-cpp.')

config_h.set(
'AWS_VERSION_MINOR', aws_version[1],
description : 'Minor version of aws-sdk-cpp.')
config_h.set(
'AWS_VERSION_PATCH', aws_version[2],
description : 'Patch version of aws-sdk-cpp.')

endif
13 changes: 13 additions & 0 deletions dependencies/bdw-gc/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Boehm-gc Dependency File
#============================================================================


# Look for Boehm garbage collector, an optional dependency
#--------------------------------------------------
gc_dep = dependency('bdw-gc', required: get_option('enable_gc'))


config_h.set(
'HAVE_BOEHMGC',
gc_dep.found().to_int(),
description : 'Whether to use the Boehm garbage collector.')
22 changes: 22 additions & 0 deletions dependencies/boost/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Boost Dependency File
#============================================================================


# Look for boost, a required dependency
#----------------------------------------------------
boost_mod_list = [
'system',
'context',
'thread']


boost_dep = dependency(
'boost',
modules: boost_mod_list)


# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_BOOST', 1,
description : 'Define if the Boost library is available.')
17 changes: 17 additions & 0 deletions dependencies/brotli/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# LibBrotli Dependency File
#============================================================================


# Look for libbrotli{enc,dec}, a required dependency
#--------------------------------------------------
libbrotli_dep = declare_dependency(
dependencies: [
dependency('libbrotlienc'),
dependency('libbrotlidec')])


# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_BROTLI', 1,
description : 'Define if the brotli library is available.')
14 changes: 14 additions & 0 deletions dependencies/bz2/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# bz2 Dependency File
#============================================================================


# Look for libbz2, a required dependency
#--------------------------------------------------
libbz2_dep = cpp.find_library('bz2')


# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_BZ2', 1,
description : 'Define if the libbz2 is available.')
13 changes: 13 additions & 0 deletions dependencies/cpuid/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# cpuid dependency file
#============================================================================


# Look for cpuid, a required dependency
#--------------------------------------------------
libcpuid_dep = dependency('libcpuid')

# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_LIBCPUID', 1,
description : 'Define if the CPUID is available.')
14 changes: 14 additions & 0 deletions dependencies/curl/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# LibCurl Dependency File
#============================================================================


# Look for libcurl, a required dependency
#--------------------------------------------------
libcurl_dep = dependency('libcurl')


# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_CURL', 1,
description : 'Define if the curl library is available.')
7 changes: 7 additions & 0 deletions dependencies/dl/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# libdl Dependency File
#============================================================================


# Look for libdl, a required dependency
#--------------------------------------------------
libdl_dep = cpp.find_library('dl')
35 changes: 35 additions & 0 deletions dependencies/editline/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Editline Dependency File
#============================================================================


# Look for editline, a required dependency
#--------------------------------------------------
# NOTE: The the libeditline.pc file was added only in libeditline >= 1.15.2, see
# https://github.com/troglobit/editline/commit/0a8f2ef4203c3a4a4726b9dd1336869cd0da8607,
# but e.g. Ubuntu 16.04 has an older version, so we fall back to searching for
# editline.h when the pkg-config approach fails.

editline_dep = cpp.find_library('editline')

if not (
cpp.has_header(
'editline.h',
dependencies : editline_dep))
error('Nix requires editline.h; however the header was not found.')
endif


if not (
cpp.has_function(
'read_history',
prefix : '#include <stdio.h>\n#include "editline.h"',
dependencies : editline_dep))
error('Nix requires libeditline; However, required functions do not work.' +\
'Maybe libeditline version is too old? >= 1.14 is required.')
endif

# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_EDITLINE_H', 1,
description : 'Define to 1 if you have the <editline.h> header file.')
40 changes: 40 additions & 0 deletions dependencies/functions/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# nix check functions
#============================================================================


# check for required functions
#--------------------------------------------------
required_functions = [
'lutimes',
'lchown',
'pipe2',
'posix_fallocate',
'setresuid',
'setreuid',
'statvfs',
'strsignal',
'sysconf']

foreach f : required_functions
if cpp.has_function(f)
config_h.set(
'HAVE_@0@'.format(f.to_upper()), 1,
description : 'Define to 1 if you have the `@0@` function.'.format(f))
endif
endforeach


# compiler check for pubsetbuff
#--------------------------------------------------
pubsetbuff_c = '''
#include <iostream>
using namespace std;
static char buf[1024];
void func() {
cerr.rdbuf()->pubsetbuf(buf, sizeof(buf));
}'''

check_pubsetbuff = meson.get_compiler('cpp').compiles(pubsetbuff_c, name : 'pubsetbuf')
config_h.set(
'HAVE_PUBSETBUF', check_pubsetbuff.to_int(),
description : 'Define to 1 if you have the `pubsetbuf` function.')
17 changes: 17 additions & 0 deletions dependencies/gtest/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# gtest Dependency File
#========================================================================


# check if gtest is already installed
#---------------------------------------------------
gtest_dep = dependency(
'gtest',
required : false)


# If not, include the submodule
#---------------------------------------------------
if not gtest_dep.found()
gtest_proj = cmake.subproject('gtest')
gtest_dep = gtest_proj.dependency('gtest')
endif
46 changes: 46 additions & 0 deletions dependencies/headers/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# nix check headers
#============================================================================

# check for various headers
#--------------------------------------------------
project_header_deps = [
'sys/stat.h',
'sys/types.h',
'sys/dir.h',
'sys/ndir.h',
'dirent.h',
'locale.h',
'unistd.h',
'stdint.h',
'stdlib.h',
'strings.h',
'string.h',
'bzlib.h',
'inttypes.h',
'memory.h']

foreach f : project_header_deps
if cpp.has_header(f)
config_h.set(
'HAVE_@0@'.format(f.to_upper().underscorify()), 1,
description : 'Define to 1 if you have the `<@0@>` header file..'.format(f))
endif
endforeach


# TODO: this was carried over from the autotools buildsystem,
# but i think it may no longer be needed.

# compiler check for dirent.h
#--------------------------------------------------
dirent_h_prefix = '''
#include <sys/types.h>
#include <dirent.h>
'''

check_struct_dirent = meson.get_compiler('cpp').has_member(
'struct dirent', 'd_type', prefix: dirent_h_prefix)

if ((config_h.get('HAVE_DIRENT_H') == 1) and (check_struct_dirent))
config_h.set('HAVE_STRUCT_DIRENT_D_TYPE', 1)
endif
11 changes: 11 additions & 0 deletions dependencies/lowdown/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# lowdown Dependency File
#============================================================================


# FIXME !! lowdown is seemingly a required dependency for building, but
# it isn't listed anywhere on documentation that i could find. dependency
# object needs to be added to meson.

# Look for lowdown, a required dependency
#--------------------------------------------------
liblowdown_dep = cpp.find_library('lowdown')
24 changes: 24 additions & 0 deletions dependencies/lzma/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# LibLzma Dependency File
#============================================================================


# Look for liblzma, a required dependency
#--------------------------------------------------
liblzma_dep = dependency('liblzma')


check_lzma_mt = cpp.has_function(
'lzma_stream_encoder_mt',
dependencies : liblzma_dep)


# set config variable(s)
#--------------------------------------------------
config_h.set(
'HAVE_LZMA', 1,
description : 'Define if the lzma library is available.')

config_h.set(
'HAVE_LZMA_MT',
check_lzma_mt.to_int(),
description : 'Define if lzma_stream_encoder_mt is available.')
Loading