#! /bin/sh # -*- Mode: Shell-script -*- # ---------------------------------------------------------------------- # library.test --- test library options # # Time-stamp: "2007-07-04 10:11:51 bkorb" # Author: Bruce Korb ## ## This file is part of AutoOpts, a companion to AutoGen. ## AutoOpts is free software. ## AutoOpts is copyright (c) 1992-2007 by Bruce Korb - all rights reserved ## ## AutoOpts is available under any one of two licenses. The license ## in use must be one of these two and the choice is under the control ## of the user of the license. ## ## The GNU Lesser General Public License, version 3 or later ## See the files "COPYING.lgplv3" and "COPYING.gplv3" ## ## The Modified Berkeley Software Distribution License ## See the file "COPYING.mbsd" ## ## These files have the following md5sums: ## ## 239588c55c22c60ffe159946a760a33e pkg/libopts/COPYING.gplv3 ## fa82ca978890795162346e661b47161a pkg/libopts/COPYING.lgplv3 ## 66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd # # $Id: library.test,v 1.6 2007/07/04 21:36:39 bkorb Exp $ # ---------------------------------------------------------------------- . ./defs # # # # # # # # # # DEFINITIONS FILE # # # # # # # # # DEND=\<\<'- _DESC_END_' cat > ${testname}-libopts.def <<- _EODefs_ flag = { name = zzyzx-opts; documentation; lib-name = zzyzx; descrip = ${DEND} This option introduces the options for the zzyzx library. _DESC_END_; }; flag = { name = library; value = c; ifdef = LIBOPTS; descrip = "library test"; doc = mumble; }; _EODefs_ cat > ${testname}-lib.def <<- _EODefs_ AutoGen definitions options; prog-name = ${testname}; prog-title = lib-${testname}; config-header = 'config.h'; library; #include ${testname}-libopts.def _EODefs_ cat > ${testname}-prog.def <<- _EOF_ AutoGen definitions options; prog-name = test-lib-prog; prog-title = 'Test ${testname} Program'; config-header = 'config.h'; flag = { name = program; value = p; descrip = "${testname} program test"; doc = stumble; }; #include ${testname}-libopts.def _EOF_ echo ${AG_L} ${testname}-lib.def ${AG_L} ${testname}-lib.def || \ failure AutoGen could not process ${testname}-lib.def echo ${AG_L} ${testname}-prog.def ${AG_L} ${testname}-prog.def || \ failure AutoGen could not process ${testname}-prog.def for f in lib prog do sed -e '1,/include /d' \ -e '/endif .* AUTOOPTS_.*_H_GUARD/,$d' \ -e 's/near line [0-9]*/near line XXX/' \ ${testname}-${f}.h > ${testname}-${f}.h-res || \ failure could not sed ${testname}-${f}.h done # # # # # # # # # # TEST PROGRAM # # # # # # # # # # cat > ${testname}-lib.c <<- _EOCode_ #include #define LIBOPTS #include "${testname}-lib.h" void check_library_opt( void ); void check_library_opt( void ) { if (HAVE_OPT(LIBRARY)) return; exit( EXIT_FAILURE ); } _EOCode_ test $? -eq 0 || failure cannot create ${testname}-lib.c ${CC} ${CFLAGS} ${INC} -o ${testname}-lib.o -c ${testname}-lib.c test $? -eq 0 || failure cannot compile ${testname}-lib.c cat > ${testname}-main.c <<- _EOCode_ #include #include #define LIBOPTS #include "${testname}-prog.c" extern void check_library_opt( void ); int main( int argc, char** argv ) { (void)optionProcess( &test_lib_progOptions, argc, argv ); check_library_opt(); return EXIT_SUCCESS; } _EOCode_ ${CC} ${CFLAGS} ${INC} -o ${testname} ${testname}-main.c ${testname}-lib.o ${LIB} test $? -eq 0 || failure cannot compile ${testname}-main.c ./${testname} -c || failure library option not detected # # # # # # # # # # HELP OUTPUT # # # # # # # # # # ./${testname} -? > ${testname}.help-sample cat > ${testname}.help-base <<- _EOHelp_ test-lib-prog - Test library Program USAGE: library [ - ]... Flg Arg Option-Name Description -p no program library program test This option introduces the options for the zzyzx library. Flg Arg Option-Name Description -c no library library test version and help options: Flg Arg Option-Name Description -? no help Display usage information and exit -! no more-help Extended usage information passed thru pager _EOHelp_ cmp ${testname}.help-* || \ failure "help output mismatch: `diff ${testname}.help-*`" cleanup ## Local Variables: ## Mode: shell-script ## indent-tabs-mode: nil ## sh-indentation: 2 ## End: # end of library.test