From 12022916517da1e21df1fa7e778e168601d281d6 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 26 Jul 2011 21:09:38 +0000 Subject: [PATCH] Added a pkg-config helper for plug-ins --- Makefile | 2 + data/Browser.pc.in | 10 +++++ data/Makefile | 21 +++++++-- data/pkgconfig.sh | 109 +++++++++++++++++++++++++++++++++++++++++++++ data/project.conf | 9 +++- 5 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 data/Browser.pc.in create mode 100755 data/pkgconfig.sh diff --git a/Makefile b/Makefile index eadcd76..7444037 100644 --- a/Makefile +++ b/Makefile @@ -22,8 +22,10 @@ dist: $(LN) -s -- . $(PACKAGE)-$(VERSION) @$(TAR) $(PACKAGE)-$(VERSION).tar.gz -- \ $(PACKAGE)-$(VERSION)/data/Makefile \ + $(PACKAGE)-$(VERSION)/data/Browser.pc.in \ $(PACKAGE)-$(VERSION)/data/browser.desktop \ $(PACKAGE)-$(VERSION)/data/desktop-settings.desktop \ + $(PACKAGE)-$(VERSION)/data/pkgconfig.sh \ $(PACKAGE)-$(VERSION)/data/project.conf \ $(PACKAGE)-$(VERSION)/data/16x16/Makefile \ $(PACKAGE)-$(VERSION)/data/16x16/browser-view-details.png \ diff --git a/data/Browser.pc.in b/data/Browser.pc.in new file mode 100644 index 0000000..ab6c891 --- /dev/null +++ b/data/Browser.pc.in @@ -0,0 +1,10 @@ +prefix=PREFIX +includedir=${prefix}/include +exec_prefix=${prefix} +libdir=${exec_prefix}/lib + +Name: Browser +Description: DeforaOS Desktop Browser plug-ins +Version: VERSION +Requires: gtk+-2.0 +Cflags: -I${includedir} diff --git a/data/Makefile b/data/Makefile index 1121940..00f3d32 100644 --- a/data/Makefile +++ b/data/Makefile @@ -1,24 +1,36 @@ SUBDIRS = 16x16 -PREFIX = /usr/local -DESTDIR = MKDIR = mkdir -p INSTALL = install RM = rm -f +TARGETS = Browser.pc +PREFIX = /usr/local +DESTDIR = +RM = rm -f +LN = ln -f +MKDIR = mkdir -p +INSTALL = install -all: subdirs +all: subdirs $(TARGETS) subdirs: @for i in $(SUBDIRS); do (cd $$i && $(MAKE)) || exit; done +Browser.pc: Browser.pc.in ../config.sh + ./pkgconfig.sh -P "$(PREFIX)" -- "Browser.pc" + clean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done + $(RM) -- $(Browser.pc_OBJS) distclean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done + $(RM) -- $(Browser.pc_OBJS) + $(RM) -- $(TARGETS) -install: +install: $(TARGETS) @for i in $(SUBDIRS); do (cd $$i && $(MAKE) install) || exit; done + ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "Browser.pc" $(MKDIR) $(DESTDIR)$(PREFIX)/share/applications $(INSTALL) -m 0644 -- browser.desktop $(DESTDIR)$(PREFIX)/share/applications/browser.desktop $(MKDIR) $(DESTDIR)$(PREFIX)/share/applications @@ -26,6 +38,7 @@ install: uninstall: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) uninstall) || exit; done + ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -u -- "Browser.pc" $(RM) -- $(DESTDIR)$(PREFIX)/share/applications/browser.desktop $(RM) -- $(DESTDIR)$(PREFIX)/share/applications/desktop-settings.desktop diff --git a/data/pkgconfig.sh b/data/pkgconfig.sh new file mode 100755 index 0000000..28210bf --- /dev/null +++ b/data/pkgconfig.sh @@ -0,0 +1,109 @@ +#!/bin/sh +#$Id$ +#Copyright (c) 2011 Pierre Pronchery +#All rights reserved. +# +#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" +INSTALL="install -m 0644" +MKDIR="mkdir -p" +RM="rm -f" +SED="sed" + + +#functions +#debug +_debug() +{ + echo $@ + $@ +} + + +#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 + + #create + $SED -e "s,PREFIX,$PREFIX," -e "s,VERSION,$VERSION," "$target.in" \ + > "$target" + if [ $? -ne 0 ]; then + $RM -- "$target" 2> "$DEVNULL" + exit 2 + fi +done diff --git a/data/project.conf b/data/project.conf index 1db53f9..b3207e8 100644 --- a/data/project.conf +++ b/data/project.conf @@ -1,5 +1,12 @@ subdirs=16x16 -dist=Makefile,browser.desktop,desktop-settings.desktop +targets=Browser.pc +dist=Makefile,Browser.pc.in,browser.desktop,desktop-settings.desktop,pkgconfig.sh + +[Browser.pc] +type=script +script=./pkgconfig.sh +depends=Browser.pc.in,../config.sh +install= [browser.desktop] install=$(PREFIX)/share/applications