blob: ecaf9b9b5f80283872729c342d352678694898b0 [file] [log] [blame]
paul1b414a12005-04-11 07:05:21 +00001# Solaris packages automake file
Greg Troxel61502cb2007-08-02 13:37:30 +00002# $Id$
3
4# XXX This file uses GNU make extensions.
paul1b414a12005-04-11 07:05:21 +00005
6.PHONY: packages
7
8# the names of the various subpackages, and some convenient
9# derived variables.
paul65c1caf2005-05-13 07:26:07 +000010pkg_names = daemons dev doc libs smf
paul1b414a12005-04-11 07:05:21 +000011pkg_quagga_daemons = zebra bgpd ospfd ospf6d ripd ripngd
12pkg_name_rev = @PACKAGE_VERSION@-@CONFDATE@-@target_os@-@target_cpu@
Jeremy Jackson4bf64612009-01-21 14:15:44 -050013pkg_depends = $(pkg_names:%=depend.%)
14pkg_packages = $(pkg_names:%=@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg)
15pkg_pkginfos = $(pkg_names:%=pkginfo.%.full)
16pkg_prototypes = $(pkg_names:%=prototype.%)
17pkg_manifests = quagga.xml
paul1b414a12005-04-11 07:05:21 +000018
19# pkgmk variable substitutions wont grok ${variable} in prototype
20# file, so we cant let autoconf generate the file sadly
21# wish automake would just provide a template for this
Jeremy Jackson4bf64612009-01-21 14:15:44 -050022edit = $(SED) \
paul1b414a12005-04-11 07:05:21 +000023 -e 's,@prefix\@,$(prefix),g' \
24 -e 's,@exec_prefix,$(exec_prefix),g' \
25 -e 's,@bindir\@,$(bindir),g' \
26 -e 's,@sbindir\@,$(sbindir),g' \
27 -e 's,@libexecdir\@,$(libexecdir),g' \
28 -e 's,@datadir\@,$(datadir),g' \
29 -e 's,@sysconfdir\@,$(sysconfdir),g' \
30 -e 's,@sharedstatedir\@,$(sharedstatedir),g' \
31 -e 's,@localstatedir\@,$(localstatedir),g' \
32 -e 's,@libdir\@,$(libdir),g' \
33 -e 's,@includedir\@,$(includedir),g' \
34 -e 's,@infodir\@,$(infodir),g' \
35 -e 's,@mandir\@,$(mandir),g' \
36 -e 's,@enable_user\@,$(enable_user),g' \
37 -e 's,@enable_group\@,$(enable_group),g' \
38 -e 's,@enable_vty_group\@,$(enable_vty_group),g' \
39 -e 's,@quagga_statedir\@,$(quagga_statedir),g' \
40 -e 's,[@]PACKAGE_NAME[@],@PACKAGE_NAME@,g' \
41 -e 's,[@]PACKAGE_TARNAME[@],@PACKAGE_TARNAME@,g' \
42 -e 's,[@]PACKAGE_VERSION[@],@PACKAGE_VERSION@,g' \
43 -e 's,[@]PACKAGE_BUGREPORT[@],@PACKAGE_BUGREPORT@,g' \
44 -e 's,[@]CONFDATE[@],@CONFDATE@,g' \
45 -e 's,[@]target_cpu[@],$(target_cpu),g' \
46 -e 's,[@]target_host[@],$(target_host),g' \
47 -e 's,[@]target_os[@],$(target_os),g'
48
49# common options for pkgmk
Jeremy Jackson4bf64612009-01-21 14:15:44 -050050pkg_make_vars = exec_prefix=@exec_prefix@ prefix=@prefix@ \
paul1b414a12005-04-11 07:05:21 +000051 builddir=@builddir@ srcdir=@srcdir@ \
52 top_builddir=@top_builddir@ top_srcdir=@top_srcdir@ \
53 abs_builddir=@abs_builddir@ abs_srcdir=@abs_srcdir@ \
54 abs_top_builddir=@abs_top_builddir@ abs_top_srcdir=@abs_top_srcdir@
55
56# pkgmk: write the package to spool in build dir, to avoid root dependencies
57pkg_make = pkgmk -o -d @abs_builddir@ \
58 -f $< DESTDIR="$(DESTDIR)/" $(pkg_make_vars)
59
60# pkgtrans: write a pkg file stream, shame we cant pipe directly to it from
61# pkgmk..
62pkg_trans = pkgtrans -s @abs_builddir@ "@abs_builddir@/$@"
63
64# pkgmk can only cope with a single pkginfo, cant 'stack' various
65# pkginfo template files and a package specific pkginfo file in the prototype
66# Create the package specific template here, and create the full pkginfo
67# by cating this and the common pkginfo.tmpl together.
68pkginfo.tmpl: $(srcdir)/pkginfo.tmpl.in Makefile
69 rm -f $@
70 $(edit) $< > $@
71
72pkginfo.%.tmpl: $(srcdir)/pkginfo.%.tmpl.in Makefile
73 rm -f $@
74 $(edit) $< > $@
75
paulf3ff1552005-04-21 10:24:43 +000076pkginfo.%.full: pkginfo.%.tmpl pkginfo.tmpl Makefile
paul1b414a12005-04-11 07:05:21 +000077 cat pkginfo.tmpl pkginfo.$*.tmpl > $@
78
79# use 'edit' above to transform prototype.in to pkgmk acceptable prototype
80prototype.%: $(srcdir)/prototype.%.in Makefile
81 rm -f $@
82 $(edit) $< > $@
83
84# use edit to construct the SMF manifest files
85%.xml: $(srcdir)/%.xml.in Makefile
86 rm -f $@
87 $(edit) $< > $@
Paul Jakmae24f0632006-02-19 18:59:26 +000088# use edit to construct the depend files
89depend.%: $(srcdir)/depend.%.in Makefile
90 rm -f $@
91 $(edit) $< > $@
paul1b414a12005-04-11 07:05:21 +000092
93# method file (bit like init script)
94quagga.init: $(srcdir)/quagga.init.in Makefile
95 rm -f $@
96 $(edit) $< > $@
97
98# construct the pkg
99@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg: prototype.% \
Paul Jakma75f04392008-01-13 18:52:15 +0000100 depend.% quagga.init pkginfo.%.full
paul1b414a12005-04-11 07:05:21 +0000101 ($(pkg_make) && \
102 $(pkg_trans) "QUAGGA$*")
103
paul1b414a12005-04-11 07:05:21 +0000104%.pkg.gz : %.pkg
105 (gzip -c $< > $@)
106
107# pkginfo.package and prototype.package are all built sources
108#BUILT_SOURCES = pkginfo.daemons pkginfo.dev pkginfo.doc pkginfo.libs \
109# prototype.daemons prototype.dev prototype.doc prototype.libs
110BUILT_SOURCES = $(pkg_pkginfos) pkginfo.tmpl $(pkg_prototypes) \
Paul Jakmae24f0632006-02-19 18:59:26 +0000111 $(pkg_manifests) $(pkg_depends) quagga.init
paul1b414a12005-04-11 07:05:21 +0000112
Jeremy Jackson4bf64612009-01-21 14:15:44 -0500113CLEANFILES = $(BUILT_SOURCES) $(pkg_packages)
paul1b414a12005-04-11 07:05:21 +0000114
Jeremy Jackson4bf64612009-01-21 14:15:44 -0500115EXTRA_DIST = $(pkg_manifests:%=%.in) $(pkg_prototypes:%=%.in) \
paul1b414a12005-04-11 07:05:21 +0000116 $(pkg_names:%=pkginfo.%.tmpl.in) $(srcdir)/pkginfo.tmpl.in \
Paul Jakmae24f0632006-02-19 18:59:26 +0000117 $(pkg_depends:%=%.in) quagga.init.in README.txt
paul1b414a12005-04-11 07:05:21 +0000118
119pkg-root-install:
120 (cd $(top_builddir) && \
121 $(MAKE) DESTDIR=$(abs_builddir)/quagga-root install)
122
123packages: $(pkg_packages)
124
125#nodist_pkgdata_DATA = $(pkg_packages)