Something went wrong on our end
-
Jameson Rollins authored
everything can be handled by main install script now.
Jameson Rollins authoredeverything can be handled by main install script now.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Makefile.in 6.78 KiB
# RCG Makefile
SHELL = /bin/sh
top_srcdir := `readlink -m @top_srcdir@`
srcdir := `readlink -m @srcdir@`
linux_version := '@linux_version@'
VPATH=$(srcdir)
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
infodir = @infodir@
mandir = @mandir@
infodir = @infodir@
libdir = @libdir@
datarootdir = @datarootdir@
CXX=@CXX@
CC=@CC@
LIBS=@LIBS@
DEBUGFLAGS=-g
PERFORMANCEFLAGS=-DNDEBUG -g -O5
RELEASEFLAGS=-DNDEBUG -DNPROBE -g -O5
#DEBUGFLAGS=-DNDEBUG -O5 -unroll=16
DEVFLAGS=@DEVFLAGS@
%: clean-%
@mkdir -p src/epics/util src/fe target build src/epics/fmseq config src/include
@ln -fs $(srcdir)/src/epics/util/lib src/epics/util > /dev/null 2>&1 || /bin/true
@ln -fs $(srcdir)/src/include/drv src/include > /dev/null 2>&1 || /bin/true
@ln -fs $(srcdir)/src/epics/simLink src/epics > /dev/null 2>&1 || /bin/true
@ln -fs $(srcdir)/src/epics/util/GNUmakefile src/epics/util > /dev/null 2>&1 || /bin/true
@echo Parsing the model $@...
@make -C src/epics/util -sf Makefile $@ > $@.log 2>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@echo Done
@/bin/rm -rf build/$@epics-medm
@/bin/rm -rf build/$@epics-config
@/bin/mv -f build/$@epics/medm build/$@epics-medm
@/bin/mv -f build/$@epics/config build/$@epics-config
@/bin/rm -rf target/$@epics build/$@epics;
@echo Building EPICS sequencers...
@env RCG_SRC_DIR=$(srcdir) PERL5LIB=$(srcdir)/src/epics/util make -f config/Makefile.$@epics RCG_SRC_DIR=$(srcdir) >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@echo Done
@($(srcdir)/src/epics/util/nameLengthChk.pl $@) >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@/bin/mkdir -p build/$@epics
@/bin/mv -f build/$@epics-medm build/$@epics/medm
@/bin/mv -f build/$@epics-config build/$@epics/config
@echo Building front-end Linux kernel module $@...
@make -sC src/fe/$@ clean
# copy IOP symbol file to build area if found
@cp src/fe/ModuleIOP.symvers src/fe/$@ > /dev/null 2>&1 || /bin/true
@cat /opt/DIS/lib/modules/$(linux_version)/*.symvers > src/fe/$@/Module.symvers || /bin/true
# build it
@make -C src/fe/$@ >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
# save IOP symbol to file
@grep IOP src/fe/$@/Module.symvers > /tmp/tmp.symvers
@awk -vOFS='\t' '{$$3 = "/"; print}' /tmp/tmp.symvers > src/fe/ModuleIOP.symvers
@rm /tmp/tmp.symvers
@make -C src/fe/$@ >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@$(srcdir)/src/epics/util/checkUndefined.pl $@_error.log >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@echo Done
# @echo Building front-end user space object $@...
# @/bin/rm -rf src/fe/$@_usp/*.o ;
# @make -C src/fe/$@_usp >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
# @echo Done
@/bin/mkdir -p target/$@epics/src
@echo $(srcdir) > target/$@epics/src/rcg_location.txt
@echo Build date `date` > target/$@epics/src/build.txt
@echo Compiled on `hostname` >> target/$@epics/src/build.txt
@echo RCG_LIB_PATH=${RCG_LIB_PATH} >> target/$@epics/src/build.txt
@tar Ccf $(srcdir) - --exclude rcg.tar.gz --exclude build --exclude target . | gzip > target/$@epics/src/rcg.tar.gz
@cp src/epics/util/sources.$@ target/$@epics/src/src_locations.txt
@cp $@.log target/$@epics/src
@cp $@_error.log target/$@epics/src
@sort src/epics/util/sources.$@ | uniq | tar czTf - target/$@epics/src/sources.tar.gz > /dev/null 2>&1
@echo RCG source code directory:
@echo $(srcdir)
@echo The following files were used for this build:
@sort src/epics/util/sources.$@ | uniq
@echo
@echo Successfully compiled $@
@echo '***********************************************'
@echo Compile Warnings, found in $@_warnings.log:
@echo '***********************************************'
@cat $@_warnings.log
@echo '***********************************************'
all:
/bin/true
.PHONY : doc
doc:
(cd doc && bash ./doxScript && doxygen doxygen.cfg)
reclean:
-/bin/rm -rf build config src target
clean-%:
@system=$(subst clean-,,$@); echo Cleaning $${system}...; \
/bin/rm -rf target/$${system}epics build/$${system}epics; \
(make -siC src/fe/$${system}/Makefile clean 2>/dev/null); echo Done
install-adclist-%:
@system=$(subst install-adclist-,,$@); $(srcdir)/install-adclist $${system} $(srcdir)
install-%:
@system=$(subst install-,,$@); $(srcdir)/install $${system} $(srcdir)
uninstall-%:
@system=$(subst uninstall-,,$@); $(srcdir)/uninstall $${system} $(srcdir)
#MDL_MODELS = x1cdst1 x1isiham x1isiitmx x1iss x1lsc x1omc1 x1psl x1susetmx x1susetmy x1susitmx x1susitmy x1susquad1 x1susquad2 x1susquad3 x1susquad4 x1x12 x1x13 x1x14 x1x15 x1x16 x1x20 x1x21 x1x22 x1x23
#MDL_MODELS = $(wildcard src/epics/simLink/l1*.mdl)
#MDL_MODELS = $(shell cd src/epics/simLink; ls m1*.mdl | sed 's/.mdl//')
#MDL_MODELS=\
#l1ioplsc0 l1lsc l1omc1 l1omc2 l1lsctest\
#l1iopasc0 l1asctest l1ascwfs\
#l1iopoaf0 l1pemlvea\
#l1iopseib1 l1isiitmy l1seiitmy\
#l1iopseib2 l1isibs l1seibs\
#l1iopseib3 l1isiitmx l1seiitmx\
#l1iopseih16 l1seiham1 l1seiham6\
#l1iopseih23 l1isiham3 l1hpiham3 \
#l1iopseih45 l1seiham4 l1seiham5\
#l1iopsusbsc123 l1susbs l1susitmy l1susitmx\
#l1iopsush2a l1susquad l1susprm3\
#l1iopsush2b\
#l1iopsush34 l1susmc2 l1sussr2 l1suspr2\
#l1iopsusauxh34 l1susauxh34\
#l1iopsush56 l1sussr3 l1sussrm\
#l1ioppsl0 l1psldbb l1pslfss l1pslpmc l1psliss\
#l1ioppemex l1pemex l1susetmx l1isietmx\
#l1ioppemey l1pemey l1susetmy l1isietmy
#
MDL_MODELS = $(shell if [ -e /etc/rt.sh ]; then /etc/rt.sh; fi)
World: $(MDL_MODELS)
@echo Successfully compiled $(MDL_MODELS)
startWorld:
@echo $(patsubst %,start% \;,$(MDL_MODELS))
killWorld:
@echo $(patsubst %,kill% \;,$(MDL_MODELS))
showWorld:
@echo $(MDL_MODELS)
# Extract all "ai" Epics record (setpoints) and print SQL commands to insert into the Archiver database
settingsWorld:
@for i in $(MDL_MODELS); do grep grecord\(ai /opt/rtcds/lho/h1/target/$$i/$${i}epics/db/H1/$${i}1.db; done | sed 's/grecord(ai,"\(.*\)")/\1/g' | awk "{ printf \"insert into channel (name, grp_id) values ('%s', 1);\n\", \$$0 }"
cleanWorld: $(patsubst %,clean-%,$(MDL_MODELS))
@echo Cleaned $(MDL_MODELS)
installWorld: $(patsubst %,install-%,$(MDL_MODELS))
@echo Installed $(MDL_MODELS)
installAdclistWorld: $(patsubst %,install-adclist-%,$(MDL_MODELS))
@echo Installed $(MDL_MODELS)
# For test builds of IFO models
cdstest:=$(USERAPPS_DIR)/cds/test/scripts
TST_MODELS = $(shell if [ -e $(cdstest)/rt-allmodels.sh ]; then $(cdstest)/rt-allmodels.sh; fi)
WorldTest: $(TST_MODELS)
@echo Successfully compiled $(TST_MODELS)
showWorldTest:
@echo $(TST_MODELS)
cleanWorldTest: $(patsubst %,clean-%,$(TST_MODELS))
@echo Cleaned $(TST_MODELS)
installWorldTest: $(patsubst %,install-%,$(TST_MODELS))
@echo Installed $(TST_MODELS)
# Show all predefined preprocessor definitions
dump_predefines:
gcc -E -dM -x c /dev/null