Merged changes from 3.14 branch

Includes all changes up to the 3.14.12.2 release on 2011-12-12.
This commit is contained in:
Andrew Johnson
2011-12-12 16:16:33 -06:00
20 changed files with 177 additions and 90 deletions

View File

@@ -47,7 +47,7 @@ DB_OPT = NO
#-------------------------------------------------------
# Check configure/RELEASE file for consistency
CHECK_RELEASE_YES = checkRelease
CHECK_RELEASE_NO =
CHECK_RELEASE_NO = noCheckRelease
CHECK_RELEASE_WARN = warnRelease
#-------------------------------------------------------

View File

@@ -173,6 +173,10 @@ checkRelease:
$(CONVERTRELEASE) checkRelease
warnRelease:
-$(CONVERTRELEASE) checkRelease
noCheckRelease:
ifeq ($(EPICS_HOST_ARCH),$(T_A))
@echo "Warning: RELEASE file consistency checks have been disabled"
endif
#---------------------------------------------------------------
# The order of the following rules is
@@ -447,7 +451,7 @@ $(INSTALL_TEMPLATES_SUBDIR)/%: %
.PRECIOUS: $(COMMON_INC)
.PHONY: all inc build install clean rebuild buildInstall build_clean
.PHONY: runtests checkRelease warnRelease
.PHONY: runtests checkRelease warnRelease noCheckRelease
endif # BASE_RULES_BUILD
# EOF RULES_BUILD

View File

@@ -1,17 +1,15 @@
# CONFIG.Common.ios-arm
#
# $Revision-Id$
# This file is maintained by the build community.
#
# Definitions for ios-arm target builds
# Sites may override these definitions in CONFIG_SITE.Common.ios-arm
# or CONFIG_SITE.<host>.ios-arm
#-------------------------------------------------------
IOS_PLATFORM = iPhoneOS
#
# Architecture-specific information
#
ARCH_CLASS = armv6
OP_SYS_CFLAGS += -fno-inline-functions
# iOS optimization flags for arm architecture

View File

@@ -1,8 +1,11 @@
# CONFIG.Common.ios-x86
#
# $Revision-Id$
# This file is maintained by the build community.
#
# Definitions for ios-x86 target builds
# Sites may override these definitions in CONFIG_SITE.Common.ios-x86
# or CONFIG_SITE.<host>.ios-x86
#-------------------------------------------------------
IOS_PLATFORM = iPhoneSimulator

View File

@@ -3,7 +3,7 @@
# $Revision-Id$
# This file is maintained by the build community.
#
# Definitions for iOS target archs
# Definitions for all Apple iOS builds
# Sites may override these definitions in CONFIG_SITE.Common.iosCommon
# or CONFIG_SITE.<host>.iosCommon
#-------------------------------------------------------
@@ -29,8 +29,14 @@ SDK_DIR = $(PLATFORM_DIR)/Developer/SDKs/$(IOS_PLATFORM)$(IOS_VERSION).sdk
#-------------------------------------------------------
# Build architecture flags
ARCH_DEP_CFLAGS += -arch $(ARCH_CLASS)
ARCH_DEP_LDFLAGS += -arch $(ARCH_CLASS)
# ARCH_CLASS must contain a list of CPU architectures which must be
# valid arguments to the -arch options for the cc and ld commands.
# ARCH_CLASS is defined in a CONFIG_SITE file which is not loaded
# until after this file.
#
ARCH_DEP_FLAGS = $(addprefix -arch ,$(ARCH_CLASS))
ARCH_DEP_CFLAGS += $(ARCH_DEP_FLAGS)
ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)
#--------------------------------------------------
# Operating system flags
@@ -49,9 +55,9 @@ OPT_CXXFLAGS_YES += -g
#-------------------------------------------------------
# Compiler definitions:
# Use clang instead of gcc
# Must use g++ still
CC = $(GNU_BIN)/clang
CCC = $(GNU_BIN)/c++
CCC = $(GNU_BIN)/clang++
GNU_LDLIBS_YES =
#-------------------------------------------------------
# Linker flags
@@ -80,6 +86,15 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
%.o: %.m
$(COMPILE.c) -c $<
#--------------------------------------------------
# Header dependency file generation
#
# Use compiler when ARCH_CLASS is a single arch value
# otherwise use perl script command
SINGLE_ARCH=$(filter 1,$(words $(ARCH_CLASS)))
HDEPENDS_CFLAGS = $(if $(SINGLE_ARCH),$(HDEPENDS_CFLAGS_$(HDEPENDS)))
HDEPENDS_METHOD = $(if $(SINGLE_ARCH),CFLAGS,CMD)
#--------------------------------------------------
# Allow site overrides
-include $(CONFIG)/os/CONFIG_SITE.Common.iosCommon

View File

@@ -0,0 +1,28 @@
# CONFIG_SITE.Common.ios-arm
#
# $Revision-Id$
# This file is maintained by the build community.
#
# Site-specific settings for ios-arm target builds
#-------------------------------------------------------
# Which ARM instruction set(s) to generate code for:
# Most iOS devices can run programs compiled for both the
# ARMv6 and ARMv7 instruction sets. ARMv7 code is usually
# more efficient, but the older devices listed below can only
# use the ARMv6 instruction set. Including both architectures
# generates a Universal binary, which is larger and takes
# longer to compile but runs efficiently on all devices.
#
# ARMv6-only devices: iPhone 1 or 3G, iPod Touch Gen 1 or 2
#
ARCH_CLASS = armv7
#ARCH_CLASS = armv6 armv7
#ARCH_CLASS = armv6
# Uncomment these two definitions to use g++ instead of clang++
# which may be needed in some circumstances:
#
#CCC = $(GNU_BIN)/c++
#GNU_LDLIBS_YES = -lgcc

View File

@@ -10,7 +10,8 @@
#IOS_VERSION = 3.2
#IOS_VERSION = 4.1
IOS_VERSION = 4.3
#IOS_VERSION = 4.3
IOS_VERSION = 5.0
# Most sites will want shared libraries

View File

@@ -32,7 +32,6 @@ COMMANDLINE_LIBRARY = READLINE
# Needs -lcurses (older versions)
#COMMANDLINE_LIBRARY = READLINE_CURSES
OP_SYS_CFLAGS += -g
# Uncomment the followings lines to build with CLANG instead of GCC.
#
@@ -40,3 +39,10 @@ OP_SYS_CFLAGS += -g
#CMPLR_CLASS = clang
#CC = clang
#CCC = clang++
# It makes sense to include debugging symbols even in optimized builds
# in case you want to attach gdb to the process or examine a core-dump.
# This does cost disk space, but not memory as debug symbols are not
# loaded into RAM when the binary is loaded.
OPT_CFLAGS_YES += -g

View File

@@ -32,7 +32,6 @@ COMMANDLINE_LIBRARY = READLINE
# Needs -lcurses (older versions)
#COMMANDLINE_LIBRARY = READLINE_CURSES
OP_SYS_CFLAGS += -g
# Uncomment the followings lines to build with CLANG instead of GCC.
#
@@ -40,3 +39,10 @@ OP_SYS_CFLAGS += -g
#CMPLR_CLASS = clang
#CC = clang
#CCC = clang++
# It makes sense to include debugging symbols even in optimized builds
# in case you want to attach gdb to the process or examine a core-dump.
# This does cost disk space, but not memory as debug symbols are not
# loaded into RAM when the binary is loaded.
OPT_CFLAGS_YES += -g

View File

@@ -6,9 +6,6 @@ use warnings;
my $version = '0.4';
exists $ENV{EPICS_HOST_ARCH}
or die "EPICS_HOST_ARCH environment variable not set";
package CA;
@@ -26,12 +23,17 @@ package Cap5;
our $VERSION = $version;
our @ISA = qw(DynaLoader);
# Library is specific to the Perl version and archname
use Config;
my $perl_version = $Config::Config{version};
my $perl_archname = $Config::Config{archname};
require DynaLoader;
# Add our lib/<arch> directory to the shared library search path
use File::Basename;
my $Lib = dirname(__FILE__);
push @DynaLoader::dl_library_path, "$Lib/../$ENV{EPICS_HOST_ARCH}";
push @DynaLoader::dl_library_path, "$Lib/$perl_version/$perl_archname";
bootstrap Cap5 $VERSION;

View File

@@ -22,6 +22,11 @@ ifneq ($(findstring darwin,$(T_A)),)
LOADABLE_SHRLIB_SUFFIX = .bundle
endif
PERL_VERSION = $(shell $(PERL) ../perlConfig.pl version)
PERL_ARCHNAME = $(shell $(PERL) ../perlConfig.pl archname)
PERL_ARCHPATH = $(PERL_VERSION)/$(PERL_ARCHNAME)
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
ifeq ($(findstring $(OS_CLASS),WIN32 cygwin32),)
# Doesn't build on WIN32
LOADABLE_LIBRARY_HOST = Cap5
@@ -33,12 +38,11 @@ ifeq ($(findstring $(OS_CLASS),WIN32 cygwin32),)
PERL_SCRIPTS += camonitor.pl
PERL_MODULES += CA.pm
PERL_MODULES += $(PERL_ARCHPATH)/$(LOADABLE_SHRLIB_PREFIX)Cap5$(LOADABLE_SHRLIB_SUFFIX)
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
# Can only create docs in Host build
HTMLS_DIR = .
HTMLS = CA.html
endif
HTMLS_DIR = .
HTMLS = CA.html
endif
endif
Cap5_SRCS = Cap5.xs
@@ -61,4 +65,7 @@ ifdef T_A
$(RM) $@
podchecker $< && pod2html --infile=$< --outfile=$@
$(INSTALL_PERL_MODULES)/$(PERL_ARCHPATH)/%: %
$(ECHO) "Installing loadable shared library $@"
@$(INSTALL_LIBRARY) -d -m $(LIB_PERMISSIONS) $< $(INSTALL_PERL_MODULES)/$(PERL_ARCHPATH)
endif

View File

@@ -42,45 +42,49 @@ static int nConn = 0; /* Number of connected
void usage (void)
{
fprintf (stderr, "\nUsage: camonitor [options] <PV name> ...\n\n"
" -h: Help: Print this message\n"
fprintf (stderr, "\nUsage: camonitor [options] <PV name> ...\n"
"\n"
" -h: Help; Print this message\n"
"Channel Access options:\n"
" -w <sec>: Wait time, specifies CA timeout, default is %f second(s)\n"
" -m <mask>: Specify CA event mask to use, with <mask> being any combination of\n"
" 'v' (value), 'a' (alarm), 'l' (log/archive), 'p' (property). Default: va\n"
" -p <prio>: CA priority (0-%u, default 0=lowest)\n"
" -w <sec>: Wait time, specifies CA timeout, default is %f second(s)\n"
" -m <msk>: Specify CA event mask to use. <msk> is any combination of\n"
" 'v' (value), 'a' (alarm), 'l' (log/archive), 'p' (property).\n"
" Default event mask is 'va'\n"
" -p <pri>: CA priority (0-%u, default 0=lowest)\n"
"Timestamps:\n"
" Default: Print absolute timestamps (as reported by CA server)\n"
" -t <key>: Specify timestamp source(s) and type, with <key> containing\n"
" 's' = CA server (remote) timestamps\n"
" 'c' = CA client (local) timestamps (shown in '()'s)\n"
" 'n' = no timestamps\n"
" 'r' = relative timestamps (time elapsed since start of program)\n"
" 'i' = incremental timestamps (time elapsed since last update)\n"
" 'I' = incremental timestamps (time elapsed since last update, by channel)\n"
" Default: Print absolute timestamps (as reported by CA server)\n"
" -t <key>: Specify timestamp source(s) and type, with <key> containing\n"
" 's' = CA server (remote) timestamps\n"
" 'c' = CA client (local) timestamps (shown in '()'s)\n"
" 'n' = no timestamps\n"
" 'r' = relative timestamps (time elapsed since start of program)\n"
" 'i' = incremental timestamps (time elapsed since last update)\n"
" 'I' = incremental timestamps (time since last update, by channel)\n"
" 'r', 'i' or 'I' require 's' or 'c' to select the time source\n"
"Enum format:\n"
" -n: Print DBF_ENUM values as number (default are enum string values)\n"
"Arrays: Value format: print number of requested values, then list of values\n"
" Default: Print all values\n"
" -# <count>: Print first <count> elements of an array\n"
" -S: Print array of char as a string (long string)\n"
"Floating point type format:\n"
" Default: Use %%g format\n"
" -e <nr>: Use %%e format, with a precision of <nr> digits\n"
" -f <nr>: Use %%f format, with a precision of <nr> digits\n"
" -g <nr>: Use %%g format, with a precision of <nr> digits\n"
" -s: Get value as string (honors server-side precision)\n"
" -lx: Round to long integer and print as hex number\n"
" -lo: Round to long integer and print as octal number\n"
" -lb: Round to long integer and print as binary number\n"
" -n: Print DBF_ENUM values as number (default is enum string)\n"
"Array values: Print number of elements, then list of values\n"
" Default: Request and print all elements (dynamic arrays supported)\n"
" -# <num>: Request and print up to <num> elements\n"
" -S: Print arrays of char as a string (long string)\n"
"Floating point format:\n"
" Default: Use %%g format\n"
" -e <num>: Use %%e format, with a precision of <num> digits\n"
" -f <num>: Use %%f format, with a precision of <num> digits\n"
" -g <num>: Use %%g format, with a precision of <num> digits\n"
" -s: Get value as string (honors server-side precision)\n"
" -lx: Round to long integer and print as hex number\n"
" -lo: Round to long integer and print as octal number\n"
" -lb: Round to long integer and print as binary number\n"
"Integer number format:\n"
" Default: Print as decimal number\n"
" -0x: Print as hex number\n"
" -0o: Print as octal number\n"
" -0b: Print as binary number\n"
" Default: Print as decimal number\n"
" -0x: Print as hex number\n"
" -0o: Print as octal number\n"
" -0b: Print as binary number\n"
"Alternate output field separator:\n"
" -F <ofs>: Use <ofs> as an alternate output field separator\n"
"\nExample: camonitor -f8 my_channel another_channel\n"
" -F <ofs>: Use <ofs> to separate fields in output\n"
"\n"
"Example: camonitor -f8 my_channel another_channel\n"
" (doubles are printed as %%f with precision of 8)\n\n"
, DEFAULT_TIMEOUT, CA_PRIORITY_MAX);
}

View File

@@ -1109,7 +1109,7 @@ gddStatus gdd::clearData(void)
str->clear();
}
else if ( this->primitiveType() == aitEnumFixedString ) {
memset ( this->data.FString, '\0', sizeof ( this->data.FString ) );
memset ( this->data.FString, '\0', sizeof(aitFixedString) );
}
else {
memset ( & this->data, '\0', sizeof ( this->data ) );

View File

@@ -1,14 +1,13 @@
/*************************************************************************\
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
* Copyright (c) 2011 UChicago Argonne LLC, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* EPICS BASE Versions 3.13.7
* and higher are distributed subject to a Software License Agreement found
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/* dbExpand.c */
/* Author: Marty Kraimer Date: 30NOV95 */
/* Author: Marty Kraimer Date: 30NOV95 */
#include <stdlib.h>
#include <stddef.h>
@@ -25,24 +24,25 @@
#include "osiFileName.h"
DBBASE *pdbbase = NULL;
void usage(void)
{
fprintf(stderr, "Usage:\n\tdbExpand -Ipath -ooutfile "
"-S macro=value file1.dbd file2.dbd ...\n");
fprintf(stderr, "Usage:\n\tdbExpand -b -Ipath -ooutfile "
"-S macro=value file1.dbd file2.dbd ...\n");
fprintf(stderr,"Specifying any path will replace the default of '.'\n");
fprintf(stderr,"The -b option enables relaxed breakpoint table checking\n");
}
int main(int argc,char **argv)
{
char *path = NULL;
char *sub = NULL;
int pathLength = 0;
int subLength = 0;
char *path = NULL;
char *sub = NULL;
int pathLength = 0;
int subLength = 0;
char *outFilename = NULL;
FILE *outFP = stdout;
long status;
long returnStatus = 0;
long status;
long returnStatus = 0;
static char *pathSep = OSI_PATH_LIST_SEPARATOR;
static char *subSep = ",";
@@ -53,8 +53,8 @@ int main(int argc,char **argv)
while ((argc > 1) && (**argv == '-')) {
char optLtr = (*argv)[1];
char *optArg;
if (strlen(*argv) > 2) {
if (strlen(*argv) > 2 || optLtr == 'b') {
optArg = *argv+2;
++argv;
--argc;
@@ -63,36 +63,40 @@ int main(int argc,char **argv)
argv += 2;
argc -= 2;
}
switch (optLtr) {
case 'o':
outFilename = optArg;
break;
case 'I':
dbCatString(&path, &pathLength, optArg, pathSep);
break;
case 'S':
dbCatString(&sub, &subLength, optArg, subSep);
break;
case 'b':
dbBptNotMonotonic = 1;
break;
default:
fprintf(stderr, "dbExpand: Unknown option '-%c'\n", optLtr);
usage();
exit(1);
}
}
if (argc < 1) {
fprintf(stderr, "dbExpand: No input file specified\n");
fprintf(stderr, "dbExpand: No input file specified\n");
usage();
exit(1);
exit(1);
}
for (; argc>0; --argc, ++argv) {
status = dbReadDatabase(&pdbbase,*argv,path,sub);
if (status) returnStatus = status;
status = dbReadDatabase(&pdbbase,*argv,path,sub);
if (status) returnStatus = status;
}
if (returnStatus) {
errlogFlush();
@@ -106,7 +110,7 @@ int main(int argc,char **argv)
exit(1);
}
}
dbWriteMenuFP(pdbbase,outFP,0);
dbWriteRecordTypeFP(pdbbase,outFP,0);
dbWriteDeviceFP(pdbbase,outFP);
@@ -116,7 +120,7 @@ int main(int argc,char **argv)
dbWriteVariableFP(pdbbase,outFP);
dbWriteBreaktableFP(pdbbase,outFP);
dbWriteRecordFP(pdbbase,outFP,0,0);
free((void *)path);
free((void *)sub);
return 0;

View File

@@ -3916,7 +3916,7 @@ void epicsShareAPI dbDumpField(
else
printf("\t field_type: %s\n", pamapdbfType[j].strvalue);
printf("\tprocess_passive: %hd\n",pdbFldDes->process_passive);
printf("\t base: %hd\n",pdbFldDes->base);
printf("\t base: %d\n",pdbFldDes->base);
if(!pdbFldDes->promptgroup) {
printf("\t promptgroup: %d\n",pdbFldDes->promptgroup);
} else {
@@ -3929,7 +3929,7 @@ void epicsShareAPI dbDumpField(
}
}
printf("\t interest: %hd\n", pdbFldDes->interest);
printf("\t as_level: %hd\n",pdbFldDes->as_level);
printf("\t as_level: %d\n",pdbFldDes->as_level);
printf("\t initial: %s\n",
(pdbFldDes->initial ? pdbFldDes->initial : ""));
if(pdbFldDes->field_type==DBF_MENU) {

View File

@@ -74,6 +74,8 @@ epicsShareFunc DBENTRY * epicsShareAPI dbCopyEntry(DBENTRY *pdbentry);
epicsShareFunc void epicsShareAPI dbCopyEntryContents(DBENTRY *pfrom,
DBENTRY *pto);
epicsShareExtern int dbBptNotMonotonic;
epicsShareFunc long epicsShareAPI dbReadDatabase(DBBASE **ppdbbase,
const char *filename, const char *path, const char *substitutions);
epicsShareFunc long epicsShareAPI dbReadDatabaseFP(DBBASE **ppdbbase,

View File

@@ -86,8 +86,6 @@ Com_SRCS += osdInterrupt.c
Com_SRCS += osdPoolStatus.c
Com_SRCS += osdSignal.cpp
osdEnv_CFLAGS_WIN32= -U__STDC__
Com_SRCS += osdEnv.c
# Command-line input support

View File

@@ -60,6 +60,8 @@ static int osdTimeGetCurrent ( epicsTimeStamp *pDest );
// for mingw
#if !defined ( MAXLONGLONG )
#define MAXLONGLONG LL_CONSTANT(0x7fffffffffffffff)
#endif
#if !defined ( MINLONGLONG )
#define MINLONGLONG LL_CONSTANT(~0x7fffffffffffffff)
#endif

View File

@@ -17,6 +17,11 @@
extern "C" {
#endif
#ifdef isfinite
# undef finite
# define finite(x) isfinite(x)
#endif
epicsShareExtern float epicsNAN;
epicsShareExtern float epicsINF;

View File

@@ -14,6 +14,8 @@ die "Path to INSTALL_LOCATION missing\n" unless @ARGV == 1;
my $path = shift;
$path =~ s/\\/\\\\/gx;
$path =~ s/^'//;
$path =~ s/'$//;
print "/* THIS IS A GENERATED FILE. DO NOT EDIT! */\n",
"\n",