Changes for Makefile.Host and also more like APS/ASD environment

This commit is contained in:
Marty Kraimer
1997-01-17 16:38:02 +00:00
parent 6f3b75b485
commit 378cc22c07

View File

@@ -20,17 +20,24 @@ Cleanup() {
done
exit $rtncode
}
USAGE="Usage: iocMakeApp -r release -e appname ... "
USAGE="Usage: <full path>makeBaseApp -e appname ... "
if [ "$PWD" = "$HOME" ]; then Cleanup 1 "In Home Directory" "$USAGE"; fi;
#look for options (Currently only -r release and -e)
RELEASE=
while getopts r:e OPT
#Find EPICS_BASE from path portion of command
DIR=`echo $0 | sed -n -e "/bin/s/.*/bin/p"`
if [ -z "$DIR" ]; then
DIR=`echo $0 | sed -n -e "/src/s/.*/src/p"`
fi
if [ -z "$DIR" ]; then
Cleanup 1 "Cant find epics base. Use full path " "${USAGE}"
fi
EPICS_BASE=`echo $0 | sed -e "s%\(.*\)/${DIR}.*%\1%"`
#look for options (Currently only and -e)
while getopts e OPT
do
case $OPT in
r) RELEASE=$OPTARG
;;
e) EXAMPLES=TRUE
;;
\?)
@@ -40,26 +47,12 @@ do
done
shift `expr $OPTIND - 1`
#if user did not specify release and none exists error
if [ -z "$RELEASE" -a ! -f EPICS_BASE ]; then
Cleanup 1 "No release " "$USAGE"
fi
if [ ! -z "$RELEASE" ]; then
${RELEASE}/bin/${HOST_ARCH}/getrel ${RELEASE}
if [ ! -f EPICS_BASE ]; then
Cleanup 1 "Did not detect successful getrel" "$USAGE"
fi
fi
EPICS_BASE=`sed -e "s%EPICS_BASE=%%" < EPICS_BASE`
if [ ! -f Makefile ]; then
cat > Makefile <<-\END
TOP = .
include $(TOP)/config/CONFIG_APP
#add directories as follows
#DIRS += <dir>
DIRS += $(shell ls | grep App )
DIRS += iocBoot
include $(EPICS_BASE)/config/RULES_TOP
END
fi
@@ -67,44 +60,94 @@ fi
if [ ! -d config ]; then
mkdir config
cat > config/CONFIG <<-\END
#CONFIG
# Add any changes to make rules here
#CROSS_COMPILER_TARGET_ARCHS = mv167
#SHARE_BIN = $(SHARE)/bin/$(T_A)
#ifdef MASTER_IOCAPPS
#MASTER_IOCAPPS_BIN = $(MASTER_IOCAPPS)/bin/$(T_A)
#endif
END
cat > config/CONFIG_APP <<-\END
#CONFIG_APP DO NOT EDIT THIS FILE
include $(TOP)/EPICS_BASE
include $(TOP)/config/RELEASE
include $(EPICS_BASE)/config/CONFIG
include $(TOP)/config/CONFIG
END
cat > config/RULES.Unix <<-\END
include $(EPICS_BASE)/config/RULES.Unix
cat > config/RELEASE <<-END
#RELEASE Location of external products
EPICS_BASE=${EPICS_BASE}
#SHARE=
#MASTER_IOCAPPS=
END
cat > config/RULES.Db <<-\END
#RULES.Db
include $(EPICS_BASE)/config/RULES.Db
END
cat > config/RULES.Host <<-\END
#RULES.Host
include $(EPICS_BASE)/config/RULES.Host
ifdef MASTER_IOCAPPS
USR_INCLUDES += -I$(MASTER_IOCAPPS)/include
endif
USR_INCLUDES += -I$(SHARE)/include
END
cat > config/RULES.Vx <<-\END
#RULES.Vx
include $(EPICS_BASE)/config/RULES.Vx
VX_WARN_YES = -Wall -pedantic
ifdef MASTER_IOCAPPS
USR_INCLUDES += -I$(MASTER_IOCAPPS)/include
endif
USR_INCLUDES += -I$(SHARE)/include
END
cat > config/RULES.ioc <<-\END
#RULES.ioc
include $(EPICS_BASE)/config/RULES.ioc
END
cat > config/RULES_ARCHS <<-\END
#RULES_ARCHS
include $(EPICS_BASE)/config/RULES_ARCHS
END
cat > config/RULES_DIRS <<-\END
#RULES_DIRS
include $(EPICS_BASE)/config/RULES_DIRS
END
cat > config/RULES_TOP <<\END
#RULES_TOP
include $(EPICS_BASE)/config/RULES_TOP
inc: softlinks
buildInstall: softlinks
softlinks:
@echo "softlinks" ; if [ "$(MASTER_IOCAPPS)" ]; then \
for DIR in bin lib dbd include man ; do \
$(SHARE)/config/makeSoftLinks $(MASTER_IOCAPPS) $${DIR} ;\
done; fi
.PHONY :: softlinks
END
fi
if [ $# = 0 ]; then Cleanup 0; fi;
for APPNAME
do
if [ -d "${APPNAME}" ]; then continue; fi
mkdir ${APPNAME}
if [ $? -ne 0 ]; then Cleanup 1 "$USAGE"; fi
cd ${APPNAME}
if [ -d "${APPNAME}App" ]; then continue; fi
mkdir ${APPNAME}App
if [ $? -ne 0 ]; then Cleanup 1 "$USAGE"; fi
cd ${APPNAME}App
cat > Makefile <<-\END
TOP = ..
include $(TOP)/config/CONFIG_APP
DIRS = src
include $(EPICS_BASE)/config/RULES_DIRS
END
mkdir db
if [ -n "${EXAMPLES}" ]; then
#if source starts with blank tab replace by tab
sed -e "s/ / /" > db/dbExample.db <<-\END
mkdir Db
if [ -n "${EXAMPLES}" ]; then
#if source starts with blank tab replace by tab
sed -e "s/ / /" > Db/dbExample.db <<-\END
record(ai, "$(user):aiExample")
{
field(DESC, "Analog input")
@@ -158,8 +201,8 @@ do
field(LLSV, "MAJOR")
}
END
fi
mkdir src
fi
mkdir src
cat > src/Makefile <<-\END
TOP=../..
include $(TOP)/config/CONFIG_APP
@@ -174,12 +217,12 @@ do
# ADD MACRO DEFINITIONS AFTER THIS LINE
END
if [ -n "${EXAMPLES}" ]; then
if [ -n "${EXAMPLES}" ]; then
sed -e "s/APPNAME/${APPNAME}/" >> src/Makefile.Vx <<-\END
RECTYPES += xxxRecord.h
USER_DBDFLAGS += -I .. -I $(EPICS_BASE)/dbd
DBDEXPAND = APPNAMEInclude.dbd
DBDNAME = APPNAME.dbd
DBDNAME = APPNAMEApp.dbd
SRCS.c += ../xxxRecord.c
SRCS.c += ../devXxxSoft.c
@@ -187,36 +230,30 @@ do
LIBOBJS += xxxRecord.o
LIBOBJS += devXxxSoft.o
LIBOBJS += sncExample.o
LIBNAME = APPNAMESupport
SCRIPTS += st.APPNAME
SCRIPTS += vxWorks vxWorks.sym iocCore seq
LIBNAME = APPNAMELib
INSTALLS += vxWorks vxWorks.sym iocCore seq
END
else
else
sed -e "s/APPNAME/${APPNAME}/" >> src/Makefile.Vx <<-\END
#RECTYPES += anyRecord.h
USER_DBDFLAGS += -I .. -I $(EPICS_BASE)/dbd
#DBDEXPAND = APPNAMEInclude.dbd
#DBDNAME = APPNAME.dbd
#DBDNAME = APPNAMEApp.dbd
#SRCS.c += ../anysource.c
#include ../baseLIBOBJS
#LIBOBJS += anysource.o
#LIBNAME = APPNAMESupport
#SCRIPTS += st.APPNAME
#SCRIPTS += vxWorks vxWorks.sym iocCore seq
#LIBNAME = APPNAMELib
#INSTALLS += vxWorks vxWorks.sym iocCore seq
END
fi
sed -e "s/APPNAME/${APPNAME}/" >> src/Makefile.Vx <<-\END
fi
cat >> src/Makefile.Vx <<-\END
include $(TOP)/config/RULES.Vx
#----------------------------------------
# ADD RULES AFTER THIS LINE
$(LIBNAME): ../baseLIBOBJS
$(DBDNAME): ../base.dbd $(RECTYPES:%.h=../%.dbd)
END
cat > src/Makefile.Unix <<-\END
# Makefile.Unix
cat > src/Makefile.Host <<-\END
# Makefile.Host
TOP = ../../..
include $(TOP)/config/CONFIG_APP
INSTALL_LOCATION = $(TOP)
@@ -224,74 +261,52 @@ do
# ADD MACRO DEFINITIONS AFTER THIS LINE
#USR_CFLAGS +=
DEPLIBS += $(EPICS_BASE_LIB)/libca.a
DEPLIBS += $(EPICS_BASE_LIB)/libCom.a
USR_LDFLAGS = -L$(EPICS_BASE_LIB)
USR_LDLIBS = -lca -lDb -lCom
PROD_LIBS_DEFAULT += m
PROD_LIBS_WIN32 += -nil-
PROD_LIBS += ca
PROD_LIBS += Db
PROD_LIBS += Com
END
if [ -n "${EXAMPLES}" ]; then
sed -e "s/APPNAME/${APPNAME}/" >> src/Makefile.Unix <<-\END
SRCS.c += ../caExample.c
OBJS += caExample.o
if [ -n "${EXAMPLES}" ]; then
cat >> src/Makefile.Host <<-\END
PROD += caExample
END
else
sed -e "s/APPNAME/${APPNAME}/" >> src/Makefile.Unix <<-\END
#OBJS += xxx.o
else
cat >> src/Makefile.Host <<-\END
#PROD += xxx
END
fi
sed -e "s/APPNAME/${APPNAME}/" >> src/Makefile.Unix <<-\END
include $(TOP)/config/RULES.Unix
fi
cat >> src/Makefile.Host <<-\END
include $(TOP)/config/RULES.Host
#----------------------------------------
# ADD RULES AFTER THIS LINE
END
if [ -n "${EXAMPLES}" ]; then
if [ -n "${EXAMPLES}" ]; then
cat > src/${APPNAME}Include.dbd <<-\END
include "base.dbd"
include "xxxRecord.dbd"
device(xxx,CONSTANT,devXxxSoft,"SoftChannel")
END
else
else
cat > src/${APPNAME}Include.dbd <<-\END
include "base.dbd"
#private database definitions go here
#device(xxx,CONSTANT,devXxxSoft,"SoftChannel")
END
fi
cp ${EPICS_BASE}/dbd/base.dbd src/base.dbd
cp ${EPICS_BASE}/dbd/baseLIBOBJS src/baseLIBOBJS
sed -e "s/USER/${USER}/" \
-e "s/APPNAME/${APPNAME}/" > src/st.${APPNAME} <<-\END
# Example vxWorks startup file
#Following must be added for many board support packages
#cd <full path name to boot directory>
ld < iocCore
ld < seq
ld < APPNAMESupport
dbLoadDatabase("../../dbd/APPNAME.dbd")
END
if [ -n "${EXAMPLES}" ]; then
sed -e "s/USER/${USER}/" \
-e "s/APPNAME/${APPNAME}/" >> src/st.${APPNAME} <<-\END
dbLoadRecords("../../APPNAME/db/dbExample.db","user=USER")
iocInit
seq &snctest
END
else
sed -e "s/USER/${USER}/" \
-e "s/APPNAME/${APPNAME}/" >> src/st.${APPNAME} <<-\END
#dbLoadRecords("../../APPNAME/db/xxx.db","user=USER")
iocInit
#start sequence programs
#seq &sncxxx
END
fi
if [ -z "${EXAMPLES}" ]; then Cleanup 0; fi;
fi
if [ -f ${EPICS_BASE}/dbd/base.dbd ]; then
cp ${EPICS_BASE}/dbd/base.dbd src/base.dbd
else
echo "${EPICS_BASE}/dbdbase.dbd does not exist"
fi
if [ -f ${EPICS_BASE}/dbd/baseLIBOBJS ]; then
cp ${EPICS_BASE}/dbd/baseLIBOBJS src/baseLIBOBJS
else
echo "${EPICS_BASE}/baseLIBOBJS does not exist"
fi
if [ -n "${EXAMPLES}" ]; then
#if source starts with blank tab replace by tab
sed -e "s/ / /" > src/caExample.c <<-\END
/*caExample.c*/
@@ -802,7 +817,53 @@ do
}
}
END
cd ..
echo "add line to Makefile DIRS+=$APPNAME "
fi
cd ..
if [ ! -d iocBoot ]; then
mkdir iocBoot;
cat > iocBoot/Makefile <<-\END
TOP = ..
include $(TOP)/config/CONFIG_APP
DIRS += $(shell ls | grep ioc )
include $(TOP)/config/RULES_DIRS
END
fi
if [ -d iocBoot/ioc${APPNAME} ]; then continue; fi
mkdir iocBoot/ioc${APPNAME}
cd iocBoot/ioc${APPNAME}
cat > Makefile <<-\END
TOP = ../..
include $(TOP)/config/CONFIG_APP
ARCH = ???
include $(TOP)/config/RULES.ioc
END
sed -e "s/USER/${USER}/" \
-e "s/APPNAME/${APPNAME}/" > st.cmd <<-\END
# Example vxWorks startup file
#Following must be added for many board support packages
#cd <full path name to boot directory>
ld < bin/iocCore
ld < bin/seq
ld < bin/APPNAMELib
dbLoadDatabase("dbd/APPNAMEApp.dbd")
END
if [ -n "${EXAMPLES}" ]; then
sed -e "s/USER/${USER}/" \
-e "s/APPNAME/${APPNAME}/" >> st.cmd <<-\END
dbLoadRecords("APPNAMEApp/Db/dbExample.db","user=USER")
iocInit
seq &snctest
END
else
sed -e "s/USER/${USER}/" \
-e "s/APPNAME/${APPNAME}/" >> src/st.cmd <<-\END
#dbLoadRecords("APPNAMEApp/Db/xxx.db","user=USER")
iocInit
#start sequence programs
#seq &sncxxx
END
fi
cd ../..
done
Cleanup 0