From: Ryan Lortie Date: Sat, 11 Sep 2010 18:14:31 +0000 (-0400) Subject: Host parvala in git X-Git-Tag: 0.11.0~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f873e355a2ee830a397fda4e70c4c04652c14238;p=thirdparty%2Fvala.git Host parvala in git --- diff --git a/contrib/parvala/parvala b/contrib/parvala/parvala new file mode 100755 index 000000000..db53b8f59 --- /dev/null +++ b/contrib/parvala/parvala @@ -0,0 +1,55 @@ +#!/bin/sh -e + +VALAC=valac +JOBS=10 + +#### + + +VALAFLAGS='' +makeflags='' + +while test -n "$*"; do + case "$1" in + --version) echo -n par; exec ${VALAC} --version;; + --disable-version-header) VALAFLAGS="${VALAFLAGS} $1";; + --vapidir) shift; VALAFLAGS="${VALAFLAGS} --vapidir $1";; + --pkg) shift; VALAFLAGS="${VALAFLAGS} --pkg $1";; + *.vala) valafiles="${valafiles} $1";; + --library) shift; vapi_file="$1";; + --directory=*) VALAFLAGS="${VALAFLAGS} $1";; + --basedir=*) VALAFLAGS="${VALAFLAGS} $1";; + --enable-checking) VALAFLAGS="${VALAFLAGS} $1";; + --thread) VALAFLAGS="${VALAFLAGS} $1";; + --pkg=*) VALAFLAGS="${VALAFLAGS} $1";; + --vapidir=*) VALAFLAGS="${VALAFLAGS} $1";; + -X) shift; VALAFLAGS="${VALAFLAGS} -X $1";; + -g) VALAFLAGS="${VALAFLAGS} $1";; + -d) shift; makeflags="${makeflags} DIRECTORY=$1/";; + -H) shift; h_file="$1";; + --ccode) c_mode="yes";; + -C) c_mode="yes";; + *) echo "parvala: unrecognised argument: $1"; exit 1;; + esac + shift +done + +if test -n "${h_file}"; then + if test -n "${vapi_file}"; then + makeflags="${makeflags} OUT_VAPI=${vapi_file}" + fi + makeflags="${makeflags} OUT_HFILE=${h_file}" +else + if test -n "${vapi_file}"; then + echo 'parvala: --library requires -H to also be specified' + fi +fi + +if test -z "${c_mode}"; then + echo 'parvala: required argument -C not specified' + exit 1 +fi + +make -j${JOBS} -f `dirname $0`/../share/parvala/parvala.mk \ + VALAC="${VALAC}" VALAFLAGS="${VALAFLAGS}" \ + VALAFILES="${valafiles}" ${makeflags} diff --git a/contrib/parvala/parvala.mk b/contrib/parvala/parvala.mk new file mode 100644 index 000000000..cd0938d78 --- /dev/null +++ b/contrib/parvala/parvala.mk @@ -0,0 +1,30 @@ +VALA_AUX = $(DIRECTORY).vala-aux/ + +.PHONY: all-vapi + +BASENAMES = $(notdir $(basename $(VALAFILES))) +VALA_FASTVAPI_FILES = $(foreach f, $(BASENAMES), $(VALA_AUX)$(f).vapi) +VALA_FASTVAPI_STAMPS = $(foreach f, $(BASENAMES), $(VALA_AUX)$(f).vapi.stamp) +VALA_DEPS = $(foreach f, $(BASENAMES), $(VALA_AUX)$(f).dep) + +all: $(VALA_DEPS) $(OUT_HFILE) + +.PRECIOUS: $(VALA_AUX)%.vapi.stamp $(VALA_AUX)%.dep + +$(VALA_AUX)%.vapi: ; + +$(VALA_AUX)%.vapi.stamp: $(DIRECTORY)%.vala | $(VALA_AUX) + @echo ' GEN '$(@:.stamp=); $(VALAC) --fast-vapi=$(@:.stamp=) $< && touch $@ + +$(VALA_AUX)%.dep: $(DIRECTORY)%.vala | $(VALA_FASTVAPI_STAMPS) + @echo ' GEN '$(<:.vala=.c); $(VALAC) -C --deps=$@ $(VALAFLAGS) $(addprefix --use-fast-vapi=,$(subst $(VALA_AUX)$(notdir $(basename $@)).vapi,, $(VALA_FASTVAPI_FILES))) $< + +$(VALA_AUX): + @mkdir -p $(VALA_AUX) + +include $(wildcard $(VALA_AUX)/*.dep) + +ifdef OUT_HFILE +$(OUT_HFILE) $(addsuffix .vapi,$(OUT_VAPI)): $(VALA_FASTVAPI_FILES) | $(VALA_FASTVAPI_STAMPS) + @echo ' GEN '$(OUT_HFILE) $(addsuffix .vapi,$(OUT_VAPI)); $(VALAC) -C -H $(OUT_HFILE) $(addprefix --library=,$(OUT_VAPI)) $(VALAFLAGS) $(addprefix --use-fast-vapi=,$(VALA_FASTVAPI_FILES)) && touch $(OUT_HFILE) +endif