install_dir: dir_data / 'tsearch_data'
)
-# XXX: Implement downlo
tests += {
'name': 'unaccent',
'sd': meson.current_source_dir(),
],
},
}
+
+
+# Download CLDR files on demand.
+
+cldr_baseurl = 'https://raw.githubusercontent.com/unicode-org/cldr/release-@0@/common/transforms/@1@'
+
+if not wget.found() or not cp.found()
+ subdir_done()
+endif
+
+foreach f : ['Latin-ASCII.xml']
+ # XXX could use .replace when we require meson 0.58
+ cldr_version_dashed = '-'.join(CLDR_VERSION.split('.'))
+ url = cldr_baseurl.format(cldr_version_dashed, f)
+ target = custom_target(f,
+ output: f,
+ command: [wget, wget_flags, url],
+ build_by_default: false,
+ )
+ unicode_data += {f: target}
+endforeach
+
+unaccent_update_unicode_targets = \
+ custom_target('unaccent.rules',
+ input: [unicode_data['UnicodeData.txt'], unicode_data['Latin-ASCII.xml']],
+ output: ['unaccent.rules'],
+ command: [python, files('generate_unaccent_rules.py'), '--unicode-data-file', '@INPUT0@', '--latin-ascii-file', '@INPUT1@'],
+ build_by_default: false,
+ capture: true,
+ )
+
+update_unicode_unaccent = custom_target('update-unicode',
+ output: ['dont-exist'],
+ input: unaccent_update_unicode_targets,
+ command: [cp, '@INPUT@', '@SOURCE_ROOT@/contrib/unaccent/'],
+ build_by_default: false,
+ build_always_stale: true,
+)
+
+update_unicode_targets += update_unicode_unaccent
# Copyright (c) 2022-2026, PostgreSQL Global Development Group
UNICODE_VERSION = '16.0.0'
+CLDR_VERSION = '47'
unicode_data = {}
unicode_baseurl = 'https://www.unicode.org/Public/@0@/ucd/@1@'
endforeach
-update_unicode_targets = []
+update_unicode_common_targets = []
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_case_table.h',
input: [unicode_data['CaseFolding.txt'], unicode_data['SpecialCasing.txt'], unicode_data['UnicodeData.txt']],
output: ['unicode_case_table.h'],
build_by_default: false,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_category_table.h',
input: [unicode_data['UnicodeData.txt'], unicode_data['DerivedCoreProperties.txt'], unicode_data['PropList.txt']],
output: ['unicode_category_table.h'],
build_by_default: false,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_east_asian_fw_table.h',
input: [unicode_data['EastAsianWidth.txt']],
output: ['unicode_east_asian_fw_table.h'],
capture: true,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_nonspacing_table.h',
input: [unicode_data['UnicodeData.txt']],
output: ['unicode_nonspacing_table.h'],
capture: true,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_norm_table.h',
input: [unicode_data['UnicodeData.txt'], unicode_data['CompositionExclusions.txt']],
output: ['unicode_norm_table.h', 'unicode_norm_hashfunc.h'],
build_by_default: false,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_normprops_table.h',
input: [unicode_data['DerivedNormalizationProps.txt']],
output: ['unicode_normprops_table.h'],
capture: true,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_version.h',
output: ['unicode_version.h'],
command: [
if not meson.is_cross_build()
update_unicode_dep += custom_target('case_test.run',
output: 'case_test.run',
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [case_test, UNICODE_VERSION],
build_by_default: false,
build_always_stale: true,
if not meson.is_cross_build()
update_unicode_dep += custom_target('category_test.run',
output: 'category_test.run',
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [category_test, UNICODE_VERSION],
build_by_default: false,
build_always_stale: true,
if not meson.is_cross_build()
update_unicode_dep += custom_target('norm_test.run',
output: 'norm_test.run',
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [norm_test],
build_by_default: false,
build_always_stale: true,
# Use a custom target, as run targets serialize the output, making this harder
# to debug, and don't deal well with targets with multiple outputs.
-update_unicode = custom_target('update-unicode',
+update_unicode_common = custom_target('update-unicode',
depends: update_unicode_dep,
output: ['dont-exist'],
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [cp, '@INPUT@', '@SOURCE_ROOT@/src/include/common/'],
build_by_default: false,
build_always_stale: true,
)
-alias_target('update-unicode', update_unicode)
+update_unicode_targets += update_unicode_common