# 
# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
# 
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#ident	"$Id$"
#

MOD_DEPTH = ../..
topsrcdir   = @top_srcdir@
srcdir	    = @srcdir@
VPATH	    = @srcdir@

include $(MOD_DEPTH)/config/autoconf.mk

abs_dist_libdir := $(shell (cd $(dist_libdir);pwd))
abs_dist_includedir := $(shell (cd $(dist_includedir);pwd))

%: %.ksh
	$(RM) $@
	cp $< $@
	chmod +x $@

DIRS = \
	SUNWpr \
	SUNWprd

include $(srcdir)/Makefile.com

PROTO = \
	$(ROOT) \
	$(ROOT)/usr/lib/mps \
	$(ROOT)/usr/include/mps

ifeq ($(MACH), sparc)
	PROTO += $(ROOT)/usr/lib/mps/cpu/sparcv8plus
endif

ifeq ($(USE_64), 1)
ifeq ($(MACH), sparc)
# Sparc
	PROTO += $(ROOT)/usr/lib/mps/sparcv9
else
# AMD64
	PROTO += $(ROOT)/usr/lib/mps/amd64
endif
	abs_dist64_libdir = $(abs_dist_libdir)
	abs_dist32_libdir = $(shell echo $(abs_dist_libdir) | sed -e "s|_64_OPT|_OPT|g" -e "s|_64_DBG|_DBG|g")
	abs_dist64_includedir = $(abs_dist_includedir)
	abs_dist32_includedir = $(shell echo $(abs_dist_includedir) | sed -e "s|_64_OPT|_OPT|g" -e "s|_64_DBG|_DBG|g")
else
	abs_dist32_libdir = $(abs_dist_libdir)
	abs_dist64_libdir = $(shell echo $(abs_dist_libdir) | sed -e "s|_OPT|_64_OPT|g" -e "s|_DBG|_64_DBG|g")
	abs_dist32_includedir = $(abs_dist_includedir)
	abs_dist64_includedir = $(shell echo $(abs_dist_includedir) | sed -e "s|_OPT|_64_OPT|g" -e "s|_DBG|_64_DBG|g")
endif

awk_pkginfo: bld_awk_pkginfo
	./bld_awk_pkginfo -m $(MACH) -p "$(PRODUCT_VERSION)" -o $@ -v $(PRODUCT_VERSION)

all:: awk_pkginfo $(PROTO)
publish: awk_pkginfo $(PROTO)
	+$(LOOP_OVER_DIRS)

clean clobber::
	$(RM) awk_pkginfo bld_awk_pkginfo
	$(RM) -r $(ROOT)

$(ROOT):
	mkdir -p $@

$(ROOT)/usr/lib/mps/sparcv9:
	mkdir -p $@
	$(CP) -r $(abs_dist64_libdir)/*.so $@
$(ROOT)/usr/lib/mps/amd64:
	mkdir -p $@
	$(CP) -r $(abs_dist64_libdir)/*.so $@
$(ROOT)/usr/lib/mps:
	mkdir -p $@
	$(CP) -r $(abs_dist32_libdir)/*.so $@
$(ROOT)/usr/lib/mps/cpu/sparcv8plus:
	mkdir -p $@
	$(CP) -r $(abs_dist32_libdir)/cpu/sparcv8plus/*.so $@
$(ROOT)/usr/include/mps:
	mkdir -p $@
	$(CP) -r $(abs_dist32_includedir)/* $@
