diff options
Diffstat (limited to 'rules')
-rw-r--r-- | rules/ips-manifest.mk | 110 | ||||
-rw-r--r-- | rules/ips.mk | 81 |
2 files changed, 111 insertions, 80 deletions
diff --git a/rules/ips-manifest.mk b/rules/ips-manifest.mk new file mode 100644 index 0000000..3d20e1d --- /dev/null +++ b/rules/ips-manifest.mk @@ -0,0 +1,110 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license +# at http://www.opensource.org/licenses/CDDL-1.0 +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each file. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# Copyright (C) 2012, Nexenta Systems, Inc. All rights reserved. +# + +# include guard: +ifeq (,$(__ips_manifest_mk)) + +include /usr/share/cibs/rules/common.mk + +manifestdir := $(workdir)/manifest +transdir := /usr/share/cibs/trans + +# Default, can be overriden in Makefile. See next lines. +ips-version = $(version) + +# Substitutions in IPS manifest: +makefile-vars := $(shell sed -n 's/^ *\([a-zA-Z][-_0-9a-zA-Z]*\) *[:?]*=.*$$/\1/p' Makefile | sort -u) +pkg-define = $(foreach _,$(makefile-vars),-D$(_)="$($(_))") +pkg-define += -Dips-version="$(ips-version)" + + +pkg-define += \ +-DMACH="$(mach)" \ +-DMACH32="$(mach32)" \ +-DMACH64="$(mach64)" \ +-Dmach="$(mach)" \ +-Dmach32="$(mach32)" \ +-Dmach64="$(mach64)" \ +-Dbuild32="$(build32)" \ +-Dbuild64="$(build64)" \ + +# Add $(protodir.<variant>) to use in manifest: +# file $(protodir.64) path=usr/include/header.64.h +pkg-define += $(foreach _,$(variants),-Dprotodir.$(_)="$(protodir-base.$(_))") + +# Same for $(builddir.xxx): +pkg-define += $(foreach _,$(variants),-Dbuilddir.$(_)="$(builddir-base.$(_))") + +# Where to find files: +pkg-protos = $(foreach _,$(variants),-d "$(protodir.$(_))") +pkg-protos += -d . + +transformations := \ +$(transdir)/defaults \ +$(transdir)/actuators \ +$(transdir)/devel \ +$(transdir)/docs \ +$(transdir)/locale \ +$(transdir)/arch \ + + + +# Supplied canonical manifests: +manifests := $(wildcard *.p5m) + +# Manifest generators: +manifests-x := $(wildcard *.p5m.x) +manifests += $(manifests-x:%.x=%) +%.p5m: %.p5m.x + ./$< > $@ + +#TODO: Expand "glob" action in manifests: +globalizator := /usr/share/cibs/scripts/globalizator +glob-manifests := $(manifests:%=$(manifestdir)/glob-%) +$(glob-manifests): $(manifestdir)/glob-% : % + [ -d "$(manifestdir)" ] || mkdir -p "$(manifestdir)" + cp $< $@ +glob-stamp: $(glob-manifests) + touch $@ + + +mogrified-manifests := $(manifests:%=$(manifestdir)/mogrified-%) +$(manifestdir)/mogrified-% : $(manifestdir)/glob-% + pkgmogrify $(pkg-define) \ + $(transformations) \ + $< | \ + sed -e '/^$$/d' -e '/^#.*$$/d' | uniq > $@ || (rm -f $@; false) +mogrify-stamp: $(mogrified-manifests) + touch $@ + + +depend-manifests := $(manifests:%=$(manifestdir)/depend-%) +$(manifestdir)/depend-% : $(manifestdir)/mogrified-% + pkgdepend generate -m $(pkg-protos) $< > $@ || (rm -f $@; false) +depend-stamp: $(depend-manifests) + touch $@ +$(depend-manifests): install-stamp + +__ips_manifest_mk := included +endif + diff --git a/rules/ips.mk b/rules/ips.mk index bad7370..28dfbfb 100644 --- a/rules/ips.mk +++ b/rules/ips.mk @@ -24,86 +24,7 @@ # include guard: ifeq (,$(__ips_mk)) -include /usr/share/cibs/rules/common.mk - -manifestdir := $(workdir)/manifest -transdir := /usr/share/cibs/trans - -# Default, can be overriden in Makefile. See next lines. -ips-version = $(version) - -# Substitutions in IPS manifest: -makefile-vars := $(shell sed -n 's/^ *\([a-zA-Z][-_0-9a-zA-Z]*\) *[:?]*=.*$$/\1/p' Makefile | sort -u) -pkg-define = $(foreach _,$(makefile-vars),-D$(_)="$($(_))") -pkg-define += -Dips-version="$(ips-version)" - - -pkg-define += \ --DMACH="$(mach)" \ --DMACH32="$(mach32)" \ --DMACH64="$(mach64)" \ --Dmach="$(mach)" \ --Dmach32="$(mach32)" \ --Dmach64="$(mach64)" \ --Dbuild32="$(build32)" \ --Dbuild64="$(build64)" \ - -# Add $(protodir.<variant>) to use in manifest: -# file $(protodir.64) path=usr/include/header.64.h -pkg-define += $(foreach _,$(variants),-Dprotodir.$(_)="$(protodir-base.$(_))") - -# Same for $(builddir.xxx): -pkg-define += $(foreach _,$(variants),-Dbuilddir.$(_)="$(builddir-base.$(_))") - -# Where to find files: -pkg-protos = $(foreach _,$(variants),-d "$(protodir.$(_))") -pkg-protos += -d . - -transformations := \ -$(transdir)/defaults \ -$(transdir)/actuators \ -$(transdir)/devel \ -$(transdir)/docs \ -$(transdir)/locale \ -$(transdir)/arch \ - - - -# Supplied canonical manifests: -manifests := $(wildcard *.p5m) - -# Manifest generators: -manifests-x := $(wildcard *.p5m.x) -manifests += $(manifests-x:%.x=%) -%.p5m: %.p5m.x - ./$< > $@ - -#TODO: Expand "glob" action in manifests: -globalizator := /usr/share/cibs/scripts/globalizator -glob-manifests := $(manifests:%=$(manifestdir)/glob-%) -$(glob-manifests): $(manifestdir)/glob-% : % - [ -d "$(manifestdir)" ] || mkdir -p "$(manifestdir)" - cp $< $@ -glob-stamp: $(glob-manifests) - touch $@ - - -mogrified-manifests := $(manifests:%=$(manifestdir)/mogrified-%) -$(manifestdir)/mogrified-% : $(manifestdir)/glob-% - pkgmogrify $(pkg-define) \ - $(transformations) \ - $< | \ - sed -e '/^$$/d' -e '/^#.*$$/d' | uniq > $@ || (rm -f $@; false) -mogrify-stamp: $(mogrified-manifests) - touch $@ - - -depend-manifests := $(manifests:%=$(manifestdir)/depend-%) -$(manifestdir)/depend-% : $(manifestdir)/mogrified-% - pkgdepend generate -m $(pkg-protos) $< > $@ || (rm -f $@; false) -depend-stamp: $(depend-manifests) - touch $@ -$(depend-manifests): install-stamp +include /usr/share/cibs/rules/ips-manifest.mk res_suffix := resolved resolved-manifests := $(manifests:%=$(manifestdir)/depend-%.$(res_suffix)) |