search in Support.dbd files for Record.dbd files

This commit is contained in:
zimoch
2011-06-14 16:00:52 +00:00
parent f97aa09e24
commit 10761d1ed2
2 changed files with 56 additions and 46 deletions
+10 -10
View File
@@ -1,6 +1,6 @@
# driver.makefile
#
# $Id: driver.makefile,v 1.2 2011/06/07 15:00:25 zimoch Exp $
# $Id: driver.makefile,v 1.3 2011/06/14 16:00:52 zimoch Exp $
#
# This generic makefile compiles EPICS code (drivers, records, snl, ...)
# for all installed EPICS versions in parallel.
@@ -105,7 +105,7 @@ ifndef EPICSVERSION
# in source directory, first run
# Find out which EPICS versions to build
INSTALLED_EPICS_VERSIONS := $(patsubst ${EPICS_LOCATION}/base-%/config/CONFIG,%,$(wildcard ${EPICS_LOCATION}/base-*[0-9]/config/CONFIG))
INSTALLED_EPICS_VERSIONS := $(patsubst ${EPICS_LOCATION}/base-%,%,$(wildcard ${EPICS_LOCATION}/base-*[0-9]))
EPICS_VERSIONS = $(filter-out ${EXCLUDE_VERSIONS:=%},${DEFAULT_EPICS_VERSIONS})
MISSING_EPICS_VERSIONS = $(filter-out ${BUILD_EPICS_VERSIONS},${EPICS_VERSIONS})
BUILD_EPICS_VERSIONS = $(filter ${EPICS_VERSIONS},${INSTALLED_EPICS_VERSIONS})
@@ -159,7 +159,7 @@ endif
VERSIONCHECKFILES = ${SOURCES} ${SOURCES_3.13} ${SOURCES_3.14} ${DBDS} ${DBDS_3.13} ${DBD_3.14}
VERSIONCHECKCMD = ${MAKEHOME}/getVersion.tcl ${VERSIONCHECKFILES}
LIBVERSION_YES = $(shell ${VERSIONCHECKCMD})
LIBVERSION_YES = $(shell ${VERSIONCHECKCMD} 2>/dev/null)
LIBVERSION_Yes = $(LIBVERSION_YES)
LIBVERSION_yes = $(LIBVERSION_YES)
LIBVERSION = ${LIBVERSION_${USE_LIBVERSION}}
@@ -320,9 +320,7 @@ endif # 3.14
PROJECTDBD=${PRJ}${LIBVERSIONSTR}.dbd
export DBDFILES PROJECTDBD
FINDINDBD = $(foreach file,${DBDFILES},$(shell grep -o $(subst *,[[:alnum:]_]*,$(1)) ${file}))
RECORDS = $(sort $(patsubst %.dbd,%.h,$(notdir $(filter %Record.dbd,${DBDFILES})) $(call FINDINDBD,*Record.dbd)))
RECORDS = $(shell ${MAKEHOME}/expandDBD.tcl -r $(addprefix -I, $(sort $(dir ${DBDFILES}))) ${DBDFILES})
export RECORDS
MENUS = $(patsubst %.dbd,%.h,$(wildcard menu*.dbd))
@@ -331,7 +329,7 @@ export MENUS
BPTS = $(patsubst %.data,%.dbd,$(wildcard bpt*.data))
export BPTS
HDRS = ${HEADERS} ${RECORDS}
HDRS = ${HEADERS} $(addsuffix Record.h,${RECORDS})
export HDRS
TEMPLS = ${TEMPLATES}
@@ -634,12 +632,12 @@ CPPFLAGS += -MD
-include *.d
# Setup searchpaths from all used files
DIRS = $(sort $(dir ${SRCS:%=../%} ${HDRS:%=../%} ${TEMPLS:%=../%} ${DOCU:%=../%}))
vpath % ..
vpath % $(sort $(dir ${SRCS:%=../%}))
vpath %.h $(sort $(dir ${HDRS:%=../%}))
vpath %.template $(sort $(dir ${TEMPLS:%=../%}))
vpath %.db $(sort $(dir ${TEMPLS:%=../%}))
vpath %.dbd $(sort $(dir ${DBDFILES:%=../%}))
#VPATH += $(sort $(dir ${DOCU:%=../%}))
DBDDIRS = $(sort $(dir ${DBDFILES:%=../%}))
@@ -649,7 +647,7 @@ USR_DBDFLAGS += $(DBDEXPANDPATH)
ifeq (${EPICS_BASETYPE},3.13)
USR_INCLUDES += $(addprefix -I, $(sort $(dir ${SRCS:%=../%} ${HDRS:%=../%})))
build:: ${PROJECTDBD} ${RECORDS} ${PROJECTLIB}
build:: ${PROJECTDBD} $(addsuffix Record.h,${RECORDS}) ${PROJECTLIB}
ifneq ($(filter %.cc %.cpp,${SRCS}),)
ifneq (${T_A},T1-ppc604)
#add munched library for C++ code (does not work for T1-ppc604)
@@ -658,7 +656,7 @@ endif # T1-ppc604
endif # .cc or .cpp found
else # 3.14
GENERIC_SRC_INCLUDES = $(addprefix -I, $(sort $(dir ${SRCS:%=../%} ${HDRS:%=../%})))
build: ${PROJECTDBD} ${RECORDS}
build: ${PROJECTDBD} $(addsuffix Record.h,${RECORDS})
EXPANDARG = -3.14
endif # 3.14
@@ -859,3 +857,5 @@ endif # in O.* directory
endif # T_A defined
endif # OS_CLASS in BUILDCLASSES
endif # EPICSVERSION defined
# $Header: /cvs/G/DRV/misc/App/tools/driver.makefile,v 1.3 2011/06/14 16:00:52 zimoch Exp $
+46 -36
View File
@@ -2,12 +2,29 @@
package require Tclx
set epicsversion 3.13
set global_context [scancontext create]
set epicsversion 3.13
set quiet 0
set recordtypes 0
set seachpath {}
while {[llength $argv]} {
switch -glob -- [lindex $argv 0] {
"-3.14" { set epicsversion 3.14 }
"-q" { set quiet 1 }
"-r" { set recordtypes 1; set quiet 1 }
"-I" { lappend seachpath [lindex $argv 1]; set argv [lreplace $argv 0 1]; continue }
"-I*" { lappend seachpath [string range [lindex $argv 0] 2 end] }
"-*" { puts stderr "Unknown option [lindex $argv 0] ignored" }
default { break }
}
set argv [lreplace $argv 0 0]
}
proc opendbd {name} {
global seachpatch
foreach dir $seachpatch {
global seachpath
foreach dir $seachpath {
if ![catch {
set file [open [file join $dir $name]]
}] {
@@ -21,35 +38,39 @@ scanmatch $global_context {^[ \t]*(#|%|$)} {
continue
}
scanmatch $global_context {include[ \t]+"(.*)"} {
if {$recordtypes} {
scanmatch $global_context {include[ \t]+"?(.*)Record.dbd"?} {
puts $matchInfo(submatch0)
continue
}
} else {
scanmatch $global_context {(registrar|variable|function)[ \t]*\(} {
global epicsversion
if {$epicsversion == 3.14} {puts $matchInfo(line)}
}
scanmatch $global_context {
puts $matchInfo(line)
}
}
scanmatch $global_context {include[ \t]+"?([^"]*)"?} {
global seachpath
global FileName
global quiet
if [catch {
includeFile $global_context $matchInfo(submatch0)
} msg] {
puts stderr "ERROR: $msg in $FileName($matchInfo(handle)) line $matchInfo(linenum)"
exit 1
if {!$quiet} {
puts stderr "ERROR: $msg in path \"$seachpath\" called from $FileName($matchInfo(handle)) line $matchInfo(linenum)"
exit 1
}
}
continue
}
scanmatch $global_context {include[ \t]+(.*)} {
if [catch {
includeFile $global_context $matchInfo(submatch0)
} msg] {
puts stderr "ERROR: $msg in $FileName($matchInfo(handle)) line $matchInfo(linenum)"
exit 1
}
continue
}
scanmatch $global_context {(registrar|variable|function)[ \t]*\(} {
global epicsversion
if {$epicsversion == 3.14} {puts $matchInfo(line)}
}
scanmatch $global_context {
puts $matchInfo(line)
}
proc includeFile {context name} {
global global_context FileName
@@ -59,17 +80,6 @@ proc includeFile {context name} {
close $file
}
if {[lindex $argv 0] == "-3.14"} {
set epicsversion 3.14
set argv [lreplace $argv 0 0]
}
set seachpatch {}
while {[lindex $argv 0] == "-I"} {
lappend seachpatch [lindex $argv 1]
set argv [lreplace $argv 0 1]
}
foreach filename $argv {
set file [open $filename]
set FileName($file) $filename
@@ -77,4 +87,4 @@ foreach filename $argv {
close $file
}
# $Header: /cvs/G/DRV/misc/App/tools/expandDBD.tcl,v 1.2 2010/08/03 08:42:40 zimoch Exp $
# $Header: /cvs/G/DRV/misc/App/tools/expandDBD.tcl,v 1.3 2011/06/14 16:00:55 zimoch Exp $