diff --git a/project.conf b/project.conf index ff27b97..de50cd8 100644 --- a/project.conf +++ b/project.conf @@ -9,7 +9,7 @@ targets=tests #targets [tests] type=command -command=cd tests && (if [ -n "$(OBJDIR)" ]; then $(MAKE) OBJDIR="$(OBJDIR)tests/" "$(OBJDIR)tests/fixme.log" "$(OBJDIR)tests/shlint.log" "$(OBJDIR)tests/tests.log"; else $(MAKE) fixme.log shlint.log tests.log; fi) +command=cd tests && (if [ -n "$(OBJDIR)" ]; then $(MAKE) OBJDIR="$(OBJDIR)tests/" "$(OBJDIR)tests/fixme.log" "$(OBJDIR)tests/pkgconfig.log" "$(OBJDIR)tests/shlint.log" "$(OBJDIR)tests/tests.log"; else $(MAKE) fixme.log pkgconfig.log shlint.log tests.log; fi) depends=all enabled=0 phony=1 diff --git a/tests/pkgconfig.sh b/tests/pkgconfig.sh index 9bbb8de..f25b8c3 100755 --- a/tests/pkgconfig.sh +++ b/tests/pkgconfig.sh @@ -23,18 +23,39 @@ #OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #variables -PACKAGE="libApp" +CONFIGSH="${0%/pkgconfig.sh}/../config.sh" PKG_CONFIG_PATH="$OBJDIR../data:$PKG_CONFIG_PATH" PKG_CONFIG_PATH="${PKG_CONFIG_PATH%:}" +PROGNAME="pkgconfig.sh" #executables ECHO="echo" PKGCONFIG="pkg-config" UNAME="uname" [ "$($UNAME -s)" != "Darwin" ] || ECHO="/bin/echo" +[ -f "$CONFIGSH" ] && . "$CONFIGSH" + + +#functions +#pkgconfig _pkgconfig() -{ +{( + ret=0 + + _pkgconfig_do "EXISTS:" --exists "$PACKAGE" || return 2 + + _pkgconfig_do "VERSION:" --modversion "$PACKAGE" || ret=3 + _pkgconfig_do "CFLAGS: " --cflags "$PACKAGE" || ret=4 + _pkgconfig_do "LIBS: " --libs "$PACKAGE" || ret=5 + _pkgconfig_do "PROVIDES:" --print-provides "$PACKAGE" || ret=6 + _pkgconfig_do "REQUIRES:" --print-requires "$PACKAGE" || ret=7 + return $ret +)} + +_pkgconfig_do() +{( ret=0 caption="$1" options="$2" @@ -45,16 +66,55 @@ _pkgconfig() ret=$? echo "$output" return $ret +)} + + +#usage +_usage() +{ + echo "Usage: $PROGNAME [-c] target..." 1>&2 + return 1 } -_pkgconfig "EXISTS:" --exists "$PACKAGE" || exit 2 +#main +clean=0 +while getopts "cO:P:" name; do + case "$name" in + c) + clean=1 + ;; + O) + export "${OPTARG%%=*}"="${OPTARG#*=}" + ;; + P) + #XXX ignored for compatibility + ;; + ?) + _usage + exit $? + ;; + esac +done +shift $((OPTIND - 1)) +if [ $# -lt 1 ]; then + _usage + exit $? +fi + +#clean +[ $clean -ne 0 ] && exit 0 + +exec 3>&1 ret=0 +while [ $# -gt 0 ]; do + target="$1" + dirname="${target%/*}" + shift -_pkgconfig "VERSION:" --modversion "$PACKAGE" || ret=3 -_pkgconfig "CFLAGS: " --cflags "$PACKAGE" || ret=4 -_pkgconfig "LIBS: " --libs "$PACKAGE" || ret=5 -_pkgconfig "PROVIDES:" --print-provides "$PACKAGE" || ret=6 -_pkgconfig "REQUIRES:" --print-requires "$PACKAGE" || ret=7 - + if [ -n "$dirname" -a "$dirname" != "$target" ]; then + $MKDIR -- "$dirname" || ret=$? + fi + _pkgconfig > "$target" || ret=$? +done exit $ret diff --git a/tests/project.conf b/tests/project.conf index cbb3e23..25c348e 100644 --- a/tests/project.conf +++ b/tests/project.conf @@ -1,4 +1,4 @@ -targets=AppBroker,Dummy.h,appclient,appinterface,appmessage,appserver,fixme.log,includes,lookup,shlint.log,tests.log,transport +targets=AppBroker,Dummy.h,appclient,appinterface,appmessage,appserver,fixme.log,includes,lookup,pkgconfig.log,shlint.log,tests.log,transport cppflags_force=-I../include -I. -I$(OBJDIR). cflags_force=`pkg-config --cflags libSystem` cflags=-W -Wall -g -O2 -fPIE -D_FORTIFY_SOURCE=2 -fstack-protector @@ -52,6 +52,12 @@ sources=includes.c type=binary sources=lookup.c +[pkgconfig.log] +type=script +script=./pkgconfig.sh +depends=$(OBJDIR)../data/libApp.pc,pkgconfig.sh +enabled=0 + [shlint.log] type=script script=./shlint.sh @@ -61,7 +67,7 @@ enabled=0 [tests.log] type=script script=./tests.sh -depends=Test.expected,Test.interface,$(OBJDIR)AppBroker$(EXEEXT),appbroker.sh,$(OBJDIR)appclient$(EXEEXT),$(OBJDIR)appmessage$(EXEEXT),$(OBJDIR)appserver$(EXEEXT),$(OBJDIR)includes$(EXEEXT),$(OBJDIR)lookup$(EXEEXT),pkgconfig.sh,tests.sh,$(OBJDIR)transport$(EXEEXT),../src/transport/tcp.c,../src/transport/udp.c +depends=Test.expected,Test.interface,$(OBJDIR)AppBroker$(EXEEXT),appbroker.sh,$(OBJDIR)appclient$(EXEEXT),$(OBJDIR)appmessage$(EXEEXT),$(OBJDIR)appserver$(EXEEXT),$(OBJDIR)includes$(EXEEXT),$(OBJDIR)lookup$(EXEEXT),tests.sh,$(OBJDIR)transport$(EXEEXT),../src/transport/tcp.c,../src/transport/udp.c enabled=0 [transport] diff --git a/tests/tests.sh b/tests/tests.sh index a2d4203..a9e067d 100755 --- a/tests/tests.sh +++ b/tests/tests.sh @@ -162,7 +162,6 @@ while [ $# -ne 0 ]; do -n "tcp4:localhost:4242" APPSERVER_Session="tcp:localhost:4242" _test "lookup" \ "lookup Session" -a "Session" - _test "pkgconfig.sh" "pkg-config" _test "transport" "tcp4 127.0.0.1:4242" -p tcp4 127.0.0.1:4242 _test "transport" "tcp4 localhost:4242" -p tcp4 localhost:4242 _test "transport" "tcp6 ::1.4242" -p tcp6 ::1.4242