diff options
Diffstat (limited to 'src/interfaces/ecpg')
-rw-r--r-- | src/interfaces/ecpg/compatlib/meson.build | 22 | ||||
-rw-r--r-- | src/interfaces/ecpg/ecpglib/meson.build | 37 | ||||
-rw-r--r-- | src/interfaces/ecpg/ecpglib/po/meson.build | 1 | ||||
-rw-r--r-- | src/interfaces/ecpg/include/meson.build | 51 | ||||
-rw-r--r-- | src/interfaces/ecpg/meson.build | 9 | ||||
-rw-r--r-- | src/interfaces/ecpg/pgtypeslib/meson.build | 30 | ||||
-rw-r--r-- | src/interfaces/ecpg/preproc/meson.build | 104 | ||||
-rw-r--r-- | src/interfaces/ecpg/preproc/po/meson.build | 1 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/compat_informix/meson.build | 31 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/compat_oracle/meson.build | 20 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/connect/meson.build | 20 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/meson.build | 84 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/pgtypeslib/meson.build | 21 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/preproc/meson.build | 37 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/sql/meson.build | 46 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/thread/meson.build | 21 |
16 files changed, 535 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build new file mode 100644 index 00000000000..5887cb92b52 --- /dev/null +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -0,0 +1,22 @@ +export_file = custom_target('libpq.exports', kwargs: gen_export_kwargs) + +ecpg_compat = both_libraries('libecpg_compat', + 'informix.c', + include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], + c_args: ['-DSO_MAJOR_VERSION=3'], + dependencies: [frontend_code, thread_dep], + link_with: [ecpglib, ecpg_pgtypes], + soversion: host_system != 'windows' ? '3' : '', + darwin_versions: ['3', '3.' + pg_version_major.to_string()], + version: '3.' + pg_version_major.to_string(), + link_args: export_fmt.format(export_file.full_path()), + link_depends: export_file, + kwargs: default_lib_args, +) +ecpg_targets += [ecpg_compat.get_shared_lib(), ecpg_compat.get_static_lib()] + +pkgconfig.generate( + ecpg_compat.get_shared_lib(), + description: 'PostgreSQL libecpg_compat library', + url: pg_url, +) diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build new file mode 100644 index 00000000000..2da029ec8ea --- /dev/null +++ b/src/interfaces/ecpg/ecpglib/meson.build @@ -0,0 +1,37 @@ +ecpglib_sources = files( + 'connect.c', + 'data.c', + 'descriptor.c', + 'error.c', + 'execute.c', + 'memory.c', + 'misc.c', + 'prepare.c', + 'sqlda.c', + 'typename.c', +) + +export_file = custom_target('libpq.exports', kwargs: gen_export_kwargs) + +ecpglib = both_libraries('libecpg', + ecpglib_sources, + include_directories: ['.', ecpg_inc, postgres_inc], + c_args: ['-DSO_MAJOR_VERSION=6'], + dependencies: [frontend_code, libpq, thread_dep], + link_with: [ecpg_pgtypes], + soversion: host_system != 'windows' ? '6' : '', + darwin_versions: ['6', '6.' + pg_version_major.to_string()], + version: '6.' + pg_version_major.to_string(), + link_args: export_fmt.format(export_file.full_path()), + link_depends: export_file, + kwargs: default_lib_args, +) +ecpg_targets += [ecpglib.get_shared_lib(), ecpglib.get_static_lib()] + +pkgconfig.generate( + ecpglib.get_shared_lib(), + description: 'PostgreSQL libecpg library', + url: pg_url, +) + +subdir('po', if_found: libintl) diff --git a/src/interfaces/ecpg/ecpglib/po/meson.build b/src/interfaces/ecpg/ecpglib/po/meson.build new file mode 100644 index 00000000000..246e399ebd3 --- /dev/null +++ b/src/interfaces/ecpg/ecpglib/po/meson.build @@ -0,0 +1 @@ +i18n.gettext('ecpglib' + '6' + '-' + pg_version_major.to_string()) diff --git a/src/interfaces/ecpg/include/meson.build b/src/interfaces/ecpg/include/meson.build new file mode 100644 index 00000000000..c95d0455b9a --- /dev/null +++ b/src/interfaces/ecpg/include/meson.build @@ -0,0 +1,51 @@ +ecpg_inc = include_directories('.') + +ecpg_conf_keys = [ + 'ENABLE_THREAD_SAFETY', + 'HAVE_INT64', + 'HAVE_LONG_INT_64', + 'HAVE_LONG_LONG_INT_64', + 'PG_USE_STDBOOL', +] + +ecpg_conf_data = configuration_data() + +foreach key : ecpg_conf_keys + if cdata.has(key) + ecpg_conf_data.set(key, cdata.get(key)) + endif +endforeach + +ecpg_config_h = configure_file( + output: 'ecpg_config.h', + configuration: ecpg_conf_data, + install_dir: dir_include, +) +configure_files += ecpg_config_h + +generated_sources_ac += {'src/interfaces/ecpg/include': ['stamp-h']} + +install_headers( + 'ecpg_informix.h', + 'ecpgerrno.h', + 'ecpglib.h', + 'ecpgtype.h', + 'pgtypes.h', + 'pgtypes_date.h', + 'pgtypes_error.h', + 'pgtypes_interval.h', + 'pgtypes_numeric.h', + 'pgtypes_timestamp.h', + 'sql3types.h', + 'sqlca.h', + 'sqlda.h', + 'sqlda-compat.h', + 'sqlda-native.h', +) + +install_headers( + 'datetime.h', + 'decimal.h', + 'sqltypes.h', + install_dir: dir_include_pkg / 'informix' / 'esql', +) diff --git a/src/interfaces/ecpg/meson.build b/src/interfaces/ecpg/meson.build new file mode 100644 index 00000000000..f079b42269f --- /dev/null +++ b/src/interfaces/ecpg/meson.build @@ -0,0 +1,9 @@ +ecpg_targets = [] + +subdir('include') +subdir('pgtypeslib') +subdir('ecpglib') +subdir('compatlib') +subdir('preproc') + +alias_target('ecpg', ecpg_targets) diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build new file mode 100644 index 00000000000..96489d9f1d7 --- /dev/null +++ b/src/interfaces/ecpg/pgtypeslib/meson.build @@ -0,0 +1,30 @@ +ecpg_pgtypes_sources = files( + 'common.c', + 'datetime.c', + 'dt_common.c', + 'interval.c', + 'numeric.c', + 'timestamp.c', +) + +export_file = custom_target('libpq.exports', kwargs: gen_export_kwargs) + +ecpg_pgtypes = both_libraries('libpgtypes', + ecpg_pgtypes_sources, + include_directories: ['.', ecpg_inc, postgres_inc], + c_args: ['-DSO_MAJOR_VERSION=3'], + dependencies: [frontend_code], + version: '3.' + pg_version_major.to_string(), + soversion: host_system != 'windows' ? '3' : '', + darwin_versions: ['3', '3.' + pg_version_major.to_string()], + link_args: export_fmt.format(export_file.full_path()), + link_depends: export_file, + kwargs: default_lib_args, +) +ecpg_targets += [ecpg_pgtypes.get_shared_lib(), ecpg_pgtypes.get_static_lib()] + +pkgconfig.generate( + ecpg_pgtypes.get_shared_lib(), + description: 'PostgreSQL libpgtypes library', + url: pg_url, +) diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build new file mode 100644 index 00000000000..1be49c8c27f --- /dev/null +++ b/src/interfaces/ecpg/preproc/meson.build @@ -0,0 +1,104 @@ +ecpg_sources = files( + '../ecpglib/typename.c', + 'c_keywords.c', + 'descriptor.c', + 'ecpg.c', + 'ecpg_keywords.c', + 'keywords.c', + 'output.c', + 'parser.c', + 'type.c', + 'variable.c', +) + +pgc = custom_target('pgc.c', + input: 'pgc.l', + output: 'pgc.c', + command: flex_cmd, +) +generated_sources += pgc +ecpg_sources += pgc + +ecpg_files = [ + 'ecpg.addons', + 'ecpg.header', + 'ecpg.tokens', + 'ecpg.trailer', + 'ecpg.type', +] + +preproc_y = custom_target('preproc.y', + input: [ + '../../../backend/parser/gram.y', + ecpg_files, + ], + output: ['preproc.y'], + command: [ + perl, files('parse.pl'), + '--srcdir', '@CURRENT_SOURCE_DIR@', + '--parser', '@INPUT0@', + '--output', '@OUTPUT0@', + ], +) +generated_sources += preproc_y + +check_rules = custom_target('preproc.y.check_rules', + input: [ + '../../../backend/parser/gram.y', + ecpg_files, + ], + output: 'preproc.y.check_rules', + command: [ + perl, files('check_rules.pl'), + '--srcdir', '@CURRENT_SOURCE_DIR@', + '--parser', '@INPUT0@', + '--stamp', '@OUTPUT0@', + ], +) + +preproc = custom_target('preproc.c', + input: preproc_y, + kwargs: bison_kw, +) +generated_sources += preproc.to_list() +ecpg_sources += preproc + +c_kwlist = custom_target('c_kwlist_d.h', + input: ['c_kwlist.h'], + output: ['c_kwlist_d.h'], + depends: check_rules, + command: [ + perl, + '-I', '@SOURCE_ROOT@/src/tools', + '@SOURCE_ROOT@/src/tools/gen_keywordlist.pl', + '--output', '@OUTDIR@', + '--varname', 'ScanCKeywords', + '--no-case-fold', '@INPUT0@', + ], +) +generated_sources += c_kwlist +ecpg_sources += c_kwlist + +ecpg_kwlist = custom_target('ecpg_kwlist_d.h', + input: ['ecpg_kwlist.h'], + output: ['ecpg_kwlist_d.h'], + command: [ + perl, '-I', + '@SOURCE_ROOT@/src/tools', + '@SOURCE_ROOT@/src/tools/gen_keywordlist.pl', + '--output', '@OUTDIR@', + '--varname', 'ScanECPGKeywords', '@INPUT0@', + ] +) +generated_sources += ecpg_kwlist +ecpg_sources += ecpg_kwlist + +ecpg_exe = executable('ecpg', + ecpg_sources, + include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], + dependencies: [frontend_code], + kwargs: default_bin_args, +) +ecpg_targets += ecpg_exe + +subdir('po', if_found: libintl) diff --git a/src/interfaces/ecpg/preproc/po/meson.build b/src/interfaces/ecpg/preproc/po/meson.build new file mode 100644 index 00000000000..d73b05afd5e --- /dev/null +++ b/src/interfaces/ecpg/preproc/po/meson.build @@ -0,0 +1 @@ +i18n.gettext('ecpg-' + pg_version_major.to_string()) diff --git a/src/interfaces/ecpg/test/compat_informix/meson.build b/src/interfaces/ecpg/test/compat_informix/meson.build new file mode 100644 index 00000000000..6bb0d980761 --- /dev/null +++ b/src/interfaces/ecpg/test/compat_informix/meson.build @@ -0,0 +1,31 @@ +pgc_files = [ + 'charfuncs', + 'dec_test', + 'describe', + 'rfmtdate', + 'rfmtlong', + 'rnull', + 'sqlda', + 'test_informix', + 'test_informix2', +] + +pgc_extra_flags = { + 'rnull': ['-r', 'no_indicator',], +} + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + command: ecpg_preproc_test_command_start + + ['-C', 'INFORMIX',] + + pgc_extra_flags.get(pgc_file, []) + + ecpg_preproc_test_command_end, + kwargs: ecpg_preproc_kw, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw, + ) +endforeach diff --git a/src/interfaces/ecpg/test/compat_oracle/meson.build b/src/interfaces/ecpg/test/compat_oracle/meson.build new file mode 100644 index 00000000000..2e8794ba386 --- /dev/null +++ b/src/interfaces/ecpg/test/compat_oracle/meson.build @@ -0,0 +1,20 @@ +pgc_files = [ + 'char_array', +] + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + output: '@[email protected]', + command: ecpg_preproc_test_command_start + + ['-C', 'ORACLE',] + + ecpg_preproc_test_command_end, + install: false, + build_by_default: false, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw, + ) +endforeach diff --git a/src/interfaces/ecpg/test/connect/meson.build b/src/interfaces/ecpg/test/connect/meson.build new file mode 100644 index 00000000000..0b1c3593146 --- /dev/null +++ b/src/interfaces/ecpg/test/connect/meson.build @@ -0,0 +1,20 @@ +pgc_files = [ + 'test1', + 'test2', + 'test3', + 'test4', + 'test5', +] + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + command: ecpg_preproc_test_command_start + ecpg_preproc_test_command_end, + kwargs: ecpg_preproc_kw, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw, + ) +endforeach diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build new file mode 100644 index 00000000000..f0ace641f0c --- /dev/null +++ b/src/interfaces/ecpg/test/meson.build @@ -0,0 +1,84 @@ +# can't run ecpg to build test dependencies, at least not without an emulator +if meson.is_cross_build() + subdir_done() +endif + +pg_regress_ecpg_sources = pg_regress_c + files( + 'pg_regress_ecpg.c', +) + +pg_regress_ecpg = executable('pg_regress_ecpg', + pg_regress_ecpg_sources, + c_args: pg_regress_cflags, + include_directories: [pg_regress_inc, include_directories('.')], + dependencies: [frontend_code], + kwargs: default_bin_args + { + 'install': false + }, +) +testprep_targets += pg_regress_ecpg + +# create .c files and executables from .pgc files +ecpg_test_exec_kw = { + 'dependencies': [frontend_code, libpq], + 'include_directories': [ecpg_inc], + 'link_with': [ecpglib, ecpg_compat, ecpg_pgtypes], + 'build_by_default': false, + 'install': false, +} + +ecpg_preproc_kw = { + 'output': '@[email protected]', + 'install': false, + 'build_by_default': false, +} + +ecpg_preproc_test_command_start = [ + ecpg_exe, + '--regression', + '-I@CURRENT_SOURCE_DIR@', + '-I@SOURCE_ROOT@' + '/src/interfaces/ecpg/include/', +] +ecpg_preproc_test_command_end = [ + '-o', '@OUTPUT@', '@INPUT@' +] + +ecpg_test_dependencies = [] + +subdir('compat_informix') +subdir('compat_oracle') +subdir('connect') +subdir('pgtypeslib') +subdir('preproc') +subdir('sql') +subdir('thread') + +testprep_targets += ecpg_test_dependencies + +ecpg_test_files = files( + 'ecpg_schedule', +) + +ecpg_regress_args = [ + '--dbname=ecpg1_regression,ecpg2_regression', + '--create-role=regress_ecpg_user1,regress_ecpg_user2', + '--encoding=SQL_ASCII', +] + +tests += { + 'name': 'ecpg', + 'sd': meson.current_source_dir(), + 'bd': meson.current_build_dir(), + 'ecpg': { + 'expecteddir': meson.current_source_dir(), + 'inputdir': meson.current_build_dir(), + 'schedule': ecpg_test_files, + 'sql': [ + 'sql/twophase', + ], + 'test_kwargs': { + 'depends': ecpg_test_dependencies, + }, + 'regress_args': ecpg_regress_args, + }, +} diff --git a/src/interfaces/ecpg/test/pgtypeslib/meson.build b/src/interfaces/ecpg/test/pgtypeslib/meson.build new file mode 100644 index 00000000000..2957f12abfc --- /dev/null +++ b/src/interfaces/ecpg/test/pgtypeslib/meson.build @@ -0,0 +1,21 @@ +pgc_files = [ + 'dt_test', + 'dt_test2', + 'num_test', + 'num_test2', + 'nan_test', +] + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + command: ecpg_preproc_test_command_start + + ecpg_preproc_test_command_end, + kwargs: ecpg_preproc_kw, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw, + ) +endforeach diff --git a/src/interfaces/ecpg/test/preproc/meson.build b/src/interfaces/ecpg/test/preproc/meson.build new file mode 100644 index 00000000000..0608df2f2a2 --- /dev/null +++ b/src/interfaces/ecpg/test/preproc/meson.build @@ -0,0 +1,37 @@ +pgc_files = [ + 'array_of_struct', + 'autoprep', + 'comment', + 'cursor', + 'define', + 'init', + 'outofscope', + 'pointer_to_struct', + 'strings', + 'type', + 'variable', + 'whenever', + 'whenever_do_continue', +] + +pgc_extra_flags = { + 'array_of_struct': ['-c'], + 'pointer_to_struct': ['-c'], + 'autoprep': ['-r', 'prepare'], + 'strings': ['-i'], +} + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + command: ecpg_preproc_test_command_start + + pgc_extra_flags.get(pgc_file, []) + + ecpg_preproc_test_command_end, + kwargs: ecpg_preproc_kw, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw, + ) +endforeach diff --git a/src/interfaces/ecpg/test/sql/meson.build b/src/interfaces/ecpg/test/sql/meson.build new file mode 100644 index 00000000000..bec7d4ed8f6 --- /dev/null +++ b/src/interfaces/ecpg/test/sql/meson.build @@ -0,0 +1,46 @@ +pgc_files = [ + 'array', + 'binary', + 'bytea', + 'code100', + 'copystdout', + 'createtableas', + 'declare', + 'define', + 'desc', + 'describe', + 'dynalloc', + 'dynalloc2', + 'dyntest', + 'execute', + 'fetch', + 'func', + 'indicators', + 'insupd', + 'oldexec', + 'parser', + 'prepareas', + 'quote', + 'show', + 'sqlda', + 'twophase', +] + +pgc_extra_flags = { + 'oldexec': ['-r', 'questionmarks'], +} + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + command: ecpg_preproc_test_command_start + + pgc_extra_flags.get(pgc_file, []) + + ecpg_preproc_test_command_end, + kwargs: ecpg_preproc_kw, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw, + ) +endforeach diff --git a/src/interfaces/ecpg/test/thread/meson.build b/src/interfaces/ecpg/test/thread/meson.build new file mode 100644 index 00000000000..2f1629e266b --- /dev/null +++ b/src/interfaces/ecpg/test/thread/meson.build @@ -0,0 +1,21 @@ +pgc_files = [ + 'thread_implicit', + 'thread', + 'prep', + 'descriptor', + 'alloc', +] + +foreach pgc_file : pgc_files + exe_input = custom_target('@[email protected]'.format(pgc_file), + input: '@[email protected]'.format(pgc_file), + command: ecpg_preproc_test_command_start + + ecpg_preproc_test_command_end, + kwargs: ecpg_preproc_kw, + ) + + ecpg_test_dependencies += executable(pgc_file, + exe_input, + kwargs: ecpg_test_exec_kw + {'dependencies': [frontend_code, libpq, thread_dep,]}, + ) +endforeach |