Changes for Makefile.Host and also more like APS/ASD environment
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user