From d34fc34097a5c76687c18219651986f9d7cb7487 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sat, 15 Sep 2012 14:45:58 +0000 Subject: [PATCH] Preparing for more code re-use --- Makefile | 6 ++- data/.cvsignore | 1 + data/C99.pc.in | 10 ++++ data/Makefile | 27 +++++++++++ data/pkgconfig.sh | 118 ++++++++++++++++++++++++++++++++++++++++++++++ data/project.conf | 8 ++++ project.conf | 2 +- 7 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 data/.cvsignore create mode 100644 data/C99.pc.in create mode 100644 data/Makefile create mode 100755 data/pkgconfig.sh create mode 100644 data/project.conf diff --git a/Makefile b/Makefile index a108beb..95a3cf6 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PACKAGE = C99 VERSION = 0.0.0 -SUBDIRS = doc include src +SUBDIRS = data doc include src RM ?= rm -f LN ?= ln -f TAR ?= tar -czvf @@ -21,6 +21,10 @@ dist: $(RM) -r -- $(PACKAGE)-$(VERSION) $(LN) -s -- . $(PACKAGE)-$(VERSION) @$(TAR) $(PACKAGE)-$(VERSION).tar.gz -- \ + $(PACKAGE)-$(VERSION)/data/Makefile \ + $(PACKAGE)-$(VERSION)/data/C99.pc.in \ + $(PACKAGE)-$(VERSION)/data/pkgconfig.sh \ + $(PACKAGE)-$(VERSION)/data/project.conf \ $(PACKAGE)-$(VERSION)/doc/Makefile \ $(PACKAGE)-$(VERSION)/doc/GRAMMAR \ $(PACKAGE)-$(VERSION)/doc/gtkdoc.sh \ diff --git a/data/.cvsignore b/data/.cvsignore new file mode 100644 index 0000000..e8594e1 --- /dev/null +++ b/data/.cvsignore @@ -0,0 +1 @@ +C99.pc diff --git a/data/C99.pc.in b/data/C99.pc.in new file mode 100644 index 0000000..4316f29 --- /dev/null +++ b/data/C99.pc.in @@ -0,0 +1,10 @@ +prefix=@PREFIX@ +includedir=${prefix}/include +exec_prefix=${prefix} +libdir=${exec_prefix}/lib + +Name: C99 +Description: DeforaOS C99 compiler +Version: @VERSION@ +Requires: Asm +Cflags: -I${includedir} diff --git a/data/Makefile b/data/Makefile new file mode 100644 index 0000000..c983431 --- /dev/null +++ b/data/Makefile @@ -0,0 +1,27 @@ +TARGETS = C99.pc +PREFIX = /usr/local +DESTDIR = +RM ?= rm -f +LN ?= ln -f +MKDIR ?= mkdir -p +INSTALL ?= install + + +all: $(TARGETS) + +C99.pc: C99.pc.in ../config.sh + ./pkgconfig.sh -P "$(PREFIX)" -- "C99.pc" + +clean: + $(RM) -- $(C99.pc_OBJS) + +distclean: clean + $(RM) -- $(TARGETS) + +install: $(TARGETS) + ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "C99.pc" + +uninstall: + ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -u -- "C99.pc" + +.PHONY: all clean distclean install uninstall diff --git a/data/pkgconfig.sh b/data/pkgconfig.sh new file mode 100755 index 0000000..cf0274f --- /dev/null +++ b/data/pkgconfig.sh @@ -0,0 +1,118 @@ +#!/bin/sh +#$Id$ +#Copyright (c) 2011-2012 Pierre Pronchery +# +#Redistribution and use in source and binary forms, with or without +#modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +#FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +#DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +#OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +#variables +PREFIX="/usr/local" +. "../config.sh" +DEBUG="_debug" +DEVNULL="/dev/null" +#executables +INSTALL="install -m 0644" +MKDIR="mkdir -m 0755 -p" +RM="rm -f" +SED="sed" + + +#functions +#debug +_debug() +{ + echo "$@" 1>&2 + "$@" +} + + +#usage +_usage() +{ + echo "Usage: pkgconfig.sh [-i|-u][-P prefix] target" 1>&2 + return 1 +} + + +#main +install=0 +uninstall=0 +while getopts iuP: name; do + case $name in + i) + uninstall=0 + install=1 + ;; + u) + install=0 + uninstall=1 + ;; + P) + PREFIX="$2" + ;; + ?) + _usage + exit $? + ;; + esac +done +shift $(($OPTIND - 1)) +if [ $# -eq 0 ]; then + _usage + exit $? +fi + +PKGCONFIG="$PREFIX/lib/pkgconfig" +while [ $# -gt 0 ]; do + target="$1" + shift + + #uninstall + if [ "$uninstall" -eq 1 ]; then + $DEBUG $RM -- "$PKGCONFIG/$target" || exit 2 + continue + fi + + #install + if [ "$install" -eq 1 ]; then + $DEBUG $MKDIR -- "$PKGCONFIG" || exit 2 + $DEBUG $INSTALL "$target" "$PKGCONFIG/$target" || exit 2 + continue + fi + + #portability + RPATH="-Wl,-rpath-link,\${libdir} -Wl,-rpath,\${libdir}" + case $(uname -s) in + Darwin) + RPATH="-Wl,-rpath,\${libdir}" + ;; + esac + + #create + $DEBUG $SED -e "s;@PREFIX@;$PREFIX;" \ + -e "s;@VERSION@;$VERSION;" \ + -e "s;@RPATH@;$RPATH;" -- "$target.in" > "$target" + if [ $? -ne 0 ]; then + $DEBUG $RM -- "$target" + exit 2 + fi +done diff --git a/data/project.conf b/data/project.conf new file mode 100644 index 0000000..fcdd523 --- /dev/null +++ b/data/project.conf @@ -0,0 +1,8 @@ +targets=C99.pc +dist=Makefile,C99.pc.in,pkgconfig.sh + +[C99.pc] +type=script +script=./pkgconfig.sh +depends=C99.pc.in,../config.sh +install= diff --git a/project.conf b/project.conf index f7d9b3e..e98a93c 100644 --- a/project.conf +++ b/project.conf @@ -2,5 +2,5 @@ package=C99 version=0.0.0 config=h,sh -subdirs=doc,include,src +subdirs=data,doc,include,src dist=Makefile,config.h,config.sh