build: add support for building with meson
parent
efe0c4afec
commit
fe1de720d0
|
@ -0,0 +1,46 @@
|
||||||
|
scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
|
||||||
|
sh = find_program('sh', native: true)
|
||||||
|
mandir = get_option('mandir')
|
||||||
|
|
||||||
|
man_files = [
|
||||||
|
'apk.8.scd',
|
||||||
|
'apk-add.8.scd',
|
||||||
|
'apk-audit.8.scd',
|
||||||
|
'apk-cache.5.scd',
|
||||||
|
'apk-cache.8.scd',
|
||||||
|
'apk-del.8.scd',
|
||||||
|
'apk-dot.8.scd',
|
||||||
|
'apk-fetch.8.scd',
|
||||||
|
'apk-fix.8.scd',
|
||||||
|
'apk-index.8.scd',
|
||||||
|
'apk-info.8.scd',
|
||||||
|
'apk-keys.5.scd',
|
||||||
|
'apk-list.8.scd',
|
||||||
|
'apk-manifest.8.scd',
|
||||||
|
'apk-policy.8.scd',
|
||||||
|
'apk-repositories.5.scd',
|
||||||
|
'apk-stats.8.scd',
|
||||||
|
'apk-update.8.scd',
|
||||||
|
'apk-upgrade.8.scd',
|
||||||
|
'apk-verify.8.scd',
|
||||||
|
'apk-version.8.scd',
|
||||||
|
'apk-world.5.scd',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach filename : man_files
|
||||||
|
topic = filename.split('.')[-3].split('/')[-1]
|
||||||
|
section = filename.split('.')[-2]
|
||||||
|
output = '@0@.@1@'.format(topic, section)
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
output,
|
||||||
|
input: filename,
|
||||||
|
capture: true,
|
||||||
|
output: output,
|
||||||
|
command: [
|
||||||
|
sh, '-c', '@0@ < @INPUT@'.format(scdoc_prog.path())
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: '@0@/man@1@'.format(mandir, section)
|
||||||
|
)
|
||||||
|
endforeach
|
|
@ -0,0 +1,46 @@
|
||||||
|
libfetch_src = [
|
||||||
|
'common.c',
|
||||||
|
'fetch.c',
|
||||||
|
'file.c',
|
||||||
|
'ftp.c',
|
||||||
|
'http.c',
|
||||||
|
'openssl-compat.c'
|
||||||
|
]
|
||||||
|
|
||||||
|
errlist_generator = find_program('errlist.sh')
|
||||||
|
|
||||||
|
ftperr_h = custom_target(
|
||||||
|
'ftperr.h',
|
||||||
|
capture: true,
|
||||||
|
command: [errlist_generator, 'ftp_errlist', 'FTP', '@INPUT@'],
|
||||||
|
output: 'ftperr.h',
|
||||||
|
input: 'ftp.errors',
|
||||||
|
)
|
||||||
|
|
||||||
|
httperr_h = custom_target(
|
||||||
|
'httpderr.h',
|
||||||
|
capture: true,
|
||||||
|
command: [errlist_generator, 'http_errlist', 'HTTP', '@INPUT@'],
|
||||||
|
output: 'httperr.h',
|
||||||
|
input: 'http.errors',
|
||||||
|
)
|
||||||
|
|
||||||
|
libfetch_src += [ftperr_h, httperr_h]
|
||||||
|
|
||||||
|
libfetch_cargs = [
|
||||||
|
'-DCA_CERT_FILE="/' + apk_confdir / 'ca.pem"',
|
||||||
|
'-DCA_CRL_FILE="/' + apk_confdir / 'crl.pem"',
|
||||||
|
'-DCLIENT_CERT_FILE="/' + apk_confdir / 'cert.pem"',
|
||||||
|
'-DCLIENT_KEY_FILE="/' + apk_confdir / 'cert.key"',
|
||||||
|
]
|
||||||
|
|
||||||
|
libfetch = static_library(
|
||||||
|
'fetch',
|
||||||
|
libfetch_src,
|
||||||
|
c_args: libfetch_cargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
libfetch_dep = declare_dependency(
|
||||||
|
link_whole: libfetch,
|
||||||
|
include_directories: include_directories('.'),
|
||||||
|
)
|
|
@ -0,0 +1,31 @@
|
||||||
|
project(
|
||||||
|
'apk-tools',
|
||||||
|
['c'],
|
||||||
|
default_options : ['c_std=gnu99'],
|
||||||
|
version: '2.10.5',
|
||||||
|
meson_version: '>=0.51'
|
||||||
|
)
|
||||||
|
pkgc = import('pkgconfig')
|
||||||
|
|
||||||
|
apk_confdir = get_option('sysconfdir') / 'apk'
|
||||||
|
apk_libdir = get_option('libdir')
|
||||||
|
|
||||||
|
zlib_dep = dependency('zlib')
|
||||||
|
openssl_dep = dependency('openssl')
|
||||||
|
lua_dep = dependency('lua' + get_option('lua_version'), required: get_option('lua'))
|
||||||
|
scdoc = dependency('scdoc', version: '>=1.10', required: get_option('docs'))
|
||||||
|
|
||||||
|
add_project_arguments('-D_GNU_SOURCE', language: 'c')
|
||||||
|
|
||||||
|
# If we're a subproject we only want the static lib and not files
|
||||||
|
subproject = meson.is_subproject()
|
||||||
|
if get_option('default_library') == 'static'
|
||||||
|
add_project_arguments('-DOPENSSL_NO_ENGINE', language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
subdir('libfetch')
|
||||||
|
subdir('src')
|
||||||
|
|
||||||
|
if scdoc.found()
|
||||||
|
subdir('doc')
|
||||||
|
endif
|
|
@ -0,0 +1,3 @@
|
||||||
|
option('docs', description: 'Build manpages with scdoc', type: 'feature', value: 'auto')
|
||||||
|
option('lua', description: 'Build luaapk (lua bindings)', type: 'feature', value: 'auto')
|
||||||
|
option('lua_version', description: 'Lua version to build against', type: 'string', value: '5.3')
|
|
@ -0,0 +1,117 @@
|
||||||
|
libapk_src = [
|
||||||
|
'blob.c',
|
||||||
|
'commit.c',
|
||||||
|
'common.c',
|
||||||
|
'database.c',
|
||||||
|
'hash.c',
|
||||||
|
'io.c',
|
||||||
|
'io_archive.c',
|
||||||
|
'io_url.c',
|
||||||
|
'io_gunzip.c',
|
||||||
|
'package.c',
|
||||||
|
'print.c',
|
||||||
|
'solver.c',
|
||||||
|
'version.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
libapk_headers = [
|
||||||
|
'apk_applet.h',
|
||||||
|
'apk_archive.h',
|
||||||
|
'apk_blob.h',
|
||||||
|
'apk_database.h',
|
||||||
|
'apk_defines.h',
|
||||||
|
'apk_hash.h',
|
||||||
|
'apk_io.h',
|
||||||
|
'apk_openssl.h',
|
||||||
|
'apk_package.h',
|
||||||
|
'apk_print.h',
|
||||||
|
'apk_provider_data.h',
|
||||||
|
'apk_solver_data.h',
|
||||||
|
'apk_solver.h',
|
||||||
|
'apk_version.h',
|
||||||
|
]
|
||||||
|
|
||||||
|
apk_src = [
|
||||||
|
'apk.c',
|
||||||
|
'app_add.c',
|
||||||
|
'app_audit.c',
|
||||||
|
'app_cache.c',
|
||||||
|
'app_del.c',
|
||||||
|
'app_dot.c',
|
||||||
|
'app_fetch.c',
|
||||||
|
'app_fix.c',
|
||||||
|
'app_index.c',
|
||||||
|
'app_info.c',
|
||||||
|
'app_list.c',
|
||||||
|
'app_manifest.c',
|
||||||
|
'app_policy.c',
|
||||||
|
'app_update.c',
|
||||||
|
'app_upgrade.c',
|
||||||
|
'app_search.c',
|
||||||
|
'app_stats.c',
|
||||||
|
'app_verify.c',
|
||||||
|
'app_version.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
apk_cargs = [
|
||||||
|
'-DAPK_VERSION="' + meson.project_version() + '"',
|
||||||
|
'-D_ATFILE_SOURCE',
|
||||||
|
]
|
||||||
|
|
||||||
|
libapk = library(
|
||||||
|
'apk',
|
||||||
|
libapk_src,
|
||||||
|
version: meson.project_version(),
|
||||||
|
install: true,
|
||||||
|
dependencies: [
|
||||||
|
libfetch_dep,
|
||||||
|
zlib_dep,
|
||||||
|
openssl_dep,
|
||||||
|
],
|
||||||
|
c_args: apk_cargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
libapk_dep = declare_dependency(
|
||||||
|
link_with: libapk,
|
||||||
|
)
|
||||||
|
|
||||||
|
if not subproject
|
||||||
|
pkgc.generate(
|
||||||
|
libapk,
|
||||||
|
name: 'apk',
|
||||||
|
version: meson.project_version(),
|
||||||
|
)
|
||||||
|
|
||||||
|
install_headers(
|
||||||
|
libapk_headers,
|
||||||
|
subdir: 'apk',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if(lua_dep.found())
|
||||||
|
luaapk_src = [
|
||||||
|
'lua-apk.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
libluaapk = library(
|
||||||
|
'luaapk',
|
||||||
|
luaapk_src,
|
||||||
|
dependencies: [lua_dep, libapk_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: lua_dep.get_pkgconfig_variable('libdir'),
|
||||||
|
c_args: apk_cargs,
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
apk_exe = executable(
|
||||||
|
'apk',
|
||||||
|
apk_src,
|
||||||
|
install: not subproject,
|
||||||
|
dependencies: [
|
||||||
|
libapk_dep,
|
||||||
|
zlib_dep,
|
||||||
|
openssl_dep,
|
||||||
|
libfetch_dep.partial_dependency(includes: true),
|
||||||
|
],
|
||||||
|
c_args: apk_cargs,
|
||||||
|
)
|
Loading…
Reference in New Issue