From 8abad851f8ef1c72d9355f20cf195b25a67f3a24 Mon Sep 17 00:00:00 2001 From: Guilherme Janczak Date: Tue, 6 Jul 2021 11:02:49 +0000 Subject: [PATCH 1/2] add the Meson build system --- meson.build | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 meson.build diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..4394275 --- /dev/null +++ b/meson.build @@ -0,0 +1,40 @@ +project('xclip', 'c', + version : '0.13', + default_options : ['warning_level=3', 'c_std=c99', 'b_lto=true']) + +add_project_arguments(['-DPACKAGE_NAME="xclip"', + '-DPACKAGE_VERSION=' + '"' + meson.project_version() + '"'], + language : 'c') + + +dep = [dependency('x11'), dependency('xmu')] +inc = [include_directories('.')] +cc = meson.get_compiler('c') +iconv_inc = include_directories(get_option('prefix') / get_option('includedir')) +iconv_dep = cc.find_library('iconv', + dirs : get_option('prefix') / get_option('libdir'), + has_headers : 'iconv.h', + header_include_directories : iconv_inc, + required : false) +if iconv_dep.found() == true + dep += iconv_dep + inc += iconv_inc + add_project_arguments('-DHAVE_ICONV', language : 'c') +endif + +executable('xclip', + ['xclib.c', 'xclip.c', 'xcprint.c'], + include_directories : inc, + dependencies : dep, + install : true) + +borked_test = executable('borked', + ['borked.c', 'xclib.c', 'xcprint.c'], + include_directories : inc, + dependencies : dep) +test('borked', borked_test) + +install_data(['xclip-copyfile', 'xclip-cutfile', 'xclip-pastefile'], + install_dir : get_option('prefix') / get_option('bindir')) +install_man(['xclip-copyfile.1', 'xclip.1']) + From 5413f091d8ae7bcb48970bf35271a97df0a076f4 Mon Sep 17 00:00:00 2001 From: Guilherme Janczak Date: Thu, 8 Jul 2021 11:14:12 +0000 Subject: [PATCH 2/2] use libc iconv even when libiconv is available --- meson.build | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/meson.build b/meson.build index 4394275..9de227a 100644 --- a/meson.build +++ b/meson.build @@ -9,16 +9,28 @@ add_project_arguments(['-DPACKAGE_NAME="xclip"', dep = [dependency('x11'), dependency('xmu')] inc = [include_directories('.')] + cc = meson.get_compiler('c') -iconv_inc = include_directories(get_option('prefix') / get_option('includedir')) -iconv_dep = cc.find_library('iconv', - dirs : get_option('prefix') / get_option('libdir'), - has_headers : 'iconv.h', - header_include_directories : iconv_inc, - required : false) -if iconv_dep.found() == true - dep += iconv_dep - inc += iconv_inc +if cc.has_function('iconv_open') == true + # #define LIBICONV_PLUG prevents a header conflict when the system + # provides the iconv library and its iconv.h header, and libiconv is installed + # at the same time. + add_project_arguments('-DLIBICONV_PLUG', language : 'c') + iconv_available = true +else + iconv_inc = include_directories(get_option('prefix') / get_option('includedir')) + iconv_dep = cc.find_library('iconv', + dirs : get_option('prefix') / get_option('libdir'), + has_headers : 'iconv.h', + header_include_directories : iconv_inc, + required : false) + iconv_available = iconv_dep.found() + if iconv_available == true + inc += iconv_inc + dep += iconv_dep + endif +endif +if iconv_available == true add_project_arguments('-DHAVE_ICONV', language : 'c') endif @@ -37,4 +49,3 @@ test('borked', borked_test) install_data(['xclip-copyfile', 'xclip-cutfile', 'xclip-pastefile'], install_dir : get_option('prefix') / get_option('bindir')) install_man(['xclip-copyfile.1', 'xclip.1']) -