# @(#) $RCSfile: makehead.cpp,v $: $Revision: #141 $, $Date: 2008/08/25 $
# @(#) Copyright (c), 1987, 2006 Insightful Corp.  All rights reserved.
#
# For X11 compilation option settings, see the file $INC/x11.make. That
# file should be included instead of cdefs.h in any Smake.cpp file that
# intends to load/compile X11 programs. Some of the make variables
# assigned in there are used by variables in here. (It does no harm if
# x11.make isn't included because non-existent variable references expand
# to empty string).
#
S_MAKE = $(SHOME)/cmd/S_MAKE
SHELL=/bin/sh
SHLIBNAME=dummy.so
TIMEBOMB_DIR=../../timebomb
TIMEBOMB_SOURCES=helpers.cxx keycode.cxx licmgrrg.cxx reghelpr.cxx
SPLUS_TOOLS_DIR=/dept/devel/tools
OLD_JAVA_HOME=/build/jdk
OLD_JAR=${OLD_JAVA_HOME}/bin/jar
OLD_JH=${OLD_JAVA_HOME}/jh
JAVA_HOME=${SHOME}/java
JAVA_EXT_DIR=${JAVA_HOME}/jre/lib/ext
CLPATH=.:${SHOME}/slocal/splusjava/:${JAVA_EXT_DIR}/jai_core.jar:${JAVA_EXT_DIR}/jai_codec.jar:${JAVA_EXT_DIR}/mlibwrapper_jai.jar:${JAVA_EXT_DIR}/jhall.jar:${JAVA_EXT_DIR}/fop.jar:${JAVA_EXT_DIR}/jfor-0.7.1.jar:${JAVA_EXT_DIR}/avalon-framework-cvs-20020806.jar:${JAVA_EXT_DIR}/crimson.jar:${JAVA_EXT_DIR}/xercesImpl.jar
# if this is an AIX or HP build, try building with 1.4.2 and distributing 1.5
# S7_CHANGE
# Let us use the latest version of Java on HP-UX also . Use Java 1.5
JAVAC=${JAVA_HOME}/bin/javac
JAR=${JAVA_HOME}/bin/jar
JFLAGS= -classpath ${CLPATH}
JOPTIMIZE_FLAG=
JDEBUG_FLAG=-g
RATFOR=ratfor
CC=gcc
CXX=g++
BIGF77=
FLOAT_FLAG=
DEBUG_FLAG=-g
OPTIMIZE_FLAG=-O
F77=gfortran
F77COMPILE=gfortran
F2C=g2c
LDFLAGS=-m64 -fPIC
MD_CFLAGS=-m64 -fPIC -pthread
MISC_FFLAGS=-w -m64 -fPIC -fdefault-integer-8 -fno-second-underscore -pthread
MISC_LDFLAGS=-m64 -fPIC
MISC_CXXFLAGS=-m64 -fPIC
MD_CXXFLAGS=-m64 -fPIC
CPP_FLAGS=-m64 -fPIC
CMLIB_FLAG=
SYS_DEP_LIBS =
LDFLAGS_DYN=$(LDFLAGS)
LDFLAGS_STATIC=$(LDFLAGS)
LOCAL_CFLAGS=
LOCAL_FFLAGS=
CFLAGS= -f "DO NOT USE CFLAGS"
FFLAGS= -f "DO NOT USE FFLAGS"
IF= -if
RMAC=$I/u/mach.m $I/ratfor.m
CMAC=$I/u/mach.m $I/u/cdefs.m
STD_R_MFILES = $(SHOME)/newfun/include/u/mach.m 	       $(SHOME)/newfun/include/ratfor.m 	       $(SHOME)/newfun/include/stand.m
STD_C_MFILES = $(SHOME)/newfun/include/u/mach.m 	       $(SHOME)/newfun/include/u/cdefs.m
PREPROCESS_FLAG=-E -C
ENV=
GXARGS=gxargs
DUMMY_RULE=
DOSINSTALL=unix2dos
INSTALL_DIR=$(SHOME)
SYM_LINK=ln -s
STRIP= -s
RM=/bin/rm
RM_TEMPS=/bin/rm -f $(S_TMP)/$*.*
RM_LOCALS=2>&1 | sed "/local variable.*used/d"
M4=$C/m4
ORIG_INCDIR=`pwd`
ORIG_INCFLAG=-I$$A
INCLUDE_FLAG=-I$(INC) $(XINCLUDE)
CXX_INCLUDE_FLAG=$(INCLUDE_FLAG)
MISC_CFLAGS=$(X_CFLAGS) $(MD_CFLAGS)
MISC_CXXFLAGS=$(X_CXXFLAGS) $(MD_CXXFLAGS)
F2CLIB=
# S7_CHANGE
PROG=$(F77)
# DEV_LD_LIBS and DEV_LDFLAGS_DYN used by $SL/Devices Smakefiles
# C library must be included before Fortran library on IBM RS6000 -tpc
DEV_LD_LIBS = $(F2CLIB) -lm $(SYS_DEP_LIBS) -lc
# Clear this out. Dynamic loading in device drivers only done where
# needed (HP800/HP700 at HPUX 8.0+)
CC_O=$(CC) -o
BIGC=C
O=o
FUNS_DIR=.Data
DSETS_DIR=.Datasets
HELP_DIR=.Help
SGML_CATHELP_DIR=__Hhelp
SGML_HELP_DIR=__Shelp
DATA_DIR=.Data
AUDIT_FILE=.Audit
FOUND_FILES={}
Y_TAB=y.tab
LD_CMD=ld -r -o
S_SO=S.so
A=$(SHOME)/adm/cmd
C=$(SHOME)/cmd
I=$(SHOME)/newfun/include
INC=$(SHOME)/include
QPE=$(SHOME)/src/qpe
L=$(SHOME)/newfun/lib
J=$(SHOME)/java
SPLUS_LIBRARY=splus.a
SPLUS_DEST=$(SHOME)/library/splus
DEST=$(SHOME)/library/splus
SPLUS_DSETS=$(SHOME)/library/data
INDDEV=$L/inddev.z
PSL=$L/psl.a
SL=$(SHOME)/slocal
LIBR=$L/lang.a $(PSL)
GRZLIB=$L/grz.a $(PSL)
GRZ=$(INDDEV) $L/grz.a $L/lang.a $(PSL)
# The following allows the target BIG_TARG to be used in individual
# Smakefiles to create __BIG and __BIGIN in local .Data directories.
# The maketail file has the bigfiles target defined.
BIG_TARG=bigfiles
# This allows WIN32S_TARG to be used in Smakefiles, whether win32s is
# supported or not, for creating DOS versions of various utilities.
Imac = $(SHOME)/newfun/include
INCmac = $(SHOME)/include
S_DOT_H = $(SHOME)/include/S_dot_h
S_DOT_H1 = $(SHOME)/touches/S_dot_h1
S_DOT_H2 = $(SHOME)/touches/S_dot_h2
# machine-dependent automatically-changed by $A/fix.makefile follows this ...
# end machine-dependent stuff
.SUFFIXES:
.SUFFIXES: .o .f .r .c .$(BIGC) .cm4 .i .x .qpp .q .dpp .spp .d .sgml .fpp .rpp .cpp .jpp .ad .adh .adp .ci .rpc .ppc .cxx .java .class .subs
# MKS make (for DOS & Windows) fails using suffix rules (it considers them
# "outdated") when the dependency has to be made.  These macros are to be
# used to handle the difference between suffix rules and meta rules.
R_TO_O=.r.o:
F_TO_O=.f.o:
C_TO_O=.c.o:
CXX_TO_O=.cxx.o:
JAVA_TO_CLASS=.java.class:
C_TO_CI=.c.ci:
FPP_TO_F=.fpp.f:
RPP_TO_R=.rpp.r:
$(R_TO_O)
	@echo .r.o rule. Processing `pwd`/$@
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.r $(RMAC) $*.r > $*.rm4
	$(RATFOR) "-6&" < $*.rm4 > $*.f
	-$(RM) -f $*.rm4 >/dev/null 2>&1 || true
	$(F77COMPILE)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_FFLAGS) $(LOCAL_FFLAGS) -c $*.f
	-$(RM) -f $*.f >/dev/null 2>&1 || true
.i.f:
	@echo .i.f rule. Processing `pwd`/$@
	$C/icomp <$*.i >$(S_TMP)/$*.i
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.i $I/intf.m $(S_TMP)/$*.i >$(S_TMP)/$*.s
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.i $(RMAC) $(S_TMP)/$*.s >$(S_TMP)/$*.r
	$(RATFOR) "-6&" <$(S_TMP)/$*.r >$*.f
.i.x:
	@echo .i.x rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.* >/dev/null 2>&1 || true
	$C/icomp <$*.i >$(S_TMP)/$*.i
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.i $I/intf.m $(S_TMP)/$*.i >$(S_TMP)/$*.s
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.i $(RMAC) $(S_TMP)/$*.s >$(S_TMP)/$*.r
	$(RATFOR) "-6&" <$(S_TMP)/$*.r >$(S_TMP)/$*.f
	cd $(S_TMP); $(F77COMPILE) -c $(BIGF77)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_FFLAGS) $(LOCAL_FFLAGS) $*.f $(RM_LOCALS)
	mv $(S_TMP)/$*.$(O) $*.x
	-$(RM_TEMPS)
$(F_TO_O)
	@echo .f.o rule. Processing `pwd`/$@
	@echo RELEASE_TYPE_FLAG=$(RELEASE_TYPE_FLAG)
	$(F77COMPILE)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_FFLAGS) $(LOCAL_FFLAGS) -c $*.f
.$(BIGC).o:
	@echo .$(BIGC).o rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.c >/dev/null 2>&1 || true
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.$(BIGC) $(CMAC) $*.$(BIGC) >$(S_TMP)/$*.c
	A=$(ORIG_INCDIR); cd $(S_TMP); $(CC)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_CFLAGS) $(LOCAL_CFLAGS)  $${CPP_FLAGS} $(ORIG_INCFLAG) $(INCLUDE_FLAG) -c $*.c
	mv $(S_TMP)/$*.$(O) $*.o
	-$(RM_TEMPS)
.cm4.o:
	@echo .cm4.o rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.c >/dev/null 2>&1 || true
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.cm4 $(CMAC) $*.cm4 >$(S_TMP)/$*.c
	A=$(ORIG_INCDIR); cd $(S_TMP); $(CC)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_CFLAGS)   $(LOCAL_CFLAGS) $${CPP_FLAGS} $(ORIG_INCFLAG) $(INCLUDE_FLAG) -c $*.c
	mv $(S_TMP)/$*.$(O) $*.o
	-$(RM_TEMPS)
$(C_TO_O)
	@echo .c.o rule. Processing `pwd`/$@
	@echo RELEASE_TYPE_FLAG=$(RELEASE_TYPE_FLAG)
	A=.; $(CC)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_CFLAGS)  $(LOCAL_CFLAGS) $${CPP_FLAGS} $(ORIG_INCFLAG) $(INCLUDE_FLAG) -c $*.c
$(CXX_TO_O)
	@echo .cxx.o rule. Processing `pwd`/$@
	A=.; $(CXX) $(CXXFLAGS)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_CXXFLAGS)  $(LOCAL_CFLAGS) $${CPP_FLAGS} $(ORIG_INCFLAG) $(CXX_INCLUDE_FLAG) -c $*.cxx
$(JAVA_TO_CLASS)
	@echo .java.class rule. Processing `pwd`/$@
	A=.; $(JAVAC) $(JFLAGS) -target 1.5 $(JBUILD_TYPE_FLAG) $*.java
$(C_TO_CI)
	@echo .c.i rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.c >/dev/null 2>&1 || true
	cp $*.c $(S_TMP)/$*.c
	A=$(ORIG_INCDIR); cd $(S_TMP); $(CC)  $(FLOAT_FLAG) $(RELEASE_TYPE_FLAG) $(MISC_CFLAGS) $(LOCAL_CFLAGS)  $${CPP_FLAGS} $(ORIG_INCFLAG) $(INCLUDE_FLAG) $(PREPROCESS_FLAG)  $*.c  -o $*.i
	mv $(S_TMP)/$*.i $@
	-$(RM_TEMPS)
.r.f:
	@echo .r.f rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.* >/dev/null 2>&1 || true
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.r $(RMAC) $*.r >$(S_TMP)/$*.r
	$(RATFOR) "-6&" <$(S_TMP)/$*.r >$(S_TMP)/$*.f
.$(BIGC).c:
	@echo .$(BIGC).c rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.c >/dev/null 2>&1 || true
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.$(BIGC) $(CMAC) $*.$(BIGC) >$(S_TMP)/$*.c
.cm4.c:
	@echo .cm4.c rule. Processing `pwd`/$@
	-$(RM) -f $(S_TMP)/$*.c >/dev/null 2>&1 || true
	$(M4) -DSHOME=$(SHOME) -DBASEFILE=$*.cm4 $(CMAC) $*.cm4 >$(S_TMP)/$*.c
.cpp:
	[ -f $* ] && mv -f $* $*.before || true
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG)" CPP_FILE $*.cpp > $*
.qpp.q:
	@echo .qpp.q rule. Processing `pwd`/$@
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DQPE" CPP_FILE $*.qpp  > $*.q
.jpp.java:
	@echo .jpp.java rule. Processing `pwd`/$@
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DQPE" CPP_FILE $*.jpp  > $*.java
.dpp.d:
	@echo .dpp.q rule. Processing `pwd`/$@
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DHELP_FILE" CPP_FILE -b $*.dpp > $*.d
.spp.sgml:
	@echo .spp.sgml rule. Processing `pwd`/$@
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DHELP_FILE" CPP_FILE -b $*.spp > $*.sgml
$(FPP_TO_F)
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DFORTRAN" CPP_FILE $*.fpp > $*.f
$(RPP_TO_R)
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DFORTRAN" CPP_FILE $*.rpp > $*.r
.adp.ad:
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS $(INCLUDE_FLAG) -DADFILE" CPP_FILE $*.adp  > $*.ad
.ad.adh :
	$C/ad2c $*.ad > $*.adh
# Right now, this rule MIGHT get used in slocal/process or in
# module/dataconn.
.ppc.rpc:
	$(ENV) CPP_FLAGS="-DNOT_C_SOURCE $$CPP_FLAGS -I. $(INCLUDE_FLAG) -DRPC_FILE" CPP_FILE -b $*.ppc > $@
