#
# Copyright (c) 2012-2013 Red Hat.
# Copyright (c) 2008 Aconex.  All Rights Reserved.
# Copyright (c) 2000,2003,2004 Silicon Graphics, Inc.  All Rights Reserved.
# 
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
# 

# Common gmake macros for building
#
# src/include/builddefs.  Generated from builddefs.in by configure.
#
ifndef _BUILDDEFS_INCLUDED_
_BUILDDEFS_INCLUDED_ = 1

ifndef _PCP_CONF_INCLUDED_
_PCP_CONF_INCLUDED_ = 1
include $(PCP_DIR)/etc/pcp.conf
endif

# General package information
PACKAGE_VERSION ?= 3.8.12
PACKAGE_MAJOR ?= 3
PACKAGE_MINOR ?= 8
PACKAGE_REVISION ?= 12
PACKAGE_BUILD ?= 1
PACKAGE_NAME ?= pcp
PACKAGE_CONFIGURE ?= 
PACKAGE_DISTRIBUTION ?= debian
SGI_CHROOT_BUILD ?= 0
SGI_ISSP_BUILD ?= 0

BUILDRULES = $(PCP_INC_DIR)/buildrules

# LCFLAGS, LLDFLAGS, LLDLIBS, LSRCFILES and LDIRT may be specified in
# user Makefiles. Note: LSRCFILES is anything other than Makefile,
# $(CXXFILES), $(CFILES), or $(HFILES) and is used to construct the
# manifest list during the "dist" phase (packaging).

# turn on all warnings by default
ifeq "yes" "yes"
WARN_OFF = -Wall
else
WARN_OFF =
endif

LIBPCP_ABIDIR ?= src
PCPLIB_LDFLAGS = -L$(TOPDIR)/src/libpcp/$(LIBPCP_ABIDIR) \
		 -L$(TOPDIR)/src/libpcp_pmda/$(LIBPCP_ABIDIR)
# backward compatibility
PCP_LIBS = $(PCPLIB_LDFLAGS)

# platform-specific CFLAGS, LDLIBS, and shared library extension
#
# Note:
# 	Need PCFLAGS setting here to match the CFLAGS settings in
# 	../../configure.in (likewise for PLDFLAGS and LDFLAGS).
#
TARGET_OS = linux
PCFLAGS = -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2
PLDFLAGS = 
ifneq (, $(filter linux kfreebsd, $(TARGET_OS)))
DSOSUFFIX = so
endif
ifeq "$(TARGET_OS)" "darwin"
DSOSUFFIX = dylib
CASE_INSENSITIVE_FS=1
endif
ifeq "$(TARGET_OS)" "mingw"
DSOSUFFIX = dll
EXECSUFFIX = .exe
SHELLSUFFIX = .sh
PLDLIBS = -lwsock32 -L$$PCP_DIR/local/bin -L$$PCP_DIR/local/lib -L$$PCP_DIR/lib
endif
ifeq "$(TARGET_OS)" "solaris"
PLDFLAGS += -fPIC
PLDLIBS = -lnsl -lsocket -lresolv -ldl -lposix4
DSOSUFFIX = so
endif
ifeq "$(TARGET_OS)" "aix"
DSOSUFFIX = so
# -qcpluscmt
#	allow C++-style // as comment preamble
# -brtl
#       use run-time linker
# -bnoipath
#       do not use path to DSOs from the build, use default search path
#       rules
# (and does not accept -Wall as a valid option)
PLDFLAGS += -brtl -bnoipath
WARN_OFF =
endif
ifeq "$(TARGET_OS)" "freebsd"
DSOSUFFIX = so
endif
ifeq "$(TARGET_OS)" "netbsd"
DSOSUFFIX = so
endif

CFLAGS_ABI = 
CFLAGS_OPT = -O2 -g
CFLAGS += $(PCFLAGS) $(LCFLAGS) $(WARN_OFF) $(CFLAGS_OPT) \
	-DPCP_DEBUG -DPCP_VERSION=\"$(PCP_VERSION)\" \
	-I$(TOPDIR)/src/include -I$(TOPDIR)/src/include/pcp

PIECFLAGS = -fPIE
PIELDFLAGS = -pie -Wl,-z,relro -Wl,-z,now
INVISIBILITY = -fvisibility=hidden	# hide shared library symbols

NSSCFLAGS = -I/usr/include/nss
NSPRCFLAGS = -I/usr/include/nspr
SASLCFLAGS = -I/usr/include/sasl
AVAHICFLAGS = 

LDFLAGS += $(PLDFLAGS) $(WARN_OFF) $(PCP_LIBS) $(LLDFLAGS)

SRCFILES = GNUmakefile $(HFILES) $(CFILES) $(CXXFILES) $(MFILES) \
	$(LSRCFILES) $(LFILES) $(YFILES) $(PYFILES)

LDLIBS = $(LLDLIBS) $(PLDLIBS)
MAKEOPTS = --no-print-directory
DIRT = $(LDIRT) dep dep.bak $(OBJECTS) $(CMDTARGET) $(CXXMDTARGET) \
	$(LIBTARGET) $(STATICLIBTARGET) \
	*.[1-9].gz *.[1-9].bz2 *.[1-9].lzma *.[1-9].xz *.[1-9].tmp
DIRDIRT = $(LDIRDIRT)

OBJECTS = $(ASFILES:.s=.o) \
          $(CFILES:.c=.o) \
          $(CXXFILES:.cxx=.o) \
          $(FFILES:.f=.o) \
          $(LFILES:.l=.o) \
          $(YFILES:%.y=%.tab.o)

#NB: don't override $(MAKE); gnumake sets it well, propagating -j etc.
#MAKE	= /usr/bin/make
CC	= gcc
CXX	= g++
LD	= /usr/bin/ld
AWK	= /usr/bin/gawk --posix
SED	= /bin/sed
CPP	= gcc -E
LEX	= flex
YACC	= bison -y
ECHO	= /bin/echo
LN_S	= ln -s
GREP    = grep
GIT	= 
PYTHON	= python
DTRACE  = enable_probes=false

INSTALL_SH = $(PCP_BINADM_DIR)/install-sh
INSTALL	= $(INSTALL_SH) -o $(PCP_USER_INSTALL) -g $(PCP_GROUP_INSTALL)

CCF	= $(CC) $(CFLAGS)
CXXF	= $(CXX) $(CFLAGS) $(CXXFLAGS)
# NB: don't use $(MAKEF), since that suppresses gnumake's subdir parallelization
#MAKEF	= $(MAKE) $(MAKEOPTS)
LDF	= $(LD) $(LDFLAGS)
MAKEDEPEND = /bin/true

ZIP	= /bin/gzip
BZIP2	= /bin/bzip2
LZMA	= /usr/bin/lzma
XZ	= /usr/bin/xz
TAR	= /bin/tar
RPMPROG	= 
PACKAGE_MAKER = 
HDIUTIL = 
MKINSTALLP = 
DLLTOOL = 
RPMBUILD= 
RPM	= 
POD2MAN = /usr/bin/pod2man
DPKG	= 
MAKEPKG	= 
GENPMDA = $(PCP_BIN_DIR)/genpmda
PKGMK	= 
MD5SUM	= /usr/bin/md5sum

HAVE_GZIPPED_MANPAGES = true
HAVE_BZIP2ED_MANPAGES = false
HAVE_LZMAED_MANPAGES = false
HAVE_XZED_MANPAGES = false
PCP_MAN_DIR = /usr/share/man

NEED_OLD_TBL_HEADER = true
RDYNAMIC_FLAG = -rdynamic
ENABLE_SHARED = 
ENABLE_SECURE = true
ENABLE_PROBES = false
ENABLE_AVAHI  = false

# additional libraries needed for particular functions
LIB_FOR_BASENAME = 
LIB_FOR_DLOPEN = -ldl
LIB_FOR_REGEX = 
LIB_FOR_MATH = -lm
LIB_FOR_READLINE = -lreadline
LIB_FOR_CURSES = 
LIB_FOR_PTHREADS = -lpthread
LIB_FOR_RT = -lrt
LIB_FOR_NSS = -lnss3
LIB_FOR_NSPR = -lnspr4
LIB_FOR_SASL = -lsasl2
LIB_FOR_SSL = -lssl3
LIB_FOR_AVAHI = 

HAVE_LIBMICROHTTPD = 1
HAVE_RPMLIB = 0

SHELL = /bin/sh
IMAGES_DIR = $(TOPDIR)/all-images
DIST_DIR = $(TOPDIR)/dist

# env vars to be set before you can run a PCP binary in the build
# environment ... needed for tools like newhelp
#
# default, then special case for different platforms
#
RUN_IN_BUILD_ENV = PCP_CONF=$(TOPDIR)/src/include/pcp.conf LD_LIBRARY_PATH=$(TOPDIR)/src/libpcp/src:$(TOPDIR)/src/libpcp_pmda/src:$$LD_LIBRARY_PATH HOME=`pwd` PCP_ALT_CPP=$(TOPDIR)/src/pmcpp/pmcpp
ifeq "$(TARGET_OS)" "darwin"
RUN_IN_BUILD_ENV = PCP_CONF=$(TOPDIR)/src/include/pcp.conf DYLD_LIBRARY_PATH=$(TOPDIR)/src/libpcp/src:$(TOPDIR)/src/libpcp_pmda/src:$$DYLD_LIBRARY_PATH HOME=`pwd` PCP_ALT_CPP=$(TOPDIR)/src/pmcpp/pmcpp
endif
ifeq "$(TARGET_OS)" "aix"
RUN_IN_BUILD_ENV = PCP_CONF=$(TOPDIR)/src/include/pcp.conf LIBPATH=$(TOPDIR)/src/libpcp/src:$(TOPDIR)/src/libpcp_pmda/src:$$LIBPATH HOME=`pwd` PCP_ALT_CPP=$(TOPDIR)/src/pmcpp/pmcpp
endif
ifeq "$(TARGET_OS)" "mingw"
RUN_IN_BUILD_ENV = PCP_CONF=$(TOPDIR)/src/include/pcp.conf PATH=$(TOPDIR)/src/libpcp/src:$(TOPDIR)/src/libpcp_pmda/src:$$PATH USERPROFILE=`pwd` PCP_ALT_CPP=`pwd`/$(TOPDIR)/src/pmcpp/pmcpp
endif

SUBDIRS_MAKERULE = \
	+for d in `echo $^ `; do \
	    if test -d "$$d" -a -f "$$d/GNUmakefile"; then \
		$(ECHO) === $$d ===; \
		$(MAKE) $(MAKEOPTS) -C $$d $@ || exit $$?; \
	    fi; \
	done

# prepare symbols file for the GNU toolchain (linker) for DSO PMDAs
VERSION_SCRIPT_MAKERULE = \
	@rm -f $@; \
	echo "{" >$@; \
	echo "    global: $(PMDAINIT);" >>$@; \
	echo "    local: *;" >>$@; \
	echo "};" >>$@; \

# prepare domain.h used during the PMDA build process for each PMDA
DOMAIN_MAKERULE = \
	@rm -f $@; \
	echo "/*" >$@; \
	echo " * built from $<" >>$@; \
	echo " */" >>$@; \
	$(AWK) <$< '\
	    $$1=="\#define" && $$2 == "$(DOMAIN)" {\
		print "\#define $(DOMAIN) " $$3 >>"$@"; found++ \
	    }\
	    END {\
		if (found == 0) { \
		    print "Botch: no define for domain $(DOMAIN) in $<"; \
		    exit(1) \
		}\
		if (found > 1) { \
		    print "Botch: multiple defines for domain $(DOMAIN) in $<";\
		    print "... see $@ for details"; \
		    exit(1) \
		}\
        	exit(0) \
            }'

DOMAIN_PERLRULE = \
	@export perldomain=`sed -n \
		-e '/PCP::PMDA->new/s/[^0-9]*$$//' \
		-e '/PCP::PMDA->new/s/^[^0-9]*//p' pmda$(IAM).pl`; \
	$(AWK) <$< '\
	    BEGIN {\
		domain = toupper("$(IAM)") \
	    }\
	    $$1=="\#define" && $$2 == domain { \
		pmd=$$3; found++ \
	    }\
	    END {\
		if (found == 0) {\
		    print "Botch: no define for domain " domain " in $<"; \
		    exit(1) \
		}\
	        if (found > 1) {\
		    print "Botch: multiple defines of domain " domain " in $<";\
		    exit(1) \
		}\
		if (pmd != "'"$$perldomain"'") {\
		    print "Botch: domain number in ../../pmns/stdpmid (" pmd ") does not match domain number in Perl source ("'"$$perldomain"'")"; \
		    exit(1) \
		}\
		exit(0) \
	    }'

DOMAIN_PYTHONRULE = \
	@export pythondomain=`sed -n \
		-e '/PMDA(/s/[^0-9]*$$//' \
		-e '/PMDA(/s/^[^0-9]*//p' $(PYSCRIPT)`; \
	$(AWK) <$< '\
	    BEGIN {\
		domain = toupper("$(IAM)") \
	    }\
	    $$1=="\#define" && $$2 == domain { \
		pmd=$$3; found++ \
	    }\
	    END {\
		if (found == 0) {\
		    print "Botch: no define for domain " domain " in $<"; \
		    exit(1) \
		}\
	        if (found > 1) {\
		    print "Botch: multiple defines of domain " domain " in $<";\
		    exit(1) \
		}\
		if (pmd != "'"$$pythondomain"'") {\
		    print "Botch: domain number in ../../pmns/stdpmid (" pmd ") does not match domain number in Python source ("'"$$pythondomain"'")"; \
		    exit(1) \
		}\
		exit(0) \
	    }'

POD_OPTIONS = --section=$(MAN_SECTION) --release=$(PCP_VERSION) \
		--center="Performance Co-Pilot" --date="Performance Co-Pilot"
POD_MAKERULE = $(POD2MAN) $(POD_OPTIONS) $^ $@

ifeq "$(TARGET_OS)" "mingw"
INSTALL_MAN =
else
INSTALL_MAN = \
    test -z "$$MAN_PAGES" && MAN_PAGES="$(MAN_PAGES)"; \
    for d in `echo $$MAN_PAGES`; do \
	echo "=== `pwd`/$$d ===" >>/tmp/eek.raw; \
	first=true; \
	base=`echo $$d | sed -e 's/\.[0-9]//g'`; \
	$(AWK) <$$d ' \
BEGIN { state=0; print "'"$$base"'" } \
$$1==".ds" { ds["\\\\\\*\\("$$2] = $$3 } \
$$1==".SH" && $$2=="NAME" { state=1; next } \
$$1==".SH" && state==1	{ exit } \
/^\./ { next } \
state==1 { for (i=1;i<=NF;i++) { \
             if ($$i=="\\-" || $$i=="-") exit; \
	     gsub ("\\\\f3", "", $$i); gsub ("\\\\f1.*", "", $$i); \
	     for ( d in ds ) sub (d, ds[d], $$i); \
	     print $$i \
	   } \
	 }' \
	| tee -a /tmp/eek.raw \
	| LC_COLLATE=POSIX $(PCP_SORT_PROG) -u \
	| while read m; do \
	    [ -z "$$m" -o "$$m" = "\\" ] && continue; \
	    t=$(MAN_DEST)/$$m.$(MAN_SECTION); \
	    if $$first; then \
		_tfx= ;\
		if $(NEED_OLD_TBL_HEADER) ; then \
		    $(SED) -e "1s/^'\\\\\"! tbl.*/'\\\\\" t/" $$d > $$d.tmp; _tfx=.tmp; \
		fi; \
		if $(HAVE_GZIPPED_MANPAGES) ; then \
		    $(ZIP) -c $$d$$_tfx > $$d.gz; _tfx=.gz; _sfx=.gz; \
		fi; \
		if $(HAVE_BZIP2ED_MANPAGES) ; then \
		    $(BZIP2) -c $$d$$_tfx > $$d.bz2; _tfx=.bz2; _sfx=.bz2; \
		fi; \
		if $(HAVE_LZMAED_MANPAGES) ; then \
		    $(LZMA) -c $$d$$_tfx > $$d.lzma; _tfx=.lzma; _sfx=.lzma; \
		fi; \
		if $(HAVE_XZED_MANPAGES) ; then \
		    $(XZ) -c $$d$$_tfx > $$d.xz; _tfx=.xz; _sfx=.xz; \
		fi; \
		u=$$m.$(MAN_SECTION)$$_sfx; \
		echo $(INSTALL) -m 644 $${d}$$_tfx $${t}$$_sfx; \
		$(INSTALL) -m 644 $${d}$$_tfx $${t}$$_sfx; \
	    else \
		if test ! -z $(CASE_INSENSITIVE_FS) -a $(CASE_INSENSITIVE_FS); then \
		    if test "`echo $$u | tr 'a-z' 'A-Z'`" != "`basename $${t}$$_sfx | tr 'a-z' 'A-Z'`"; then \
			echo $(INSTALL) -S $$u $${t}$$_sfx; \
			$(INSTALL) -S $$u $${t}$$_sfx; \
		    fi \
		else \
		    echo $(INSTALL) -S $$u $${t}$$_sfx; \
		    $(INSTALL) -S $$u $${t}$$_sfx; \
		fi \
	    fi; \
	    first=false; \
	done; \
    done
endif

PERL_INSTALL_BASE = /usr
PERL_INSTALLDIRS = vendor

# MakeMaker INSTALL_BASE needs to be unset for proper vendor_perl paths to be used for --prefix=/usr;
ifeq "$(PERL_INSTALL_BASE)" "/usr"
ifneq "$(TARGET_OS)" "darwin"
MAKEMAKER_EXTRA_OPTIONS=
else
MAKEMAKER_EXTRA_OPTIONS=INSTALL_BASE=$(PERL_INSTALL_BASE)  INSTALLBASE=$(PERL_INSTALL_BASE)
endif
else
MAKEMAKER_EXTRA_OPTIONS=INSTALL_BASE=$(PERL_INSTALL_BASE)  INSTALLBASE=$(PERL_INSTALL_BASE)
endif

PERL_MAKE_MAKEFILE = \
	export PCP_TOPDIR=`cd $(TOPDIR) && pwd`; \
	NSS_CFLAGS="$(NSS_CFLAGS)" NSPR_CFLAGS="$(NSPR_CFLAGS)" \
        TARGET_OS="$(TARGET_OS)" CC="$(CC) $(CFLAGS_ABI)" perl Makefile.PL $(MAKEMAKER_EXTRA_OPTIONS) $(MAKEMAKER_OPTIONS)

# Collect files from a Perl "make -f Makefile install" below
# src/perl to build the PCP Perl packaging list, and also clean up
# the installed files to remove unwanted files and make the DSO
# executable
#
# Usage is $(call PERL_GET_FILELIST,listfile,base)
# where listfile is something like $(TOPDIR)/perl-pcp-pmda.list and
# base is the DSO basename like PMDA.
#
# We need different versions for the different installation and
# packaging regimes.
#
ifeq "$(PACKAGE_DISTRIBUTION)" "debian"
# For Debian packaging, this is not needed
PERL_GET_FILELIST =
else
ifeq "$(PACKAGE_DISTRIBUTION)" "gentoo"
# Gentoo cannot rely on the .packlist files from the install, so create
# a temporary pack.list file
PERL_GET_FILELIST = \
	$(PERLMAKE) -f Makefile install DESTDIR=$$DIST_ROOT \
	| tee pack.list; \
	sed -n -e '/\.bs$$/d' -e 's/\.[0-9]pm$$/&.gz/' -e "s@^Installing $$DIST_ROOT@@p" <pack.list >$(1) || exit 1; \
	if [ -s $(1) ]; then rm -f pack.list; \
	else echo "Arrgh ... no files to include in package via $(1), see pack.list"; exit 1; \
	fi; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name perllocal.pod -exec rm -f '{}' ';' ; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name \*.bs  -exec rm -f '{}' ';' ; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name $(2).so -exec chmod 755 '{}' ';'
else
# Everyone else ... includes the RPM-based packaging platforms
ifeq "$(PACKAGE_DISTRIBUTION)" "mandriva"
	man_suffix=lzma
else
	man_suffix=gz
endif
PERL_GET_FILELIST = \
	$(PERLMAKE) -f Makefile install DESTDIR=$$DIST_ROOT; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name .packlist -exec mv '{}' $(1) ';' ; \
	if [ -s $(1) ] ; then \
	    _sfx=.gz; \
	    $(HAVE_BZIP2ED_MANPAGES) && _sfx=.bz2; \
	    $(HAVE_LZMAED_MANPAGES) && _sfx=.lzma; \
	    $(HAVE_XZED_MANPAGES) && _sfx=.xz; \
	    sed -n -e '/\.bs$$/d' -e 's/\.[0-9]pm$$/&'"$$_sfx/" -e "s@^$$DIST_ROOT@@p" $(1) >$(1).tmp; \
	    mv $(1).tmp $1; \
	else echo "Arrgh ... no files to include in package via $(1)"; exit 1; \
	fi; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name perllocal.pod -exec rm -f '{}' ';' ; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name \*.bs  -exec rm -f '{}' ';' ; \
	find $$DIST_ROOT/$(PERL_INSTALL_BASE) -name $(2).so -exec chmod 755 '{}' ';'
endif
endif

# Create perl manifest files explicitly for some distributions
ifeq "$(shell [ '$(PACKAGE_DISTRIBUTION)' = cocoa \
                -o '$(PACKAGE_DISTRIBUTION)' = macosx \
                -o '$(PACKAGE_DISTRIBUTION)' = gentoo \
                -o '$(PACKAGE_DISTRIBUTION)' = solaris \
	      ] && echo 1)" "1"
# Gather installed Perl files before packaging
PERL_INSTALL = \
	if [ -n "$(DIST_MANIFEST)" ]; then \
	    if [ "`echo $(TOPDIR)/perl-pcp-*.list`" != "$(TOPDIR)/perl-pcp-*.list" ]; then \
		cat $(TOPDIR)/perl-pcp-*.list | while read f; do \
		    bn=`basename $$f .gz`; \
		    dn=`dirname $$f`; \
		    $(INSTALL) -d $$dn || exit 1; \
		    src=`find */blib -name $$bn`; \
		    if [ -x $$src ] ; then mode=0755; else mode=0644; fi; \
		    $(INSTALL) -m $$mode $$src $$dn/$$bn || exit 1; \
		done; \
	    fi; \
	fi
else
PERL_INSTALL =
endif

SYSTEMD_CFLAGS=
SYSTEMD_LIBS=
PMDA_SYSTEMD=

IB_LIBS=
PMDA_INFINIBAND=


#
# Python platform-specific installation quirks
PYTHON_PREFIX=/usr
SETUP_PY_BUILD_OPTIONS = --include-dirs=$(TOPDIR)/src/include
SETUP_PY_BUILD_OPTIONS += --library-dirs=$(TOPDIR)/src/libpcp/src:$(TOPDIR)/src/libpcp_pmda/src:$(TOPDIR)/src/libpcp_gui/src:$(TOPDIR)/src/libpcp_import/src:$(TOPDIR)/src/libpcp_mmv/src
SETUP_PY_INSTALL_OPTIONS = --skip-build
SETUP_PY_INSTALL_OPTIONS += --root=$${DIST_ROOT-/}
SETUP_PY_INSTALL_OPTIONS += --record=$(TOPDIR)/python-pcp.list
ifeq "$(PYTHON_PREFIX)" "/usr"
ifeq "$(PACKAGE_DISTRIBUTION)" "debian"
SETUP_PY_INSTALL_OPTIONS += --install-layout=deb
endif
else
SETUP_PY_INSTALL_OPTIONS += --prefix=$(PYTHON_PREFIX)
endif
# RPM byte-compiles and installs results in our DIST_ROOT, cater for this:
ifeq "$(shell [ '$(TARGET_OS)' = linux -a '$(PACKAGE_DISTRIBUTION)' != gentoo \
	      ] && echo 1)" "1"
# Linux and not Gentoo (which needs tarball packaging)
PYTHON_INSTALL = \
	$(AWK) '{print} /.pyc$$/ {sub(/.pyc$$/,".pyo"); print}' \
		< $(TOPDIR)/python-pcp.list > $(TOPDIR)/python-pcp.list.rpm; \
	cat $(TOPDIR)/python-pcp.list.rpm | while read f; do \
	    touch $${DIST_ROOT-/}$$f; \
	done
else
ifeq "$(shell [ '$(PACKAGE_DISTRIBUTION)' = cocoa \
                -o '$(PACKAGE_DISTRIBUTION)' = macosx \
                -o '$(PACKAGE_DISTRIBUTION)' = gentoo \
                -o '$(PACKAGE_DISTRIBUTION)' = solaris \
	      ] && echo 1)" "1"
# Gather installed Python files before packaging
# Lines in python-pcp.list are like this
# /usr/lib/python2.7/site-packages/pcp.py
# /usr/lib/python2.7/site-packages/pcp.pyc
# /usr/lib/python2.7/site-packages/pmapi.so
# /usr/lib/python2.7/site-packages/pcp-0.2-py2.7.egg-info
#
# Matching build artifacts are below src/python/build
#
PYTHON_INSTALL = \
	if [ -n "$(DIST_MANIFEST)" ]; then \
	    cat $(TOPDIR)/python-pcp.list \
	    | while read f; do \
		bn=`basename $$f`; \
		dn=`dirname $$f`; \
		$(INSTALL) -d $$dn || exit 1; \
		src=`find $(TOPDIR)/src/python/build -name $$bn`; \
		$(INSTALL) $$src $$f || exit 1; \
	    done; \
	fi
else
PYTHON_INSTALL = 
endif
endif

#
# For targets that should always be rebuilt,
# define a target that is never up-to-date.
# Targets needing this should depend on $(_FORCE)
_FORCE = __force_build

PCP_USER = pcp
PCP_GROUP = pcp
PCP_USER_INSTALL = root
PCP_GROUP_INSTALL = root

PCPLIB = -lpcp
ifneq "$(PCPLIB)" "$(LIB_FOR_BASENAME)"
PCPLIB += $(LIB_FOR_BASENAME)
endif
ifeq "$(ENABLE_SHARED)" "no"
PCPLIB += $(LIB_FOR_MATH) $(LIB_FOR_PTHREADS) $(LIB_FOR_DLOPEN)
endif
PCP_GUILIB = -lpcp_gui $(PCPLIB)
PCP_PMDALIB = -lpcp_pmda $(PCPLIB)
PCP_TRACELIB = -lpcp_trace $(PCPLIB)

ifdef PCP_ALTLIBS
ifeq ($(PCP_LIB_DIR),$(PCP_LIB32_DIR))
PCP_ALTLIBS =
else
ifneq "$(findstring $(MAKECMDGOALS),clean clobber src-pcp)" ""
PCP_ALTLIBS =
endif
endif
endif

BUILD_PMMGR=yes

endif # _BUILDDEFS_INCLUDED_
