.EXPORT_ALL_VARIABLES:
TOPDIR  := .

#               P. Ezolt                                1-Sep-1998
#                       Original version: This is the first version of
#			a make file that runs on all 
#			systems rep runs on. (VMS/NT/Digital Unix/Linux)
#               P. Ezolt                                16-Sep-1998
#			Added Ipreduce, fixed some naming problems.
#
#



#############
#NT Flags#
#############

ifeq ($(OS),Windows_NT)
CC := cl
endif 

#############
#LINUX Flags#
#############

ifeq ($(OSTYPE),Linux)
CC := gcc
endif    

#############
#DUNIX Flags#
#############

ifeq ($(OSTYPE),OSF1)
CC:= cc
endif  


SUITE_COMMON_INC = $(TOPDIR)/suite_common/inc/common
SUITE_LINUX_INC = $(TOPDIR)/suite_common/inc/linux
SUITE_DUNIX_INC = $(TOPDIR)/suite_common/inc/dunix
SUITE_VMS_INC = $(TOPDIR)/suite_common/inc/vms
SUITE_DULINUX_INC = $(TOPDIR)/suite_common/inc/dunix_linux
SUITE_VMSDULINUX_INC = $(TOPDIR)/suite_common/inc/vms_dunix_linux
SUITE_NT_INC = $(TOPDIR)/suite_common/inc/nt

SUITE_COMMON_SRC = $(TOPDIR)/suite_common/src/common





#Common Dependancies. 

bit_library_combo =  		$(SUITE_COMMON_INC)/bit_library.h \
				$(SUITE_COMMON_INC)/stdtypes.h

hb_library_combo =		$(SUITE_COMMON_INC)/hb_library.h \
				$(ipr_api_base_defs_combo)

ipr_base_defs_combo = 		$(SUITE_COMMON_INC)/ipr_base_defs.h \
				$(SUITE_COMMON_INC)/ipr_base_masks.h \
				$(SUITE_COMMON_INC)/ipr_messages.h \
				$(bit_library_combo) \
				$(SUITE_COMMON_INC)/stdtypes.h

ctr_ext_defs_combo =		$(SUITE_COMMON_INC)/ctr_ext_defs.h \
				$(SUITE_COMMON_INC)/ctr_names.h \
				$(SUITE_LINUX_INC)/ctr_ext_defs_linux.h \
				$(ipr_base_defs_combo)

ctr_int_defs_combo = 		$(SUITE_COMMON_INC)/ctr_int_defs.h\
				$(ctr_ext_defs_combo) \
                                $(SUITE_COMMON_INC)/ipr_events.h \
				$(ipr_kernel_util_combo)

evx_vms_osf_combo = 		$(SUITE_VMSDULINUX_INC)/evx_vms_osf.h\
				$(ipr_base_defs_combo)

ipr_kernel_util_osf1_combo = 	$(SUITE_DULINUX_INC)/ipr_kernel_util_osf1.h\
				$(evx_vms_osf_combo)

ipr_kernel_util_combo  = 	$(SUITE_COMMON_INC)/ipr_kernel_util.h \
				$(ipr_base_defs_combo) \
                                $(ipr_kernel_util_osf1_combo)

ipr_api_base_defs_combo =	$(SUITE_COMMON_INC)/ipr_api_base_defs.h \
				$(ipr_base_defs_combo) \
                                $(SUITE_COMMON_INC)/ipr_api_masks.h\
				$(SUITE_LINUX_INC)/ipr_api_base_defs_linux.h

ev4_routines_combo =		$(SUITE_COMMON_INC)/ev4_routines.h\
				$(SUITE_LINUX_INC)/ev4_routines_linux.h\
				$(SUITE_DULINUX_INC)/ev4_routines_osf1.h\
				$(ctr_int_defs_combo) \
				$(evx_vms_osf_combo)

ev5_routines_combo = 		$(SUITE_COMMON_INC)/ev5_routines.h \
				$(SUITE_LINUX_INC)/ev5_routines_linux.h \
				$(SUITE_DULINUX_INC)/ev5_routines_osf1.h \
				$(ctr_int_defs_combo) \
				$(evx_vms_osf_combo) 

ipr_kernel_ext_defs_combo = 	$(SUITE_COMMON_INC)/ipr_kernel_ext_defs.h \
				$(SUITE_LINUX_INC)/ipr_kernel_ext_linux.h \
				$(SUITE_DULINUX_INC)/ipr_kernel_ext_osf.h \
				$(ipr_api_base_defs_combo) \
				$(ipr_sample_combo) \
				$(ipr_base_defs_combo)

ipr_kernel_int_defs_combo =  	$(SUITE_COMMON_INC)/ipr_kernel_int_defs.h \
                                $(ipr_kernel_ext_defs_combo) \
                                $(ipr_kernel_util_combo) \
				$(ipr_kernel_ext_defs_combo)	
                                
ipr_api_ext_defs_combo =	$(SUITE_COMMON_INC)/ipr_api_ext_defs.h\
				$(ipr_api_base_defs_combo) \
                                $(SUITE_COMMON_INC)/ctr_names.h \
				$(hb_library_combo)

ipr_api_int_defs_combo = 	$(SUITE_COMMON_INC)/ipr_api_int_defs.h\
				$(ipr_api_ext_defs_combo) \
				$(ctr_ext_defs_combo) \
				$(ipr_kernel_ext_defs_combo)

ipr_sample_combo = 		$(SUITE_COMMON_INC)/ipr_sample.h \
				$(ipr_api_base_defs_combo)

all:	driver lib iprobe ipreduce rep

# This is a hack, (officially sanctioned), that allows use to force
# certain objects to recompile.  
FORCE:

#This includes the makefile for the driver. 
include ./driver/makefile
include ./lib/makefile
include ./iprobe/makefile
include ./rep/makefile
include ./ipreduce/makefile

IPROBE_MAJOR_VER = 4
IPROBE_MINOR_VER = 0

SUITE_DEFS = -DIPROBE_MAJOR_VER=$(IPROBE_MAJOR_VER) -DIPROBE_MINOR_VER=$(IPROBE_MINOR_VER)


# This tells the makefile that we REALLY aren't using
# these targets as file names.  (Since we acutally
# are aliasing them to something else, depending on
# which OS we are one. 

.PHONY: driver lib iprobe rep ipreduce 

# This allows us to make the rules for compilation much simpler.
# We don't have to specify where the source and targets are. 
# Unfortunately, VMS GNU Make doesn't like this..

VPATH = $(IPROBE_VPATH):$(REP_VPATH):$(IPREDUCE_VPATH):$(LIB_VPATH):$(DRV_VPATH)

clean:	clean-driver clean-library clean-iprobe clean-rep clean-ipreduce


ifeq ($(OS),Windows_NT)
INC = -I$(SUITE_COMMON_INC) -I$(SUITE_NT_INC)

#driver:		nt_iprobe_driver
driver:		
lib:		nt_library
#lib:		
iprobe:		nt_iprobe
rep:		nt_rep
ipreduce:	nt_ipreduce

endif


ifeq ($(OSTYPE),Linux)
INC = -I$(SUITE_COMMON_INC) -I$(SUITE_LINUX_INC) -I$(SUITE_DUNIX_INC) -I$(SUITE_DULINUX_INC) -I$(SUITE_VMSDULINUX_INC) 
INSTALL_DIR = /usr/local


driver:		linux_iprobe_driver
lib:		linux_library
iprobe:		linux_iprobe
rep:		linux_rep
ipreduce:	linux_ipreduce
install:	linux_rep_install \
		linux_ipreduce_install \
		linux_iprobe_install \
		linux_library_install
	-mknod /dev/ipr c 61 0

#All of this magic will guarentee that the rpms have the proper major and
#minor revision number.  Note: You must both be on a redhat system, AND root
#in order to make the kits. 

RPM_RELEASE=1

kit:	clean

#This addes version information to the beginning of the Spec file. 

	echo Version: $(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER) > /usr/src/redhat/SPECS/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER)-$(RPM_RELEASE).spec

	echo Release: $(RPM_RELEASE) >> /usr/src/redhat/SPECS/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER)-$(RPM_RELEASE).spec

	cat kits/linux/iprobe_suite.spec >> /usr/src/redhat/SPECS/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER)-$(RPM_RELEASE).spec

	tar zcvhf ./kits/linux/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER).tgz --exclude CVS --exclude *.rpm --exclude dunix --exclude nt --exclude nt_libs --exclude vms .

	cp ./kits/linux/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER).tgz /usr/src/redhat/SOURCES/iprobe_suite.tgz

	rpm -ba /usr/src/redhat/SPECS/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER)-$(RPM_RELEASE).spec

	cp /usr/src/redhat/RPMS/alpha/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER)-$(RPM_RELEASE).alpha.rpm kits/linux

	cp /usr/src/redhat/SRPMS/iprobe_suite-$(IPROBE_MAJOR_VER).$(IPROBE_MINOR_VER)-$(RPM_RELEASE).src.rpm kits/linux

endif

ifeq ($(OSTYPE),OSF1)

INC = -I$(SUITE_COMMON_INC) -I$(SUITE_DUNIX_INC) -I$(SUITE_DULINUX_INC) -I$(SUITE_VMSDULINUX_INC) 

driver:		dunix_iprobe_driver
lib:		dunix_library
iprobe:		dunix_iprobe
rep:		dunix_rep
ipreduce:	dunix_ipreduce
kit.old: clean all
kit:	all

	cp $(DRV_OBJ)/ipr.mod ./kits/dunix/src/usr/IPROBE400
	cp $(LIB_OBJ)/libipr.so ./kits/dunix/src/usr/IPROBE400
	cp $(REP_OBJ)/dunix_rep ./kits/dunix/src/usr/IPROBE400/rep 
	cp $(IPREDUCE_OBJ)/dunix_ipreduce ./kits/dunix/src/usr/IPROBE400/ipreduce
	cp $(IPROBE_OBJ)/dunix_iprobe ./kits/dunix/src/usr/IPROBE400/iprobe
	(cd ./kits/dunix/data ; kits IPRBASE400.k ../src ../iprobe_kit)
	(cd ./kits/dunix; tar -cvf iprobe_v4_unix40.tar ./iprobe_kit/*)
	(gzip -9 ./kits/dunix/iprobe_v4_unix40.tar)           
endif

ifeq ($(OS),vms)

driver:		vms_iprobe_driver
lib:		vms_library
iprobe:		vms_iprobe
rep:		vms_rep
ipreduce:	vms_ipreduce

endif






