diff options
author | Igor Pashev <igor.pashev@nexenta.com> | 2012-10-28 17:15:28 +0400 |
---|---|---|
committer | Igor Pashev <igor.pashev@nexenta.com> | 2012-10-28 17:15:28 +0400 |
commit | 64fb34d1346bab605bf702bf2c2659c91bac0bc3 (patch) | |
tree | 5b1382526684a78a2a69734f157372f6f7fbb134 /rules/ips-manifest.mk | |
parent | 5b3ab025b93fff199d9659de16738b1a1e1b72bd (diff) | |
download | cibs-64fb34d1346bab605bf702bf2c2659c91bac0bc3.tar.gz |
Split manifest-related things
Diffstat (limited to 'rules/ips-manifest.mk')
-rw-r--r-- | rules/ips-manifest.mk | 110 |
1 files changed, 110 insertions, 0 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 + |