dnl Copyright © 2014-2015, 2018-2019, 2021 Nick Bowler dnl dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. dnl This is free software: you are free to do what the fuck you want to. dnl There is NO WARRANTY, to the extent permitted by law. AT_BANNER([Autoconf macros]) dnl Verify that the DX_BASEDIR macro expands correctly during argument dnl collection. Crucially, the output must not contain any other text. AT_SETUP([DX_BASEDIR during argument collection]) AT_KEYWORDS([DX_BASEDIR macro]) AT_DATA([test.in], [[@TEST@ ]]) TEST_CONFIGURE_AC( [[AC_SUBST([TEST], 'm4@&t@_dquote(DX_BASEDIR)') AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF TEST_CONFIGURE printf '%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \ -e 's:\(.\)//*:\1/:g' >expout AT_CHECK([cat test], [0], [expout]) AT_CLEANUP dnl Verify that DX_BASEDIR is correctly AC_SUBSTed AT_SETUP([DX_BASEDIR output substitution]) AT_KEYWORDS([DX_BASEDIR macro]) AT_DATA([test.in], [[@DX_BASEDIR@ ]]) TEST_CONFIGURE_AC( [[DX_INIT AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF TEST_CONFIGURE printf '${top_srcdir}/%s\n' "$srcdir" | sed -e 's:/\./:/:g' -e 's:/\.$::g' \ -e 's:\(.\)//*:\1/:g' >expout AT_CHECK([cat test], [0], [expout]) AT_CLEANUP dnl Verify that DX_BASEDIR is set correctly implicitly AT_SETUP([DX_BASEDIR implicit definition]) AT_KEYWORDS([DX_BASEDIR macro]) AT_DATA([test.in], [[@DX_BASEDIR@ ]]) TEST_CONFIGURE_AC( [[DX_EXPORTED_SH AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF TEST_CONFIGURE AT_CLEANUP AT_SETUP([DX_COMMAND_OUTPUT]) AT_KEYWORDS([DX_COMMAND_OUTPUT macro]) AT_DATA([expout], [[ leading whitespace trailing whitespace @&t@ embedded\ backslashes @&t@ backslash\ newline ]]) TEST_CONFIGURE_AC( [[DX_COMMAND_OUTPUT([var], [cat expout]) AS@&t@_ECHO(["$var"]) >test.out ]]) TEST_AUTORECONF TEST_CONFIGURE AT_CHECK([cat test.out], [0], [expout]) AT_CLEANUP AT_SETUP([DX_DO quoting]) AT_KEYWORDS([DX_DO macro]) TEST_CONFIGURE_AC( [[m4@&t@_define([FOO]) :; { DX_DO([AS@&t@_ECHO_N(["[FOO]"])], [AS@&t@_ECHO_N(["[FOO]"])], [AS@&t@_ECHO(["[FOO]"])]) } >test.out ]]) dnl TEST_CONFIGURE_AC( dnl [[DX_DO([AS@&t@_ECHO_N([hello,world])],[AS@&t@_ECHO_N([goodbye,world])]) dnl ]]) TEST_AUTORECONF TEST_CONFIGURE AT_CHECK([cat test.out], [0], [[FOOFOOFOO ]]) AT_CLEANUP AT_SETUP([DX_LINGUAS unused country variants]) AT_KEYWORDS([DX_LINGUAS macro]) echo : >config.rpath chmod +x config.rpath mkdir po AT_DATA([po/LINGUAS], [[en ]]) AT_DATA([test.in], [[POFILES = @POFILES@ MOFILES = @MOFILES@ ]]) TEST_CONFIGURE_AC( [[m4@&t@_traceoff([AM_GNU_GETTEXT]) AM_GNU_GETTEXT([external]) DX_LINGUAS AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF export LINGUAS='en_CA en'; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po MOFILES = po/en.mo ]]) AT_CLEANUP AT_SETUP([DX_LINGUAS default install all]) AT_KEYWORDS([DX_LINGUAS macro]) AS_UNSET([LINGUAS]) AT_SKIP_IF([test ${LINGUAS+y}]) echo : >config.rpath chmod +x config.rpath mkdir po AT_DATA([po/LINGUAS], [[en ja # a comment ko zh ]]) AT_DATA([test.in], [[POFILES = @POFILES@ MOFILES = @MOFILES@ ]]) TEST_CONFIGURE_AC( [[m4@&t@_traceoff([AM_GNU_GETTEXT]) AM_GNU_GETTEXT([external]) DX_LINGUAS AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/ja.po po/zh.po MOFILES = po/en.mo po/ja.mo po/zh.mo ]]) AT_CLEANUP AT_SETUP([DX_LINGUAS selections]) AT_KEYWORDS([DX_LINGUAS macro]) echo : >config.rpath chmod +x config.rpath mkdir po AT_DATA([po/LINGUAS], [[en ja # a comment ko zh en_US ]]) AT_DATA([test.in], [[POFILES = @POFILES@ MOFILES = @MOFILES@ ]]) TEST_CONFIGURE_AC( [[m4@&t@_traceoff([AM_GNU_GETTEXT]) AM_GNU_GETTEXT([external]) DX_LINGUAS AC_CONFIG_FILES([test]) ]]) TEST_AUTORECONF export LINGUAS="en"; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = po/en.mo ]]) export LINGUAS="en_US"; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = po/en.mo po/en_US.mo ]]) export LINGUAS="en_CA"; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = po/en.mo ]]) export LINGUAS="ja ko"; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = po/ja.mo ]]) export LINGUAS="ja ko"; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = po/ja.mo ]]) export LINGUAS="ja_JP ko_KR"; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = po/ja.mo ]]) export LINGUAS=""; TEST_CONFIGURE AT_CHECK([cat test], [0], [[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po MOFILES = @&t@ ]]) AT_CLEANUP