Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
51e4a0749d | |||
4cdace3ffe | |||
d19b16d096 | |||
b1e0d63c6b | |||
d1b43b879c | |||
6b0ee5e946 | |||
a0d1b35862 | |||
dfbd308d46 |
@ -1,14 +1,29 @@
|
||||
#CONFIG
|
||||
include $(TOP)/configure/CONFIG_APP
|
||||
# Add any changes to make definitions here
|
||||
# CONFIG - Load build configuration data
|
||||
#
|
||||
# Do not make changes to this file!
|
||||
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
|
||||
#CROSS_COMPILER_TARGET_ARCHS =
|
||||
# Allow user to override where the build rules come from
|
||||
RULES = $(EPICS_BASE)
|
||||
|
||||
# Use this when your IOC and the host use different paths
|
||||
# to access the application. Typically this will be
|
||||
# used with the Microsoft FTP server or with NFS mounts. Use
|
||||
# is indicated by failure of the cdCommands script on
|
||||
# vxWorks. You must rebuild in the iocBoot directory
|
||||
# before this takes effect.
|
||||
#IOCS_APPL_TOP = <the top of the application as seen by the IOC>
|
||||
# RELEASE files point to other application tops
|
||||
include $(TOP)/configure/RELEASE
|
||||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH)
|
||||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
|
||||
ifdef T_A
|
||||
-include $(TOP)/configure/RELEASE.Common.$(T_A)
|
||||
-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=..
|
||||
|
||||
include $(TOP)/configure/CONFIG_APP
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
# Set the following to NO to disable consistency checking of
|
||||
# the support applications defined in $(TOP)/configure/RELEASE
|
||||
|
@ -45,14 +45,20 @@
|
||||
#endif
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined(vxWorks) || defined(_WIN32) || defined(__rtems__)
|
||||
// These systems have no strncasecmp
|
||||
static int strncasecmp(const char *s1, const char *s2, size_t n)
|
||||
#ifdef _MSC_VER
|
||||
#define strncasecmp _strnicmp
|
||||
#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;
|
||||
while (n && (r = toupper(*s1)-toupper(*s2)) == 0) { n--; s1++; s2++; };
|
||||
return r;
|
||||
}
|
||||
#define strncasecmp mystrncasecmp
|
||||
#endif
|
||||
|
||||
#include "StreamFormatConverter.h"
|
||||
|
39
src/Makefile
39
src/Makefile
@ -27,12 +27,12 @@ include $(TOP)/configure/CONFIG
|
||||
-include CONFIG_STREAM
|
||||
-include ../CONFIG_STREAM
|
||||
|
||||
LIBRARY_DEFAULT = stream
|
||||
LIBRARY_IOC = stream
|
||||
|
||||
DBD += $(LIBRARY_DEFAULT).dbd
|
||||
DBD += $(LIBRARY_DEFAULT)-base.dbd
|
||||
ifdef CALC
|
||||
DBD += $(LIBRARY_DEFAULT)-scalcout.dbd
|
||||
DBD += stream.dbd
|
||||
DBD += stream-base.dbd
|
||||
ifneq ($(words $(CALC) $(SYNAPPS)), 0)
|
||||
DBD += stream-scalcout.dbd
|
||||
endif
|
||||
|
||||
ifdef ASYN
|
||||
@ -42,7 +42,7 @@ $(warning Asyn not included! Didn't you set ASYN in your RELEASE file?)
|
||||
endif
|
||||
|
||||
ifeq ($(LOADABLE_MODULE),YES)
|
||||
SRCS += $(LIBRARY_DEFAULT)_registerRecordDeviceDriver.cpp
|
||||
SRCS += stream_registerRecordDeviceDriver.cpp
|
||||
endif
|
||||
SRCS += $(BUSSES:%=%Interface.cc)
|
||||
SRCS += $(FORMATS:%=%Converter.cc)
|
||||
@ -60,6 +60,9 @@ ifneq ($(words $(PCRE_LIB) $(PCRE_INCLUDE)),0)
|
||||
LIB_SYS_LIBS_DEFAULT += pcre
|
||||
LIB_SYS_LIBS_WIN32 += $(PCRE_LIB)\\pcre
|
||||
SHRLIB_DEPLIB_DIRS += $(PCRE_LIB)
|
||||
ifdef ENABLE_STATIC
|
||||
CPPFLAGS += -DPCRE_STATIC
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -98,28 +101,28 @@ streamReferences: ../CONFIG_STREAM
|
||||
$(PERL) ../makeref.pl Converter $(FORMATS) >> $@
|
||||
|
||||
# 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)) > $@
|
||||
|
||||
$(LIBRARY_DEFAULT)-base.dbd$(DEP): ../CONFIG_STREAM
|
||||
echo $(LIBRARY_DEFAULT)-base.dbd: $< > $@
|
||||
stream-base.dbd$(DEP): ../CONFIG_STREAM
|
||||
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
|
||||
$(COMMON_DIR)/$(LIBRARY_DEFAULT)-scalcout.dbd: ../CONFIG_STREAM
|
||||
$(COMMON_DIR)/stream-scalcout.dbd: ../CONFIG_STREAM
|
||||
$(PERL) ../makedbd.pl --rec-only scalcout > $@
|
||||
|
||||
$(LIBRARY_DEFAULT)-scalcout.dbd$(DEP): ../CONFIG_STREAM
|
||||
echo $(LIBRARY_DEFAULT)-scalcout.dbd: $< > $@
|
||||
stream-scalcout.dbd$(DEP): ../CONFIG_STREAM
|
||||
echo stream-scalcout.dbd: $< > $@
|
||||
|
||||
STREAM_DBD_FILES += $(LIBRARY_DEFAULT)-scalcout.dbd
|
||||
STREAM_DBD_FILES += stream-scalcout.dbd
|
||||
endif
|
||||
|
||||
# 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) > $@
|
||||
|
||||
$(LIBRARY_DEFAULT).dbd$(DEP): ../CONFIG_STREAM
|
||||
echo $(LIBRARY_DEFAULT).dbd: $< > $@
|
||||
stream.dbd$(DEP): ../CONFIG_STREAM
|
||||
echo stream.dbd: $< > $@
|
||||
|
@ -435,6 +435,14 @@ long streamReportRecord(const char* recordname)
|
||||
return OK;
|
||||
}
|
||||
|
||||
#if defined(_WIN32) && !defined(_WIN64)
|
||||
static const char* epicsThreadGetNameSelfWrapper(void)
|
||||
{
|
||||
return epicsThreadGetNameSelf();
|
||||
}
|
||||
#define epicsThreadGetNameSelf epicsThreadGetNameSelfWrapper
|
||||
#endif
|
||||
|
||||
long Stream::
|
||||
drvInit()
|
||||
{
|
||||
|
@ -43,7 +43,7 @@ static long readData(dbCommon *record, format_t *format)
|
||||
strncmp(so->oval, so->val, sizeof(so->val)))
|
||||
{
|
||||
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)
|
||||
db_post_events(record, so->val, monitor_mask);
|
||||
|
@ -78,6 +78,13 @@ endif
|
||||
|
||||
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+
|
||||
CPPFLAGS += -DUSE_TYPED_RSET
|
||||
|
||||
|
Reference in New Issue
Block a user