aboutsummaryrefslogtreecommitdiff
path: root/meson.build
blob: 2dc4ea1dab41bf6b66ee22f051f2fff0e42f81e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
project('lpm',
    ['c'],
    license : 'LPM',
    meson_version : '>= 0.56',
)

cc = meson.get_compiler('c')

zlib_dep = dependency('zlib')
mbedtls_dep = dependency('mbedtls', version: '<3', required: false)
libgit2_dep = dependency('libgit2')
libzip_dep = dependency('libzip')
lua_dep = dependency('lua')

if mbedtls_dep.found()
    mbedtls_dep = [
        mbedtls_dep,
        dependency('mbedx509', version: '<3', required: true),
        dependency('mbedcrypto', version: '<3', required: true),
    ]
else
    # Using has_headers to distinguish between mbedtls2 and mbedtls3
    _mbedtls_dep = cc.find_library('mbedtls', has_headers: 'mbedtls/net.h', required: false)
    if _mbedtls_dep.found()
        mbedtls_dep = [
            _mbedtls_dep,
            cc.find_library('mbedx509'),
            cc.find_library('mbedcrypto'),
        ]
    else
        # In some cases we need to manually specify where to find mbedtls2
        message('Using fallback mbedtls definition')
        mbedtls_dep = declare_dependency(
            include_directories: ['/usr/include/mbedtls2/'],
            link_args: ['-L/usr/lib/mbedtls2', '-lmbedtls', '-lmbedx509', '-lmbedcrypto']
        )
    endif
endif

microtar_lib = static_library('microtar', files('lib/microtar/src/microtar.c'))
microtar_dep = declare_dependency(
    link_whole: [microtar_lib],
    include_directories: ['lib/microtar/src']
)

lpm_source = files('src/lpm.c')
cflags = []
if get_option('static')
    lua_exe = find_program('lua')

    lpm_source += configure_file(
        capture: false,
        command: [lua_exe, '-e', 'f = string.dump(assert(load(io.lines("@INPUT0@", "L"), "=lpm.lua"))) io.open("@OUTPUT0@", "wb"):write("unsigned char lpm_luac[] = \"" .. f:gsub(".", function (c) return string.format("\\\x%02X",string.byte(c)) end) .. "\";unsigned int lpm_luac_len = " .. #f .. ";")'],
        input: files('src/lpm.lua'),
        output: 'lpm.lua.c'
    )
    cflags += '-DLPM_STATIC'
endif

executable('lpm', lpm_source, dependencies: [zlib_dep, mbedtls_dep, libgit2_dep, libzip_dep, lua_dep, microtar_dep], c_args: cflags)