# Revision History:
#
#		P. Ezolt				??-Jul-1997
#			Original version
#
#		J. Goddard			10-Sep-1997
#			Add machinery to product C listing files and
#			a linker map file. This includes adding the
#			new directory 'LIS'.
#
#		J. Goddard			10-Sep-1997
#			Added version/rev numbers to make file.
#		P. Ezolt			16-Sep-1998
#			Added New cross-platform makefile.
#
#------------------------------------------------------------------------------------------
#
# IPREDUCE version and revision numbers...
#
# The version number only gets incremented for major releases and must
# be one decimal digit in length.
#
#		version number		description
#   --------------    -----------
#         3           Major cleanup of REP done during the summer of
#											1997. REP mostly complies with the internal C
#											coding standard, has all known bugs fixed and
#											was resturctured in various place for correctness,
#											readablility or sanity.
#
# The revision number gets incremented for each patch or sequence of patches
# (if they were applied together). The revision number may be from one to
# three decimal digits in length.
#
#		revision number		description
#   ---------------   -----------
#          0          Initial rev as per version 3
#
#          1          update copyright text in help output
#
#			  2			 PID can now be input as a base 8, 10 or 16 number
#

#Use CVS to set version numbers. 
#
#

##############
#Common Flags#
##############
IPREDUCE_OBJ = $(TOPDIR)/ipreduce/obj

IPREDUCE_COMMON_INC = $(TOPDIR)/ipreduce/inc/common
IPREDUCE_DUNIX_INC = $(TOPDIR)/ipreduce/inc/dunix
IPREDUCE_DULINUX_INC = $(TOPDIR)/ipreduce/inc/dunix_linux
IPREDUCE_NT_INC = $(TOPDIR)/ipreduce/inc/nt

IPREDUCE_VMSDUNIX_INC = $(TOPDIR)/ipreduce/inc/vms_dunix
IPREDUCE_VMSDULINUX_INC = $(TOPDIR)/ipreduce/inc/vms_dunix_linux

IPREDUCE_COMMON_SRC = $(TOPDIR)/ipreduce/src/common
IPREDUCE_LINUX_SRC = $(TOPDIR)/ipreduce/src/linux
IPREDUCE_DUNIX_SRC = $(TOPDIR)/ipreduce/src/dunix
IPREDUCE_DULINUX_SRC = $(TOPDIR)/ipreduce/src/dunix_linux
IPREDUCE_VMSDUNIX_SRC = $(TOPDIR)/ipreduce/src/vms_dunix
IPREDUCE_NT_SRC = $(TOPDIR)/ipreduce/src/nt


IPREDUCE_DEFS = $(SUITE_DEFS)

IPREDUCE_VPATH =  $(IPREDUCE_COMMON_SRC):$(IPREDUCE_DUNIX_SRC):$(IPREDUCE_LINUX_SRC):$(IPREDUCE_DULINUX_SRC):$(SUITE_SRC):$(IPREDUCE_NT_SRC):$(IPREDUCE_VMSDUNIX_SRC)


#############
#NT Flags#
#############
ifeq ($(OS),Windows_NT)

IPREDUCE_INCLUDE = $(INC) -I$(IPREDUCE_COMMON_INC) -I$(IPREDUCE_NT_INC)

IPREDUCE_LIB = $(TOPDIR)\\ipreduce\\nt_libs

#IPREDUCE_LIBS = $(IPREDUCE_LIB)\\imagehlp.lib $(IPREDUCE_LIB)\\psapi.lib $(IPREDUCE_LIB)\\msdbi50.lib libc.lib kernel32.lib advapi32.lib winmm.lib user32.lib    

#IPREDUCE_LIBS = libc.lib kernel32.lib advapi32.lib winmm.lib

IPREDUCE_LIBS = libc.lib kernel32.lib .\\lib\\obj\\iprshr.lib



# This Make magic transforms are -Idir/dir into -Idir\dir

IPREDUCE_CFLAGS = $(subst /,\\,$(IPREDUCE_INCLUDE)) -Dnt -D_ALPHA_=1 -D__NT -DWIN32_LEAN_AND_MEAN $(IPREDUCE_DEFS) 

$(IPREDUCE_OBJ)/%.o: %.c
	$(CC) $(IPREDUCE_CFLAGS) -c /Fo$(subst /,\\,$@) $(subst /,\\,$<) /FAs /Fa$(subst /,\\,$(subst .o,.lis,$@))

endif


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

ifeq ($(OSTYPE),OSF1)

IPREDUCE_CFLAGS = -migrate -g $(INC) -I$(IPREDUCE_VMSDUNIX_INC) -I$(IPREDUCE_VMSDULINUX_INC) -I$(IPREDUCE_COMMON_INC) -I$(IPREDUCE_DUNIX_INC) -I$(IPREDUCE_DULINUX_INC) $(IPREDUCE_DEFS) 

$(IPREDUCE_OBJ)/%.o: %.c
	$(CC) $(IPREDUCE_CFLAGS) -c -o $@ $<

endif


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

ifeq ($(OSTYPE),Linux)

IPREDUCE_CFLAGS = -D__LINUX__ -I/usr/src/linux/include $(INC) -I$(IPREDUCE_VMSDULINUX_INC) -I$(IPREDUCE_COMMON_INC) -I$(IPREDUCE_DULINUX_INC) $(IPREDUCE_DEFS) -g

$(IPREDUCE_OBJ)/%.o: %.c
	$(CC) $(IPREDUCE_CFLAGS) -c -o $@ $<

endif

ALL_COMMON_IPREDUCE_OBJS =	 	$(IPREDUCE_OBJ)/ipreduce.o

# The NT code doesn't work right now.. It has to be changed...
#  --Phil

ALL_NT_IPREDUCE_OBJS = 			$(ALL_COMMON_IPREDUCE_OBJS) \
		 			$(IPREDUCE_OBJ)/ipreduce_nt.o

ALL_UNIX_IPREDUCE_OBJS = 		$(ALL_COMMON_IPREDUCE_OBJS) \
		 			$(IPREDUCE_OBJ)/ipreduce_osf1.o

ipreduce_combo=				$(IPREDUCE_COMMON_INC)/ipreduce.h\
					$(ipr_api_ext_defs_combo)\
					$(SUITE_COMMON_INC)/ipr_events.h

# Where does those two live??? 

# "FORCE" guarentees that this command will be rebuilt. 
#  We need that so the latest version of the suite is always embedded in the program help.

$(IPREDUCE_OBJ)/ipreduce.o:		FORCE\
					$(IPREDUCE_COMMON_SRC)/ipreduce.c\
					$(ipreduce_combo)

########################################################################
#OS SPECIFIC: NT
########################################################################

$(IPREDUCE_OBJ)/nt_ipreduce.exe:		$(ALL_NT_IPREDUCE_OBJS)
	link /MAP:$(subst /,\\,$(IPREDUCE_OBJ))\\nt_ipreduce.map /out:$(subst /,\\,$@) /debug:full /debugtype:both $(subst /,\\,$(ALL_NT_IPREDUCE_OBJS)) $(IPREDUCE_LIBS) /NODEFAULTLIB 



########################################################################
#OS SPECIFIC: Unix/Linux
########################################################################
$(IPREDUCE_OBJ)/ipreduce_osf1.o:	$(IPREDUCE_DULINUX_SRC)/ipreduce_osf1.c\
					$(ipreduce_combo)


########################################################################
#OS SPECIFIC: Linux
########################################################################

$(IPREDUCE_OBJ)/linux_ipreduce:		$(ALL_UNIX_IPREDUCE_OBJS)
	$(CC) -o $@ $(ALL_UNIX_IPREDUCE_OBJS) -L/usr/lib -L./lib/obj -Wl,-rpath,/usr/local/lib -lc -lm -llipr


########################################################################
#OS SPECIFIC: Dunix/OSF
########################################################################

$(IPREDUCE_OBJ)/dunix_ipreduce:		$(ALL_UNIX_IPREDUCE_OBJS)
	$(CC) -o $@ $(ALL_UNIX_IPREDUCE_OBJS) -L./lib/obj -lm -lipr -lots



########################################################################

clean-ipreduce:
	-rm $(IPREDUCE_OBJ)/*

#This links all of the objects into a single kernel module. 

linux_ipreduce:			$(IPREDUCE_OBJ)/linux_ipreduce
linux_ipreduce_install:
	cp $(IPREDUCE_OBJ)/linux_ipreduce $(INSTALL_DIR)/bin/ipreduce



dunix_ipreduce:			$(IPREDUCE_OBJ)/dunix_ipreduce

nt_ipreduce:			$(IPREDUCE_OBJ)/nt_ipreduce.exe


