From 924eec5066f25f68f948b0de6299abf29567eba5 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Mon, 13 Sep 1999 13:36:29 +0000 Subject: [PATCH] new for 3.14; replaces config --- configure/CONFIG | 80 ++++ configure/CONFIG.CrossCommon | 7 + configure/CONFIG_BASE_VERSION | 19 + configure/CONFIG_COMMON | 239 ++++++++++ configure/CONFIG_ENV | 128 ++++++ configure/CONFIG_SITE | 138 ++++++ configure/CONFIG_SITE_ENV | 45 ++ configure/RELEASE | 1 + configure/RULES_ARCHS | 91 ++++ configure/RULES_BUILD | 834 ++++++++++++++++++++++++++++++++++ configure/RULES_DIRS | 50 ++ configure/RULES_TOP | 60 +++ configure/Sample.Makefile | 183 ++++++++ 13 files changed, 1875 insertions(+) create mode 100644 configure/CONFIG create mode 100644 configure/CONFIG.CrossCommon create mode 100644 configure/CONFIG_BASE_VERSION create mode 100644 configure/CONFIG_COMMON create mode 100644 configure/CONFIG_ENV create mode 100644 configure/CONFIG_SITE create mode 100644 configure/CONFIG_SITE_ENV create mode 100644 configure/RELEASE create mode 100644 configure/RULES_ARCHS create mode 100644 configure/RULES_BUILD create mode 100644 configure/RULES_DIRS create mode 100644 configure/RULES_TOP create mode 100755 configure/Sample.Makefile diff --git a/configure/CONFIG b/configure/CONFIG new file mode 100644 index 000000000..9d80689c6 --- /dev/null +++ b/configure/CONFIG @@ -0,0 +1,80 @@ +# +# $Id$ +# +# The developer may edit this file. +# assume T_A is the host arch if not specified + +# +# Common build definitions +# + +#################################################### +CONFIG = $(TOP)/configure +INSTALL_LOCATION=$(TOP) +include $(CONFIG)/CONFIG_EPICS_BASE +include $(CONFIG)/CONFIG_BASE_VERSION +#################################################### +-include $(TOP)/config/RELEASE +-include $(TOP)/config/RELEASE.$(HOST_ARCH) +#################################################### + +include $(CONFIG)/CONFIG_COMMON + +# Site-specific build options +# +include $(CONFIG)/CONFIG_SITE + +# Host architecture specific definitions +# +include $(CONFIG)/CONFIG.Host.$(HOST_ARCH) +-include $(CONFIG)/CONFIG_SITE.Host.$(HOST_ARCH) + +ifdef T_A + +# Architecture specific definitions +# +ifneq ($(HOST_ARCH),$(T_A)) +include $(CONFIG)/CONFIG.CrossCommon +endif + +include $(CONFIG)/CONFIG.Target.$(T_A) +# +-include $(CONFIG)/CONFIG_SITE.Target.$(T_A) +# +-include $(CONFIG)/CONFIG_SITE.$(HOST_ARCH).$(T_A) + +endif + +# User specific definitions +# +-include $(HOME)/configure/CONFIG +-include $(HOME)/configure/CONFIG.Host.$(HOST_ARCH) +ifdef T_A +-include $(HOME)/configure/CONFIG.$(OS_CLASS) +-include $(HOME)/configure/CONFIG.Target.$(T_A) +-include $(HOME)/configure/CONFIG.$(HOST_ARCH).$(T_A) +endif + +# All options +# may be overridden here. +# +# EXAMPLES +# -------- +# Build client objects statically ? must be either YES or NO +#STATIC_BUILD=NO +# Unix Optimization, must be either YES or NO +#HOST_OPT=YES +# VxWorks Optimization, must be either YES or NO +#VX_OPT=YES +# Generate Verbose Compiler Warnings for Unix, must be either YES or NO +#UNIX_WARN=YES +# Generate Verbose Compiler Warnings for VxWorks, must be either YES or NO +#VX_WARN=YES +#etc. + +#CROSS_COMPILER_TARGET_ARCHS=mv167 +#ANSI=GCC +#CPLUSPLUS=G++ +#CMPLR=STRICT +#CXXCMPLR=STRICT + diff --git a/configure/CONFIG.CrossCommon b/configure/CONFIG.CrossCommon new file mode 100644 index 000000000..8155f4a47 --- /dev/null +++ b/configure/CONFIG.CrossCommon @@ -0,0 +1,7 @@ +# Cross compiler default definitions + +CROSS = YES + +ANSI = GCC +CPLUSPLUS = G++ + diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION new file mode 100644 index 000000000..6b34e927b --- /dev/null +++ b/configure/CONFIG_BASE_VERSION @@ -0,0 +1,19 @@ +# +# $Id$ +# +# EPICS Version information +# +# This file is interpreted by the Bourne Shell (MakeRelease), so spaces are +# not allowed around the '=' signs or in unquoted values. +# + +EPICS_VERSION=3 +EPICS_REVISION=13 +EPICS_MODIFICATION=1 +EPICS_UPDATE_NAME= +EPICS_UPDATE_LEVEL=1 + +EPICS_VERSION_STRING="EPICS Version ${EPICS_VERSION}.${EPICS_REVISION}.${EPICS_MODIFICATION}.${EPICS_UPDATE_NAME}${EPICS_UPDATE_LEVEL}" + +CVS_DATE="\$$Date$$" + diff --git a/configure/CONFIG_COMMON b/configure/CONFIG_COMMON new file mode 100644 index 000000000..a9c47f65f --- /dev/null +++ b/configure/CONFIG_COMMON @@ -0,0 +1,239 @@ +# +# $Id$ +# +# CONFIG_COMMON +# +# This file is to be maintained by the community. +# + +# Common Configuration Information + +#################################################################### +#################################################################### + +# CROSS1 will be defined only when CROSS_COMPILER_HOST_ARCHS is NOT defined +CROSS1 = $(CROSS_COMPILER_TARGET_ARCHS$(word 1,$(CROSS_COMPILER_HOST_ARCHS))) + +# CROSS2 will be defined only when CROSS_COMPILER_HOST_ARCHS is defined +# and HOST_ARCH is one of it's words +CROSS2 = $(CROSS_COMPILER_TARGET_ARCHS$(filter-out 1,$(words $(filter $(HOST_ARCH),$(CROSS_COMPILER_HOST_ARCHS))))) + +BUILD_ARCHS = $(HOST_ARCH) $(CROSS1) $(CROSS2) + +#################################################################### +#################################################################### + +INSTALL_LOCATION_LIB = $(INSTALL_LOCATION)/lib +INSTALL_LOCATION_BIN = $(INSTALL_LOCATION)/bin + +INSTALL_INCLUDE = $(INSTALL_LOCATION)/include +INSTALL_DOC = $(INSTALL_LOCATION)/doc +INSTALL_HTML = $(INSTALL_LOCATION)/html +INSTALL_MAN = $(INSTALL_LOCATION)/man +INSTALL_TEMPLATES = $(INSTALL_LOCATION)/templates +INSTALL_DBD = $(INSTALL_LOCATION)/dbd +INSTALL_JAVA = $(INSTALL_LOCATION)/javalib + +DIVIDER = . +OBJ = . +RES = . + +# Default for perl if it's on the PATH, +# otherwise override this in CONFIG_SITE. +PERL=perl + +# install +TOOLS = $(CONFIG)/tools +INSTALL = $(PERL) $(TOOLS)/installEpics.pl +INSTALL_PRODUCT = $(INSTALL) +INSTALL_LIBRARY = $(INSTALL) + +ifdef T_A + +INSTALL_LIB = $(INSTALL_LOCATION_LIB)/$(T_A) +INSTALL_TCLLIB = $(INSTALL_LOCATION_LIB)/$(T_A) +INSTALL_BIN = $(INSTALL_LOCATION_BIN)/$(T_A) + +#-------------------------------------------------- +# GNU compiler defaults + +GCC = $(GNU_BIN)/cc$(CMPLR_SUFFIX) +GCC_AR = $(GNU_BIN)/ar$(CMPLR_SUFFIX) +GCC_CPP = $(GNU_BIN)/cpp$(CMPLR_SUFFIX) +GCC_RANLIB = $(GNU_BIN)/ranlib$(CMPLR_SUFFIX) +GCC_LD = $(GNU_BIN)/ld$(CMPLR_SUFFIX) -r + +NM = $(GNU_BIN)/nm$(CMPLR_SUFFIX) +MUNCH = $(GNU_BIN)/munch + +GCC_ANSI = $(GCC) -ansi +GCC_STRICT = $(GCC) -ansi -pedantic +GCC_TRAD = $(GCC) -traditional +GCC_WARN_YES = -Wall +GCC_WARN_NO = -w +GCC_OPT_YES = -O +GCC_OPT_NO = -g +GCC_SFLAGS_YES = -static +GCC_SFLAGS_NO = +GCC_SLIBS_YES = +GCC_SLIBS_NO = +GCC_CROSSFLAGS_YES = -B$(GNU_LIB)/gcc-lib/ -nostdinc +GCC_CPPCROSSFLAGS_YES = -nostdinc +###############GCC_SHRLIB_CFLAGS_YES = -fPIC +GCC_SHRLIB_LDFLAGS_YES = -shared + +G++ = $(GNU_BIN)/cc$(CMPLR_SUFFIX) +G++_LD = $(GNU_BIN)/ld$(CMPLR_SUFFIX) -r + +G++_NORMAL = $(G++) -ansi -pedantic +G++_STRICT = $(G++) -ansi -pedantic -Wtraditional +G++_TRAD = $(G++) -traditional +G++_TEMPL_INST_FLAG = -DEXPL_TEMPL +G++_WARN_YES = -Wall \ + -Wmissing-prototypes -Woverloaded-virtual \ + -Wwrite-strings -Wconversion -Wstrict-prototypes\ + -Wpointer-arith -Winline +G++_WARN_NO = -w +G++_OPT_YES = -O +G++_OPT_NO = -g +G++_SFLAGS_YES = -static +G++_SFLAGS_NO = +G++_SLIBS_YES = +G++_SLIBS_NO = +G++_DEPENDS_FLAG = -MM +###############G++_SHRLIB_CFLAGS_YES = -fPIC +G++_SHRLIB_LDFLAGS_YES = -shared + +#-------------------------------------------------- +# C compiler +CC = $($(ANSI)_$(CMPLR)) $(GCC_CROSSFLAGS_$(CROSS)) +AR = $($(ANSI)_AR) +CPP = $($(ANSI)_CPP) $(GCC_CPPCROSSFLAGS_$(CROSS)) +RANLIB = $($(ANSI)_RANLIB) +LD = $($(ANSI)_LD) + +#-------------------------------------------------- +# C++ compiler +CXX = $($(CPLUSPLUS)_$(CXXCMPLR)) $(GCC_CROSSFLAGS_$(CROSS)) +##################### CXX_LD definition may not be necessary +CXX_LD = $($(CPLUSPLUS)_LD) + +#--------------------------------------------------------------- +# Vendor compiler dependent options +VENDOR_DEP_CFLAGS = $($(ANSI)_DEP_CFLAGS) +VENDOR_DEP_CXXFLAGS = $($(CPLUSPLUS)_DEP_CFLAGS) + +#--------------------------------------------------------------- +# Architecture dependent options (solaris,sun4,mv167,...) +ARCH_DEP_CFLAGS = +ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS) +ARCH_DEP_LDFLAGS = +ARCH_DEP_LDLIBS = + +#--------------------------------------------------------------- +# Operating system dependent options (Unix,Vx,WIN32...) +OP_SYS_CFLAGS = +OP_SYS_LDFLAGS = +OP_SYS_INCLUDES = +OP_SYS_LDLIBS = + +#-------------------------------------------------- +# SOURCE* used by WIN32 only +SOURCE_CFLAG = +SOURCE_CXXCFLAG = + +#-------------------------------------------------- +# Makefile specific options +USR_INCLUDES = +USR_CFLAGS = +USR_CXXFLAGS = +USR_LDFLAGS = +USR_LDLIBS = +USR_CPPFLAGS = + +#-------------------------------------------------- +# Target specific options +TARGET_INCLUDES = $($(basename $@)_INCLUDES) +TARGET_CFLAGS = $($(basename $@)_CFLAGS) +TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS) +TARGET_LDFLAGS = $($(basename $@)_LDFLAGS) +TARGET_LDLIBS = $($(basename $@)_LDLIBS) +TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS) +TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS) + +#-------------------------------------------------- +# Depends flag +DEPENDS_FLAG = $($(CPLUSPLUS)_DEPENDS_FLAG) + +#-------------------------------------------------- +# C++ template flag option +TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG) + +#-------------------------------------------------- +# (CONFIG.Vx will override OS_CLASS) +OS_CLASS = $(ARCH_CLASS) + +#-------------------------------------------------- +# Install includes +INSTALL_INCLUDES = -I$(INSTALL_INCLUDE)/os/$(OS_CLASS) -I$(INSTALL_INCLUDE) + +#-------------------------------------------------- +# Warnings flags (CONFIG. will override) +WARN_CFLAGS = $($(ANSI)_WARN_$($(BUILD_TYPE)_WARN)) +WARN_CXXFLAGS = $($(CPLUSPLUS)_WARN_$($(BUILD_TYPE)_WARN)) + +#-------------------------------------------------- +# Optimization flags (CONFIG. will override) +OPT_CFLAGS = $($(ANSI)_OPT_$($(BUILD_TYPE)_OPT)) +OPT_CXXFLAGS = $($(CPLUSPLUS)_OPT_$($(BUILD_TYPE)_OPT)) +OPT_LDFLAGS = + +#-------------------------------------------------- +# Static build options +STATIC_CFLAGS = $($(ANSI)_SFLAGS_$(STATIC_BUILD)) +STATIC_CXXCFLAGS = $($(CPLUSPLUS)_SFLAGS_$(STATIC_BUILD)) +STATIC_LDFLAGS = $($(ANSI)_SLDFLAGS_$(STATIC_BUILD)) +STATIC_LDLIBS = $($(ANSI)_SLIBS_$(STATIC_BUILD)) + +#-------------------------------------------------- +# ar definition default +ARCMD = $(AR) $(ARFLAGS) $@ + +#-------------------------------------------------- +# depends definition +DEPENDS_RULE = -$(COMPILE.cc) $(DEPENDS_FLAG) $^ > DEPENDS + +#-------------------------------------------------- +# Include files + +INCLUDES = -I- $(USR_INCLUDES) -I. -I.. $(INSTALL_INCLUDES) $(TARGET_INCLUDES) $(OP_SYS_INCLUDES) + +CFLAGS = $(OPT_CFLAGS) $(DEBUG_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS)\ + $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(VENDOR_DEP_CFLAGS) $(STATIC_CFLAGS)\ + $(OP_SYS_CFLAGS) $(INCLUDES) + +#-------------------------------------------------- +# Flags + +CXXFLAGS = $(OPT_CXXFLAGS) $(DEBUG_CXXFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS)\ + $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(VENDOR_DEP_CXXFLAGS) $(STATIC_CXXCFLAGS)\ + $(OP_SYS_CFLAGS) $(TEMPL_INST_CXXFLAG) $(INCLUDES) + +LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS)\ + $(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) + +LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS)\ + $(STATIC_LDLIBS) $(OP_SYS_LDLIBS) + +CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) + +CPPSNCFLAGS = $(INCLUDES) + +#-------------------------------------------------- +# Build compile line here + +COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c $(SOURCE_FLAG) +COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(SOURCE_CXXFLAG) + +endif + diff --git a/configure/CONFIG_ENV b/configure/CONFIG_ENV new file mode 100644 index 000000000..5d4a3c005 --- /dev/null +++ b/configure/CONFIG_ENV @@ -0,0 +1,128 @@ +# $Id$ +# Author: Andrew Johnson +# Date: 20 April 1995 +# +# Experimental Physics and Industrial Control System (EPICS) +# +# CONFIG_ENV - EPICS Environment Parameter configuration file +# +# This file is interpreted by the Bourne Shell, so spaces are +# not allowed around the '=' signs or in unquoted values. +# Makefile variables are not defined here. +# +# Note: This file is read by base/src/libCom/bldEnvdata.pl, +# so the variable definitions in here should be kept 'simple': +# VAR=VALUE +# each one on a single line. +# + + +# Default environment settings + +# Channel Access: +# EPICS_CA_ADDR_LIST +# Augment beacon/search dest ip addr list +# from white space separated ip addresses in this +# environment variable. "Quote" if more than one addr. +# EPICS_CA_AUTO_ADDR_LIST +# YES = augment beacon/search dest ip +# addr list from network interfaces found; NO = only use +# EPICS_CA_ADDR_LIST to create this list. +# EPICS_CA_CONN_TMO +# after not seeing a server beacon for this number +# of seconds the clients will send an echo request over +# tcp/ip to verify the connection. +# EPICS_CA_REPEATER_PORT CA repeater port number. +# EPICS_CA_SERVER_PORT CA server port number. + +EPICS_CA_ADDR_LIST="" +EPICS_CA_AUTO_ADDR_LIST=YES +EPICS_CA_CONN_TMO=30.0 +EPICS_CA_REPEATER_PORT=5065 +EPICS_CA_SERVER_PORT=5064 + +# +# These parameters are only used by the CA server library +# +# EPICS_CA_BEACON_PERIOD +# quiescent sec between server beacons. +# EPICS_CAS_INTF_ADDR_LIST - list of IP addresses identifying +# a limited set of network interfaces for server communication. +# Specifically, this parameter specifies the interfaces from +# which the server will accept TCP/IP connections. It also +# specifies that UDP search messages addressed to both +# the IP addresses in EPICS_CAS_INTF_ADDR_LIST and also +# the broadcast addresses (or the destination addresses of +# point to point interfaces) of the corresponding interfaces +# will be accepted by the server. If this parameter is empty +# then TCP/IP connections are accepted from any interface +# (and any search messages addressed to the host are accepted). +# Beacons are sent only to the broadcast address of each interface +# in this list (or the destination address of point to point +# interfaces) if EPICS_CA_AUTO_ADDR_LIST is YES. +# Type "ifconfig -a" in order to determine which interfaces +# are available. +# EPICS_CAS_BEACON_ADDR_LIST - If this parameter is specified +# or if EPICS_CAS_INTF_ADDR_LIST isnt empty then this parameter +# is used instead of EPICS_CA_ADDR_LIST by the server library +# to augment the list of addresses to send beacons to. +# EPICS_CAS_SERVER_PORT - If this parameter is specified then it +# and not EPICS_CA_SERVER_PORT is used to determine the server's +# port number. It is possible to have multiple servers on the +# same host on the same EPICS_CAS_SERVER_PORT port if the IP +# kernel is modern (if it has multicast enhancements). In this +# situation all servers will share the same user specified +# UDP port number and will be assigned unique TCP port numbers. +# The fact that the servers may not be using the user specified +# port number for TCP will be completely transparent to EPICS +# 3.13 or higher clients that will be locating the servers +# using the user specified UDP port number, but will be connecting to +# the servers using whatever TCP port has been assigned. +# +# If experiencing trouble getting clients to connect +# -------------------------------------------------- +# +# o Make sure that the broadcast addresses are identical on the +# server's host and on the client's host. This can be checked with +# "netstat -i" or "ifconfig -a". +# +# o Make sure that the client and server are using the same UDP +# port. Check the server's port by running "netstat -a | grep nnn" +# where nnn is the port number involved. If you do not set +# EPICS_CA_SERVER_PORT or EPICS_CAS_SERVER_PORT +# then the default port will be 5064. +# +# o Two servers can run on the same host with the same server port number +# if the following restrictions are understood (good luck). If the host has a +# modern IP kernel it is possible to have two servers on the same UDP port. +# It is not possible for two servers to run on the same host using the same +# TCP IP server port. If the CA server library detects that a 2nd server is attempting +# to start on the same port as an existing CA server then both servers will use the +# same UDP port if it is a modern IP kernel, and the 2nd server will +# be allocated a new TCP port. In this situation the clients will still be +# configured to use the same port number for both servers. The clients +# will find the 2nd server via the shared UDP port, and transparently +# connect to the 2nd server's allocated TCP port. Be aware that If there are +# two server's running on the same host on the same UDP port then they will +# both receive all UDP search requests sent as broadcasts, but will unfortunately (due to +# what I consider to be a real weakness of most IP kernel implementations) only one +# of the servers will typically receive UDP search requests sent to unicast addresses (i.e. +# a specific host's ip address). +# + + +EPICS_CA_BEACON_PERIOD=15.0 +EPICS_CAS_INTF_ADDR_LIST="" +EPICS_CAS_BEACON_ADDR_LIST="" +EPICS_CAS_SERVER_PORT= + + +# Log Server: +# EPICS_IOC_LOG_PORT Log server port number etc. +EPICS_IOC_LOG_PORT=7004 + +# Other services: + +EPICS_CMD_PROTO_PORT= +EPICS_AR_PORT=7002 + diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE new file mode 100644 index 000000000..43e851df1 --- /dev/null +++ b/configure/CONFIG_SITE @@ -0,0 +1,138 @@ +# +# $Id$ +# +# CONFIG_SITE - config file +# by Matthew Needes and Mike Bordua +# +# This file is to be modified by the build system manager +# only. +# + + +# The host architecture performing the build, +# i.e.: the arch running DCT/getrel/etc. +# +# Currently Supporting: +# sun4 +# hp700 +# alpha +# solaris +# sgi +# Linux +# WIN32 +# LynxOS +# +# HOST_ARCH now an environment variable +# HOST_ARCH=$(shell /usr/local/epics/startup/HostArch) +ifndef HOST_ARCH + HOST_ARCH=unsupported +endif + +# The architectures to build for +# +# Currently Supporting: +# vxWorks_68040 (alias mv147, mv162, mv167) +# vxWorks_68040lc (alias mv162lc) +# vxWorks-ppc604 +# +# hkv2f +# niCpu030 +# pc486 +# frc5ce +# hkbaja47 +# +#CROSS_COMPILER_TARGET_ARCHS= vxWorks_68040 +CROSS_COMPILER_TARGET_ARCHS= mv167 + + +# If only a subset of the host architectures perform +# the build for the CROSS_COMPILER_TARGET_ARCHS +# uncomment the following line and specify them. +# +#CROSS_COMPILER_HOST_ARCHS=sun4 +#CROSS_COMPILER_HOST_ARCHS=solaris + +# Vx release Tornado? +# must be either YES or NO +TORNADO=YES +#TORNADO=NO + +# VxWorks directory for TORNADO=YES +#VX_DIR_YES=c:\\Tornado +VX_DIR_YES = /usr/local/vw/tornado101 + +# VxWorks directory for TORNADO=NO +#VX_DIR_NO=$(VW) +#VX_DIR_NO=/usr/local/vw/vxV51.mm +#VX_DIR_NO=/usr/local/vw/vxV52/vw +#VX_DIR_NO=c:/Tornado/target +VX_DIR_NO=/usr/local/vw/vxV52p1/vw + +# Directory for TORNADO=NO gnu gcc crosscompiler +VX_GNU_NO = $(VX_DIR_NO)/../vxgccV2.2.3.1 + +# Directory for TORNADO=NO gnu g++ crosscompiler +# used by applications for hideos builds only +#TORNADO_GNU_DIR = $(LOCAL_GNU) +TORNADO_GNU_DIR = /usr/local/hideos/gnu_install-2.7.2 + +# Client ANSI C Compiler (for Host builds) +# GCC (gcc -ansi) GNU +# ACC (acc) OS VENDOR +# HPACC (cc -Aa) OTHER VENDOR +ANSI=ACC + +# C++ Compiler (for Host builds) +# G++ (g++) GNU C++ +# CCC (CC) OS VENDOR C++ +#Note: if CPLUSPLUS is empty then C++ src codes are not built +#CPLUSPLUS= # use this if site does not have C++ compiler +CPLUSPLUS=CCC +#CPLUSPLUS= + +# Default ANSI level, individual Makefiles will override +# if they cannot support ANSI compilation. +# STRICT - ANSI C - force warning flags +# ANSI - ANSI C +# OLD - Standard C - Not appropriate here. +CMPLR=STRICT + +# Default C++ compiler ANSI level +# STRICT - ANSI C++ force strict warning flags +# NORMAL - ANSI C++ optional warning flags +# Individual Makefiles may override +CXXCMPLR=STRICT + +# Build shared libraries? +# (archive libraries will also be built) +# must be either YES or NO +# NOTE: CONFIG_SITE.Host.$(HOST_ARCH) files may override +# +# NOTE WIN32: YES results in a DLL. CONFIG_SITE.Host.WIN32 +# distribution file contains YES override +# +# NOTE solaris and sun4: If YES then LD_LIBRARY_PATH must +# include fullpathname $(INSTALL_LOCATION)/lib/$(HOST_ARCH) +# for both the base build and when invoking base executables +SHARED_LIBRARIES=NO + +# Build client objects statically ? +# must be either YES or NO +STATIC_BUILD=NO + +# Unix Optimization +# must be either YES or NO +HOST_OPT=YES + +# VxWorks Optimization +# must be either YES or NO +VX_OPT=YES + +# Generate Verbose Compiler Warnings for Unix +# must be either YES or NO +HOST_WARN=YES + +# Generate Verbose Compiler Warnings for crosscompiles +# must be either YES or NO +VX_WARN=YES + diff --git a/configure/CONFIG_SITE_ENV b/configure/CONFIG_SITE_ENV new file mode 100644 index 000000000..6968e0dfb --- /dev/null +++ b/configure/CONFIG_SITE_ENV @@ -0,0 +1,45 @@ +# $Id$ +# Author: Andrew Johnson +# Date: 1 May 1995 +# +# Experimental Physics and Industrial Control System (EPICS) +# +# CONFIG_SITE_ENV - EPICS Environment Parameter Site configuration file +# +# This file is interpreted by the Bourne Shell, so spaces are +# not allowed around the '=' signs or in unquoted values. +# Makefile variables are not defined here. +# +# Note: This file is read by base/src/libCom/bldEnvdata.pl, +# so the variable definitions in here should be kept 'simple': +# VAR=VALUE +# each one on a single line. +# + +# Site-specific environment settings + +# Time service: +# EPICS_TS_MIN_WEST the local time difference from GMT. +# EPICS_TS_NTP_INET ntp or Unix time server ip addr. + +EPICS_TS_MIN_WEST=360 +EPICS_TS_NTP_INET= + + +# Log Server: +# EPICS_IOC_LOG_INET +# Log server ip addr. +# EPICS_IOC_LOG_FILE_NAME +# pathname to the log file. +# EPICS_IOC_LOG_FILE_LIMIT +# maximum log file size. +# EPICS_IOC_LOG_FILE_COMMAND +# A shell command string used to obtain a new +# path name in response to SIGHUP - the new path name will +# replace any path name supplied in EPICS_IOC_LOG_FILE_NAME + +EPICS_IOC_LOG_INET= +EPICS_IOC_LOG_FILE_NAME= +EPICS_IOC_LOG_FILE_COMMAND= +EPICS_IOC_LOG_FILE_LIMIT=1000000 + diff --git a/configure/RELEASE b/configure/RELEASE new file mode 100644 index 000000000..34a4c82c0 --- /dev/null +++ b/configure/RELEASE @@ -0,0 +1 @@ +#RELEASE Location of external products diff --git a/configure/RULES_ARCHS b/configure/RULES_ARCHS new file mode 100644 index 000000000..b145bb859 --- /dev/null +++ b/configure/RULES_ARCHS @@ -0,0 +1,91 @@ +# +# $Id$ +# + +ifndef T_A +all:: install + +ACTIONS += inc +ACTIONS += build +ACTIONS += install +ACTIONS += buildInstall +ACTIONS += depends +ACTIONS += rebuild + +actionPart = $(word 1, $(subst $(DIVIDER), ,$@)) +archPart = $(word 2, $(subst $(DIVIDER), ,$@)) + +# +# hostActionArchTargets +# +hostArchs = $(HOST_ARCH) +hostActionArchTargets = $(foreach x, $(ACTIONS),\ + $(foreach arch,$(hostArchs), $(x)$(DIVIDER)$(arch))) +ifeq (Makefile, $(wildcard Makefile)) +hostDirs = $(addprefix O.,$(hostArchs)) +$(hostActionArchTargets) : $(hostDirs) + $(MAKE) -C O.$(archPart) -f ../Makefile TOP=../$(TOP) T_A=$(archPart) $(actionPart) +$(hostArchs) : % : O.% + $(MAKE) -C O.$@ -f ../Makefile TOP=../$(TOP) T_A=$@ +else +$(hostActionArchTargets) : +$(hostArchs) : +endif + +# +# crossActionArchTargets +# +crossArchs = $(filter-out $(hostArchs),$(BUILD_ARCHS)) +crossActionArchTargets = $(foreach x, $(ACTIONS), \ + $(foreach arch, $(CROSS_COMPILER_TARGET_ARCHS), $(x)$(DIVIDER)$(arch))) +ifeq (Makefile, $(wildcard Makefile)) +crossDirs = $(addprefix O.,$(crossArchs)) +$(crossActionArchTargets) : $(crossDirs) + $(MAKE) -C O.$(archPart) -f ../Makefile TOP=../$(TOP) T_A=$(archPart) $(actionPart) +$(crossArchs) : % : O.% + $(MAKE) -C O.$@ -f ../Makefile TOP=../$(TOP) T_A=$@ BUILD_TYPE=Vx +else +$(crossActionArchTargets) : +$(crossArchs) : +endif + +$(hostDirs) : + $(PERL) $(TOOLS)/makeMakefile.pl $@ $(TOP) + +$(crossDirs) : + $(PERL) $(TOOLS)/makeMakefile.pl $@ $(TOP) + +# +# host/cross action targets +# +$(ACTIONS) :: % : %$(DIVIDER)host %$(DIVIDER)cross +HostActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)host) +CrossActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)cross) +$(HostActionTargets) : %$(DIVIDER)host : $(addprefix %$(DIVIDER), $(hostArchs)) +$(CrossActionTargets) : %$(DIVIDER)cross : $(addprefix %$(DIVIDER), $(crossArchs)) + + +% : %$(DIVIDER)host %$(DIVIDER)cross + +# +# arch targets +# +host : $(hostArchs) +cross : $(crossArchs) + +# +# special clean rule +# +clean :: + $(RMDIR) $(hostDirs) $(crossDirs) +clean$(DIVIDER)% : + $(RMDIR) O.$* + +.PHONY :: $(HostActionTargets) +.PHONY :: $(CrossActionTargets) +.PHONY :: $(crossActionArchTargets) +.PHONY :: $(hostActionArchTargets) +.PHONY :: $(hostArchs) $(crossArchs) +.PHONY :: $(ACTIONS) clean all host cross + +endif diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD new file mode 100644 index 000000000..59a0882f1 --- /dev/null +++ b/configure/RULES_BUILD @@ -0,0 +1,834 @@ +# $Id$ +# +# Rules for making things specified in Makefile.Host +# +# Some rules for filename-massage are system specific +# and have "ifdefs" here instead of using definitions +# from CONFIG.Host.$(ARCH_CLASS) - sorry about this, +# but so far the rules are quite similar on all systems +# except WIN32 has some specials. +# +# Maybe there is a way to use indentation to make it +# easier to read this file? +# +# Most things may also work if you say e.g. +# VAR+=ADD +# even if ADD is not there, but this way "VAR" would +# be defined in any case, that's why I try to use +# ifdef ADD +# VAR+=ADD +# endif +# +# -kuk- + +# we are in O.$(ARCH_CLASS), but most sources are one dir above: +# +# The use of VPATH (no suffix specification) caused everything +# to break several times. +# vpath, of course, has the disadvantage that we need explicit rules +# for scripts or similar os-specific filed which have _no_ suffix... + +include $(CONFIG)/RULES_ARCHS +ifdef T_A + +vpath %.h $(USER_VPATH) +vpath %.c $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/$(OS_CLASS) ../os/generic .. +vpath %.cc $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/$(OS_CLASS) ../os/generic .. +vpath %.rc $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic .. +# This prevents base/src/include/*.h from being installed. Why?? +#vpath %.h ../os/$(ARCH_CLASS) ../os/generic .. +vpath %.h $(USER_VPATH) + +# check for add-on CFLAGS and CXXFLAGS +# +# Rules: +# 1) USR_CFLAGS is used +# 2) if there is a special USR_CFLAGS_$(ARCH_CLASS), it's +# appended to 1) +# 3) if there is no special defined, but a generic USR_CFLAGS_DEFAULT, +# this one is appended +# 4) if you have the special case that your USR_CFLAGS_$(ARCH_CLASS) is +# empty but you don't want 3), you have to define it as '-nil-', e.g.: +# USR_CFLAGS = +# USR_CFLAGS_sun4 = -nil- +# USR_CFLAGS_DEFAULT = +# +# These rules apply to these Makefile-variables: +# USR_CFLAGS C flags +# USR_CXXFLAGS C++ flags +# INC include-files to install +# LIBSRCS source files for building library +# PROD_LIBS EPICS libs needed by PROD and TESTPROD +# USR_LIBS NONEPICS libs needed by PROD and TESTPROD +# SYS_PROD_LIBS system libs needed by PROD and TESTPROD +# PROD products to build and install +# SCRIPTS scripts to install +# +# Remark: +# If you define OSINC, e.g. OSINC = getopt.h, the source +# (getopt.h) must be in the source directory (..) and/or +# in one or more ../os/ directories. +# The OSINC source files cannot be created by the build. +# +ifneq ($(strip $(USR_CFLAGS_$(ARCH_CLASS))),) +USR_CFLAGS+=$(subst -nil-,,$(USR_CFLAGS_$(ARCH_CLASS))) +else +ifdef USR_CFLAGS_DEFAULT +USR_CFLAGS+=$(USR_CFLAGS_DEFAULT) +endif +endif + +ifneq ($(strip $(USR_INCLUDES_$(ARCH_CLASS))),) +USR_INCLUDES+=$(subst -nil-,,$(USR_INCLUDES_$(ARCH_CLASS))) +else +ifdef USR_INCLUDES_DEFAULT +USR_INCLUDES+=$(USR_INCLUDES_DEFAULT) +endif +endif + +ifneq ($(strip $(USR_CXXFLAGS_$(ARCH_CLASS))),) +USR_CXXFLAGS+=$(subst -nil-,,$(USR_CXXFLAGS_$(ARCH_CLASS))) +else +ifdef USR_CXXFLAGS_DEFAULT +USR_CXXFLAGS+=$(USR_CXXFLAGS_DEFAULT) +endif +endif + +ifneq ($(strip $(USR_CPPFLAGS_$(ARCH_CLASS))),) +USR_CPPFLAGS+=$(subst -nil-,,$(USR_CPPFLAGS_$(ARCH_CLASS))) +else +ifdef USR_CPPFLAGS_DEFAULT +USR_CPPFLAGS+=$(USR_CPPFLAGS_DEFAULT) +endif +endif + +ifneq ($(strip $(USR_LDFLAGS_$(ARCH_CLASS))),) +USR_LDFLAGS+=$(subst -nil-,,$(USR_LDFLAGS_$(ARCH_CLASS))) +else +ifdef USR_LDFLAGS_DEFAULT +USR_LDFLAGS+=$(USR_LDFLAGS_DEFAULT) +endif +endif + +# check for special includes: +# +ifneq ($(strip $(INC_$(OS_CLASS))),) +# os-specific includes go to the include/os-directory: +OSINC += $(subst -nil-,,$(INC_$(OS_CLASS))) +else +ifdef INC_DEFAULT +INC += $(INC_DEFAULT) +endif +endif + +# concat specific library contents (if defined) to LIBCONTENS +# +ifneq ($(strip $(LIBSRCS_$(ARCH_CLASS))),) +LIBSRCS += $(subst -nil-,,$(LIBSRCS_$(ARCH_CLASS))) +else + +ifdef LIBSRCS_DEFAULT +LIBSRCS+=$(LIBSRCS_DEFAULT) +endif + +endif + +# adjust object names for library contents +# +ifdef LIBSRCS +LIBOBJS+=$(addsuffix $(OBJ), $(basename $(LIBSRCS))) +endif + +# +# concat specific library contents (if defined) to PROD_LIBS +# +ifneq ($(strip $(PROD_LIBS_$(ARCH_CLASS))),) +PROD_LIBS += $(subst -nil-,,$(PROD_LIBS_$(ARCH_CLASS))) + +else + +ifdef PROD_LIBS_DEFAULT +PROD_LIBS += $(PROD_LIBS_DEFAULT) +endif + +endif + +# +# concat specific library contents (if defined) to USR_LIBS +# +ifneq ($(strip $(USR_LIBS_$(ARCH_CLASS))),) +USR_LIBS += $(subst -nil-,,$(USR_LIBS_$(ARCH_CLASS))) + +else + +ifdef USR_LIBS_DEFAULT +USR_LIBS += $(USR_LIBS_DEFAULT) +endif + +endif + +# +# concat specific library contents (if defined) to SYS_PROD_LIBS +# +ifneq ($(strip $(SYS_PROD_LIBS_$(ARCH_CLASS))),) +SYS_PROD_LIBS += $(subst -nil-,,$(SYS_PROD_LIBS_$(ARCH_CLASS))) + +else + +ifdef SYS_PROD_LIBS_DEFAULT +SYS_PROD_LIBS += $(SYS_PROD_LIBS_DEFAULT) +endif + +endif + +# +# concat specific products +# +ifneq ($(strip $(PROD_$(ARCH_CLASS))),) +PROD += $(subst -nil-,,$(PROD_$(ARCH_CLASS))) + +else + +ifdef PROD_DEFAULT +PROD += $(PROD_DEFAULT) +endif + +endif + +# +# concat specific scripts +# +ifneq ($(strip $(SCRIPTS_$(OS_CLASS))),) +SCRIPTS += $(subst -nil-,,$(SCRIPTS_$(OS_CLASS))) + +else + +ifdef SCRIPTS_DEFAULT +SCRIPTS += $(SCRIPTS_DEFAULT) +endif + +endif + +# +# concat specific resource files +# +ifneq ($(strip $(RCS_$(ARCH_CLASS))),) +RCS += $(subst -nil-,,$(RCS_$(ARCH_CLASS))) +else +ifdef RCS_DEFAULT +RCS += $(RCS_DEFAULT) +endif +endif + +# adjust executables +ifdef TESTPROD +TESTPROD := $(addsuffix $(EXE), $(TESTPROD)) +endif + +# adjust executables +ifdef PROD +PROD := $(addsuffix $(EXE), $(PROD)) +endif + +#--------------------------------------------------------------- +# if we are not building base add base includes and ld dirs +# (convenience for extensions and applications) +ifneq ($(EPICS_BASE),$(TOP)) +ifneq ($(EPICS_BASE),$(INSTALL_LOCATION)) +EPICS_INCLUDES += -I$(EPICS_BASE_INCLUDE) -I$(EPICS_BASE_INCLUDE)/os/$(OS_CLASS) +endif +endif + +#--------------------------------------------------------------- +# ---------------------------------------------------- +# create names (lists) for installed things +# ---------------------------------------------------- + +# each list starts with the destination directory name(s) +# to make sure it's there + + +INCREC +=$(RECTYPES) $(MENUS) + +INSTALL_PROD= $(PROD:%= $(INSTALL_BIN)/%) +INSTALL_LIBS= $(LIBNAME:%=$(INSTALL_LIB)/%) +INSTALL_SHRLIBS= $(SHRLIBNAME:%=$(INSTALL_SHRLIB)/%) +INSTALL_DLL_LINK_LIBS=$(DLL_LINK_LIBNAME:%=$(INSTALL_LIB)/%) +INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%) +INSTALL_TCLINDEX=$(TCLINDEX:%=$(INSTALL_TCLLIB)/%) + +INSTALL_INC= $(INC:%=$(INSTALL_INCLUDE)/%) +OSINCLUDE=$(subst ../,,$(wildcard $(foreach h,$(OSINC),../$(h) ../os/$(OS_CLASS)/$(h)))) +INSTALL_OSINC= $(OSINCLUDE:%= $(INSTALL_INCLUDE)/%) +INSTALL_INCREC = $(INCREC:%= $(INSTALL_INCLUDE)/%) +MANLIST = 1 2 3 4 5 6 7 8 9 +INSTALL_MANS = $(foreach n, \ + $(MANLIST), $(MAN$(n):%= $(INSTALL_MAN)/man$(n)/%)) +INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%) +INSTALL_HTMLS = $(HTMLS:%= $(INSTALL_HTML)/$(HTMLS_DIR)/%) +INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%) +ifdef TEMPLATES_DIR +INSTALL_TEMPLATES_SUBDIR = $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR) +else +INSTALL_TEMPLATES_SUBDIR = $(INSTALL_TEMPLATES) +endif +INSTALL_TEMPLATE = $(addprefix $(INSTALL_TEMPLATES_SUBDIR)/, \ + $(subst $(CONFIG),top/config,$(TEMPLATES))) +#INSTALL_TEMPLATE = $($(subst $(CONFIG),top/config,$(TEMPLATES)):%= $(INSTALL_TEMPLATES_SUBDIR)/%) + +INSTALL_BPTS = $(BPTS:%= $(INSTALL_DBD)/%) +INSTALL_DBS = $(DBDINSTALL:%= $(INSTALL_DBD)/%)\ + $(RECTYPES:%.h= $(INSTALL_DBD)/%.dbd)\ + $(MENUS:%.h= $(INSTALL_DBD)/%.dbd) + +INSTALL_DBDNAME = $(DBDNAME:%= $(INSTALL_DBD)/%) + +INSTALL_IOC_PROD= $(IOC_PROD:%=$(INSTALL_BIN)/%) +INSTALL_IOC_LIBNAME= $(IOC_LIBNAME:%=$(INSTALL_BIN)/%) +INSTALL_IOC_SCRIPTS= $(IOC_SCRIPTS_$(OS_CLASS):%=$(INSTALL_BIN)/%) + +MAN_DIRECTORY_TARGETS = $(foreach n, $(MANLIST),$(INSTALL_MAN)/man$(n)) +#--------------------------------------------------------------- +ifneq ($(strip $(IOC_PROD_$(OS_CLASS))),) +IOC_PROD+=$(subst -nil-,,$(IOC_PROD_$(OS_CLASS))) +else +ifdef IOC_PROD_DEFAULT +IOC_PROD+=$(IOC_PROD_DEFAULT) +endif +endif + +#--------------------------------------------------------------- +ifneq ($(strip $(IOC_LIBRARY_$(OS_CLASS))),) +IOC_LIBRARY+=$(subst -nil-,,$(IOC_LIBRARY_$(OS_CLASS))) +else +ifdef IOC_LIBRARY_DEFAULT +IOC_LIBRARY+=$(IOC_LIBRARY_DEFAULT) +endif +endif + +#--------------------------------------------------------------- +ifneq ($(strip $(SHARED_LIBRARIES_$(ARCH_CLASS))),) +SHARED_LIBRARIES+=$(subst -nil-,,$(SHARED_LIBRARIES_$(ARCH_CLASS))) +else +ifdef SHARED_LIBRARIES_DEFAULT +SHARED_LIBRARIES_+=$(SHARED_LIBRARIES_DEFAULT) +endif +endif + +#--------------------------------------------------------------- +# must use c++ linker if linking to shared libs with c++ code +#ifeq ($(strip $(SHARED_LIBRARIES)),YES) +ifneq ($(strip $(CPLUSPLUS)),) +LINK.c = $(LINK.cc) +endif # CPLUSPLUS +#endif # LIBTYPE + +#--------------------------------------------------------------- +# Version number for base shared libraries (and win32 products) +ifeq ($(EPICS_BASE),$(TOP)) +SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION) +PROD_VERSION = $(EPICS_VERSION).$(EPICS_REVISION) +endif # EPICS_BASE + +#--------------------------------------------------------------- +# Libraries +# +# if there are no objects LIBOBJS to include +# in this library (may be for e.g. base/src/libCompat +# on some archs), don't define (and build) any library! +ifdef IOC_LIBRARY +IOC_LIBTARGETS += $(IOC_LIBNAME) $(INSTALL_IOC_LIBNAME) +CFLAGS += $($(ANSI)_SHRLIB_CFLAGS_YES) +CXXFLAGS += $($(ANSI)_SHRLIB_CFLAGS_YES) +SHRLIB_LINKER = $(CXX) +IOC_LIB_SRCS=$(IOC_LIBRARY_SRCS) $($(basename $(IOC_LIBRARY))_SRCS) +IOC_LIBRARY_OBJS+=$(addsuffix $(OBJ), $(basename $(IOC_LIB_SRCS))) +endif + +ifdef LIBRARY +ifdef LIBOBJS +LIBTARGETS += $(LIBNAME) $(INSTALL_LIBS) +CFLAGS += $($(ANSI)_SHRLIB_CFLAGS_YES) +CXXFLAGS += $($(ANSI)_SHRLIB_CFLAGS_YES) + +# check if shared libraries requested +ifeq ($(strip $(SHARED_LIBRARIES)),YES) + +PROD_VERSION =$(SHRLIB_VERSION) +ifeq ($(findstring cc,$(suffix $(LIBSRCS))),cc) +SHRLIB_LINKER = $(CXX) +else +SHRLIB_LINKER = $(CC) +endif +LIBTARGETS += $(SHRLIBNAME) $(INSTALL_SHRLIBS) $(INSTALL_DLL_LINK_LIBS) + +endif # SHARED_LIBRARIES=YES + +endif # LIBOBJS +endif # LIBRARY + +#--------------------------------------------------------------- +# Main targets + +all:: install + +buildInstall :: build + +ifdef RUNTYPE +ifeq ($(strip $(RUNTYPE)),IOC) +build:: $(IOC_LIBTARGETS) $(IOC_PROD) $(IOC_SCRIPTS_$(OS_CLASS)) + +buildInstall :: $(INSTALL_IOC_PROD) $(INSTALL_IOC_SCRIPTS) +endif + +ifeq ($(strip $(RUNTYPE)),NOTIOC) +build:: $(LIBTARGETS) $(PROD) $(TESTPROD) + +buildInstall :: $(TARGETS) \ + $(INSTALL_SCRIPTS) $(INSTALL_PROD) \ + $(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) +endif + +else +build:: $(LIBTARGETS) $(PROD) $(TESTPROD) + +buildInstall :: $(TARGETS) \ + $(INSTALL_SCRIPTS) $(INSTALL_PROD) \ + $(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) + +build:: $(IOC_LIBTARGETS) $(IOC_PROD) $(IOC_SCRIPTS_$(OS_CLASS)) + +buildInstall :: $(INSTALL_IOC_PROD) $(INSTALL_IOC_SCRIPTS) +endif + +build:: $(MENUS) $(RECTYPES) $(BPTS) $(DBDNAME) + +inc:: $(INSTALL_INC) $(INSTALL_OSINC) + +rebuild:: clean install + +install:: inc buildInstall + +buildInstall :: $(INSTALL_MANS) \ + $(INSTALL_DOCS) \ + $(INSTALL_HTMLS) \ + $(INSTALL_TEMPLATE) \ + $(INSTALL_DBS) $(INSTALL_BPTS) \ + $(INSTALL_DBDNAME) $(INSTALL_INCREC) + +ifdef BIN_INSTALLS +buildInstall :: binInstalls +endif + +clean:: + @echo "Cleaning" + @$(RM) *.i *$(OBJ) *.a $(PROD) $(TESTPROD) $(LIBNAME) $(SHRLIBNAME) \ + $(INC) *$(RES) $(TARGETS) \ + $(DBDINSTALL) $(MENUS) $(RECTYPES) $(BPTS) $(DBDNAME) *.out + +#--------------------------------------------------------------- +# Products +# + +PROD += $(TESTPROD) +ifdef PROD + +COND_PROD_SRCS=$(foreach prod, $(basename $(PROD)), $($(prod)_SRCS)) +COND_PROD_RCS=$(foreach prod, $(basename $(PROD)), $($(prod)_RCS) $($(prod)_RCS_$(ARCH_CLASS))) +COND_PROD_LIBS=$(foreach prod, $(basename $(PROD)), $($(prod)_LIBS)) + +ifdef PRODNAME + +ifneq ($(strip $(PRODNAME_SRCS_$(ARCH_CLASS))),) +PRODNAME_SRCS += $(subst -nil-,,$(PRODNAME_SRCS_$(ARCH_CLASS))) +else +ifdef PRODNAME_SRCS_DEFAULT +PRODNAME_SRCS += $(PRODNAME_SRCS_DEFAULT) +endif +endif + +ifneq ($(strip $(PRODNAME_RCS_$(ARCH_CLASS))),) +PRODNAME_RCS += $(subst -nil-,,$(PRODNAME_RCS_$(ARCH_CLASS))) +else +ifdef PRODNAME_RCS_DEFAULT +PRODNAME_RCS += $(PRODNAME_RCS_DEFAULT) +endif +endif + +$(PRODNAME): $(PROD_DEPLIBS) $(PRODNAME_DEPLIBS) + +ifdef PRODNAME_SRCS + +ifeq ($(findstring cc,$(suffix $(PRODNAME_SRCS))),cc) +PRODNAME_LINKER = $(LINK.cc) +else +PRODNAME_LINKER = $(LINK.c) +endif + +PRODNAME_OBJS=$(addsuffix $(OBJ), $(basename $(PRODNAME_SRCS))) +PRODNAME_RESS=$(addsuffix $(RES), $(basename $(PRODNAME_RCS))) + +$(PRODNAME): $(PRODNAME_OBJS) $(PRODNAME_RESS) + @$(RM) $@ + $(PRODNAME_LINKER) $(PRODNAME_OBJS) $(PRODNAME_RESS) $(LDLIBS) + +endif # ifdef PRODNAME_SRCS + +else # PRODNAME not defined + +# We have to use the product's true dependancies and +# call make again to determine if product should be rebuilt + +ifneq ($(strip $(SRCS) $(COND_PROD_SRCS)),) +PROD_OBJS=$(addsuffix $(OBJ), $(basename $(SRCS) $(COND_PROD_SRCS))) + +PROD_RESS=$(addsuffix $(RES), $(basename $(RCS) $(COND_PROD_RCS))) + +PROD_MAKE_COMMAND=$(MAKE) -f ../Makefile $@\ + PRODNAME="$@"\ + PRODNAME_SRCS="$(SRCS) $($(basename $@)_SRCS)"\ + PRODNAME_SRCS_DEFAULT="$($(basename $@)_SRCS_DEFAULT)"\ + PRODNAME_SRCS_$(ARCH_CLASS)="$($(basename $@)_SRCS_$(ARCH_CLASS))"\ + PRODNAME_RCS="$(RCS) $($(basename $@)_RCS)"\ + PRODNAME_RCS_DEFAULT="$($(basename $@)_RCS_DEFAULT)"\ + PRODNAME_RCS_$(ARCH_CLASS)="$($(basename $@)_RCS_$(ARCH_CLASS))"\ + PRODNAME_LIBS="$($(basename $@)_LIBS)" + +$(PROD): $(SRCS) $(COND_PROD_SRCS) $(PROD_RESS) $(PROD_DEPLIBS) $(COND_PROD_DEPLIBS) + @$(PROD_MAKE_COMMAND) + +endif +endif #ifdef PRODNAME + +endif #ifdef PROD + +#--------------------------------------------------------------- +# Java classes and packages +# + +INSTALL_JAVA = $(INSTALL_LOCATION)/javalib +DIRECTORY_TARGETS += $(INSTALL_JAVA) +ifdef PACKAGE +DIRECTORY_TARGETS += $(INSTALL_JAVA)/$(PACKAGE) +endif #ifdef PACKAGE + +vpath %.class $(INSTALL_JAVA)/$(PACKAGE) + +CLASSES += $(subst .java,.class,$(JAVA)) +TESTCLASSES += $(subst .java,.class,$(TESTJAVA)) +INSTALL_CLASSES =$(CLASSES:%=$(INSTALL_JAVA)/$(PACKAGE)/%) +INSTALL_JAR =$(JAR:%=$(INSTALL_JAVA)/%) + +JAR_OPTIONS = cvf +ifdef MANIFEST +JAR_OPTIONS = cvmf +endif +JAR_DEPFILES += $(wildcard $(JAR_INPUT) $(addsuffix /*,$(JAR_INPUT))) + +$(DIRECTORY_TARGETS) : + $(MKDIR) $@ + +build:: $(TESTCLASSES) $(JAR) + +buildInstall :: $(DIRECTORY_TARGETS) $(INSTALL_CLASSES) $(INSTALL_JAR) + +clean:: + @$(RM) $(TESTCLASSES) $(JAR) + +%.class:%.java + @echo Creating java class file $@ + $(RM) $@ + $(JAVACCMD) $< + +$(INSTALL_JAVA)/$(PACKAGE)/%.class:%.java + @echo Creating java class file $@ + @$(RM) $@ + $(JAVACCMD) -d $(INSTALL_JAVA) $< + +$(JAR):%.jar: $(JAR_DEPFILES) + @echo Creating java jar file $@ + @$(RM) $@ + $(JARCMD) + +$(INSTALL_JAVA)/%.jar: %.jar + @echo "Installing jar file $@" + $(INSTALL) -d -m 644 $< $(@D) + +#--------------------------------------------------------------- +#--------------------------------------------------------------- +# Generic Rules for 'simple' targets that +# can be generated from a single source with same basename. +# +# The usual two rules .c* -> $(OBJ) and then $(OBJ) -> $(EXE) +# do not work because the $(OBJ)->$(EXE) rule wouldn't +# know if the original source was C or C++. +# +# Hint: The $(subst...) construct removes the .c or .cc +# as well as the '../' from the filename and adds $(OBJ): +# e.g. $< = '../abc.c' -> 'abc.o' +# +# The order of the following rules is +# VERY IMPORTANT !!!! + +depends:: $(LIBSRCS) $(SRCS) $(COND_PROD_SRCS) + $(RM) DEPENDS + touch DEPENDS + $(DEPENDS_RULE) + +%$(EXE): %.c + @$(RM) $@ + $(COMPILE.c) $< + $(LINK.c) $(subst ../,,$(basename $<))$(OBJ) $(LDLIBS) + +%$(EXE): %.cc + @$(RM) $@ + $(COMPILE.cc) $< + $(LINK.cc) $(subst ../,,$(basename $<))$(OBJ) $(LDLIBS) + +%$(EXE): %.C + @$(RM) $@ + $(COMPILE.cc) $< + $(LINK.cc) $(subst ../,,$(basename $<))$(OBJ) $(LDLIBS) + +# C++ munching for VxWorks +%.out : %.o + @ $(RM) ctct.o ctdt.c + $(NM) $< | $(MUNCH) > ctdt.c + $(COMPILE.c) -traditional ctdt.c + $(LINK.) $@ $< ctdt.o + @ $(RM) ctdt.c ctdt.o + + +%$(OBJ): %.c + @$(RM) $@ + $(COMPILE.c) $< + +%$(OBJ): %.cc + @$(RM) $@ + $(COMPILE.cc) $< + +%$(OBJ): %.C + @$(RM) $@ + $(COMPILE.cc) $< + +# WIN95/NT resource compiler +%$(RES): %.rc + @$(RM) $@ + $(RCCMD) + +# +# rename the y.tab.h file only if we +# are creating it +# +%.h %.c: ../%.y + $(RM) $*.c y.tab.c +ifeq ($(findstring -d, $(YACCOPT)),-d) + $(RM) $*.h y.tab.h +endif + $(YACC) $(YACCOPT) $< + $(MV) y.tab.c $*.c +ifeq ($(findstring -d, $(YACCOPT)),-d) + $(MV) y.tab.h $*.h +endif + +%.c: ../%.l + @$(RM) lex.yy.c + $(LEX) $(LEXOPT) $< + @$(RM) $@ + $(MV) lex.yy.c $@ + +#state notation language rule +%.c: ../%.st + @echo "preprocessing $*.st" + @$(RM) $*.i + $(CPP) $(CPPFLAGS) $< $*.i + @echo "converting $*.i" + @$(RM) $@ + $(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i + +%.c: %.stt + @echo "converting $< + ln -s $< $*.st + $(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.st + @$(RM) $*.st + +# Capfast Rules: +%.db: %.edf + $(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) $< + +%.db: ../%.edf + $(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) $< + +%.edf: ../%.sch + @if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi + $(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $< + +# Adl2dl rule +%.dl : ../%.adl + -$(ADL2DL) $< $@ + +# Mangen Rule: +%.1:% + $(MANGEN) -s $< + $(MV) $( $@ + +ifneq (,$(wildcard ../baseLIBOBJS)) +$(IOC_LIBNAME): ../baseLIBOBJS +endif + +$(IOC_LIBNAME): $(IOC_LIBRARY_OBJS) + $(RM) $@ + $(ARCMD) $(IOC_LIBRARY_OBJS) +ifneq ($(RANLIB)xx,xx) + $(RANLIB) $@; +endif # RANLIB + +$(DLL_LINK_LIBNAME) $(SHRLIBNAME): $(LIBOBJS) + $(LINK.shrlib) $(LIBOBJS) $(DLL_LDLIBS) + +# rule for lib (archive of object files) creation +$(LIBNAME): $(LIBOBJS) + $(RM) $@ + $(ARCMD) $(LIBOBJS) +ifneq ($(RANLIB)xx,xx) + $(RANLIB) $@; +endif # RANLIB + +binInstalls: $(BIN_INSTALLS) + $(INSTALL) -d -m 555 $^ $(INSTALL_BIN) + +$(INSTALL_BIN)/%: ../os/$(ARCH_CLASS)/% + @echo "Installing os-specific script $@" + @$(INSTALL_PRODUCT) -d -m 555 $< $(INSTALL_BIN) + +$(INSTALL_BIN)/%: % + @echo "Installing binary $@" + @$(INSTALL_PRODUCT) -d -m 555 $< $(INSTALL_BIN) + +$(INSTALL_BIN)/%: ../% + @echo "Installing script $@" + @$(INSTALL_PRODUCT) -d -m 555 $< $(INSTALL_BIN) + +$(INSTALL_LIB)/%.a: %.a + @echo "Installing library $@" + @$(INSTALL) -d -m 644 $< $(INSTALL_LIB) +ifneq ($(RANLIB)xx,xx) + $(RANLIB) $(RANLIBFLAGS) $@ +endif # RANLIB + +$(INSTALL_LIB)/%.lib: %.lib + @echo "Installing library $@" + @$(INSTALL) -d -m 644 $< $(INSTALL_LIB) + +$(INSTALL_SHRLIB)/lib%: lib% + @echo "Installing library $@" + @$(INSTALL) -d -m 555 $< $(INSTALL_SHRLIB) +ifdef SHRLIB_VERSION + @$(RM) $(@:%.$(SHRLIB_VERSION)=%) + ln -s $< $(@:%.$(SHRLIB_VERSION)=%) +endif # SHRLIB_VERSION + +$(INSTALL_TCLLIB)/%: % + @echo "Installing Tcl library $@" + @$(INSTALL) -d -m 555 $< $(INSTALL_TCLLIB) + +$(INSTALL_TCLLIB)/%: ../% + @echo "Installing Tcl library $@" + @$(INSTALL) -d -m 555 $< $(INSTALL_TCLLIB) + +$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : % + @echo "Installing man file $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : ../% + @echo "Installing man file $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(INSTALL_INCLUDE)/%: % + @echo "Installing include file $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(INSTALL_INCLUDE)/%: ../% + @echo "Installing include file $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(INSTALL_DOC)/%: % + @echo "Installing doc $@" + @$(INSTALL) -d -m 644 $< $(INSTALL_DOC) + +$(INSTALL_DOC)/%: ../% + @echo "Installing doc $@" + @$(INSTALL) -d -m 644 $< $(INSTALL_DOC) + +$(INSTALL_HTML)/$(HTMLS_DIR)/%: % + @echo "Installing html $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(INSTALL_HTML)/$(HTMLS_DIR)/%: ../% + @echo "Installing html $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: ../% + @echo "Installing $@" + @$(INSTALL) -d -m 644 $< $(@D) + +$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: % + @echo "Installing $@" + @$(INSTALL) -d -m 644 $< $(@D) + +.PRECIOUS: %.o %.c + +-include DEPENDS + +.PHONY:: all inc depends build install clean rebuild buildInstall binInstalls + + +$(DBDNAME): ../base.dbd $(RECTYPES:%.h=../%.dbd) + +# EOF RULES.Host +endif + diff --git a/configure/RULES_DIRS b/configure/RULES_DIRS new file mode 100644 index 000000000..b8999592e --- /dev/null +++ b/configure/RULES_DIRS @@ -0,0 +1,50 @@ +# +# $Id$ +# + + +ARCHS += $(BUILD_ARCHS) host cross +ACTIONS += clean inc depends buildInstall + +dirPart = $(word 1, $(subst $(DIVIDER), ,$@)) +actionArchPart = $(subst $(dirPart)$(DIVIDER), ,$@) + +dirActionArchTargets = $(foreach dir, $(DIRS), \ + $(foreach action, $(ACTIONS) install,\ + $(foreach arch, $(ARCHS), \ + $(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch)))) +dirArchTargets += $(foreach dir, $(DIRS), \ + $(foreach arch, $(ARCHS),\ + $(dir)$(DIVIDER)$(arch))) +dirActionTargets += $(foreach dir, $(DIRS), \ + $(foreach action, $(ACTIONS) install,\ + $(dir)$(DIVIDER)$(action))) +actionArchTargets = $(foreach action, $(ACTIONS) install,\ + $(foreach arch, $(ARCHS), \ + $(action)$(DIVIDER)$(arch))) + +installArchTargets = $(foreach action, install,\ + $(foreach arch, $(ARCHS), \ + $(action)$(DIVIDER)$(arch))) + +all install :: inc buildInstall + +rebuild:: clean all + +$(ARCHS) $(installArchTargets) :: inc + +$(DIRS) $(dirActionTargets) $(dirArchTargets)$(dirActionArchTargets) :: + $(MAKE) -C $(dirPart) $(actionArchPart) + +$(ARCHS) $(ACTIONS) $(actionArchTargets) ::%: \ + $(foreach dir, $(DIRS), $(dir)$(DIVIDER)%) + + +.PHONY :: $(DIRS) all install rebuild +.PHONY :: $(ARCHS) $(ACTIONS) +.PHONY :: $(dirActionTargets) $(dirArchTargets) +.PHONY :: $(dirActionArchTargets) +.PHONY :: $(actionArchTargets) +.PHONY :: $(installArchTargets) + + diff --git a/configure/RULES_TOP b/configure/RULES_TOP new file mode 100644 index 000000000..0a2cad2d3 --- /dev/null +++ b/configure/RULES_TOP @@ -0,0 +1,60 @@ +# +# $Id$ +# + +include $(CONFIG)/RULES_DIRS + +uninstall$(DIVIDER)%:: + $(RMDIR) $(INSTALL_LOCATION_BIN)/$* $(INSTALL_LOCATION_LIB)/$* + +cleandirs: +ifeq ($(wildcard $(INSTALL_LOCATION_BIN)/*),) + $(RMDIR) $(INSTALL_LOCATION_BIN) +endif +ifeq ($(wildcard $(INSTALL_LOCATION_LIB)/*),) + $(RMDIR) $(INSTALL_LOCATION_LIB) +endif + + +uninstall:: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS)) + $(RMDIR) rec.bak rec + $(RMDIR) $(INSTALL_DBD) $(INSTALL_MAN) $(INSTALL_INCLUDE) $(INSTALL_DOC)\ + $(INSTALL_HTML) $(INSTALL_JAVA) $(INSTALL_TEMPLATES) + $(MAKE) -f Makefile cleandirs + +tar: + @DIRNAME=$(notdir $(shell pwd)); \ + echo "TOP: Creating $$DIRNAME.tar file..."; \ + ls Makefile* | xargs tar vcf $$DIRNAME.tar; \ + if [ -f .current_rel_hist ]; then \ + ls .current_rel_hist | xargs tar vrf $$DIRNAME.tar ; \ + fi ;\ + if [ -f EPICS_BASE ]; then \ + ls EPICS_BASE | xargs tar vrf $$DIRNAME.tar ; \ + fi ;\ + for DIR in ${DIRS}; do \ + find $${DIR} -name CVS -prune -o ! -type d -print \ + | grep -v "/O\..*$$" | xargs tar vrf $$DIRNAME.tar; \ + done + +help: + @echo "Usage: gnumake [options] [target] ..." + @echo "Targets supported by all Makefiles:" + @echo " install - Installs executables in bin/ (default rule)" + @echo " build - Builds objects, using libraries from build_libs" + @echo " clean - Cleans objects. Clean removes the O. dirs" + @echo " in all except the O. level Makefile" + @echo " depends - Generates include dependencies" + @echo "\"Partial\" build targets supported by Makefiles:" + @echo " install. - Builds and installs only." + @echo " clean. - Cleans binaries in O. dirs only." + @echo " build. - Builds only." + @echo " depends. - Generates dependencies only." + @echo "Targets supported by top level Makefile:" + @echo " uninstall - Cleans directories created by the install." + @echo " tar - Create tar file " + @echo "Indiv. object targets are supported by O. level Makefile .e.g" + @echo " xxxRecord.o" + +.PHONY :: uninstall tar help cleandirs + diff --git a/configure/Sample.Makefile b/configure/Sample.Makefile new file mode 100755 index 000000000..32c019c7c --- /dev/null +++ b/configure/Sample.Makefile @@ -0,0 +1,183 @@ +# Makefile.Host for base/src/sample +# +# +# Sample Makefile.Host showing all possible entries +# that are allowed using RULES.Host. +# + +TOP = ../../.. +include $(TOP)/config/CONFIG +CMPLR = STRICT + +# Add-on CFLAGS that are needed by this Makefile. +# (If possible, all system specific flags should be +# defined in CONFIG.Host.$(ARCH_CLASS)) +# +# These CFLAGS rules also apply to these Makefile-variables: +# CXXFLAGS C++ flags +# LDFLAGS link flags +# +# This is used on all systems: +USR_CFLAGS = -DVAR=value -Ddefine_for_all_systems +# This is added to the above, but only for ARCH_CLASS=BSD: +USR_CFLAGS_BSD = -DVERSION='Berkeley enhanced' +# ..only for WIN32: +USR_CFLAGS_WIN32 = -DVERSION='WIN32 port' +# +# -nil- is special: +# if USR_CFLAGS_SYSV was undefined or empty, .._DEFAULT would have +# been used. +# To indicate +# "yes, there is a special USR_CFLAGS for SYSV, but it's empty" +# you have to set it to -nil-: +USR_CFLAGS_SYSV = -nil- +# .. for all other arch classes: +USR_CFLAGS_DEFAULT = -DVERSION='generic Unix' + +# CFLAGS that are only used to compile a_file.c or a_file.cc: +# +a_file_CFLAGS = -DIN_A_FILE +a_file_CFLAGS_WIN32 = -DVERSION='WIN32 port' + +# --------------------------------------------------------- +# general rule for all .c .cc .h .hh files and scripts: +# +# In here you supply just the filename without '../' etc. +# While building in an O.xxx subdir, the +# sources are extracted from either the +# '..' +# dir or - if it exists - the dir +# '../$(ARCH_CLASS)' +# is preferred. +# --------------------------------------------------------- + + +# includes to install from this Makefile +# +# again: if INC_$(ARCH_CLASS) is defined, it is added to INC, +# otherwise INC_DEFAULT (if defined) is added: +# +INC_DEFAULT = for_all_but_WIN32_or_hp700.h +INC_WIN32 = only_for_WIN32.h +INC_hp700 = -nil- # hp700 uses no special include +INC = file.h + +# -------------------------------------------------------------------- +# defining a library +# -------------------------------------------------------------------- +# +# Contents of a library are specified via LIBSRCS. +# From this the platform specific object names (.o, .obj, ...) +# are derived automatically. +# +# Platform specific objects: +# use LIBOBJS_$(ARCH_CLASS) or .._DEFAULT +# +# Platform specific files can also be put in +# separate os/ARCH_CLASS directories! +# +# For almost every file the seach order is: +# ./os/ARCH_CLASS +# ./os/generic +# . +# So usually only LIBSRCS should be sufficient! +# +LIBSRCS = file_for_lib.c another_file.cc +LIBSRCS_DEFAULT = posix.c +LIBSRCS_WIN32 = win32_special.c +LIBSRCS_BSD = -nil- + +# Library to build: +# lib$(LIBRARY).a or ..dll/..exp/..lib +# +# Currently you can build only one (1) lib per Makefile.Host! +# +LIBRARY=libname + +# if SHARED_LIBRARIES is YES then shared and archive libraries will +# both be built +#SHARED_LIBRARIES = YES +# +# Library version +SHRLIB_VERSION = +# On WIN32 results in /version:$(SHRLIB_VERSION) link option +# On Unix type hosts .$(SHRLIB_VERSION) is appended to library name + +# -------------------------------------------------------------------- +# defining products (executable programs) +# -------------------------------------------------------------------- +# +# if SRCS is undefined, it defaults to $(PROD).c +SRCS=a.c b.c c.c + +# SRCS that are only used for PROD a_file +# +a_file_SRCS = aa.c bb.c + +# EPICS libs needed to link PROD, TESTPROD and sharable library +# +# note that DLL_LIBS (the libraries needed to link a shareable +# library) is created by default from the PROD/SYS libraries specified +# below minus the name of the sharable library (LIBRARY) +# +# +# for all systems: +PROD_LIBS = Com Ca +# for most systems: +PROD_LIBS_DEFAULT = mathlib +PROD_LIBS_WIN32 = -nil- + +# system libs needed to link PROD, TESTPROD and sharable library +# +# for all systems: +SYS_PROD_LIBS = m +# for most systems: +SYS_PROD_LIBS_DEFAULT = foolib +SYS_PROD_LIBS_WIN32 = -nil- + +# other libs needed to link PROD, TESTPROD and sharable library +# +# for all systems: +USR_LIBS = Xm Xt X11 +Xm_DIR = $(MOTIF_LIB) +Xt_DIR = $(X11_LIB) +X11_DIR = $(X11_LIB) + +# for most systems: +USR_LIBS_DEFAULT = foolib +USR_LIBS_WIN32 = -nil- +foolib_DIR = $(FOO_LIB) + +# Product, +# may be caRepeater.o -> caRepeater +# or caRepeater.obj -> caRepeater.exe +PROD = prod +PROD_DEFAULT = product_for_rest +PROD_WIN32 = product_only_for_WIN32 +PROD_BSD = product_only_for_BSD +PROD_SYSV = product_only_for_SYSV + +# Product version +PROD_VERSION = +# On WIN32 results in /version:$(SHRLIB_VERSION) link option +# On Unix type hosts PROD_VERSION) is ignored + +# Scripts to install +# +# If there is both ../$(SCRIPT) and ../$(ARCH_CLASS)/$(SCRIPT), +# the latter, system specific version will be installed! +# +SCRIPTS_DEFAULT = script_for_rest +SCRIPTS_WIN32 = script_only_for_WIN32 +SCRIPTS_BSD = script_only_for_BSD +SCRIPTS = script + +# if you want to build products locally without installing: +# TESTPROD = test + +# put all definitions before the following include line +# put all rules after the following include line + +include $(TOP)/config/RULES.Host + +# EOF Makefile.Host