Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
51e4a0749d | |||
4cdace3ffe | |||
d19b16d096 | |||
b1e0d63c6b | |||
d1b43b879c | |||
6b0ee5e946 | |||
a0d1b35862 | |||
dfbd308d46 |
@ -1,14 +1,29 @@
|
|||||||
#CONFIG
|
# CONFIG - Load build configuration data
|
||||||
include $(TOP)/configure/CONFIG_APP
|
#
|
||||||
# Add any changes to make definitions here
|
# Do not make changes to this file!
|
||||||
|
|
||||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
|
# Allow user to override where the build rules come from
|
||||||
#CROSS_COMPILER_TARGET_ARCHS =
|
RULES = $(EPICS_BASE)
|
||||||
|
|
||||||
# Use this when your IOC and the host use different paths
|
# RELEASE files point to other application tops
|
||||||
# to access the application. Typically this will be
|
include $(TOP)/configure/RELEASE
|
||||||
# used with the Microsoft FTP server or with NFS mounts. Use
|
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH)
|
||||||
# is indicated by failure of the cdCommands script on
|
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
|
||||||
# vxWorks. You must rebuild in the iocBoot directory
|
ifdef T_A
|
||||||
# before this takes effect.
|
-include $(TOP)/configure/RELEASE.Common.$(T_A)
|
||||||
#IOCS_APPL_TOP = <the top of the application as seen by the IOC>
|
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFIG = $(RULES)/configure
|
||||||
|
include $(CONFIG)/CONFIG
|
||||||
|
|
||||||
|
# Override the Base definition:
|
||||||
|
INSTALL_LOCATION = $(TOP)
|
||||||
|
|
||||||
|
# CONFIG_SITE files contain other build configuration settings
|
||||||
|
include $(TOP)/configure/CONFIG_SITE
|
||||||
|
-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
|
||||||
|
ifdef T_A
|
||||||
|
-include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
|
||||||
|
-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
|
||||||
|
endif
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
# CONFIG_APP
|
|
||||||
|
|
||||||
include $(TOP)/configure/RELEASE
|
|
||||||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH)
|
|
||||||
-include $(TOP)/configure/RELEASE.Common.$(T_A)
|
|
||||||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
|
|
||||||
|
|
||||||
ifneq ($(wildcard $(EPICS_BASE)/configure),)
|
|
||||||
CONFIG=$(EPICS_BASE)/configure
|
|
||||||
else
|
|
||||||
CONFIG=$(EPICS_BASE)/config
|
|
||||||
DIRS += config
|
|
||||||
endif
|
|
||||||
include $(CONFIG)/CONFIG
|
|
||||||
|
|
||||||
INSTALL_LOCATION = $(TOP)
|
|
||||||
ifdef INSTALL_LOCATION_APP
|
|
||||||
INSTALL_LOCATION = $(INSTALL_LOCATION_APP)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef T_A
|
|
||||||
-include $(TOP)/configure/O.$(T_A)/CONFIG_APP_INCLUDE
|
|
||||||
endif
|
|
||||||
|
|
||||||
# dbst based database optimization (default: NO)
|
|
||||||
DB_OPT = NO
|
|
40
configure/CONFIG_SITE
Normal file
40
configure/CONFIG_SITE
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# CONFIG_SITE
|
||||||
|
|
||||||
|
-include $(SUPPORT)/configure/CONFIG_SITE
|
||||||
|
|
||||||
|
# Make any application-specific changes to the EPICS build
|
||||||
|
# configuration variables in this file.
|
||||||
|
#
|
||||||
|
# Host/target specific settings can be specified in files named
|
||||||
|
# CONFIG_SITE.$(EPICS_HOST_ARCH).Common
|
||||||
|
# CONFIG_SITE.Common.$(T_A)
|
||||||
|
# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
|
||||||
|
|
||||||
|
# CHECK_RELEASE controls the consistency checking of the support
|
||||||
|
# applications pointed to by the RELEASE* files.
|
||||||
|
# Normally CHECK_RELEASE should be set to YES.
|
||||||
|
# Set CHECK_RELEASE to NO to disable checking completely.
|
||||||
|
# Set CHECK_RELEASE to WARN to perform consistency checking but
|
||||||
|
# continue building even if conflicts are found.
|
||||||
|
CHECK_RELEASE = YES
|
||||||
|
|
||||||
|
# Set this when you only want to compile this application
|
||||||
|
# for a subset of the cross-compiled target architectures
|
||||||
|
# that Base is built for.
|
||||||
|
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
|
||||||
|
|
||||||
|
# To install files into a location other than $(TOP) define
|
||||||
|
# INSTALL_LOCATION here.
|
||||||
|
#INSTALL_LOCATION=</absolute/path/to/install/top>
|
||||||
|
|
||||||
|
# Set this when the IOC and build host use different paths
|
||||||
|
# to the install location. This may be needed to boot from
|
||||||
|
# a Microsoft FTP server say, or on some NFS configurations.
|
||||||
|
#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
|
||||||
|
|
||||||
|
# These allow developers to override the CONFIG_SITE variable
|
||||||
|
# settings without having to modify the configure/CONFIG_SITE
|
||||||
|
# file itself.
|
||||||
|
-include $(TOP)/../CONFIG_SITE.local
|
||||||
|
-include $(TOP)/../configure/CONFIG_SITE.local
|
||||||
|
-include $(TOP)/configure/CONFIG_SITE.local
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
TOP=..
|
TOP=..
|
||||||
|
|
||||||
include $(TOP)/configure/CONFIG_APP
|
include $(TOP)/configure/CONFIG
|
||||||
|
|
||||||
# Set the following to NO to disable consistency checking of
|
# Set the following to NO to disable consistency checking of
|
||||||
# the support applications defined in $(TOP)/configure/RELEASE
|
# the support applications defined in $(TOP)/configure/RELEASE
|
||||||
|
@ -45,14 +45,20 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#if defined(vxWorks) || defined(_WIN32) || defined(__rtems__)
|
#ifdef _MSC_VER
|
||||||
// These systems have no strncasecmp
|
#define strncasecmp _strnicmp
|
||||||
static int strncasecmp(const char *s1, const char *s2, size_t n)
|
#endif
|
||||||
|
|
||||||
|
#if defined(vxWorks) || defined(__rtems__)
|
||||||
|
// These systems have no strncasecmp at the moment
|
||||||
|
// But avoid compiler errors in case strncasecmp exists in future versions
|
||||||
|
static int mystrncasecmp(const char *s1, const char *s2, size_t n)
|
||||||
{
|
{
|
||||||
int r=0;
|
int r=0;
|
||||||
while (n && (r = toupper(*s1)-toupper(*s2)) == 0) { n--; s1++; s2++; };
|
while (n && (r = toupper(*s1)-toupper(*s2)) == 0) { n--; s1++; s2++; };
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
#define strncasecmp mystrncasecmp
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "StreamFormatConverter.h"
|
#include "StreamFormatConverter.h"
|
||||||
|
39
src/Makefile
39
src/Makefile
@ -27,12 +27,12 @@ include $(TOP)/configure/CONFIG
|
|||||||
-include CONFIG_STREAM
|
-include CONFIG_STREAM
|
||||||
-include ../CONFIG_STREAM
|
-include ../CONFIG_STREAM
|
||||||
|
|
||||||
LIBRARY_DEFAULT = stream
|
LIBRARY_IOC = stream
|
||||||
|
|
||||||
DBD += $(LIBRARY_DEFAULT).dbd
|
DBD += stream.dbd
|
||||||
DBD += $(LIBRARY_DEFAULT)-base.dbd
|
DBD += stream-base.dbd
|
||||||
ifdef CALC
|
ifneq ($(words $(CALC) $(SYNAPPS)), 0)
|
||||||
DBD += $(LIBRARY_DEFAULT)-scalcout.dbd
|
DBD += stream-scalcout.dbd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef ASYN
|
ifdef ASYN
|
||||||
@ -42,7 +42,7 @@ $(warning Asyn not included! Didn't you set ASYN in your RELEASE file?)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(LOADABLE_MODULE),YES)
|
ifeq ($(LOADABLE_MODULE),YES)
|
||||||
SRCS += $(LIBRARY_DEFAULT)_registerRecordDeviceDriver.cpp
|
SRCS += stream_registerRecordDeviceDriver.cpp
|
||||||
endif
|
endif
|
||||||
SRCS += $(BUSSES:%=%Interface.cc)
|
SRCS += $(BUSSES:%=%Interface.cc)
|
||||||
SRCS += $(FORMATS:%=%Converter.cc)
|
SRCS += $(FORMATS:%=%Converter.cc)
|
||||||
@ -60,6 +60,9 @@ ifneq ($(words $(PCRE_LIB) $(PCRE_INCLUDE)),0)
|
|||||||
LIB_SYS_LIBS_DEFAULT += pcre
|
LIB_SYS_LIBS_DEFAULT += pcre
|
||||||
LIB_SYS_LIBS_WIN32 += $(PCRE_LIB)\\pcre
|
LIB_SYS_LIBS_WIN32 += $(PCRE_LIB)\\pcre
|
||||||
SHRLIB_DEPLIB_DIRS += $(PCRE_LIB)
|
SHRLIB_DEPLIB_DIRS += $(PCRE_LIB)
|
||||||
|
ifdef ENABLE_STATIC
|
||||||
|
CPPFLAGS += -DPCRE_STATIC
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -98,28 +101,28 @@ streamReferences: ../CONFIG_STREAM
|
|||||||
$(PERL) ../makeref.pl Converter $(FORMATS) >> $@
|
$(PERL) ../makeref.pl Converter $(FORMATS) >> $@
|
||||||
|
|
||||||
# create stream-base.dbd from all RECORDTYPES except scalcout record
|
# create stream-base.dbd from all RECORDTYPES except scalcout record
|
||||||
$(COMMON_DIR)/$(LIBRARY_DEFAULT)-base.dbd: ../CONFIG_STREAM
|
$(COMMON_DIR)/stream-base.dbd: ../CONFIG_STREAM
|
||||||
$(PERL) ../makedbd.pl $(if $(ASYN),--with-asyn) $(if $(BASE_3_14),,-3.13) $(filter-out scalcout, $(RECORDTYPES)) > $@
|
$(PERL) ../makedbd.pl $(if $(ASYN),--with-asyn) $(if $(BASE_3_14),,-3.13) $(filter-out scalcout, $(RECORDTYPES)) > $@
|
||||||
|
|
||||||
$(LIBRARY_DEFAULT)-base.dbd$(DEP): ../CONFIG_STREAM
|
stream-base.dbd$(DEP): ../CONFIG_STREAM
|
||||||
echo $(LIBRARY_DEFAULT)-base.dbd: $< > $@
|
echo stream-base.dbd: $< > $@
|
||||||
|
|
||||||
STREAM_DBD_FILES = $(LIBRARY_DEFAULT)-base.dbd
|
STREAM_DBD_FILES = stream-base.dbd
|
||||||
|
|
||||||
ifdef CALC
|
ifneq ($(words $(CALC) $(SYNAPPS)), 0)
|
||||||
# create stream-scalcout.dbd for scalcout record
|
# create stream-scalcout.dbd for scalcout record
|
||||||
$(COMMON_DIR)/$(LIBRARY_DEFAULT)-scalcout.dbd: ../CONFIG_STREAM
|
$(COMMON_DIR)/stream-scalcout.dbd: ../CONFIG_STREAM
|
||||||
$(PERL) ../makedbd.pl --rec-only scalcout > $@
|
$(PERL) ../makedbd.pl --rec-only scalcout > $@
|
||||||
|
|
||||||
$(LIBRARY_DEFAULT)-scalcout.dbd$(DEP): ../CONFIG_STREAM
|
stream-scalcout.dbd$(DEP): ../CONFIG_STREAM
|
||||||
echo $(LIBRARY_DEFAULT)-scalcout.dbd: $< > $@
|
echo stream-scalcout.dbd: $< > $@
|
||||||
|
|
||||||
STREAM_DBD_FILES += $(LIBRARY_DEFAULT)-scalcout.dbd
|
STREAM_DBD_FILES += stream-scalcout.dbd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# create stream.dbd for all record types
|
# create stream.dbd for all record types
|
||||||
$(COMMON_DIR)/$(LIBRARY_DEFAULT).dbd: ../CONFIG_STREAM
|
$(COMMON_DIR)/stream.dbd: ../CONFIG_STREAM
|
||||||
$(PERL) ../makedbd.pl $(if $(ASYN),--with-asyn) $(if $(BASE_3_14),,-3.13) $(RECORDTYPES) > $@
|
$(PERL) ../makedbd.pl $(if $(ASYN),--with-asyn) $(if $(BASE_3_14),,-3.13) $(RECORDTYPES) > $@
|
||||||
|
|
||||||
$(LIBRARY_DEFAULT).dbd$(DEP): ../CONFIG_STREAM
|
stream.dbd$(DEP): ../CONFIG_STREAM
|
||||||
echo $(LIBRARY_DEFAULT).dbd: $< > $@
|
echo stream.dbd: $< > $@
|
||||||
|
@ -435,6 +435,14 @@ long streamReportRecord(const char* recordname)
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(_WIN32) && !defined(_WIN64)
|
||||||
|
static const char* epicsThreadGetNameSelfWrapper(void)
|
||||||
|
{
|
||||||
|
return epicsThreadGetNameSelf();
|
||||||
|
}
|
||||||
|
#define epicsThreadGetNameSelf epicsThreadGetNameSelfWrapper
|
||||||
|
#endif
|
||||||
|
|
||||||
long Stream::
|
long Stream::
|
||||||
drvInit()
|
drvInit()
|
||||||
{
|
{
|
||||||
|
@ -43,7 +43,7 @@ static long readData(dbCommon *record, format_t *format)
|
|||||||
strncmp(so->oval, so->val, sizeof(so->val)))
|
strncmp(so->oval, so->val, sizeof(so->val)))
|
||||||
{
|
{
|
||||||
monitor_mask |= DBE_VALUE | DBE_LOG;
|
monitor_mask |= DBE_VALUE | DBE_LOG;
|
||||||
strncpy(so->oval, so->val, sizeof(so->val));
|
strncpy(so->oval, so->val, sizeof(so->oval));
|
||||||
}
|
}
|
||||||
if (monitor_mask)
|
if (monitor_mask)
|
||||||
db_post_events(record, so->val, monitor_mask);
|
db_post_events(record, so->val, monitor_mask);
|
||||||
|
@ -78,6 +78,13 @@ endif
|
|||||||
|
|
||||||
PROD_LIBS += $(EPICS_BASE_IOC_LIBS)
|
PROD_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||||
|
|
||||||
|
# Some linux systems moved RPC related symbols to libtirpc
|
||||||
|
# Define TIRPC in configure/CONFIG_SITE in this case
|
||||||
|
ifeq ($(TIRPC),YES)
|
||||||
|
USR_INCLUDES_Linux += -I/usr/include/tirpc
|
||||||
|
PROD_SYS_LIBS_DEFAULT += tirpc
|
||||||
|
endif
|
||||||
|
|
||||||
# switch off annoying rset warnings in 3.16+
|
# switch off annoying rset warnings in 3.16+
|
||||||
CPPFLAGS += -DUSE_TYPED_RSET
|
CPPFLAGS += -DUSE_TYPED_RSET
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user