From d077c8b0ff88fe337de8185f32ae1968fac5f6a5 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 21 Nov 2011 11:33:26 -0600 Subject: [PATCH 01/17] dbStatic: Added -b option to dbExpand -b turns off monotonic checking of breakpoint tables. --- documentation/RELEASE_NOTES.html | 4 +++ src/dbStatic/dbExpand.c | 60 ++++++++++++++++++-------------- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index d05102908..8e019989d 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -13,6 +13,10 @@ +

Added -b option to dbExpand

+ +

This turns off monotonic checking of breakpoint tables.

+

Launchpad Bugs Resolved

The following are links to bugs in the Launchpad bug tracker that have been diff --git a/src/dbStatic/dbExpand.c b/src/dbStatic/dbExpand.c index 80c95cabd..8071c1d7f 100644 --- a/src/dbStatic/dbExpand.c +++ b/src/dbStatic/dbExpand.c @@ -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 #include @@ -24,25 +23,28 @@ #include "gpHash.h" #include "osiFileName.h" +epicsShareExtern int dbBptNotMonotonic; /* from dbLexRoutines.c */ + 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 +55,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 +65,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 +112,7 @@ int main(int argc,char **argv) exit(1); } } - + dbWriteMenuFP(pdbbase,outFP,0); dbWriteRecordTypeFP(pdbbase,outFP,0); dbWriteDeviceFP(pdbbase,outFP); @@ -116,7 +122,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; From b5ec6e24482dbe4ba670d9f46d505b42faed98e3 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 21 Nov 2011 12:30:02 -0600 Subject: [PATCH 02/17] catools: Edited camonitor help text. --- src/catools/camonitor.c | 72 ++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/src/catools/camonitor.c b/src/catools/camonitor.c index cda00989f..307dad8d6 100644 --- a/src/catools/camonitor.c +++ b/src/catools/camonitor.c @@ -42,45 +42,49 @@ static int nConn = 0; /* Number of connected void usage (void) { - fprintf (stderr, "\nUsage: camonitor [options] ...\n\n" - " -h: Help: Print this message\n" + fprintf (stderr, "\nUsage: camonitor [options] ...\n" + "\n" + " -h: Help; Print this message\n" "Channel Access options:\n" - " -w : Wait time, specifies CA timeout, default is %f second(s)\n" - " -m : Specify CA event mask to use, with being any combination of\n" - " 'v' (value), 'a' (alarm), 'l' (log/archive), 'p' (property). Default: va\n" - " -p : CA priority (0-%u, default 0=lowest)\n" + " -w : Wait time, specifies CA timeout, default is %f second(s)\n" + " -m : Specify CA event mask to use. is any combination of\n" + " 'v' (value), 'a' (alarm), 'l' (log/archive), 'p' (property).\n" + " Default event mask is 'va'\n" + " -p : CA priority (0-%u, default 0=lowest)\n" "Timestamps:\n" - " Default: Print absolute timestamps (as reported by CA server)\n" - " -t : Specify timestamp source(s) and type, with 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 : Specify timestamp source(s) and type, with 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" - " -# : Print first 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 : Use %%e format, with a precision of digits\n" - " -f : Use %%f format, with a precision of digits\n" - " -g : Use %%g format, with a precision of 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" + " -# : Request and print up to elements\n" + " -S: Print arrays of char as a string (long string)\n" + "Floating point format:\n" + " Default: Use %%g format\n" + " -e : Use %%e format, with a precision of digits\n" + " -f : Use %%f format, with a precision of digits\n" + " -g : Use %%g format, with a precision of 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 : Use as an alternate output field separator\n" - "\nExample: camonitor -f8 my_channel another_channel\n" + " -F : Use 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); } From 0e41c03ff25c5a7354c5927b4ed4225cb851fc4d Mon Sep 17 00:00:00 2001 From: Benjamin Franksen Date: Mon, 28 Nov 2011 12:55:55 -0600 Subject: [PATCH 03/17] dbStatic: Fix windows build issue fixes: lp:894276 --- src/dbStatic/dbExpand.c | 2 -- src/dbStatic/dbStaticLib.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dbStatic/dbExpand.c b/src/dbStatic/dbExpand.c index 8071c1d7f..5fac686d3 100644 --- a/src/dbStatic/dbExpand.c +++ b/src/dbStatic/dbExpand.c @@ -23,8 +23,6 @@ #include "gpHash.h" #include "osiFileName.h" -epicsShareExtern int dbBptNotMonotonic; /* from dbLexRoutines.c */ - DBBASE *pdbbase = NULL; void usage(void) diff --git a/src/dbStatic/dbStaticLib.h b/src/dbStatic/dbStaticLib.h index 5804cb99c..a6347252b 100644 --- a/src/dbStatic/dbStaticLib.h +++ b/src/dbStatic/dbStaticLib.h @@ -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, From b791a3692b7dcc4c58ed21e84d08a611007df7b1 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 28 Nov 2011 15:54:49 -0600 Subject: [PATCH 04/17] libCom: Clean up win32 build warning Delete CFLAG added for the Borland compiler (no longer supported). --- src/libCom/Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libCom/Makefile b/src/libCom/Makefile index 7f0168fb0..e14808371 100644 --- a/src/libCom/Makefile +++ b/src/libCom/Makefile @@ -222,8 +222,6 @@ SRCS += epicsTempFile.cpp SRCS += epicsStdio.c SRCS += osdStdio.c -osdEnv_CFLAGS_WIN32= -U__STDC__ - SRCS += osdThread.c SRCS += osdMutex.c SRCS += osdEvent.c From db0c9d7d82068532e241a76f580df86996b7b7a2 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 28 Nov 2011 16:35:43 -0600 Subject: [PATCH 05/17] Creating 3.14.12.2-rc1 Set version number, update release notes. --- configure/CONFIG_BASE_VERSION | 4 ++-- documentation/RELEASE_NOTES.html | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index 3061fd41b..3bfcbe00e 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -35,10 +35,10 @@ EPICS_PATCH_LEVEL = 2 # This will end in -DEV between official releases #EPICS_DEV_SNAPSHOT=-DEV #EPICS_DEV_SNAPSHOT=-pre1 -EPICS_DEV_SNAPSHOT=-pre1-DEV +#PICS_DEV_SNAPSHOT=-pre1-DEV #EPICS_DEV_SNAPSHOT=-pre2 #EPICS_DEV_SNAPSHOT=-pre2-DEV -#EPICS_DEV_SNAPSHOT=-rc1 +EPICS_DEV_SNAPSHOT=-rc1 #EPICS_DEV_SNAPSHOT=-rc1-DEV #EPICS_DEV_SNAPSHOT=-rc2 #EPICS_DEV_SNAPSHOT=-rc2-DEV diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index 8e019989d..c2d0494b5 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -3,13 +3,13 @@ - EPICS Base R3.14.12.2-pre1 Release Notes + EPICS Base R3.14.12.2-rc1 Release Notes -

EPICS Base Release 3.14.12.2-pre1

+

EPICS Base Release 3.14.12.2-rc1

-

Changes between 3.14.12.1 and 3.14.12.2-pre1

+

Changes between 3.14.12.1 and 3.14.12.2-rc1

From 54401d5426749f816b36d35c453f4996be8090f8 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 28 Nov 2011 16:37:47 -0600 Subject: [PATCH 06/17] Set snapshot to 3.14.12.2-rc1-DEV --- configure/CONFIG_BASE_VERSION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index 3bfcbe00e..7b0e68c34 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -38,8 +38,8 @@ EPICS_PATCH_LEVEL = 2 #PICS_DEV_SNAPSHOT=-pre1-DEV #EPICS_DEV_SNAPSHOT=-pre2 #EPICS_DEV_SNAPSHOT=-pre2-DEV -EPICS_DEV_SNAPSHOT=-rc1 -#EPICS_DEV_SNAPSHOT=-rc1-DEV +#EPICS_DEV_SNAPSHOT=-rc1 +EPICS_DEV_SNAPSHOT=-rc1-DEV #EPICS_DEV_SNAPSHOT=-rc2 #EPICS_DEV_SNAPSHOT=-rc2-DEV #EPICS_DEV_SNAPSHOT= From 2010e58c617da79b3f4fc98009cf1c06fe214ba0 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Tue, 29 Nov 2011 14:07:29 -0600 Subject: [PATCH 07/17] libCom/win32: Conditionally define MINLONGLONG Some version of Visual Studio define MAXLONGLONG but not MINLONGLONG, so they need separate checks. --- src/libCom/osi/os/WIN32/osdTime.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libCom/osi/os/WIN32/osdTime.cpp b/src/libCom/osi/os/WIN32/osdTime.cpp index d69c4f157..fc35c7789 100644 --- a/src/libCom/osi/os/WIN32/osdTime.cpp +++ b/src/libCom/osi/os/WIN32/osdTime.cpp @@ -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 From 3b268475d30555327d5382359abc5226dd5206ef Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Tue, 29 Nov 2011 16:14:19 -0600 Subject: [PATCH 08/17] Fix some warnings reported by Clang. --- src/dbStatic/dbStaticLib.c | 4 ++-- src/gdd/gdd.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dbStatic/dbStaticLib.c b/src/dbStatic/dbStaticLib.c index cf2ee47f6..18bad3d59 100644 --- a/src/dbStatic/dbStaticLib.c +++ b/src/dbStatic/dbStaticLib.c @@ -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) { diff --git a/src/gdd/gdd.cc b/src/gdd/gdd.cc index f2ef3cf9a..ea8e1ba5b 100644 --- a/src/gdd/gdd.cc +++ b/src/gdd/gdd.cc @@ -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 ) ); From df6f042b5a44e192c9fb6ba74deef4f9d2d2e1c9 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 2 Dec 2011 10:42:43 -0600 Subject: [PATCH 09/17] configure: Update Apple iOS builds * Default IOS_VERSION to 5.0 * Allow ARMv6 and ARMv7 universal binaries by setting ARCH_CLASS * Switch from g++ to clang++ --- configure/os/CONFIG.Common.ios-arm | 8 +++---- configure/os/CONFIG.Common.ios-x86 | 3 +++ configure/os/CONFIG.Common.iosCommon | 25 ++++++++++++++++---- configure/os/CONFIG_SITE.Common.ios-arm | 28 +++++++++++++++++++++++ configure/os/CONFIG_SITE.Common.iosCommon | 3 ++- documentation/RELEASE_NOTES.html | 24 +++++++++++++++++++ 6 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 configure/os/CONFIG_SITE.Common.ios-arm diff --git a/configure/os/CONFIG.Common.ios-arm b/configure/os/CONFIG.Common.ios-arm index b6f1a57b8..26296a38c 100644 --- a/configure/os/CONFIG.Common.ios-arm +++ b/configure/os/CONFIG.Common.ios-arm @@ -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..ios-arm #------------------------------------------------------- IOS_PLATFORM = iPhoneOS -# -# Architecture-specific information -# -ARCH_CLASS = armv6 - OP_SYS_CFLAGS += -fno-inline-functions # iOS optimization flags for arm architecture diff --git a/configure/os/CONFIG.Common.ios-x86 b/configure/os/CONFIG.Common.ios-x86 index c236e606c..064319d2b 100644 --- a/configure/os/CONFIG.Common.ios-x86 +++ b/configure/os/CONFIG.Common.ios-x86 @@ -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..ios-x86 #------------------------------------------------------- IOS_PLATFORM = iPhoneSimulator diff --git a/configure/os/CONFIG.Common.iosCommon b/configure/os/CONFIG.Common.iosCommon index 3dd6f126c..40f80cb86 100644 --- a/configure/os/CONFIG.Common.iosCommon +++ b/configure/os/CONFIG.Common.iosCommon @@ -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..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 diff --git a/configure/os/CONFIG_SITE.Common.ios-arm b/configure/os/CONFIG_SITE.Common.ios-arm new file mode 100644 index 000000000..43874fe41 --- /dev/null +++ b/configure/os/CONFIG_SITE.Common.ios-arm @@ -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 diff --git a/configure/os/CONFIG_SITE.Common.iosCommon b/configure/os/CONFIG_SITE.Common.iosCommon index 0f5c09df3..121857c27 100644 --- a/configure/os/CONFIG_SITE.Common.iosCommon +++ b/configure/os/CONFIG_SITE.Common.iosCommon @@ -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 diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index c2d0494b5..e7b6cb31b 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -13,6 +13,30 @@ +

Build configurations updated for Apple iOS targets

+ +

The build process can now construct universal binaries containing both ARMv6 +and ARMv7 code, and several defaults have been changed when building for iOS +targets:

+ +
    + +
  • The default value for IOS_VERSION is now 5.0, edit the setting in +configure/os/CONFIG_SITE.Common.iosCommon to use an older version.
  • + +
  • With the introduction of iOS 5.0 we have switched the C++ compiler for +ios-arm from GNU g++ to using the LLVM-based clang++ (the GNU compilers are +apparetnly no longer included with the SDK). This can be switched back by +editing the new CONFIG_SITE.Common.ios-arm file.
  • + +
  • Like the Darwin builds, universal binaries can now be compiled for the +ios-arm target, containing either or both ARMv6 and ARMv7 instructions. This is +configured by setting ARCH_CLASS in the new CONFIG_SITE.Common.ios-arm +file. The default is now to build for ARMv7 only, which is not compatible with +the original iPhone 1 or 3G, or with the iPod Touch Generations 1 or 2.
  • + +
+

Added -b option to dbExpand

This turns off monotonic checking of breakpoint tables.

From 3fc6a77fb0b20b2640830acfa41d174d44fcb67b Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 2 Dec 2011 11:07:04 -0600 Subject: [PATCH 10/17] libCom/posix: Define finite() for uClibc The finite() function is provided in glibc but not in uClibc. C99 requires isfinite() to be a macro, so we can test for it and define our own finite() macro in osi/os/posix/epicsMath.h --- src/libCom/osi/os/posix/epicsMath.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libCom/osi/os/posix/epicsMath.h b/src/libCom/osi/os/posix/epicsMath.h index b09c7024b..4ed0fdc51 100644 --- a/src/libCom/osi/os/posix/epicsMath.h +++ b/src/libCom/osi/os/posix/epicsMath.h @@ -17,6 +17,11 @@ extern "C" { #endif +#ifdef isfinite +# undef finite +# define finite(x) isfinite(x) +#endif + epicsShareExtern float epicsNAN; epicsShareExtern float epicsINF; From 52ee9916e6fe5e892cf88d7d1809188eef85ab06 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 2 Dec 2011 14:10:24 -0600 Subject: [PATCH 11/17] configure: Print a warning when CHECK_RELEASE = NO --- configure/CONFIG_COMMON | 2 +- configure/RULES_BUILD | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/configure/CONFIG_COMMON b/configure/CONFIG_COMMON index 4527e997a..af28c3142 100644 --- a/configure/CONFIG_COMMON +++ b/configure/CONFIG_COMMON @@ -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 #------------------------------------------------------- diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD index f2f1b164a..0d6de95ff 100644 --- a/configure/RULES_BUILD +++ b/configure/RULES_BUILD @@ -167,6 +167,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 @@ -458,7 +462,7 @@ $(INSTALL_TEMPLATES_SUBDIR)/%: % .PRECIOUS: $(COMMON_INC) .PHONY: all inc build install clean rebuild buildInstall -.PHONY: runtests checkRelease warnRelease +.PHONY: runtests checkRelease warnRelease noCheckRelease endif # BASE_RULES_BUILD # EOF RULES_BUILD From 8cb8ad081b52bbb3d26df4d62a0dc39db5f96e04 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 5 Dec 2011 12:43:26 -0600 Subject: [PATCH 12/17] softIoc: Strip single-quote chars from arg Most shells strip the single-quote chars from arguments, but on win32-x86 this is not happening so we need to do it ourselves. The single quotes are important to prevent un-escaping of things that shouldn't be unescaped. --- src/softIoc/makeInstallDir.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/softIoc/makeInstallDir.pl b/src/softIoc/makeInstallDir.pl index c9d6d2a75..96c305711 100644 --- a/src/softIoc/makeInstallDir.pl +++ b/src/softIoc/makeInstallDir.pl @@ -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", From e289af684f202e7a90a651305fb417ba0d46d21c Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 7 Dec 2011 13:56:04 -0600 Subject: [PATCH 13/17] configure/linux: Move -g option to OPT_CFLAGS_YES We were adding it to OP_SYS_CFLAGS but if HOST_OPT=NO you then get two -g options on the gcc command line. --- configure/os/CONFIG_SITE.Common.linux-x86 | 6 +++++- configure/os/CONFIG_SITE.Common.linux-x86_64 | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/configure/os/CONFIG_SITE.Common.linux-x86 b/configure/os/CONFIG_SITE.Common.linux-x86 index 19a5794c9..1be38cb78 100644 --- a/configure/os/CONFIG_SITE.Common.linux-x86 +++ b/configure/os/CONFIG_SITE.Common.linux-x86 @@ -33,4 +33,8 @@ COMMANDLINE_LIBRARY = READLINE #COMMANDLINE_LIBRARY = READLINE_CURSES -OP_SYS_CFLAGS += -g +# 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 diff --git a/configure/os/CONFIG_SITE.Common.linux-x86_64 b/configure/os/CONFIG_SITE.Common.linux-x86_64 index 9d3bbd132..e48241ab0 100644 --- a/configure/os/CONFIG_SITE.Common.linux-x86_64 +++ b/configure/os/CONFIG_SITE.Common.linux-x86_64 @@ -33,4 +33,8 @@ COMMANDLINE_LIBRARY = READLINE #COMMANDLINE_LIBRARY = READLINE_CURSES -OP_SYS_CFLAGS += -g +# 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 From 4a5b8a37dfb26f0e59e999b4b7c4326cc6ac8d44 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 10 Dec 2011 23:11:33 -0600 Subject: [PATCH 14/17] cap5: Load libCap5.so from lib/perl// This allows the same version of Base to be used from both RHEL5 and RHEL6 for example; they use different Perl versions which are not compatible at the ABI level. --- documentation/RELEASE_NOTES.html | 16 ++++++++++++++++ src/cap5/CA.pm | 10 ++++++---- src/cap5/Makefile | 18 +++++++++++++----- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index e7b6cb31b..ff8efd4f0 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -13,6 +13,22 @@ +

Path for Cap5 loadable library changed

+ +

The perl CA module makes use of a loadable library, which used to be loaded +from the base/lib/<host-arch> directory. However different versions of +Perl require different loadable library binaries as the Perl ABI can change. +Now the library will be installed into and loaded from the directory +base/lib/perl/<version>/<archname> where both <version> and +<archname> are taken from the Perl configuration. This makes it possible +for the same Perl script to be run on both RHEL5 and RHEL6 workstations say, even +though they use different versions of Perl.

+ +

To achieve that, first build EPICS Base using the older OS version. Then +on a machine running the newer version, go into the base/src/cap5 directory and +run a make rebuild command. This will rebuild the libCap5.so file and +install it into the location appropriate for its Perl version and architecture.

+

Build configurations updated for Apple iOS targets

The build process can now construct universal binaries containing both ARMv6 diff --git a/src/cap5/CA.pm b/src/cap5/CA.pm index 3aa7c7f51..ac6542e01 100644 --- a/src/cap5/CA.pm +++ b/src/cap5/CA.pm @@ -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/ 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; diff --git a/src/cap5/Makefile b/src/cap5/Makefile index e408a1cde..4707c1621 100644 --- a/src/cap5/Makefile +++ b/src/cap5/Makefile @@ -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 @@ -59,6 +63,10 @@ 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) + clean:: $(RM) Cap5.c endif From 36be34656ef4d6b4ef200de6349aec85e662b762 Mon Sep 17 00:00:00 2001 From: Janet Anderson Date: Mon, 12 Dec 2011 14:08:00 -0600 Subject: [PATCH 15/17] Creating 3.14.12.2 --- documentation/RELEASE_NOTES.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index ff8efd4f0..8bf2162d0 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -3,13 +3,13 @@ - EPICS Base R3.14.12.2-rc1 Release Notes + EPICS Base R3.14.12.2 Release Notes -

EPICS Base Release 3.14.12.2-rc1

+

EPICS Base Release 3.14.12.2

-

Changes between 3.14.12.1 and 3.14.12.2-rc1

+

Changes between 3.14.12.1 and 3.14.12.2

From 5b0693f53d23f9e1f25e0e5130f3d8a77db4dcfc Mon Sep 17 00:00:00 2001 From: Janet Anderson Date: Mon, 12 Dec 2011 14:09:32 -0600 Subject: [PATCH 16/17] R3.14.12.2 --- configure/CONFIG_BASE_VERSION | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index 7b0e68c34..a4a1032ea 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -35,14 +35,14 @@ EPICS_PATCH_LEVEL = 2 # This will end in -DEV between official releases #EPICS_DEV_SNAPSHOT=-DEV #EPICS_DEV_SNAPSHOT=-pre1 -#PICS_DEV_SNAPSHOT=-pre1-DEV +#EPICS_DEV_SNAPSHOT=-pre1-DEV #EPICS_DEV_SNAPSHOT=-pre2 #EPICS_DEV_SNAPSHOT=-pre2-DEV #EPICS_DEV_SNAPSHOT=-rc1 -EPICS_DEV_SNAPSHOT=-rc1-DEV +#EPICS_DEV_SNAPSHOT=-rc1-DEV #EPICS_DEV_SNAPSHOT=-rc2 #EPICS_DEV_SNAPSHOT=-rc2-DEV -#EPICS_DEV_SNAPSHOT= +EPICS_DEV_SNAPSHOT= # No changes should be needed below here From 0c67efd50a8d621e5573c86743dbc96b510fc707 Mon Sep 17 00:00:00 2001 From: Janet Anderson Date: Mon, 12 Dec 2011 14:37:04 -0600 Subject: [PATCH 17/17] R3.14.12.2-DEV --- configure/CONFIG_BASE_VERSION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index a4a1032ea..27d24505e 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -33,7 +33,7 @@ EPICS_MODIFICATION = 12 EPICS_PATCH_LEVEL = 2 # This will end in -DEV between official releases -#EPICS_DEV_SNAPSHOT=-DEV +EPICS_DEV_SNAPSHOT=-DEV #EPICS_DEV_SNAPSHOT=-pre1 #EPICS_DEV_SNAPSHOT=-pre1-DEV #EPICS_DEV_SNAPSHOT=-pre2 @@ -42,7 +42,7 @@ EPICS_PATCH_LEVEL = 2 #EPICS_DEV_SNAPSHOT=-rc1-DEV #EPICS_DEV_SNAPSHOT=-rc2 #EPICS_DEV_SNAPSHOT=-rc2-DEV -EPICS_DEV_SNAPSHOT= +#EPICS_DEV_SNAPSHOT= # No changes should be needed below here