Files
nocal/meson.build
Bernardo Magri dd6e02cb55 feat: add PKCE OAuth boundary
Introduce provider-neutral HTTP contracts and public-client authorization-code orchestration with PKCE S256, strict HTTPS and loopback validation, constant-time state checks, secure OpenSSL entropy, and single-send token exchange semantics.

Add independent protocol and adversarial suites covering RFC 7636, RFC3986 encoding, callback failures, response redaction, and no-retry behavior. Concrete networking, browser/listener, token parsing, Secret Service, and Graph integration remain separate follow-up slices.
2026-07-18 11:11:28 +01:00

79 lines
2.7 KiB
Meson

project(
'nocal',
'cpp',
version: '0.1.0',
meson_version: '>=1.1.0',
default_options: [
'cpp_std=c++20',
'warning_level=3',
'werror=false',
'buildtype=debugoptimized',
],
)
inc = include_directories('include')
sqlite = dependency('sqlite3')
libcrypto = dependency('libcrypto')
threads = dependency('threads')
nocal_sources = files(
'src/domain/calendar_transfer.cpp',
'src/domain/date.cpp',
'src/domain/event_query.cpp',
'src/domain/month_layout.cpp',
'src/storage/ics_store.cpp',
'src/storage/sync_cache.cpp',
'src/sync/oauth.cpp',
'src/tui/Screen.cpp',
'src/tui/EventEditor.cpp',
'src/tui/Terminal.cpp',
'src/tui/TuiApp.cpp',
)
nocal_lib = static_library('nocal-core', nocal_sources, include_directories: inc,
dependencies: [sqlite, libcrypto])
nocal_dep = declare_dependency(include_directories: inc, link_with: nocal_lib,
dependencies: [sqlite, libcrypto])
nocal_executable = executable('nocal', 'src/main.cpp',
dependencies: nocal_dep, install: true)
domain_tests = executable('domain-tests', 'tests/domain_tests.cpp',
dependencies: nocal_dep)
test('domain', domain_tests)
calendar_transfer_tests = executable('calendar-transfer-tests',
'tests/calendar_transfer_tests.cpp', dependencies: nocal_dep)
test('calendar-transfer', calendar_transfer_tests)
ics_tests = executable('ics-tests', 'tests/ics_tests.cpp',
dependencies: nocal_dep)
test('ics-storage', ics_tests)
sync_cache_tests = executable('sync-cache-tests', 'tests/sync_cache_tests.cpp',
dependencies: [nocal_dep, threads])
test('sync-cache', sync_cache_tests)
oauth_tests = executable('oauth-tests', 'tests/oauth_tests.cpp',
dependencies: nocal_dep)
test('oauth', oauth_tests)
oauth_security_tests = executable('oauth-security-tests',
'tests/oauth_security_tests.cpp', dependencies: nocal_dep)
test('oauth-security', oauth_security_tests)
tui_tests = executable('tui-tests', 'tests/tui_tests.cpp',
dependencies: nocal_dep)
test('tui', tui_tests)
tui_focus_tests = executable('tui-focus-tests', 'tests/tui_focus_tests.cpp',
dependencies: nocal_dep)
test('tui-focus', tui_focus_tests)
editor_tests = executable('editor-tests', 'tests/editor_tests.cpp',
dependencies: nocal_dep)
test('editor', editor_tests)
shell = find_program('sh')
test('cli-recovery', shell,
args: [files('tests/cli_recovery_test.sh'), nocal_executable])
test('cli-transfer', shell,
args: [files('tests/cli_transfer_test.sh'), nocal_executable])
test('cli-week-start', shell,
args: [files('tests/cli_week_start_test.sh'), nocal_executable])
install_data('scripts/nocal-hyprland', install_dir: get_option('bindir'),
install_mode: 'rwxr-xr-x')
install_data('share/applications/dev.nomarchy.nocal.desktop',
install_dir: get_option('datadir') / 'applications')