summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-09-27 20:11:32 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-09-28 22:48:24 +0200
commitc1ae5d53fb0fa7ceb9d6fc7a60c87df958ce37fe (patch)
treef028a04619aa1b69f8b0aa72a5154f6ba1c09775 /meson.build
parent2f13baa843bd1fb5db6630a2823681ffaff9fb11 (diff)
WIPWIP
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build119
1 files changed, 119 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 1607088..d1f6908 100644
--- a/meson.build
+++ b/meson.build
@@ -12,6 +12,23 @@ project(
],
)
+cpp_flags = []
+cpp_optional_flags = []
+if get_option('buildtype') == 'release'
+ # If asserts are disabled parameters and variables used for only that
+ # end up causing warnings
+ cpp_optional_flags += ['-Wno-unused-parameter', '-Wno-unused-variable',
+ '-Wno-unused-but-set-variable']
+ cpp_flags += '-DNDEBUG'
+endif
+cpp = meson.get_compiler('cpp')
+foreach flag : cpp_optional_flags
+ if cpp.has_argument(flag)
+ cpp_flags += flag
+ endif
+endforeach
+add_project_arguments([cpp_flags], language: 'cpp')
+
conf_data = configuration_data()
conf_data.set('version', meson.project_version())
configure_file(input: 'src/config.h.in',
@@ -191,6 +208,34 @@ java_uescape_dep = declare_dependency(
dependencies: [buffer_dep, uio_dep],
)
+src_lib = library(
+ 'src',
+ sources: [
+ 'src/errors.cc',
+ 'src/errors.hh',
+ 'src/location.cc',
+ 'src/location.hh',
+ ],
+ include_directories: inc,
+)
+src_dep = declare_dependency(
+ link_with: src_lib,
+)
+
+grammar_lib = library(
+ 'grammar',
+ sources: [
+ 'src/grammar.cc',
+ 'src/grammar.hh',
+ ],
+ include_directories: inc,
+ dependencies: [io_dep, src_dep, str_dep],
+)
+grammar_dep = declare_dependency(
+ link_with: grammar_lib,
+ dependencies: [io_dep, src_dep, str_dep],
+)
+
prefix_tree_lib = library(
'prefix_tree',
sources: [
@@ -201,6 +246,69 @@ prefix_tree_lib = library(
)
prefix_tree_dep = declare_dependency(link_with: prefix_tree_lib)
+gen_tokens = executable(
+ 'gen_tokens',
+ sources: [
+ 'src/gen_tokens.cc',
+ ],
+ include_directories: inc,
+ install : false,
+ dependencies : [
+ args_dep,
+ grammar_dep,
+ prefix_tree_dep,
+ src_dep,
+ ],
+)
+
+java_versions = [
+ 'java-8',
+]
+
+java_unicode_versions = {
+ 'java-8': '6.2.0',
+}
+
+java_tokens_sources = []
+foreach java_version : java_versions
+ java_unicode_version = 'u' + java_unicode_versions[java_version].replace('.', '_')
+ java_tokens_sources += custom_target(
+ 'gen-tokens-' + java_version,
+ input: ['data/' + java_version + '/tokens.grammar'],
+ output: ['java_tokens_' + java_version + '.hh',
+ 'java_tokens_' + java_version + '.cc'],
+ command : [gen_tokens, '--namespace',
+ java_version.replace('.', '_').replace('-', '_'),
+ '--unicode', java_unicode_version,
+ '@INPUT@', '@OUTPUT@'])
+endforeach
+
+java_lib = library(
+ 'java',
+ sources: [
+ 'src/java_tokens.hh',
+ 'src/java_tokens.cc',
+ 'src/java_version.hh',
+ java_tokens_sources,
+ ],
+ include_directories: inc,
+ dependencies: [
+ java_uescape_dep,
+ prefix_tree_dep,
+ src_dep,
+ str_dep,
+ uline_dep,
+ ]
+)
+java_dep = declare_dependency(link_with: java_lib,
+ dependencies: [
+ java_uescape_dep,
+ prefix_tree_dep,
+ src_dep,
+ str_dep,
+ uline_dep,
+ ])
+
jkc = executable(
'jkc',
sources: [
@@ -351,12 +459,23 @@ test('java_uescape', executable(
],
))
+test('java_tokens', executable(
+ 'test_java_tokens',
+ sources: ['test/java_tokens.cc'],
+ include_directories: inc,
+ dependencies: [
+ java_dep,
+ test_dependencies,
+ ],
+))
+
test('prefix_tree', executable(
'test_prefix_tree',
sources: ['test/prefix_tree.cc'],
include_directories: inc,
dependencies: [
prefix_tree_dep,
+ str_dep,
test_dependencies,
],
))