2016-12-14 00:12:03 +03:00
|
|
|
project('hexchat', 'c',
|
2019-12-21 09:38:06 +03:00
|
|
|
version: '2.14.3',
|
2018-09-01 23:49:40 +03:00
|
|
|
meson_version: '>= 0.40.0',
|
2016-12-14 00:12:03 +03:00
|
|
|
default_options: [
|
|
|
|
'c_std=gnu89',
|
|
|
|
'buildtype=debugoptimized',
|
|
|
|
'warning_level=1',
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
i18n = import('i18n')
|
|
|
|
gnome = import('gnome')
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
|
|
|
|
|
|
|
|
libgio_dep = dependency('gio-2.0', version: '>= 2.34.0')
|
|
|
|
libgmodule_dep = dependency('gmodule-2.0')
|
2018-03-06 03:25:08 +03:00
|
|
|
global_deps = []
|
2016-12-14 00:12:03 +03:00
|
|
|
if cc.get_id() == 'msvc'
|
|
|
|
libssl_dep = cc.find_library('libeay32')
|
|
|
|
else
|
|
|
|
libssl_dep = dependency('openssl', version: '>= 0.9.8',
|
|
|
|
required: get_option('with-ssl'))
|
|
|
|
endif
|
|
|
|
|
|
|
|
config_h = configuration_data()
|
|
|
|
config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
|
|
|
|
config_h.set_quoted('PACKAGE_NAME', meson.project_name())
|
|
|
|
config_h.set_quoted('GETTEXT_PACKAGE', 'hexchat')
|
|
|
|
config_h.set_quoted('LOCALEDIR', join_paths(get_option('prefix'),
|
|
|
|
get_option('datadir'), 'locale'))
|
|
|
|
config_h.set10('ENABLE_NLS', true)
|
|
|
|
|
|
|
|
# Optional features
|
|
|
|
config_h.set('USE_OPENSSL', get_option('with-ssl'))
|
|
|
|
config_h.set('USE_LIBPROXY', get_option('with-libproxy'))
|
|
|
|
config_h.set('USE_LIBCANBERRA', get_option('with-libcanberra'))
|
|
|
|
config_h.set('USE_DBUS', get_option('with-dbus'))
|
|
|
|
config_h.set('USE_PLUGIN', get_option('with-plugin'))
|
|
|
|
|
|
|
|
config_h.set('G_DISABLE_SINGLE_INCLUDES', true)
|
|
|
|
config_h.set('GTK_DISABLE_DEPRECATED', true)
|
|
|
|
config_h.set('GTK_DISABLE_SINGLE_INCLUDES', true)
|
|
|
|
config_h.set('GDK_PIXBUF_DISABLE_SINGLE_INCLUDES', true)
|
|
|
|
config_h.set('GLIB_VERSION_MAX_ALLOWED', 'GLIB_VERSION_2_34')
|
|
|
|
config_h.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_2_34')
|
|
|
|
|
|
|
|
# Detected features
|
|
|
|
config_h.set('HAVE_MEMRCHR', cc.has_function('memrchr'))
|
|
|
|
config_h.set('HAVE_STRINGS_H', cc.has_header('strings.h'))
|
|
|
|
|
|
|
|
if libssl_dep.found()
|
|
|
|
config_h.set('HAVE_X509_GET_SIGNATURE_NID',
|
|
|
|
cc.has_function('X509_get_signature_nid', dependencies: libssl_dep)
|
|
|
|
)
|
|
|
|
config_h.set('HAVE_SSL_CTX_GET_SSL_METHOD',
|
|
|
|
cc.has_function('SSL_CTX_get_ssl_method', dependencies: libssl_dep)
|
|
|
|
)
|
|
|
|
config_h.set('HAVE_DH_SET0_PQG',
|
|
|
|
cc.has_function('DH_set0_pqg', dependencies: libssl_dep)
|
|
|
|
)
|
|
|
|
config_h.set('HAVE_DH_GET0_KEY',
|
|
|
|
cc.has_function('DH_get0_key', dependencies: libssl_dep)
|
|
|
|
)
|
|
|
|
config_h.set('HAVE_DH_SET0_KEY',
|
|
|
|
cc.has_function('DH_set0_key', dependencies: libssl_dep)
|
|
|
|
)
|
2017-06-15 07:26:43 +03:00
|
|
|
config_h.set('HAVE_ERR_REMOVE_THREAD_STATE',
|
|
|
|
cc.has_function('ERR_remove_thread_state', dependencies: libssl_dep)
|
|
|
|
)
|
|
|
|
config_h.set('HAVE_ASN1_STRING_GET0_DATA',
|
|
|
|
cc.has_function('ASN1_STRING_get0_data', dependencies: libssl_dep)
|
|
|
|
)
|
2016-12-14 00:12:03 +03:00
|
|
|
endif
|
|
|
|
|
|
|
|
configure_file(output: 'config.h', configuration: config_h)
|
|
|
|
config_h_include = include_directories('.')
|
|
|
|
|
|
|
|
if host_machine.system() == 'windows'
|
2018-03-06 03:25:08 +03:00
|
|
|
add_project_arguments(
|
|
|
|
'-DWIN32',
|
|
|
|
'-DNTDDI_VERSION=NTDDI_WIN7',
|
|
|
|
'-D_WIN32_WINNT=_WIN32_WINNT_WIN7',
|
|
|
|
language: 'c')
|
2016-12-14 00:12:03 +03:00
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
global_cflags = []
|
|
|
|
test_cflags = [
|
|
|
|
'-funsigned-char',
|
|
|
|
'-Wno-conversion',
|
|
|
|
'-Wno-pointer-sign',
|
|
|
|
'-Wno-padded',
|
|
|
|
'-Wno-unused-parameter',
|
|
|
|
'-Wno-missing-prototypes',
|
|
|
|
'-Winline',
|
|
|
|
'-Wstrict-prototypes',
|
|
|
|
'-Werror=implicit-function-declaration',
|
|
|
|
'-Werror=pointer-arith',
|
|
|
|
'-Werror=init-self',
|
|
|
|
['-Werror=format-security', '-Werror=format=1'],
|
|
|
|
'-Werror=missing-include-dirs',
|
|
|
|
'-Werror=date-time',
|
|
|
|
]
|
|
|
|
foreach cflag : test_cflags
|
|
|
|
if cc.has_multi_arguments(cflag)
|
|
|
|
global_cflags += cflag
|
|
|
|
endif
|
|
|
|
endforeach
|
2017-06-26 23:38:03 +03:00
|
|
|
if get_option('buildtype') != 'plain'
|
|
|
|
if cc.has_argument('-fstack-protector-strong') and cc.links('''
|
|
|
|
int main (void) {
|
|
|
|
char buffer[16];
|
|
|
|
strcpy(buffer, "foo");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
''', args: '-fstack-protector-all')
|
|
|
|
global_cflags += '-fstack-protector-strong'
|
2018-03-06 03:25:08 +03:00
|
|
|
|
|
|
|
if host_machine.system() == 'windows'
|
|
|
|
global_deps += cc.find_library('ssp')
|
|
|
|
endif
|
2017-06-26 23:38:03 +03:00
|
|
|
endif
|
|
|
|
endif
|
2016-12-14 00:12:03 +03:00
|
|
|
add_project_arguments(global_cflags, language: 'c')
|
|
|
|
|
2017-06-26 23:38:03 +03:00
|
|
|
|
|
|
|
global_ldflags = []
|
|
|
|
test_ldflags = [
|
|
|
|
'-Wl,-z,relro',
|
|
|
|
'-Wl,-z,now',
|
2018-03-06 03:25:08 +03:00
|
|
|
# mingw
|
|
|
|
'-Wl,--dynamicbase',
|
|
|
|
'-Wl,--nxcompat',
|
2017-06-26 23:38:03 +03:00
|
|
|
]
|
|
|
|
foreach ldflag : test_ldflags
|
2018-09-01 23:49:40 +03:00
|
|
|
if meson.version().version_compare('>= 0.46.0')
|
|
|
|
has_arg = cc.has_link_argument(ldflag)
|
|
|
|
else
|
|
|
|
has_arg = cc.has_argument(ldflag)
|
|
|
|
endif
|
|
|
|
|
|
|
|
if has_arg and cc.links('int main (void) { return 0; }', args: ldflag)
|
2017-06-26 23:38:03 +03:00
|
|
|
global_ldflags += ldflag
|
|
|
|
endif
|
|
|
|
endforeach
|
|
|
|
add_project_link_arguments(global_ldflags, language: 'c')
|
2016-12-14 00:12:03 +03:00
|
|
|
|
|
|
|
subdir('src')
|
|
|
|
if get_option('with-plugin')
|
|
|
|
subdir('plugins')
|
|
|
|
endif
|
|
|
|
if cc.get_id() != 'msvc'
|
|
|
|
subdir('data')
|
|
|
|
subdir('po') # FIXME: build xgettext
|
|
|
|
|
|
|
|
meson.add_install_script('meson_post_install.py',
|
|
|
|
'@0@'.format(get_option('with-theme-manager'))
|
|
|
|
)
|
|
|
|
endif
|