Compare commits
234 Commits
R3.14.12-p
...
R3.14.12.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
910ab38af6 | ||
|
|
0e990bbe0c | ||
|
|
ef5688f8de | ||
|
|
d622bbad05 | ||
|
|
416cf68fd1 | ||
|
|
cbde3ea9fd | ||
|
|
6f9c2db8a8 | ||
|
|
01276d952f | ||
|
|
809633d698 | ||
|
|
1f573172b3 | ||
|
|
d6f72900f8 | ||
|
|
5b1d3a7725 | ||
|
|
7d79a83519 | ||
|
|
6fd9fb3066 | ||
|
|
28c7fe12f3 | ||
|
|
36be0aa783 | ||
|
|
69d8be78d3 | ||
|
|
fc61cc34ce | ||
|
|
e889336458 | ||
|
|
7cac267a4b | ||
|
|
71079ede4b | ||
|
|
26173c1e0d | ||
|
|
9c1b8ba952 | ||
|
|
c574722a9b | ||
|
|
4790578953 | ||
|
|
7e6e38060f | ||
|
|
709b6ef2f3 | ||
|
|
169b30081a | ||
|
|
a19e1d21da | ||
|
|
1ac8ff6378 | ||
|
|
5c2ef73c4a | ||
|
|
958aa02320 | ||
|
|
c93c7b5e36 | ||
|
|
b993e29fad | ||
|
|
e03d10857c | ||
|
|
bdbada28a8 | ||
|
|
20c9fa2e8a | ||
|
|
b1ac0c18c4 | ||
|
|
4133b666a0 | ||
|
|
dabd0a969b | ||
|
|
1864ac41fb | ||
|
|
1649ce6f79 | ||
|
|
93bc78d2ed | ||
|
|
32f556637d | ||
|
|
146520d035 | ||
|
|
ea8d19e727 | ||
|
|
39ca40fc33 | ||
|
|
b5e1b0117c | ||
|
|
c1cebc89bf | ||
|
|
4982a6308b | ||
|
|
243baddbf6 | ||
|
|
45348ad6ca | ||
|
|
dde8c61ad8 | ||
|
|
0a0302daad | ||
|
|
8ed86967d1 | ||
|
|
129710f149 | ||
|
|
bcd604e40b | ||
|
|
dffe203856 | ||
|
|
6f8f61db64 | ||
|
|
e48ca8a688 | ||
|
|
7435a9831b | ||
|
|
10e7bced84 | ||
|
|
df7fa22a15 | ||
|
|
140845fb14 | ||
|
|
3dec8f8c78 | ||
|
|
6f9f5498b4 | ||
|
|
f5bc02393e | ||
|
|
f86cf730e9 | ||
|
|
73768aae9a | ||
|
|
adfa1257f5 | ||
|
|
7cc8a552a3 | ||
|
|
afaebfbeb1 | ||
|
|
ee2a2dfffc | ||
|
|
2d6f8c585a | ||
|
|
c538fc8ccc | ||
|
|
c32997ffa1 | ||
|
|
d8f7c3731d | ||
|
|
0c67efd50a | ||
|
|
5b0693f53d | ||
|
|
36be34656e | ||
|
|
4a5b8a37df | ||
|
|
e289af684f | ||
|
|
8cb8ad081b | ||
|
|
52ee9916e6 | ||
|
|
3fc6a77fb0 | ||
|
|
df6f042b5a | ||
|
|
3b268475d3 | ||
|
|
2010e58c61 | ||
|
|
54401d5426 | ||
|
|
db0c9d7d82 | ||
|
|
b791a3692b | ||
|
|
0e41c03ff2 | ||
|
|
b5ec6e2448 | ||
|
|
d077c8b0ff | ||
|
|
b48979f5a5 | ||
|
|
967ce8eb84 | ||
|
|
b27e22d75e | ||
|
|
6ef52b5d03 | ||
|
|
652235ef13 | ||
|
|
5b46eebe1a | ||
|
|
a252218e69 | ||
|
|
fae5bbcf86 | ||
|
|
a0c1c0fb15 | ||
|
|
bb14c6594b | ||
|
|
0dfbd460e1 | ||
|
|
b36b07db9e | ||
|
|
ee95f0c4b7 | ||
|
|
d72b4a3c1e | ||
|
|
21b4acfa86 | ||
|
|
96cad82a2a | ||
|
|
d088d4b664 | ||
|
|
6cb9a3f7c1 | ||
|
|
6c4164d953 | ||
|
|
3a101aa697 | ||
|
|
46ea687c6d | ||
|
|
75aa05d30f | ||
|
|
3cfa011760 | ||
|
|
83e5247ed4 | ||
|
|
f203e9a48b | ||
|
|
14e7111e72 | ||
|
|
2b65025d93 | ||
|
|
2b4edba8f3 | ||
|
|
35b72b60fb | ||
|
|
d286a81ef0 | ||
|
|
bc4a7854ec | ||
|
|
f59825a462 | ||
|
|
7783f0044b | ||
|
|
1b9ca756cc | ||
|
|
f9f8d1150c | ||
|
|
e71785edf6 | ||
|
|
a367e4be95 | ||
|
|
a80bd1a630 | ||
|
|
515712c0e7 | ||
|
|
2fb7df8548 | ||
|
|
4448a5501a | ||
|
|
dafb7d5d4c | ||
|
|
5343b836b8 | ||
|
|
d0423738d1 | ||
|
|
3bf5b21f57 | ||
|
|
8d15407e2f | ||
|
|
7560fb1bb1 | ||
|
|
445b5e473b | ||
|
|
f18b435cf6 | ||
|
|
5649e15842 | ||
|
|
43f58c990a | ||
|
|
0dfc92f48d | ||
|
|
f1a646240b | ||
|
|
ce0114418f | ||
|
|
342920b1db | ||
|
|
ef0442b50d | ||
|
|
c71093f47f | ||
|
|
c11a31f549 | ||
|
|
ed0e3e60ed | ||
|
|
0373da87ed | ||
|
|
3c0cea0f38 | ||
|
|
4c7684aad1 | ||
|
|
6efd4be222 | ||
|
|
1584f98e26 | ||
|
|
f3f2f23fbc | ||
|
|
5aeb325185 | ||
|
|
2949f6650e | ||
|
|
b472473ef1 | ||
|
|
8418aa059a | ||
|
|
1106bab73e | ||
|
|
038ac0cd38 | ||
|
|
8dea585dc2 | ||
|
|
fc6df7652d | ||
|
|
db89c1f463 | ||
|
|
c6e1787ff9 | ||
|
|
0dab032751 | ||
|
|
4b780b1011 | ||
|
|
fc3e876d57 | ||
|
|
f4528ff5e1 | ||
|
|
d73f466dbc | ||
|
|
3d056f63e4 | ||
|
|
fd72cb63bf | ||
|
|
c698853394 | ||
|
|
22f1e8201f | ||
|
|
b38127450e | ||
|
|
fbcc7b4a0d | ||
|
|
5a11866431 | ||
|
|
253036c36c | ||
|
|
793639f4da | ||
|
|
a2c87268f5 | ||
|
|
a52b995ca2 | ||
|
|
2af392a099 | ||
|
|
6170dc9406 | ||
|
|
23daca46a1 | ||
|
|
f9ebe082ff | ||
|
|
dc76951945 | ||
|
|
253fd8109b | ||
|
|
fd4b34be8f | ||
|
|
23c7e64490 | ||
|
|
3ca705752a | ||
|
|
2069889347 | ||
|
|
04085d340b | ||
|
|
bc7e87b961 | ||
|
|
81d155c98b | ||
|
|
512e14e4b7 | ||
|
|
c503a03f37 | ||
|
|
fb493a064c | ||
|
|
e406440316 | ||
|
|
94a48d23d0 | ||
|
|
cf18208579 | ||
|
|
7cf01b091b | ||
|
|
e1c1dd45a6 | ||
|
|
8e40be47a0 | ||
|
|
9777c63e23 | ||
|
|
18594e1a34 | ||
|
|
99e7e7727a | ||
|
|
adb201a048 | ||
|
|
56ada25dd7 | ||
|
|
23bbe233f7 | ||
|
|
c48fe29e89 | ||
|
|
b5c185877d | ||
|
|
b82db48335 | ||
|
|
da8ae994e4 | ||
|
|
8d2cd8b96c | ||
|
|
91631919e5 | ||
|
|
181c4e126a | ||
|
|
32ebff1881 | ||
|
|
e65253f8b9 | ||
|
|
3398950f9d | ||
|
|
2477bf52e6 | ||
|
|
e7179fc289 | ||
|
|
f340b3e153 | ||
|
|
b4d7b6f851 | ||
|
|
36175b1368 | ||
|
|
e372a83096 | ||
|
|
3ad06eb0a3 | ||
|
|
93c39c86f7 | ||
|
|
46b912bc16 | ||
|
|
1e6464cdc4 | ||
|
|
c84c3d49ad |
9
LICENSE
9
LICENSE
@@ -1,11 +1,14 @@
|
||||
Copyright (c) 1991-2007 UChicago Argonne LLC and The Regents of the
|
||||
University of California. All rights reserved.
|
||||
Copyright (c) 1991-2011 UChicago Argonne LLC.
|
||||
Copyright (c) 1991-2006 The Regents of the University of California.
|
||||
Copyright (c) 2006-2011. Los Alamos National Security, LLC. Some of this
|
||||
material was produced under U.S. Government contract DE-AC52-06NA25396
|
||||
for Los Alamos National Laboratory (LANL), which is operated by Los Alamos
|
||||
National Security, LLC for the U.S. Department of Energy.
|
||||
|
||||
EPICS BASE is distributed subject to the following license conditions:
|
||||
|
||||
SOFTWARE LICENSE AGREEMENT
|
||||
Software: EPICS BASE
|
||||
Versions: 3.13.7 and higher
|
||||
|
||||
1. The "Software", below, refers to EPICS BASE (in either source code, or
|
||||
binary form and accompanying documentation). Each licensee is
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#*************************************************************************
|
||||
# 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.
|
||||
@@ -34,6 +34,7 @@
|
||||
# LIBSRCS source files for building libraries (deprecated)
|
||||
# PROD_OBJS object files for building prods
|
||||
# LIB_OBJS object files for building libraries
|
||||
# USR_OBJS object files for building libraries and prods
|
||||
# USR_LIBS libs needed by PROD and TESTPROD and LIBRARY
|
||||
# PROD_LIBS libs needed by PROD and TESTPROD
|
||||
# LIB_LIBS libs needed by shared LIBRARY
|
||||
|
||||
@@ -14,8 +14,8 @@ define RELEASE_FLAGS_template
|
||||
SHRLIB_SEARCH_DIRS += $$($(1)_LIB)
|
||||
RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/os/$$(OS_CLASS)))
|
||||
RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include))
|
||||
RELEASE_DBDFLAGS += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/dbd))
|
||||
RELEASE_DBFLAGS += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/db))
|
||||
RELEASE_DBD_DIRS += $$(wildcard $$(strip $$($(1)))/dbd)
|
||||
RELEASE_DB_DIRS += $$(wildcard $$(strip $$($(1)))/db)
|
||||
RELEASE_PERL_MODULE_DIRS += $$(wildcard $$($(1)_LIB)/perl)
|
||||
endef
|
||||
$(foreach top, $(RELEASE_TOPS), $(eval $(call RELEASE_FLAGS_template,$(top)) ))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#*************************************************************************
|
||||
# Copyright (c) 2010 UChicago Argonne LLC, as Operator of Argonne
|
||||
# Copyright (c) 2012 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.
|
||||
@@ -19,26 +19,26 @@
|
||||
|
||||
BASE_3_14=YES
|
||||
|
||||
# EPICS_VERSION must be a number >0 and <256
|
||||
# EPICS_VERSION must be a number >0 and <256
|
||||
EPICS_VERSION = 3
|
||||
|
||||
# EPICS_REVISION must be a number >=0 and <256
|
||||
# EPICS_REVISION must be a number >=0 and <256
|
||||
EPICS_REVISION = 14
|
||||
|
||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||
EPICS_MODIFICATION = 12
|
||||
|
||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||
# Not included if zero
|
||||
EPICS_PATCH_LEVEL = 0
|
||||
EPICS_PATCH_LEVEL = 3
|
||||
|
||||
# This will end in -DEV between official releases
|
||||
#EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre1
|
||||
#EPICS_DEV_SNAPSHOT=-pre1-DEV
|
||||
EPICS_DEV_SNAPSHOT=-pre2
|
||||
#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
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#*************************************************************************
|
||||
# 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.
|
||||
#*************************************************************************
|
||||
#
|
||||
@@ -48,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
|
||||
|
||||
#-------------------------------------------------------
|
||||
@@ -82,7 +81,8 @@ COMMON_DIR = ../O.Common
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Make echo output - suppress echoing if make's '-s' flag is set
|
||||
ECHO := $(if $(findstring s,$(MAKEFLAGS)),\#,@echo)
|
||||
NOP = :
|
||||
ECHO = @$(if $(findstring s,$(patsubst T_A=%,,$(MAKEFLAGS))),$(NOP),echo)
|
||||
|
||||
#-------------------------------------------------------
|
||||
ifdef T_A
|
||||
@@ -258,6 +258,7 @@ LOADABLE_SHRLIB_SUFFIX=$(SHRLIB_SUFFIX)
|
||||
COMMANDLINE_LIBRARY = EPICS
|
||||
OP_SYS_LDLIBS += $(LDLIBS_$(COMMANDLINE_LIBRARY))
|
||||
OP_SYS_LDFLAGS += $(LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Flags
|
||||
@@ -334,7 +335,7 @@ HDEPENDS_CFLAGS = $(HDEPENDS_CFLAGS_$(HDEPENDS))
|
||||
#--------------------------------------------------
|
||||
# depends definition
|
||||
|
||||
TARGET_SRCS = $(foreach name, $(TESTPROD) $(PROD) $(LIBRARY), $($(name)_SRCS))
|
||||
TARGET_SRCS = $(foreach name, $(TESTPROD) $(PROD) $(LIBRARY) $(LOADABLE_LIBRARY), $($(name)_SRCS))
|
||||
SRC_FILES = $(LIB_SRCS) $(LIBSRCS) $(SRCS) $(USR_SRCS) $(PROD_SRCS) $(TARGET_SRCS)
|
||||
HDEPENDS_FILES_YES = $(addsuffix $(DEP),$(notdir $(basename $(SRC_FILES))))
|
||||
HDEPENDS_FILES = $(if $(filter NO,$(HDEPENDS)),,$(HDEPENDS_FILES_YES))
|
||||
|
||||
@@ -72,18 +72,22 @@
|
||||
# linux-cris (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-cris_v10 (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-cris_v32 (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-microblaze
|
||||
# linux-xscale_be
|
||||
# vxWorks-486
|
||||
# vxWorks-68040
|
||||
# vxWorks-68040lc
|
||||
# vxWorks-68060
|
||||
# vxWorks-pentium
|
||||
# vxWorks-ppc32 (32-bit PowerPC CPUs with full FPU)
|
||||
# vxWorks-ppc32sf (32-bit PowerPC CPUs without FPU)
|
||||
# vxWorks-ppc603
|
||||
# vxWorks-ppc603_long
|
||||
# vxWorks-ppc604
|
||||
# vxWorks-ppc604_long
|
||||
# vxWorks-ppc604_altivec
|
||||
# vxWorks-mpc8540
|
||||
# vxWorks-mpc8548
|
||||
# RTEMS-at91rm9200ek
|
||||
# RTEMS-beatnik
|
||||
# RTEMS-gen68360
|
||||
@@ -103,7 +107,7 @@
|
||||
# override
|
||||
#
|
||||
CROSS_COMPILER_TARGET_ARCHS=
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-ppc32
|
||||
|
||||
# If only a subset of the host architectures perform
|
||||
# the build for the CROSS_COMPILER_TARGET_ARCHS
|
||||
@@ -116,9 +120,9 @@ CROSS_COMPILER_HOST_ARCHS=
|
||||
# NOTE: os/CONFIG.$(EPICS_HOST_ARCH).$(EPICS_HOST_ARCH) files and
|
||||
# os/CONFIG_SITE.$(EPICS_HOST_ARCH).$(EPICS_HOST_ARCH) files may override
|
||||
#
|
||||
# NOTE WIN32: YES results in a DLL. Valid settings are
|
||||
# SHARED_LIBRARIES=YES and STATIC_BUILD=NO
|
||||
# SHARED_LIBRARIES=NO and STATIC_BUILD=YES
|
||||
# NOTE Windows: YES results in a DLL. Valid settings are
|
||||
# SHARED_LIBRARIES=YES and STATIC_BUILD=NO
|
||||
# SHARED_LIBRARIES=NO and STATIC_BUILD=YES
|
||||
#
|
||||
SHARED_LIBRARIES=YES
|
||||
|
||||
@@ -180,7 +184,9 @@ EPICS_SITE_VERSION =
|
||||
# between the various stages of compilation.
|
||||
GCC_PIPE = NO
|
||||
|
||||
# Include RPATH when linking executables and libraries.
|
||||
# must be either YES or NO
|
||||
LINKER_USE_RPATH=YES
|
||||
# Set RPATH when linking executables and libraries.
|
||||
# Must be either YES or NO. If you set this to NO you must also provide a
|
||||
# way for Base executables to find their shared libraries when they are
|
||||
# run at build-time, e.g. set the LD_LIBRARY_PATH environment variable.
|
||||
LINKER_USE_RPATH = YES
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#*************************************************************************
|
||||
# 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.
|
||||
#*************************************************************************
|
||||
#RULES.Db
|
||||
@@ -22,11 +21,11 @@ vpath %.acs $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
|
||||
|
||||
##################################################### dbdflags
|
||||
|
||||
# dbExpand
|
||||
INSTALL_DBDFLAGS += -I $(INSTALL_LOCATION)/dbd
|
||||
INSTALL_DBFLAGS += -I $(INSTALL_LOCATION)/db
|
||||
DBDFLAGS = $(USR_DBDFLAGS) -I . -I .. $(INSTALL_DBDFLAGS) $(RELEASE_DBDFLAGS)
|
||||
DBFLAGS = $($*_DBFLAGS) $(USR_DBFLAGS) -I. -I.. $(INSTALL_DBFLAGS) $(RELEASE_DBFLAGS)
|
||||
DBD_SEARCH_DIRS = . .. $(COMMON_DIR) $(SRC_DIRS) $(INSTALL_DBD) $(RELEASE_DBD_DIRS)
|
||||
DB_SEARCH_DIRS = . .. $(COMMON_DIR) $(SRC_DIRS) $(INSTALL_DB) $(RELEASE_DB_DIRS)
|
||||
|
||||
DBDFLAGS = $(USR_DBDFLAGS) $(addprefix -I,$(DBD_SEARCH_DIRS))
|
||||
DBFLAGS = $($*_DBFLAGS) $(USR_DBFLAGS) $(addprefix -I,$(DB_SEARCH_DIRS))
|
||||
|
||||
#####################################################
|
||||
# To allow os specific dbd files AND have the -j option work properly,
|
||||
@@ -48,7 +47,7 @@ DBFLAGS = $($*_DBFLAGS) $(USR_DBFLAGS) -I. -I.. $(INSTALL_DBFLAGS) $(RELEASE_DBF
|
||||
# Following line added for backward compatibilty
|
||||
DBD += $(DBDNAME)
|
||||
|
||||
DBDINC_NAME = $(patsubst %.h,%,$(patsubst %.db,%,$(DBDINC)))
|
||||
DBDINC_NAME = $(patsubst %.h,%,$(patsubst %.dbd,%,$(DBDINC)))
|
||||
DBD += $(addsuffix .dbd,$(DBDINC_NAME))
|
||||
INC += $(addsuffix .h,$(DBDINC_NAME))
|
||||
|
||||
@@ -101,7 +100,7 @@ ACF_CPPFLAGS = $(ACF_CPPFLAGS_$(GNU))
|
||||
|
||||
ACF_INCLUDES = -I. $(TARGET_INCLUDES) $(USR_INCLUDES)\
|
||||
$(SRC_INCLUDES) -I$(INSTALL_DB)
|
||||
ACFDEPENDS_CMD = -$(MKMF) -m $(notdir $@)$(DEP) $(subst -I,,$(ACF_INCLUDES)) $@ $<
|
||||
ACFDEPENDS_CMD = -$(MKMF) -m $(notdir $@)$(DEP) $(ACF_INCLUDES) $@ $<
|
||||
ACF_CMD = $(CPP) $(ACF_CPPFLAGS) $(ACF_INCLUDES) $< > $@
|
||||
|
||||
##################################################### dependancies
|
||||
@@ -109,19 +108,17 @@ ACF_CMD = $(CPP) $(ACF_CPPFLAGS) $(ACF_INCLUDES) $< > $@
|
||||
HINC += $(addsuffix .h,$(DBDINC_NAME))
|
||||
COMMON_DBDINC += $(addprefix $(COMMON_DIR)/,$(HINC))
|
||||
|
||||
DBDDEPENDS_FILES += $(addsuffix $(DEP),$(HINC) $(DBS) \
|
||||
DBDDEPENDS_FILES += $(addsuffix $(DEP),$(HINC) \
|
||||
$(patsubst $(COMMON_DIR)/%,%,$(COMMON_DBS)) \
|
||||
$(patsubst $(COMMON_DIR)/%,%,$(COMMON_DBDS)))
|
||||
|
||||
DBDDEPENDS_FLAGS = $(subst -I,,$(filter-out -S%,$(DBDFLAGS)))
|
||||
DBDDEPENDS_FLAGS = $(filter-out -S%,$(DBDFLAGS))
|
||||
DBDDEPENDS_CMD = -$(MKMF) -m $(notdir $@)$(DEP) $(DBDDEPENDS_FLAGS) $@ $<
|
||||
|
||||
MAKEDBDEPENDS = $(PERL) $(TOOLS)/makeDbDepends.pl
|
||||
|
||||
#####################################################
|
||||
|
||||
ifndef T_A
|
||||
|
||||
ECHO := $(if $(findstring s,$(MAKEFLAGS)),\#,@echo)
|
||||
COMMON_DIR = .
|
||||
INSTALL_DBDS =
|
||||
INSTALL_DBS =
|
||||
@@ -223,58 +220,65 @@ $(INSTALL_DB)/%.template: %.template
|
||||
$(COMMON_DIR)/%Record.h: $(COMMON_DIR)/%Record.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
$(ECHO) "$<:../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $@
|
||||
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $@
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%Record.h: %Record.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
$(ECHO) "$<:../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $@
|
||||
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $@
|
||||
echo "$@ : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTORECORDTYPEH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/menu%.h: $(COMMON_DIR)/menu%.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
$(ECHO) "$<:../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $@
|
||||
$(DBTOMENUH) $(DBDFLAGS) $< $@
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTOMENUH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/menu%.h: menu%.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
$(ECHO) "$<:../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $@
|
||||
$(DBTOMENUH) $(DBDFLAGS) $< $@
|
||||
echo "$@ : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBTOMENUH) $(DBDFLAGS) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
.PRECIOUS: $(COMMON_DIR)/%.h
|
||||
|
||||
##################################################### DBD files
|
||||
|
||||
$(COMMON_DIR)/bpt%.dbd: bpt%.data
|
||||
@$(RM) $@
|
||||
$(MAKEBPT) $< $@
|
||||
$(MAKEBPT) $< $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%.dbd: $(COMMON_DIR)/%Include.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
$(ECHO) "$<:../Makefile" >> $(notdir $@)$(DEP)
|
||||
echo "$< : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Expanding dbd"
|
||||
@$(RM) $@
|
||||
@$(DBEXPAND) $(DBDFLAGS) -o $@ $<
|
||||
@$(RM) $(notdir $@)
|
||||
@$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $<
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%.dbd: %Include.dbd
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(DBDDEPENDS_CMD)
|
||||
$(ECHO) "$<:../Makefile" >> $(notdir $@)$(DEP)
|
||||
echo "$@ : ../Makefile" >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Expanding dbd"
|
||||
@$(RM) $@
|
||||
$(DBEXPAND) $(DBDFLAGS) -o $@ $<
|
||||
@$(RM) $(notdir $@)
|
||||
$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $<
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%Include.dbd:
|
||||
@$(RM) $@
|
||||
$(PERL) $(TOOLS)/makeIncludeDbd.pl $($*_DBD) $@
|
||||
@$(RM) $(notdir $@)
|
||||
$(PERL) $(TOOLS)/makeIncludeDbd.pl $($*_DBD) $(notdir $@)
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(INSTALL_DBD)/%: $(COMMON_DIR)/%
|
||||
$(ECHO) "Installing created dbd file $@"
|
||||
@@ -302,8 +306,9 @@ $(COMMON_DIR)/%.db$(RAW): $(COMMON_DIR)/%.edf
|
||||
|
||||
$(COMMON_DIR)/%.db$(RAW): %.substitutions
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
$(MAKEDBDEPENDS) $@ $< $(TEMPLATE_FILENAME) >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "$@:$(TEMPLATE_FILENAME)" >> $(notdir $@)$(DEP)
|
||||
@$(MKMF) -m$(notdir $@)$(DEP) $(DBFLAGS) $@ $< $(TEMPLATE_FILENAME)
|
||||
echo "$@ : $(TEMPLATE_FILENAME)" >> $(notdir $@)$(DEP)
|
||||
echo "$(notdir $@)$(DEP): $(TEMPLATE_FILENAME)" >> $(notdir $@)$(DEP)
|
||||
$(ECHO) "Inflating database from $< $(TEMPLATE_FILENAME)"
|
||||
@$(RM) $@ $*.tmp
|
||||
$(MSI) $(DBFLAGS) -S$< $(TEMPLATE_FILENAME) > $*.tmp
|
||||
@@ -311,7 +316,7 @@ $(COMMON_DIR)/%.db$(RAW): %.substitutions
|
||||
|
||||
$(COMMON_DIR)/%.db$(RAW): %.template
|
||||
@$(RM) $(notdir $@)$(DEP)
|
||||
@$(MAKEDBDEPENDS) $@ $^ >> $(notdir $@)$(DEP)
|
||||
@$(MKMF) -m$(notdir $@)$(DEP) $(DBFLAGS) $@ $< $(TEMPLATE_FILENAME)
|
||||
$(ECHO) "Inflating database from $<"
|
||||
@$(RM) $@ $*.tmp
|
||||
$(MSI) $(DBFLAGS) $< > $*.tmp
|
||||
|
||||
@@ -22,6 +22,7 @@ vpath %.cpp $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.C $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.rc $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.h $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.H $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.skel.static $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.y $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
vpath %.l $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
@@ -167,6 +168,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
|
||||
@@ -205,11 +210,6 @@ $(OBJLIBNAME):%$(OBJ):
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) $(call PATH_FILTER,$<) $(COMPILE_FILTER.cpp)
|
||||
|
||||
%$(OBJ): %.C
|
||||
@$(HDEPENDS_CMD)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) $(call PATH_FILTER,$<) $(COMPILE_FILTER.cpp)
|
||||
|
||||
# WIN95/NT resource compiler
|
||||
%$(RES): %.rc
|
||||
@$(RM) $@
|
||||
@@ -322,10 +322,10 @@ $(OBJLIB_MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(OBJ)
|
||||
@$(RM) $@
|
||||
$(MUNCH_CMD)
|
||||
|
||||
runtests: $(TESTSCRIPTS_$(BUILD_CLASS))
|
||||
runtests: $(TESTSCRIPTS)
|
||||
-$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
|
||||
|
||||
testspec: $(TESTSCRIPTS_$(BUILD_CLASS))
|
||||
testspec: $(TESTSCRIPTS)
|
||||
@$(RM) $@
|
||||
@echo OS-class: $(OS_CLASS) > $@
|
||||
@echo Target-arch: $(T_A) >> $@
|
||||
@@ -384,10 +384,10 @@ $(INSTALL_LIB)/%.lib: %.lib
|
||||
$(INSTALL_SHRLIBS): $(INSTALL_SHRLIB)/%: %
|
||||
$(ECHO) "Installing shared library $@"
|
||||
@$(INSTALL_LIBRARY) -d -m $(LIB_PERMISSIONS) $< $(INSTALL_SHRLIB)
|
||||
ifneq ($(SHRLIB_SUFFIX),.dll)
|
||||
ifneq ($(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE))
|
||||
ifneq (,$(strip $(SHRLIB_VERSION)))
|
||||
@$(RM) $(subst .$(SHRLIB_VERSION),,$@)
|
||||
ln -s $< $(subst .$(SHRLIB_VERSION),,$@)
|
||||
@$(RM) $(subst $(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
ln -s $< $(subst $(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
endif # SHRLIB_VERSION
|
||||
endif # SHRLIB_SUFFIX
|
||||
|
||||
@@ -408,10 +408,12 @@ $(INSTALL_TCLLIB)/$(TCLINDEX): $(INSTALL_TCLLIBS)
|
||||
$(INSTALL_LOADABLE_SHRLIBS): $(INSTALL_SHRLIB)/%: %
|
||||
$(ECHO) "Installing loadable shared library $@"
|
||||
@$(INSTALL_LIBRARY) -d -m 555 $< $(INSTALL_SHRLIB)
|
||||
ifneq ($(LOADABLE_SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE))
|
||||
ifneq (,$(strip $(LOADABLE_SHRLIB_VERSION)))
|
||||
@$(RM) $(subst .$(LOADABLE_SHRLIB_VERSION),,$@)
|
||||
ln -s $< $(subst .$(LOADABLE_SHRLIB_VERSION),,$@)
|
||||
@$(RM) $(subst $(LOADABLE_SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
ln -s $< $(subst $(LOADABLE_SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
endif # LOADABLE_SHRLIB_VERSION
|
||||
endif # LOADABLE_SHRLIB_SUFFIX
|
||||
|
||||
$(INSTALL_CONFIG)/%: %
|
||||
$(ECHO) "Installing config file $@"
|
||||
@@ -463,7 +465,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
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#*************************************************************************
|
||||
# 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.
|
||||
#*************************************************************************
|
||||
#
|
||||
@@ -13,73 +12,73 @@
|
||||
|
||||
include $(CONFIG)/RULES_DIRS
|
||||
|
||||
distclean: realclean cvsclean realuninstall
|
||||
|
||||
CVSCLEAN=$(firstword $(wildcard $(TOOLS)/cvsclean.pl $(TOP)/src/tools/cvsclean.pl))
|
||||
cvsclean:
|
||||
$(PERL) $(CVSCLEAN)
|
||||
|
||||
realuninstall: uninstallDirs
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)
|
||||
|
||||
UNINSTALL_DIRS += $(INSTALL_DBD) $(INSTALL_INCLUDE) $(INSTALL_DOC)\
|
||||
$(INSTALL_HTML) $(INSTALL_JAVA) $(INSTALL_TEMPLATES) \
|
||||
$(INSTALL_DB)
|
||||
UNINSTALL_DIRS += $(DIRECTORY_TARGETS)
|
||||
uninstallDirs:
|
||||
$(RMDIR) $(UNINSTALL_DIRS)
|
||||
|
||||
uninstall: archuninstall uninstallDirs
|
||||
|
||||
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
|
||||
@$(MAKE) -f Makefile cleandirs
|
||||
|
||||
uninstallArchTargets = $(foreach arch,$(BUILD_ARCHS), uninstall$(DIVIDER)$(arch))
|
||||
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
|
||||
|
||||
$(uninstallArchTargets): uninstallDirs
|
||||
@$(RMDIR) $(INSTALL_LOCATION_BIN)/$(archPart) $(INSTALL_LOCATION_LIB)/$(archPart)
|
||||
uninstall$(DIVIDER)%:
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)/$(archPart)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)/$(archPart)
|
||||
|
||||
cleandirs:
|
||||
ifeq ($(wildcard $(INSTALL_LOCATION_BIN)/*),)
|
||||
@$(RMDIR) $(INSTALL_LOCATION_BIN)
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)
|
||||
endif
|
||||
ifeq ($(wildcard $(INSTALL_LOCATION_LIB)/*),)
|
||||
@$(RMDIR) $(INSTALL_LOCATION_LIB)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)
|
||||
endif
|
||||
@echo
|
||||
# The echo above stops a "nothing to be done for cleandirs" message
|
||||
|
||||
distclean: realclean realuninstall
|
||||
|
||||
CVSCLEAN=$(firstword $(wildcard $(TOOLS)/cvsclean.pl $(TOP)/src/tools/cvsclean.pl))
|
||||
|
||||
cvsclean:
|
||||
@$(PERL) $(CVSCLEAN)
|
||||
|
||||
realuninstall:
|
||||
@$(RMDIR) $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB)
|
||||
@$(RMDIR) $(UNINSTALL_DIRS)
|
||||
|
||||
uninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
|
||||
@$(MAKE) -f Makefile cleandirs
|
||||
|
||||
uninstallDirs:
|
||||
@$(RMDIR) $(UNINSTALL_DIRS)
|
||||
|
||||
help:
|
||||
@echo "Usage: gnumake [options] [target] ..."
|
||||
@echo "Targets supported by all Makefiles:"
|
||||
@echo " install - Builds and installs all targets (default rule)"
|
||||
@echo " all - Same as install"
|
||||
@echo " buildInstall - Same as install"
|
||||
@echo " all - Same as install (default rule)"
|
||||
@echo " inc - Installs header files"
|
||||
@echo " build - Builds and installs all targets"
|
||||
@echo " install - Builds and installs all targets"
|
||||
@echo " buildInstall - Same as install (deprecated)"
|
||||
@echo " clean - Removes the O.<arch> dirs created by running make"
|
||||
@echo " In O.<arch> dir, clean removes build created files"
|
||||
@echo " realclean - Removes ALL O.<arch> dirs"
|
||||
@echo " Cannot be used within an O.<arch> dir"
|
||||
@echo " rebuild - Same as clean install"
|
||||
@echo " inc - Installs header files"
|
||||
@echo " build - Builds all targets"
|
||||
@echo " archclean - Removes O.<arch> dirs but not O.Common dir"
|
||||
@echo "\"Partial\" build targets supported by Makefiles:"
|
||||
@echo " inc.<arch> - Installs <arch> only header files."
|
||||
@echo " build.<arch> - Builds and installs <arch> only."
|
||||
@echo " install.<arch> - Builds and installs <arch> only."
|
||||
@echo " clean.<arch> - Cleans <arch> binaries in O.<arch> dirs only."
|
||||
@echo " build.<arch> - Builds <arch> only."
|
||||
@echo " uninstall.<arch> - Remove bin & lib directories for <arch> only."
|
||||
@echo "Targets supported by top level Makefile:"
|
||||
@echo " uninstall - Cleans directories created by the install."
|
||||
@echo " archuninstall - Remove bin & lib directories created by this hostarch."
|
||||
@echo " uninstall - Remove install directories created by this hostarch."
|
||||
@echo " realuninstall - Removes ALL install dirs"
|
||||
@echo " distclean - Same as realclean realuninstall."
|
||||
@echo " distclean - Same as realclean cvsclean realuninstall."
|
||||
@echo " cvsclean - Removes cvs .#* files in all dirs of directory tree"
|
||||
@echo " help - Prints this list of valid make targets "
|
||||
@echo "Indiv. object targets are supported by O.<arch> level Makefile .e.g"
|
||||
@echo " xxxRecord.o"
|
||||
|
||||
.PHONY : $(uninstallArchTargets)
|
||||
.PHONY : uninstall help cleandirs distclean uninstallDirs realuninstall
|
||||
.PHONY : cvsclean
|
||||
.PHONY: cleandirs distclean cvsclean realuninstall archuninstall uninstallDirs
|
||||
.PHONY: uninstall help
|
||||
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-beatnik
|
||||
# A migration from Eric Norum's CONFIG.Common.RTEMS-mvme5500
|
||||
# Author: Dayle Kotturi
|
||||
# SLAC
|
||||
# dayle@slac.stanford.edu
|
||||
# $Revision-Id$
|
||||
# Author: Dayle Kotturi <dayle@slac.stanford.edu>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
override EXE=.elf
|
||||
EXE = .elf
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
GNU_TARGET=powerpc-rtems
|
||||
GNU_TARGET = powerpc-rtems
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
@@ -19,16 +21,13 @@ define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
endef
|
||||
|
||||
CROSS_COMPILER_TARGET_ARCHS=RTEMS-beatnik
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
RTEMSSYMS=$(PRODNAME:%$(EXE)=%.sym)
|
||||
RTEMSIMGS=$(PRODNAME:%$(EXE)=%.bin)
|
||||
INSTALL_RTEMSSYMS=$(RTEMSSYMS:%=$(INSTALL_BIN)/%)
|
||||
INSTALL_RTEMSIMGS=$(RTEMSIMGS:%=$(INSTALL_BIN)/%)
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
%.sym: %$(EXE)
|
||||
$(XSYMS) $^ $@
|
||||
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-mvme3100
|
||||
# $Revision-Id$
|
||||
# Author: W. Eric Norum
|
||||
# Canadian Light Source
|
||||
# eric@cls.usask.ca
|
||||
# Author: W. Eric Norum <wenorum@lbl.gov>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
EXE = .elf
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
GNU_TARGET = powerpc-rtems
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_PPCBUG
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
define MUNCH_CMD
|
||||
@@ -24,6 +27,4 @@ define MUNCH_CMD
|
||||
rm -f rtems.gz
|
||||
endef
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-mvme3100
|
||||
# $Revision-Id$
|
||||
# Author: W. Eric Norum <wenorum@lbl.gov>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
override EXE=.elf
|
||||
EXE = .elf
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
GNU_TARGET=powerpc-rtems
|
||||
GNU_TARGET = powerpc-rtems
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
@@ -13,16 +21,13 @@ define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
endef
|
||||
|
||||
CROSS_COMPILER_TARGET_ARCHS=RTEMS-beatnik
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
RTEMSSYMS=$(PRODNAME:%$(EXE)=%.sym)
|
||||
RTEMSIMGS=$(PRODNAME:%$(EXE)=%.bin)
|
||||
INSTALL_RTEMSSYMS=$(RTEMSSYMS:%=$(INSTALL_BIN)/%)
|
||||
INSTALL_RTEMSIMGS=$(RTEMSIMGS:%=$(INSTALL_BIN)/%)
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
%.sym: %$(EXE)
|
||||
$(XSYMS) $^ $@
|
||||
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-mvme5500
|
||||
# $Revision-Id$
|
||||
# Author: W. Eric Norum
|
||||
# Advanced Photon Source
|
||||
# norume@aps.anl.gov
|
||||
# Author: W. Eric Norum <wenorum@lbl.gov>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
EXE = .elf
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
GNU_TARGET = powerpc-rtems
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
ARCH_DEP_CFLAGS += -DBSP_NVRAM_BASE_ADDR=0xf1110000
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
define MUNCH_CMD
|
||||
|
||||
@@ -19,8 +19,9 @@ OBJ = .o
|
||||
#Library prefix and suffixes
|
||||
LIB_PREFIX = lib
|
||||
LIB_SUFFIX = .a
|
||||
SHRLIB_SUFFIX = .so$(addprefix .,$(SHRLIB_VERSION))
|
||||
LOADABLE_SHRLIB_SUFFIX = .so$(addprefix .,$(LOADABLE_SHRLIB_VERSION))
|
||||
SHRLIB_SUFFIX_BASE = .so
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)$(addprefix .,$(SHRLIB_VERSION))
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)$(addprefix .,$(LOADABLE_SHRLIB_VERSION))
|
||||
LOADABLE_SHRLIB_PREFIX = lib
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
@@ -48,11 +48,12 @@ STATIC_CXXFLAGS_NO= $(VISC_DLL) -D_DLL
|
||||
# But: if there are no objects LIBRARY_LD_OBJS to include
|
||||
# in this library (may be for e.g. base/src/libCompat
|
||||
# on some archs), don't define (and build) any library!
|
||||
SHRLIB_PREFIX=
|
||||
SHRLIB_SUFFIX=.dll
|
||||
SHRLIB_PREFIX =
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIB_PREFIX=
|
||||
LOADABLE_SHRLIB_SUFFIX=.dll
|
||||
LOADABLE_SHRLIB_PREFIX =
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
|
||||
|
||||
#
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,16 +29,19 @@ 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
|
||||
OP_SYS_CFLAGS += -isysroot $(SDK_DIR) -D__IPHONE_OS_VERSION_MIN_REQUIRED=30200
|
||||
|
||||
#--------------------------------------------------
|
||||
# Don't try to use precompiled headers when converting sequencer files
|
||||
CPPSNCFLAGS += -no-cpp-precomp
|
||||
OP_SYS_LDFLAGS += -isysroot $(SDK_DIR)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Always compile in debugging symbol table information
|
||||
@@ -48,23 +51,33 @@ OPT_CXXFLAGS_YES += -g
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Compiler definitions:
|
||||
# Use clang instead of gcc
|
||||
# Must use g++ still
|
||||
CC = $(GNU_BIN)/clang
|
||||
CCC = $(GNU_BIN)/c++
|
||||
|
||||
CC_GNU = gcc
|
||||
CCC_GNU = g++
|
||||
|
||||
CC_LLVM_GNU = llvm-gcc
|
||||
CCC_LLVM_GNU = llvm-g++
|
||||
|
||||
CC_CLANG = clang
|
||||
CCC_CLANG = clang++
|
||||
|
||||
# Convert the iOS platform to lowercase for passing to xcrun's sdk parameter
|
||||
XCRUN_SDK_BASE = $(shell echo $(IOS_PLATFORM) | tr A-Z a-z)
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Linker flags
|
||||
OP_SYS_LDFLAGS += -dynamic -Z -L$(SDK_DIR)/usr/lib
|
||||
GNU_LDLIBS_YES =
|
||||
OP_SYS_LDFLAGS += -dynamic -Z -L$(SDK_DIR)/usr/lib -L$(SDK_DIR)/usr/lib/system
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Shared libraries
|
||||
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
|
||||
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
|
||||
-install_name $(shell perl $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
|
||||
-install_name $(shell $(PERL) $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
|
||||
-compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
|
||||
-current_version $(SHRLIB_VERSION)
|
||||
SHRLIB_SUFFIX = .$(SHRLIB_VERSION).dylib
|
||||
SHRLIB_SUFFIX_BASE = .dylib
|
||||
SHRLIB_SUFFIX = .$(SHRLIB_VERSION)$(SHRLIB_SUFFIX_BASE)
|
||||
|
||||
LOADABLE_SHRLIB_LDFLAGS = -bundle -flat_namespace -undefined suppress
|
||||
|
||||
@@ -80,7 +93,17 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
%.o: %.m
|
||||
$(COMPILE.c) -c $<
|
||||
|
||||
#--------------------------------------------------
|
||||
# Header dependency file generation
|
||||
#
|
||||
HDEPENDS_METHOD = CMD
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.iosCommon
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).iosCommon
|
||||
|
||||
#--------------------------------------------------
|
||||
# Find the Xcode compilers for the specified SDK just once
|
||||
CC := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find $(CC_$(COMPILER)))
|
||||
CCC := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find $(CCC_$(COMPILER)))
|
||||
|
||||
@@ -11,9 +11,6 @@ include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = arm
|
||||
|
||||
# Set a special definition for network order of Netwinder ARM floating point
|
||||
ARCH_DEP_CPPFLAGS += -D_ARM_NWFP_
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc
|
||||
GNU_TARGET = arm-linux
|
||||
@@ -29,4 +26,11 @@ ifeq ($(BUILD_CLASS),CROSS)
|
||||
# Provide a link-time path for products
|
||||
PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
|
||||
PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
# Provide a link-time path for readline
|
||||
RUNTIME_LDFLAGS_READLINE_YES = -Wl,-rpath-link,$(GNU_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE = $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
RUNTIME_LDFLAGS_READLINE_CURSES = $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
RUNTIME_LDFLAGS_READLINE_NCURSES = $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
|
||||
endif
|
||||
|
||||
21
configure/os/CONFIG.Common.linux-microblaze
Normal file
21
configure/os/CONFIG.Common.linux-microblaze
Normal file
@@ -0,0 +1,21 @@
|
||||
# CONFIG.Common.linux-microblaze
|
||||
#
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for Xilinx MicroBlaze FPGA Soft Core Processor target builds.
|
||||
# This target has been tested with the Xilinx Spartan 6 MicroBlaze.
|
||||
|
||||
# Site-specific overrides of these definitions should be made in the file
|
||||
# CONFIG_SITE.Common.linux-microblaze
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = microblaze
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc
|
||||
GNU_TARGET = microblazeel-unknown-linux-gnu
|
||||
CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
|
||||
endif
|
||||
@@ -5,7 +5,8 @@
|
||||
# Definitions for linux-xscale_be (big-endian) target builds.
|
||||
# This target has been tested with the MOXA UC-7408-LX Plus.
|
||||
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-xscale_be
|
||||
# Site-specific overrides of these definitions should be made in the file
|
||||
# CONFIG_SITE.Common.linux-xscale_be
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
@@ -13,11 +14,6 @@ include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = xscale
|
||||
|
||||
#
|
||||
# The vendor's tool chain needs to be located here
|
||||
#
|
||||
GNU_DIR=/usr/local/xscale_be
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc
|
||||
GNU_TARGET = xscale_be
|
||||
|
||||
@@ -35,8 +35,6 @@ SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-R%)
|
||||
PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
|
||||
GNU_TARGET=sparc-sun-solaris2
|
||||
|
||||
STLPORT_CFLAGS_YES= -library=stlport4
|
||||
@@ -53,17 +51,17 @@ OP_SYS_LDLIBS += $(STLPORT_LDLIBS_$(USE_STLPORT))
|
||||
|
||||
# OS libraries used when generating shared libraries or static binaries
|
||||
OP_SYS_LDLIBS += -lsocket -lnsl
|
||||
OP_SYS_LDLIBS_8 += -lCrun -lc
|
||||
OP_SYS_LDLIBS_9 += -lumem -lCrun -lc
|
||||
OP_SYS_LDLIBS_8 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_9 += -ldl -lumem -lCrun -lc
|
||||
OP_SYS_LDLIBS_10 += -lumem -lCrun -lc
|
||||
OP_SYS_LDLIBS += $(OP_SYS_LDLIBS_$(SOLARIS_VERSION))
|
||||
|
||||
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
||||
READLINE_DIR = $(GNU_DIR)
|
||||
INCLUDES_READLINE = -I$(READLINE_DIR)/include
|
||||
RUNTIME_LDFLAGS_READLINE += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE_YES += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE += $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
LDFLAGS_READLINE += -L$(READLINE_DIR)/lib
|
||||
LDLIBS_READLINE = -lreadline -lcurses
|
||||
# Use archive if there is a problem with the readline shared library
|
||||
#LDLIBS_READLINE = -Bstatic -lreadline -Bdynamic -lcurses
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ COMPILER_CPPFLAGS = -D_REENTRANT
|
||||
|
||||
STLPORT_LDLIBS_NO =
|
||||
|
||||
OP_SYS_LDLIBS_8 =
|
||||
OP_SYS_LDLIBS_9 =
|
||||
OP_SYS_LDLIBS_8 = -ldl
|
||||
OP_SYS_LDLIBS_9 = -ldl
|
||||
OP_SYS_LDLIBS_10 =
|
||||
|
||||
|
||||
@@ -36,8 +36,6 @@ SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-R%)
|
||||
PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
|
||||
GNU_TARGET=x86-sun-solaris2
|
||||
|
||||
STLPORT_CFLAGS_YES= -library=stlport4
|
||||
@@ -52,8 +50,8 @@ OP_SYS_CFLAGS+=$(STLPORT_CFLAGS_$(USE_STLPORT))
|
||||
OP_SYS_LDFLAGS+=$(STLPORT_CFLAGS_$(USE_STLPORT))
|
||||
|
||||
OP_SYS_LDLIBS += -lsocket -lnsl
|
||||
OP_SYS_LDLIBS_8 += -lCrun -lc
|
||||
OP_SYS_LDLIBS_9 += -lCrun -lc
|
||||
OP_SYS_LDLIBS_8 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_9 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_10 += -lCrun -lc
|
||||
OP_SYS_LDLIBS += $(OP_SYS_LDLIBS_$(SOLARIS_VERSION))
|
||||
OP_SYS_LDLIBS += $(STLPORT_LDLIBS_$(USE_STLPORT))
|
||||
@@ -61,7 +59,8 @@ OP_SYS_LDLIBS += $(STLPORT_LDLIBS_$(USE_STLPORT))
|
||||
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
||||
READLINE_DIR = $(GNU_DIR)
|
||||
INCLUDES_READLINE = -I$(READLINE_DIR)/include
|
||||
RUNTIME_LDFLAGS_READLINE += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE_YES += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE += $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
LDFLAGS_READLINE += -L$(READLINE_DIR)/lib
|
||||
LDLIBS_READLINE = -lreadline -lcurses
|
||||
# Use archive if there is a problem with the readline shared library
|
||||
|
||||
@@ -14,7 +14,7 @@ COMPILER_CPPFLAGS = -D_REENTRANT
|
||||
|
||||
STLPORT_LDLIBS_NO =
|
||||
|
||||
OP_SYS_LDLIBS_8 = -lc
|
||||
OP_SYS_LDLIBS_9 = -lc
|
||||
OP_SYS_LDLIBS_8 = -ldl -lc
|
||||
OP_SYS_LDLIBS_9 = -ldl -lc
|
||||
OP_SYS_LDLIBS_10 = -lc
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# CONFIG.Common.vxWorks-mpc8540
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for vxWorks-mpc8540 targets: MPC8540 CPU with >32MB RAM.
|
||||
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-mpc8540
|
||||
#
|
||||
# This file is maintained by the EPICS build community.
|
||||
# Definitions for vxWorks-mpc8540 target archs
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-mpc8540
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all vxWorks target archs
|
||||
|
||||
26
configure/os/CONFIG.Common.vxWorks-mpc8548
Normal file
26
configure/os/CONFIG.Common.vxWorks-mpc8548
Normal file
@@ -0,0 +1,26 @@
|
||||
# CONFIG.Common.vxWorks-mpc8548
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for vxWorks-mpc8548 target archs
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-mpc8548
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all vxWorks target archs
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||
|
||||
# Vx GNU cross compiler suffix
|
||||
CMPLR_SUFFIX = ppc
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC32
|
||||
ARCH_DEP_CFLAGS = -DCPU_VARIANT=_ppc85XX_e500v2
|
||||
ARCH_DEP_CFLAGS += -mlongcall
|
||||
|
||||
# This flag isn't present in early vxWorks 6.x versions
|
||||
#ARCH_DEP_CFLAGS += -te500v2
|
||||
|
||||
GNU_TARGET = powerpc-wrs-vxworks
|
||||
14
configure/os/CONFIG.Common.vxWorks-mpc8548-debug
Normal file
14
configure/os/CONFIG.Common.vxWorks-mpc8548-debug
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG.Common.vxWorks-mpc8548-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for vxWorks-mpc8548-debug targets.
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-mpc8548-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all vxWorks archs
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-mpc8548
|
||||
|
||||
CROSS_OPT = NO
|
||||
|
||||
24
configure/os/CONFIG.Common.vxWorks-ppc32
Normal file
24
configure/os/CONFIG.Common.vxWorks-ppc32
Normal file
@@ -0,0 +1,24 @@
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Definitions for vxWorks-ppc603 targets with >32MB of RAM
|
||||
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc603_long
|
||||
#
|
||||
# This file is maintained by the EPICS build community.
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all vxWorks target archs
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||
|
||||
# Vx GNU cross compiler suffix
|
||||
CMPLR_SUFFIX = ppc
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC32
|
||||
ARCH_DEP_CFLAGS = -mstrict-align
|
||||
|
||||
GNU_TARGET = powerpc-wrs-vxworks
|
||||
|
||||
# Tell compiler to generate long branches
|
||||
ARCH_DEP_CFLAGS += -mlongcall
|
||||
14
configure/os/CONFIG.Common.vxWorks-ppc32-debug
Normal file
14
configure/os/CONFIG.Common.vxWorks-ppc32-debug
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG.Common.vxWorks-ppc32-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for vxWorks-ppc32-debug target archs
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc32-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all vxWorks archs
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32
|
||||
|
||||
CROSS_OPT = NO
|
||||
|
||||
13
configure/os/CONFIG.Common.vxWorks-ppc32sf
Normal file
13
configure/os/CONFIG.Common.vxWorks-ppc32sf
Normal file
@@ -0,0 +1,13 @@
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Definitions for vxWorks-ppc32sf targets
|
||||
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc32sf
|
||||
#
|
||||
# This file is maintained by the EPICS build community.
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Inherit the settings from vxWorks-ppc32
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32
|
||||
|
||||
# Tell compiler to use software floating-point
|
||||
ARCH_DEP_CFLAGS += -msoft-float
|
||||
14
configure/os/CONFIG.Common.vxWorks-ppc32sf-debug
Normal file
14
configure/os/CONFIG.Common.vxWorks-ppc32sf-debug
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG.Common.vxWorks-ppc32sf-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for vxWorks-ppc32sf-debug target archs
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc32sf-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all vxWorks archs
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32sf
|
||||
|
||||
CROSS_OPT = NO
|
||||
|
||||
@@ -159,7 +159,7 @@ export TOOL_FAMILY = GNU
|
||||
|
||||
#--------------------------------------------------
|
||||
# Operating system flags
|
||||
OP_SYS_CPPFLAGS += -DvxWorks
|
||||
OP_SYS_CPPFLAGS += -DvxWorks=vxWorks
|
||||
OP_SYS_CFLAGS += -fno-builtin
|
||||
|
||||
# Fix for vxWorks 5 headers that use macros defined in vxWorks.h but
|
||||
|
||||
@@ -55,11 +55,12 @@ STATIC_CXXFLAGS_NO= $(VISC_DLL) -D_DLL
|
||||
# But: if there are no objects LIBRARY_LD_OBJS to include
|
||||
# in this library (may be for e.g. base/src/libCompat
|
||||
# on some archs), don't define (and build) any library!
|
||||
SHRLIB_PREFIX=
|
||||
SHRLIB_SUFFIX=.dll
|
||||
SHRLIB_PREFIX =
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIB_PREFIX=
|
||||
LOADABLE_SHRLIB_SUFFIX=.dll
|
||||
LOADABLE_SHRLIB_PREFIX =
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
|
||||
|
||||
#
|
||||
|
||||
@@ -49,11 +49,12 @@ STATIC_CXXFLAGS_NO= $(VISC_DLL) -D_DLL
|
||||
# But: if there are no objects LIBRARY_LD_OBJS to include
|
||||
# in this library (may be for e.g. base/src/libCompat
|
||||
# on some archs), don't define (and build) any library!
|
||||
SHRLIB_PREFIX=
|
||||
SHRLIB_SUFFIX=.dll
|
||||
SHRLIB_PREFIX =
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIB_PREFIX=
|
||||
LOADABLE_SHRLIB_SUFFIX=.dll
|
||||
LOADABLE_SHRLIB_PREFIX =
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
|
||||
|
||||
#
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.cygwin-x86.cygwin-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.cygwin-x86
|
||||
include $(CONFIG)/os/CONFIG.cygwin-x86.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG.Common.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG.cygwin-x86.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.cygwin-x86.cygwin-x86
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
-include $(CONFIG)/os/CONFIG.Common.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG.darwin-ppc.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.darwin-ppc.darwin-ppc
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
-include $(CONFIG)/os/CONFIG.Common.darwin-x86
|
||||
-include $(CONFIG)/os/CONFIG.darwin-x86.darwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.darwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.darwin-x86.darwin-x86
|
||||
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -36,11 +36,6 @@ ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)
|
||||
#
|
||||
OP_SYS_CFLAGS += -fno-common
|
||||
|
||||
#
|
||||
# Don't try to use precompiled headers when converting sequencer files
|
||||
#
|
||||
CPPSNCFLAGS += -no-cpp-precomp
|
||||
|
||||
#
|
||||
# Darwin os definition
|
||||
#
|
||||
@@ -52,20 +47,6 @@ OP_SYS_CPPFLAGS += -Ddarwin
|
||||
OPT_CFLAGS_YES += -g
|
||||
OPT_CXXFLAGS_YES += -g
|
||||
|
||||
#
|
||||
# The following two definitions enable the use of DarwinPorts packages.
|
||||
#
|
||||
OP_SYS_INCLUDES += -I/opt/local/include
|
||||
# dir/firstword/wildcard used to avoid warning -L: directory name (...) does not exist
|
||||
OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /opt/local/lib/*))))
|
||||
|
||||
#
|
||||
# The following two definitions enable the use of Fink packages.
|
||||
#
|
||||
OP_SYS_INCLUDES += -I/sw/include
|
||||
# dir/firstword/wildcard used to avoid warning -L: directory name (...) does not exist
|
||||
OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /sw/lib/*))))
|
||||
|
||||
#
|
||||
# Libraries for command-line editing.
|
||||
#
|
||||
@@ -86,10 +67,11 @@ CCC = $(GNU_BIN)/c++
|
||||
#
|
||||
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
|
||||
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
|
||||
-install_name $(shell perl $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
|
||||
-install_name $(shell $(PERL) $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
|
||||
-compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
|
||||
-current_version $(SHRLIB_VERSION)
|
||||
SHRLIB_SUFFIX = .$(SHRLIB_VERSION).dylib
|
||||
SHRLIB_SUFFIX_BASE = .dylib
|
||||
SHRLIB_SUFFIX = .$(SHRLIB_VERSION)$(SHRLIB_SUFFIX_BASE)
|
||||
|
||||
LOADABLE_SHRLIB_LDFLAGS = -bundle -flat_namespace -undefined suppress
|
||||
|
||||
|
||||
10
configure/os/CONFIG.linux-arm.Common
Normal file
10
configure/os/CONFIG.linux-arm.Common
Normal file
@@ -0,0 +1,10 @@
|
||||
# CONFIG.linux-arm.Common
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Definitions for linux-arm host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-arm.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
10
configure/os/CONFIG.linux-arm.linux-arm
Normal file
10
configure/os/CONFIG.linux-arm.linux-arm
Normal file
@@ -0,0 +1,10 @@
|
||||
# CONFIG.linux-arm.linux-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Definitions for native linux-arm builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-arm.linux-arm
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include common gnu compiler definitions
|
||||
include $(CONFIG)/CONFIG.gnuCommon
|
||||
@@ -7,8 +7,9 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
-include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
#-include $(CONFIG)/os/CONFIG_SITE.Common.linux-x86
|
||||
#-include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-x86
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT=NO
|
||||
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86_64.linux-x86_64-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
-include $(CONFIG)/os/CONFIG.linux-x86_64.linux-x86_64
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.linux-x86_64
|
||||
-include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.linux-x86_64
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-sparc.solaris-sparc-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.solaris-sparc.solaris-sparc
|
||||
-include $(CONFIG)/os/CONFIG.solaris-sparc.solaris-sparc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.solaris-sparc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.solaris-sparc.solaris-sparc
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT=NO
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-x86.solaris-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.solaris-x86
|
||||
include $(CONFIG)/os/CONFIG.solaris-x86.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG.Common.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG.solaris-x86.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.solaris-x86.solaris-x86
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
CP = $(PERL) -MExtUtils::Command -e cp
|
||||
MV = $(PERL) -MExtUtils::Command -e mv
|
||||
MV = $(PERL) -MExtUtils::Command -e mv
|
||||
RM = $(PERL) -MExtUtils::Command -e rm_f
|
||||
MKDIR = $(PERL) -MExtUtils::Command -e mkpath
|
||||
RMDIR = $(PERL) -MExtUtils::Command -e rm_rf
|
||||
NOP = $(PERL) -e ''
|
||||
|
||||
WIND_HOST_TYPE = x86-win32
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
@@ -176,7 +176,8 @@ LINK.shrlib+= $(DLL_DEF_FLAG),$(LIBRARY_LD_RESS)
|
||||
# But: if there are no objects LIBRARY_LD_OBJS to include
|
||||
# in this library (may be for e.g. base/src/libCompat
|
||||
# on some archs), don't define (and build) any library!
|
||||
SHRLIB_SUFFIX=.dll
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
|
||||
|
||||
@@ -11,10 +11,11 @@
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
CP = $(PERL) -MExtUtils::Command -e cp
|
||||
MV = $(PERL) -MExtUtils::Command -e mv
|
||||
MV = $(PERL) -MExtUtils::Command -e mv
|
||||
RM = $(PERL) -MExtUtils::Command -e rm_f
|
||||
MKDIR = $(PERL) -MExtUtils::Command -e mkpath
|
||||
RMDIR = $(PERL) -MExtUtils::Command -e rm_rf
|
||||
NOP = $(PERL) -e ''
|
||||
|
||||
WIND_HOST_TYPE = x86-win32
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
@@ -26,7 +26,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
# Override linking with gcc library from CONFIG.gnuCommon
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
OPT_CFLAGS_NO = -O3 -g
|
||||
OPT_CXXFLAGS_NO = -O3 -g
|
||||
|
||||
OP_SYS_LDLIBS = -lws2_32
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-mingw.win32-x86-mingw-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.win32-x86-mingw
|
||||
include $(CONFIG)/os/CONFIG.win32-x86-mingw.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG.Common.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG.win32-x86-mingw.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG_SITE.win32-x86-mingw.win32-x86-mingw
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
CP = $(PERL) -MExtUtils::Command -e cp
|
||||
MV = $(PERL) -MExtUtils::Command -e mv
|
||||
MV = $(PERL) -MExtUtils::Command -e mv
|
||||
RM = $(PERL) -MExtUtils::Command -e rm_f
|
||||
MKDIR = $(PERL) -MExtUtils::Command -e mkpath
|
||||
RMDIR = $(PERL) -MExtUtils::Command -e rm_rf
|
||||
NOP = $(PERL) -e ''
|
||||
|
||||
WIND_HOST_TYPE = x86-win32
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
@@ -31,7 +31,9 @@ BAFCMD = bscmake /nologo /o $@
|
||||
# Configure OS vendor C compiler
|
||||
CC = cl
|
||||
|
||||
# Override CONFIG.gnuCommon for cross builds.
|
||||
GNU = NO
|
||||
HDEPENDS_METHOD = CMD
|
||||
|
||||
#
|
||||
# /W<N> use warning level N
|
||||
@@ -210,7 +212,8 @@ MUNCH_CMD = $(CCC) /Fo $@ $^
|
||||
# But: if there are no objects LIBRARY_LD_OBJS to include
|
||||
# in this library (may be for e.g. base/src/libCompat
|
||||
# on some archs), don't define (and build) any library!
|
||||
SHRLIB_SUFFIX=.dll
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
|
||||
|
||||
@@ -7,10 +7,14 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86.win32-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.win32-x86-debug.win32-x86-debug
|
||||
-include $(CONFIG)/os/CONFIG.Common.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.win32-x86.win32-x86
|
||||
|
||||
GNU = NO
|
||||
|
||||
HDEPENDS_METHOD = CMD
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -7,9 +7,31 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Select which CPU architecture(s) to include in your MacOS binaries:
|
||||
# i386
|
||||
# x86_64 - Needs MacOS 10.4 with the Universal SDK, or 10.5 and later
|
||||
# i386, x86_64, or both (fat binaries).
|
||||
|
||||
ARCH_CLASS = i386
|
||||
#ARCH_CLASS = x86_64
|
||||
#ARCH_CLASS = i386
|
||||
ARCH_CLASS = x86_64
|
||||
#ARCH_CLASS = i386 x86_64
|
||||
|
||||
#
|
||||
# Comment out the following 3 lines to build with Apple's GCC instead of CLANG.
|
||||
#
|
||||
CC = clang
|
||||
CCC = clang++
|
||||
GNU = NO
|
||||
|
||||
|
||||
# To use MacPorts GCC, comment out ALL the settings above this line,
|
||||
# then uncomment (and modify if necessary) the following instead:
|
||||
|
||||
#GNU_DIR = /opt/local
|
||||
#CC = $(GNU_BIN)/gcc -m64
|
||||
#CCC = $(GNU_BIN)/g++ -m64
|
||||
|
||||
# If you see this or similar errors while building in the src/cap5 directory
|
||||
# gcc: error: unrecognized option '-no-cpp-precomp'
|
||||
# the problem is due to the ccflags configuration that your version of Perl
|
||||
# was built with. You can replace the Cap5_CFLAGS setting in the Makefile
|
||||
# with a hand-edited set of flags for building that Perl library, or ignore
|
||||
# this problem if you don't need to use Channel Access from Perl.
|
||||
|
||||
|
||||
26
configure/os/CONFIG_SITE.Common.ios-arm
Normal file
26
configure/os/CONFIG_SITE.Common.ios-arm
Normal file
@@ -0,0 +1,26 @@
|
||||
# CONFIG_SITE.Common.ios-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# 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 older
|
||||
# instruction sets, although the newer instructions are
|
||||
# more efficient.
|
||||
#
|
||||
# Apple's compilers can build for multiple architectures,
|
||||
# generating a Universal binary. This is larger and takes
|
||||
# longer to compile, but runs efficiently on all devices.
|
||||
#
|
||||
# Xcode 4.5 dropped support for the ARMv6.
|
||||
#
|
||||
# ARMv7s devices: iPhone 5
|
||||
# ARMv6 devices: iPhone 1 and 3G, iPod Touch Gen 1 and 2
|
||||
# All other devices are ARMv7
|
||||
|
||||
ARCH_CLASS = armv7 armv7s
|
||||
#ARCH_CLASS = armv7
|
||||
#ARCH_CLASS = armv6 armv7
|
||||
#ARCH_CLASS = armv6
|
||||
@@ -1,7 +1,6 @@
|
||||
# CONFIG_SITE.Common.iosCommon
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Site-specific settings for Apple iOS builds
|
||||
#-------------------------------------------------------
|
||||
@@ -9,16 +8,32 @@
|
||||
# iOS Version number
|
||||
|
||||
#IOS_VERSION = 3.2
|
||||
IOS_VERSION = 4.1
|
||||
#IOS_VERSION = 4.1
|
||||
#IOS_VERSION = 4.2
|
||||
#IOS_VERSION = 4.3
|
||||
#IOS_VERSION = 5.0
|
||||
#IOS_VERSION = 5.1
|
||||
IOS_VERSION = 6.0
|
||||
|
||||
|
||||
# Most sites will want shared libraries
|
||||
# Which compiler to use:
|
||||
# CLANG is preferred for recent versions of Xcode
|
||||
# LLVM_GNU uses the llvm-gcc and llvm-g++ compilers
|
||||
# GNU is needed for older versions of Xcode
|
||||
|
||||
STATIC_BUILD=NO
|
||||
SHARED_LIBRARIES=YES
|
||||
COMPILER = CLANG
|
||||
#COMPILER = LLVM_GNU
|
||||
#COMPILER = GNU
|
||||
|
||||
|
||||
# Platform path, this is probably correct
|
||||
# Most sites will want to build shared libraries (which is the
|
||||
# default), but if you get an error from ld while building libCom,
|
||||
# try uncommenting this, which is needed for some compiler versions:
|
||||
|
||||
#SHARED_LIBRARIES = NO
|
||||
|
||||
|
||||
# Get platform path from OS, these are usually correct:
|
||||
|
||||
XCODE_PATH := $(shell xcode-select -print-path)
|
||||
PLATFORM_DIR = $(XCODE_PATH)/Platforms/$(IOS_PLATFORM).platform
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# CONFIG_SITE.Common.linux-cris
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for linux-cris target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
@@ -15,9 +17,21 @@
|
||||
# c) Add the runtime path to /etc/ld.so.conf and run ldconfig
|
||||
# to inform the system of the shared library location.
|
||||
|
||||
# If readline is not installed comment the following line
|
||||
# to omit command-line editing and history support
|
||||
# Depending on your version of Linux you may want one of the following
|
||||
# lines to enable command-line editing and history in iocsh. If you're
|
||||
# not sure which, start with the top one and work downwards until the
|
||||
# build doesn't fail to link the readline library. If none of them work,
|
||||
# comment them all out to build without readline support.
|
||||
|
||||
# No other libraries needed (recent Fedora, Ubuntu etc.):
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Needs -lncurses (RHEL 5 etc.):
|
||||
#COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
# Needs -lcurses (older versions)
|
||||
#COMMANDLINE_LIBRARY = READLINE_CURSES
|
||||
|
||||
|
||||
OP_SYS_CFLAGS += -g
|
||||
|
||||
|
||||
14
configure/os/CONFIG_SITE.Common.linux-microblaze
Normal file
14
configure/os/CONFIG_SITE.Common.linux-microblaze
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG_SITE.Common.linux-microblaze
|
||||
#
|
||||
# Site specific definitions for linux-microblaze target builds.
|
||||
#-------------------------------------------------------
|
||||
|
||||
# The gnu tools for cross compiling for MicroBlaze (little endian)
|
||||
# on Linux can be downloaded from the Xilinx git server:
|
||||
# git clone git://git.xilinx.com/xldk/microblaze_v2.0_le.git
|
||||
#
|
||||
# The result contains a .tgz file with the tool-chain in it.
|
||||
# Set GNU_DIR to point to the un-tarred tool-chain:
|
||||
|
||||
GNU_DIR = /usr/local/vw/microblaze-2.0/microblazeel-unknown-linux-gnu
|
||||
|
||||
@@ -18,12 +18,23 @@
|
||||
# to inform the system of the shared library location.
|
||||
|
||||
# Depending on your version of Linux you'll want one of the following
|
||||
# lines to enable command-line editing and history support. If you're
|
||||
# lines to enable command-line editing and history in iocsh. If you're
|
||||
# not sure which, start with the top one and work downwards until the
|
||||
# build doesn't fail to link the readline library. If none of them
|
||||
# work, comment them all out.
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
# build doesn't fail to link the readline library. If none of them work,
|
||||
# comment them all out to build without readline support.
|
||||
|
||||
# No other libraries needed (recent Fedora, Ubuntu etc.):
|
||||
COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Needs -lncurses (RHEL 5 etc.):
|
||||
#COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
# Needs -lcurses (older versions)
|
||||
#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
|
||||
|
||||
@@ -18,12 +18,23 @@
|
||||
# to inform the system of the shared library location.
|
||||
|
||||
# Depending on your version of Linux you'll want one of the following
|
||||
# lines to enable command-line editing and history support. If you're
|
||||
# lines to enable command-line editing and history in iocsh. If you're
|
||||
# not sure which, start with the top one and work downwards until the
|
||||
# build doesn't fail to link the readline library. If none of them
|
||||
# work, comment them all out.
|
||||
# build doesn't fail to link the readline library. If none of them work,
|
||||
# comment them all out to build without readline support.
|
||||
|
||||
# No other libraries needed (recent Fedora, Ubuntu etc.):
|
||||
COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Needs -lncurses (RHEL 5 etc.):
|
||||
#COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
# Needs -lcurses (older versions)
|
||||
#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
|
||||
|
||||
9
configure/os/CONFIG_SITE.Common.linux-xscale_be
Normal file
9
configure/os/CONFIG_SITE.Common.linux-xscale_be
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG_SITE.Common.linux-xscale_be
|
||||
#
|
||||
# Site specific definitions for linux-xscale_be target builds.
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Set GNU_DIR to point to directory containing the tool-chain
|
||||
|
||||
GNU_DIR = /usr/local/xscale_be
|
||||
|
||||
6
configure/os/CONFIG_SITE.Common.vxWorks-mpc8548
Normal file
6
configure/os/CONFIG_SITE.Common.vxWorks-mpc8548
Normal file
@@ -0,0 +1,6 @@
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for the vxWorks-mpc8548 target
|
||||
#
|
||||
# Only the local epics system manager should modify this file
|
||||
#-------------------------------------------------------
|
||||
@@ -6,5 +6,5 @@
|
||||
# Site override definitions for cygwin-x86 host builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
CROSS_COMPILER_TARGET_ARCHS =
|
||||
#CROSS_COMPILER_TARGET_ARCHS =
|
||||
|
||||
|
||||
20
configure/os/CONFIG_SITE.darwinCommon.darwinCommon
Normal file
20
configure/os/CONFIG_SITE.darwinCommon.darwinCommon
Normal file
@@ -0,0 +1,20 @@
|
||||
# CONFIG_SITE.darwinCommon.darwinCommon
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Site specific definitions for darwin builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Uncomment the following two definitions to enable the use of DarwinPorts packages.
|
||||
#
|
||||
#OP_SYS_INCLUDES += -I/opt/local/include
|
||||
# dir/firstword/wildcard used to avoid warning -L: directory name (...) does not exist
|
||||
#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /opt/local/lib/*))))
|
||||
|
||||
# Uncomment the following two definitions to enable the use of Fink packages.
|
||||
#
|
||||
#OP_SYS_INCLUDES += -I/sw/include
|
||||
# dir/firstword/wildcard used to avoid warning -L: directory name (...) does not exist
|
||||
#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /sw/lib/*))))
|
||||
|
||||
7
configure/os/CONFIG_SITE.linux-arm.linux-arm
Normal file
7
configure/os/CONFIG_SITE.linux-arm.linux-arm
Normal file
@@ -0,0 +1,7 @@
|
||||
# CONFIG_SITE.linux-arm.linux-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific definitions for native linux-arm builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
# Site specific definitions for linux-x86 host - linux-arm target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Diamond:
|
||||
# Tools install path
|
||||
#GNU_DIR = /home/targetOS/linux-arm/host/x86-linux/gcc_3.3.3
|
||||
|
||||
# anj@aps:
|
||||
#GNU_DIR = /local/anj/cross-arm/gcc-3.4.5-glibc-2.3.6/arm-linux
|
||||
GNU_DIR = /net/phoebus/vw/zynq-2011.09
|
||||
|
||||
# GNU crosscompiler target name
|
||||
GNU_TARGET = arm-xilinx-linux-gnueabi
|
||||
|
||||
@@ -7,6 +7,5 @@
|
||||
|
||||
# jba overrides
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
|
||||
#VX_DIR = T:/tornado20
|
||||
|
||||
BORLAND = c:\\Borland\\Bcc55
|
||||
|
||||
@@ -8,5 +8,4 @@
|
||||
# jba test overrides
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
|
||||
#CROSS_COMPILER_TARGET_ARCHS+=vxWorks-68040
|
||||
#VX_DIR = T:/tornado20
|
||||
#INSTALL_LOCATION = G:/testInstall
|
||||
|
||||
@@ -19,7 +19,7 @@ builds with release R3.14. It describes procedures such that:</p>
|
||||
<li>The application uses the configure rules which are new to R3.14.</li>
|
||||
<li>The OSI (Operating System Independent) features of R3.14 are available,
|
||||
i.e. iocCore products can be build for vxWorks as well as other
|
||||
platforms, e.g. solaris and linux.</li>
|
||||
platforms, e.g. Solaris and Linux.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Gnumake clean uninstall</h3>
|
||||
@@ -47,10 +47,14 @@ find *App iocBoot -print | cpio -pvmd <i>/path/to/new/top</i></pre>
|
||||
|
||||
<h3>Modify <i>top</i>/configure/RELEASE</h3>
|
||||
|
||||
<p>Copy definitions of external modules excluding EPICS_BASE and
|
||||
TEMPLATES_TOP from old application RELEASE file. <br>
|
||||
If sequence programs (*.st or *.stt files) exist in your application, add the
|
||||
SNCSEQ location definition for the R3.14 sncseq external module</p>
|
||||
<p>Copy definitions of external modules excluding <tt>EPICS_BASE</tt> and
|
||||
<tt>TEMPLATE_TOP</tt> from your old application config/RELEASE file. In many
|
||||
cases the modules you actually use under R3.14 will be different to the R3.13
|
||||
modules, but the old module names here give you a starting-point for what there
|
||||
replacements will be.</p>
|
||||
|
||||
<p>If any sequence programs (*.st or *.stt files) exist in your application, add
|
||||
the SNCSEQ location definition for the R3.14 sncseq external module.</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>SNCSEQ = <i>/path/to/sncseq</i></pre>
|
||||
@@ -107,7 +111,7 @@ still to convert):</p>
|
||||
</blockquote>
|
||||
|
||||
<p>This new Makefile has comments explaining how to build the various host
|
||||
and ioc products. Lets consider some examples</p>
|
||||
and IOC products. Lets consider some examples</p>
|
||||
<ul>
|
||||
<li>Host programs
|
||||
<p>Makefile.Host contains definitions like:</p>
|
||||
@@ -149,7 +153,7 @@ DBDNAME = exampleApp.dbd</pre>
|
||||
<p>NOTES: Change exampleApp.dbd to example.dbd in all st.cmd files. Also
|
||||
this definition assumes that file exampleInclude.dbd exists.</p>
|
||||
</li>
|
||||
<li>Create the ioc application:
|
||||
<li>Create the IOC application:
|
||||
<p>Makefile.Vx contains statements like:</p>
|
||||
<blockquote>
|
||||
<pre>SRCS.c += ../xxxRecord.c
|
||||
@@ -172,7 +176,7 @@ exampleIoc_SRCS += devXxxSoft.c
|
||||
exampleIoc_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
|
||||
PROD_IOC_vxWorks = example
|
||||
example_SRCS += sncExample.stt
|
||||
example_SRCS += sncExample.st
|
||||
example_LIBS += exampleIoc
|
||||
example_LIBS += seq pv
|
||||
example_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
@@ -198,21 +202,22 @@ baseLIBOBJS, Makefile.Host, and Makefile.Vx</p>
|
||||
</blockquote>
|
||||
|
||||
<p>to your <i>appname</i>Include.dbd file and remove the file
|
||||
<i>name</i>App/src/base.dbd from your src directory. The base.dbd from base/dbd
|
||||
will be used instead. If you only want to load a subset of the record
|
||||
definitions from base you can keep your own copy of base.dbd, but you should
|
||||
copy the one from your R3.14 base and edit that rather than trying to re-use the
|
||||
R3.13 version from your old application.</p>
|
||||
<i>name</i>App/src/base.dbd from your src directory. The base.dbd file from
|
||||
$(EPICS_BASE)/dbd will be used instead. If you only want to load a subset of the
|
||||
record definitions from base you can keep a local edited copy of the base.dbd
|
||||
file but you should copy it from $(EPICS_BASE)/dbd and edit that rather than
|
||||
trying to re-use the R3.13 version from your old application area.</p>
|
||||
|
||||
<h3>Record support</h3>
|
||||
|
||||
<p>Add the following line after all existing #includes</p>
|
||||
<p>Add the following header file inclusion after all other <tt>#include</tt>
|
||||
statements:</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>#include "epicsExport.h"</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>The structure rset is now a typedef so change</p>
|
||||
<p>The <tt>struct rset</tt> is now available as a typedef so change</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>struct rset <i>recordname</i>RSET = { ... };</pre>
|
||||
@@ -224,65 +229,68 @@ R3.13 version from your old application.</p>
|
||||
<pre>rset <i>recordname</i>RSET = { ... };</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>and add the following line after the <q>rset <i>recordname</i>RSET = { ...
|
||||
};</q> definition.</p>
|
||||
<p>and add the following line immediately after that definition:</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>epicsExportAddress(rset,<i>recordname</i>RSET);</pre>
|
||||
<pre>epicsExportAddress(rset, <i>recordname</i>RSET);</pre>
|
||||
</blockquote>
|
||||
|
||||
<h3>Device support</h3>
|
||||
|
||||
<p>Add the following line after all existing #includes</p>
|
||||
<p>Add the following header file inclusion after all other <tt>#include</tt>
|
||||
statements:</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>#include "epicsExport.h"</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>and add the following line after the dset definition <q>struct { ... }
|
||||
dev<i>name</i> = { ... };</q></p>
|
||||
<p>and add the following line after every dset definition <tt>struct { ... }
|
||||
dev<i>name</i> = { ... };</tt> in the file.</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>epicsExportAddress(dset,dev<i>name</i>);</pre>
|
||||
<pre>epicsExportAddress(dset, dev<i>name</i>);</pre>
|
||||
</blockquote>
|
||||
|
||||
<h3>Driver support</h3>
|
||||
|
||||
<p>Add the following line after all existing #includes</p>
|
||||
<p>Add the following header file inclusion after all other <tt>#include</tt>
|
||||
statements:</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>#include "epicsExport.h"</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>and add the following line after the drvet drv<i>name</i> definition</p>
|
||||
<p>and add the following line after the <tt>drvet drv<i>name</i></tt>
|
||||
definition:</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>epicsExportAddress(drvet,drv<i>name</i>);</pre>
|
||||
<pre>epicsExportAddress(drvet, drv<i>name</i>);</pre>
|
||||
</blockquote>
|
||||
|
||||
<h3>Registration code changed</h3>
|
||||
|
||||
<p>Registration code for application specific functions, e.g. subroutine record
|
||||
init and process functions, must been changed as follows</p>
|
||||
init and process functions, must be changed as follows</p>
|
||||
|
||||
<ol>
|
||||
<li>Include the following header files after all existing #includes:
|
||||
<li>Add the following header file inclusions after all other <tt>#include</tt>
|
||||
statements:
|
||||
<blockquote>
|
||||
<pre>#include "registryFunction.h"
|
||||
#include "epicsExport.h"</pre>
|
||||
</blockquote></li>
|
||||
|
||||
<li>Make the application specific functions static functions, e.g.
|
||||
<li>Mark the application specific functions as <tt>static</tt>, e.g.
|
||||
<blockquote>
|
||||
<pre>static long mySubInit(subRecord *precord)
|
||||
static long mySubProcess(subRecord *precord)</pre>
|
||||
</blockquote></li>
|
||||
|
||||
<li>Add an epicsExportFunction statement for each of the functions to be
|
||||
registered, e.g.
|
||||
<li>Add an <tt>epicsRegisterFunction</tt> statement for each of the functions
|
||||
to be registered, e.g.
|
||||
<blockquote>
|
||||
<pre>epicsExportFunction(mySubInit);
|
||||
epicsExportFunction(mySubProcess);</pre>
|
||||
<pre>epicsRegisterFunction(mySubInit);
|
||||
epicsRegisterFunction(mySubProcess);</pre>
|
||||
</blockquote></li>
|
||||
|
||||
<li>Add a function statement for each of the functions to be registered in a
|
||||
@@ -293,6 +301,21 @@ function("mySubProcess")</pre>
|
||||
</blockquote></li>
|
||||
</ol>
|
||||
|
||||
<h3>Additional Headers</h3>
|
||||
|
||||
<p>It may be necessary to add one or more of the following header file
|
||||
inclusions to any C source file if you get warnings or errors from the
|
||||
compilation process. The most likely file missing is errlog.h.</p>
|
||||
|
||||
<ul>
|
||||
<li><tt>#include <stdarg.h></tt></li>
|
||||
<li><tt>#include "errlog.h"</tt></li>
|
||||
<li><tt>#include "errMdef.h"</tt></li>
|
||||
<li><tt>#include "ellLib.h"</tt></li>
|
||||
<li><tt>#include "epicsTypes.h"</tt></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>Modify the Makefiles in <i>top</i>/iocBoot directory.</h3>
|
||||
|
||||
<p>Change <q><tt>include $(TOP)/config/CONFIG_APP</tt></q> to <q><tt>include
|
||||
@@ -351,14 +374,13 @@ $(TOP)/configure/RULES.ioc</tt></q></p>
|
||||
ld < iocCore</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>Change <q><tt>ld < <i>name</i>Lib</tt></q> to
|
||||
<p>The <tt>ld</tt> command in vxWorks 5.5.2 doesn't clean up its standard input
|
||||
stream properly, so we now recommend passing the filename to it as an argument
|
||||
instead. Change <q><tt>ld < <i>name</i>Lib</tt></q> to
|
||||
|
||||
<blockquote>
|
||||
<pre>ld 0,0, "<i>name</i>.munch"</pre>
|
||||
|
||||
<p>(The <tt>ld</tt> command in vxWorks 5.5.2 doesn't clean up its standard
|
||||
input properly, so we now recommend passing the filename to it directly
|
||||
instead.)</p> </blockquote>
|
||||
</blockquote>
|
||||
|
||||
<p>Change <q><tt>cd appbin</tt></q> to <q><tt>cd topbin</tt></q></p>
|
||||
|
||||
@@ -381,58 +403,42 @@ to
|
||||
|
||||
<p>If any source file makes calls to recGbl routines make sure it includes
|
||||
<tt>recGbl.h</tt>. If it doesn't the compiler will issue warning messages and
|
||||
the ioc may issue the message: <q>undefined symbol: _recGblSetSevr</q>.</p>
|
||||
the IOC may not compile properly, or on vxWorks you could see the load-time
|
||||
error: <q>undefined symbol: _recGblSetSevr</q>.</p>
|
||||
|
||||
<h3>Record support changes</h3>
|
||||
|
||||
<p>The steppermotor, scan, and pid records are no longer in base. If these
|
||||
records are not used in your application, comment out references to them in
|
||||
base.dbd. If these record types are used at your site, they should be
|
||||
downloaded and built with base R3.14 by your EPICS administrator. To update
|
||||
the R3.14 location of these record types in your application you must add
|
||||
appropriate module definitions to your application's config/RELEASE file and
|
||||
add <tt>LIBOBJS</tt> definitions to the src Makefile.</p>
|
||||
<p>The steppermotor, scan, and pid records are no longer in base. If these
|
||||
record types are used at your site, their unbundled modules should be downloaded
|
||||
from the EPICS website and built with base R3.14 by your EPICS administrator. To
|
||||
use these record types in your application you must add them to the application
|
||||
just like any other external support module. Most modules provide instructions
|
||||
on how to use them in an IOC application.</p>
|
||||
|
||||
<p>For example add</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>PID = <i>/path/to/modules</i>/pid</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>to config/RELEASE and add</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>LIBOBJS += $(PID_BIN)/pidRecord.o</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>to your application src/Makefile.</p>
|
||||
|
||||
<p>You should consider changing any existing old steppermotor records to the
|
||||
new EPICS motor record module supported by Beamline Controls and Data
|
||||
Acquisition at APS.</p>
|
||||
<p>Consider changing any existing old steppermotor records to the EPICS motor
|
||||
record module supported by the Beamline Controls and Data Acquisition group at
|
||||
APS.</p>
|
||||
|
||||
<h3>RecDynLink.o and devPtSoft changes</h3>
|
||||
|
||||
<p>recDynLink.o and devPtSoft.o are no longer in EPICS base and now exist as
|
||||
separate EPICS modules.You must now add the appropriate module full path
|
||||
definitions to your application config/RELEASE file, and change
|
||||
<tt>LIBOBJS</tt> location definition <tt>$(EPICS_BASE_BIN)</tt> to the module
|
||||
definition bin directory in your application src directory files. See
|
||||
<q>Hardware support changes</q> below for instructions.</p>
|
||||
separate unbundled EPICS modules. As with the three record types described
|
||||
above these must now be built separately and added as support modules to any
|
||||
applications that need them.</p>
|
||||
|
||||
<h3>Hardware support changes</h3>
|
||||
|
||||
<p>All hardware support (dev, drv and dbd files) except soft support has been
|
||||
unbundled from base R3.14. This support includes the files symb.dbd,
|
||||
drvHp1404a.o, drvEpvxiMsg.o, and drvEpvxi.o. If these are not used by your
|
||||
application, comment out references to them in base.dbd.</p>
|
||||
application, remove any references to them from your dbd files.</p>
|
||||
|
||||
<p>Hardware support now exists as separate EPICS modules. The hardware
|
||||
support for your site should be downloaded and built with base R3.14 by your
|
||||
EPICS administrator. You must now add the appropriate module full path
|
||||
definitions to your application config/RELEASE file, and change
|
||||
<tt>LIBOBJS</tt> location from <tt>$(EPICS_BASE_BIN) </tt>to the module bin
|
||||
directory in your application src directory files.</p>
|
||||
<p>Hardware support now exists as separate EPICS modules. The hardware support
|
||||
modules used at your site should be downloaded and built with base R3.14 by your
|
||||
EPICS administrator. To use them, add the appropriate module full path
|
||||
definitions to your application configure/RELEASE file, and make the documented
|
||||
changes to your Makefile to link their binaries into the your IOC
|
||||
executable.</p>
|
||||
|
||||
<p>For example, remove</p>
|
||||
|
||||
@@ -440,7 +446,7 @@ directory in your application src directory files.</p>
|
||||
<pre>LIBOBJS += $(EPICS_BASE_BIN)/symb</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>from baseLIBOBJS and add</p>
|
||||
<p>from <tt>baseLIBOBJS</tt> and add</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>LIBOBJS += $(SYMB_BIN)/symb</pre>
|
||||
@@ -452,20 +458,25 @@ directory in your application src directory files.</p>
|
||||
<pre>SYMB = <full path definition for the built module SYMB></pre>
|
||||
</blockquote>
|
||||
|
||||
<p>into your application config/RELEASE file.</p>
|
||||
<p>into your application configure/RELEASE file.</p>
|
||||
|
||||
<h3>dbLoadtemplate tool changes</h3>
|
||||
|
||||
<p>The host tool dbLoadTemplate has been replace by a new EPICS extension,
|
||||
<p>The host tool dbLoadTemplate has been replace by a new EPICS extension called
|
||||
msi, which should be downloaded and built with base R3.14 by your EPICS
|
||||
administrator. dbLoadTemplate is still supported on iocs. If, in your
|
||||
application, db files are created from template and substitution files you
|
||||
should add the definition</p>
|
||||
administrator. dbLoadTemplate is still supported on IOCs. If the msi executable
|
||||
is not in your default search path and in your application db files are created
|
||||
from template and substitution files, you should add the definition</p>
|
||||
|
||||
<blockquote>
|
||||
<pre>MSI = <full path name to msi executable></pre>
|
||||
</blockquote>
|
||||
|
||||
<p>to your application config/RELEASE file.</p>
|
||||
<p>to your application's configure/RELEASE file.</p>
|
||||
|
||||
<h3>Optional <i>top</i>/configure/CONFIG_SITE changes</h3>
|
||||
|
||||
<p>Review and optionally modify site build settings.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,11 +4,21 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||
<title>Known Problems in R3.14.12</title>
|
||||
<title>Known Problems in R3.14.12.1</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1 style="text-align: center">EPICS Base R3.14.12: Known Problems</h1>
|
||||
<h1 style="text-align: center">EPICS Base R3.14.12.1: Known Problems</h1>
|
||||
|
||||
<p>Any patch files linked below should be applied at the root of the
|
||||
base-3.14.12.1 tree. Download them, then use the GNU Patch program as
|
||||
follows:</p>
|
||||
|
||||
<blockquote><pre>% <b>cd <i>/path/to/</i>base-3.14.12.1</b>
|
||||
% <b>patch -p0 < <i>/path/to/</i>file.patch</b></pre></blockquote>
|
||||
|
||||
<p>The following significant problems have been reported with this
|
||||
version of EPICS Base:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
@@ -3,21 +3,565 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||
<title>EPICS Base R3.14.12 Release Notes</title>
|
||||
<title>EPICS Base R3.14.12.3-rc1 Release Notes</title>
|
||||
</head>
|
||||
|
||||
<body lang="en">
|
||||
<h1 align="center">EPICS Base Release 3.14.12</h1>
|
||||
<h1 align="center">EPICS Base Release 3.14.12.3-rc1</h1>
|
||||
|
||||
<h2 align="center">Changes between 3.14.12.2 and 3.14.12.3</h2>
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h4>Hex literals in CALC expressions</h4>
|
||||
|
||||
<p>In previous releases, CALC expressions could contain hexadecimal literal
|
||||
integers on a target if the OS implementation of strtod() allows them (the
|
||||
vxWorks implementation does not). Now hex literal integers can be used in CALC
|
||||
expressions on all architectures. Hexadecimal floating point literals may have
|
||||
worked on some architectures in the past, but will no longer be accepted.</p>
|
||||
|
||||
<h4>CAS: Added propertyEventMask support</h4>
|
||||
|
||||
<p>Server tools should now be able to detect subscriptions to and send updates
|
||||
for DBE_PROPERTY events, using a casEventMask value returned by the new
|
||||
caServer::propertyEventMask() method.</p>
|
||||
|
||||
<h4>caRepeater now built by default</h4>
|
||||
|
||||
<p>Previously caRepeater was only built for host architectures, so builds for
|
||||
cross-compiled but workstation-type targets like linux-arm did not build it.
|
||||
Explicit exceptions prevent it being built on architectures like vxWorks, RTEMS
|
||||
and iOS which do not support normal executable programs.</p>
|
||||
|
||||
<h4>Array Subroutine (aSub) record type fixes</h4>
|
||||
|
||||
<ul>
|
||||
<li>Changing the number of valid elements in a VALx field now triggers
|
||||
monitors</li>
|
||||
<li>The NEVx fields now post monitors, following the EFLG setting</li>
|
||||
<li>The artificial limit of 10,000,000 array elements has been removed</li>
|
||||
</ul>
|
||||
|
||||
<h4>Problem with NAN values in MLST/ALST fields</h4>
|
||||
|
||||
<p>The ai, ao, calc, calcout, dfanout, sel and sub record types could stop
|
||||
posting monitors if they got NAN values in their MLST or ALST fields. A change
|
||||
has been included so this should no longer be the case.</p>
|
||||
|
||||
<h4>MacOS build defaults changed</h4>
|
||||
|
||||
<p>The default build settings for darwin-x86 targets have been changed to match
|
||||
the latest version of XCode; see configure/os/CONFIG_SITE.Common.darwin-x86
|
||||
if you need to revert back to building with GCC or to include the i386 CPU
|
||||
architecture.</p>
|
||||
|
||||
<h4>Build problem with db dependencies</h4>
|
||||
|
||||
<p>The dependency output for .db and .acf files created by makeDbDepends.pl did
|
||||
not show the directories of the depended files. The makeDbDepends.pl script has
|
||||
been replaced by mkmf.pl for this purpose after modifying it to accept multiple
|
||||
-I include directory options and more than one source file on the command line.
|
||||
The makeDbDepends.pl script has been removed from Base.</p>
|
||||
|
||||
<h4>Native linux-arm builds added</h4>
|
||||
|
||||
<p>The configuration files needed for a linux-arm system to build Base for
|
||||
itself have now been added. Both the Shell and Perl versions of the startup
|
||||
EpicsHostArch scripts now recognize both arm6l and arm7l CPUs and return the
|
||||
generic linux-arm host architecture name for them.</p>
|
||||
|
||||
<h4>New Microblaze Target Architecture</h4>
|
||||
|
||||
<p>A new cross-compiled target architecture is included for the Xilinx
|
||||
Microblaze FPGA soft-core CPU architecture running Linux.</p>
|
||||
|
||||
<h4>Win32 Numeric string to enum/menu/device conversions</h4>
|
||||
|
||||
<p>Microsoft's C run-time library has a bug in the sscanf() function such that
|
||||
the "%n" format specifier does not always work. The string to enum, menu and
|
||||
device conversion functions have been modified to avoid this problem, but a
|
||||
numeric string will no longer be converted properly on any architecture if it
|
||||
has trailing whitespace characters.</p>
|
||||
|
||||
<h4>Launchpad Bugs Resolved</h4>
|
||||
|
||||
<p>The following are links to bugs in the Launchpad bug tracker that have been
|
||||
fixed in this release:</p>
|
||||
|
||||
<ul>
|
||||
<li>999167
|
||||
<a href="https://launchpad.net/bugs/999167">
|
||||
Missing epicsShareFunc for casStatsFetch</a></li>
|
||||
<li>950555
|
||||
<a href="https://launchpad.net/bugs/950555">
|
||||
String substitution removes part of path when linking versioned shared
|
||||
libraries</a></li>
|
||||
<li>907761
|
||||
<a href="https://launchpad.net/bugs/907761">
|
||||
reading only 1st char of link in "long string" ($) syntax fails in read
|
||||
error</a></li>
|
||||
<li>903448
|
||||
<a href="https://launchpad.net/bugs/903448">
|
||||
RHEL5 nss ldap update cause stack size related failure</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h4>Calcout and Seq record timestamps</h4>
|
||||
|
||||
<p>Both the calcout and seq record types were not updating the record's
|
||||
timestamp before calling db_post_events() for some field updates. The calcout
|
||||
record type will now update the record's timestamp before it posts a channel
|
||||
access monitor on the DLYA field; this happens twice during record processing if
|
||||
the ODLY field is larger than 0.</p>
|
||||
|
||||
<p>Timestamps from all seq record monitor events have been wrong since 1995 or
|
||||
earlier, the time being provided was from the last time the record processed.
|
||||
Now the record timestamp will be updated between reading each DOL1..DOLA link
|
||||
and posting the monitor on the associated DO1..DOA field. The VAL field is
|
||||
never given a value by the record processing code, but is used for posting
|
||||
monitors when the alarm status or severity gets updated at the end of record
|
||||
processing. Alarm monitors are now timestamped properly at that time.</p>
|
||||
|
||||
<h4>Comments in iocsh scripts</h4>
|
||||
|
||||
<p>The IOC shell was very particular about comments in previous versions of
|
||||
Base. If the <tt>#</tt> character was indented using white-space characters it
|
||||
had to be followed immediately by a white-space, comma or parenthesis character,
|
||||
and macLib would report errors if the rest of the comment contained any
|
||||
undefined macros. These restrictions have now been removed. The comment
|
||||
character can come from expanding a macro without it having to be followed by
|
||||
white-space, although in this case macLib will still report errors due to
|
||||
undefined or circular macro definitions.</p>
|
||||
|
||||
<h4>MacOS-X: Don't use Ports/Fink unless configured</h4>
|
||||
|
||||
<p>Previous releases would automatically use headers and link to libraries found
|
||||
in the DarwinPorts and Fink installation directories. This is now controlled by
|
||||
entries in the <tt>CONFIG_SITE.darwinCommon.darwinCommon</tt> file in the
|
||||
<tt>configure/os</tt> directory, which are commented out by default. Recent
|
||||
versions of MacOS-X come with an implementation of readline, so those additional
|
||||
code repositories are no longer required.</p>
|
||||
|
||||
<h2 align="center">Changes between 3.14.12.1 and 3.14.12.2</h2>
|
||||
|
||||
<h4>Path for Cap5 loadable library changed</h4>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<p>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 <tt>make rebuild</tt> command. This will rebuild the libCap5.so file and
|
||||
install it into the location appropriate for its Perl version and architecture.</p>
|
||||
|
||||
<h4>Build configurations updated for Apple iOS targets</h4>
|
||||
|
||||
<p>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:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>The default value for IOS_VERSION is now 5.0, edit the setting in
|
||||
<tt>configure/os/CONFIG_SITE.Common.iosCommon</tt> to use an older version.</li>
|
||||
|
||||
<li>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 <tt>CONFIG_SITE.Common.ios-arm</tt> file.</li>
|
||||
|
||||
<li>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 <tt>CONFIG_SITE.Common.ios-arm</tt>
|
||||
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.</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h4>Added <tt>-b</tt> option to dbExpand</h4>
|
||||
|
||||
<p>This turns off monotonic checking of breakpoint tables.</p>
|
||||
|
||||
<h4>Launchpad Bugs Resolved</h4>
|
||||
|
||||
<p>The following are links to bugs in the Launchpad bug tracker that have been
|
||||
fixed in this release:</p>
|
||||
|
||||
<ul>
|
||||
<li>697509
|
||||
<a href="https://launchpad.net/bugs/697509">
|
||||
Thread synchronization issue in libCom/osi/os/WIN32/osdTime.cpp</a></li>
|
||||
<li>697516
|
||||
<a href="https://launchpad.net/bugs/697516">
|
||||
Crash occurs in Com.dll if filetime is before the EPICS epoch </a></li>
|
||||
<li>697517
|
||||
<a href="https://launchpad.net/bugs/697517">
|
||||
WIN32 osdtime should handle the system time change properly</a></li>
|
||||
<li>697519
|
||||
<a href="https://launchpad.net/bugs/697519">
|
||||
The incorrect way to compute the roll-over in WIN32 osdTime.cpp</a></li>
|
||||
<li>736273
|
||||
<a href="https://launchpad.net/bugs/736273">
|
||||
nonstandard c++ mutable ref in cac</a></li>
|
||||
<li>786979
|
||||
<a href="https://launchpad.net/bugs/786979">
|
||||
incorrect ref counting for timer queues</a></li>
|
||||
<li>794749
|
||||
<a href="https://launchpad.net/bugs/794749">
|
||||
3.14.12 caget without -c always requests maximum element count</a></li>
|
||||
<li>816678
|
||||
<a href="https://launchpad.net/bugs/816678">
|
||||
g++ generic thunk generation fails virtual varargs</a></li>
|
||||
<li>831648
|
||||
<a href="https://launchpad.net/bugs/831648">
|
||||
RTEMS dynamically loaded app fails to execute osdTimeRegister</a></li>
|
||||
<li>835138
|
||||
<a href="https://launchpad.net/bugs/835138">
|
||||
Incorrect calculation oss priorities for posix threads</a></li>
|
||||
<li>861214
|
||||
<a href="https://launchpad.net/bugs/861214">
|
||||
epicsThreadOnce crashes in static object destructor on win32</a></li>
|
||||
<li>861627
|
||||
<a href="https://launchpad.net/bugs/861627">
|
||||
RULES.db has incorrect dbExpand flags</a></li>
|
||||
<li>878372
|
||||
<a href="https://launchpad.net/bugs/878372">
|
||||
in-memory channel, ca client subscribe isnt thread safe</a></li>
|
||||
<li>878387
|
||||
<a href="https://launchpad.net/bugs/878387">
|
||||
In memory channel clear fails from put callback function</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>Added database sanity checks to iocInit</h4>
|
||||
|
||||
<p>Two menus may legitimately be modified by users; some checks have been added
|
||||
that run at iocInit and make sure the choices haven't been changed too much for
|
||||
the IOC to function properly:</p>
|
||||
|
||||
<ul>
|
||||
<li><tt>menuConvert</tt> is checked to flag problems with IOCs converted from
|
||||
3.13.x, where the SLOPE choice didn't exist.</p>
|
||||
<li><tt>menuScan</tt> is checked to ensure the three initial choices are still
|
||||
present and that there is at least one periodic scan rate.</li>
|
||||
</ul>
|
||||
|
||||
<h4>Fix various catools issues</h4>
|
||||
|
||||
<p>Array handling in the caget and camonitor programs has been debugged, fixing
|
||||
<a href="https://bugs.launchpad.net/bugs/794749">launchpad bug 794749</a> along
|
||||
with a few other related issues dating back to the addition of variable length
|
||||
array support.</p>
|
||||
|
||||
<h4>Another race condition in errlog cleaned up</h4>
|
||||
|
||||
<p>If it was still busy when the IOC was closed down, the errlog thread could
|
||||
have preempted the exit handler and freed the various internal pvtData mutex and
|
||||
event objects too soon.</p>
|
||||
|
||||
<h4>Top-level make target changes</h4>
|
||||
|
||||
<p>Several make targets have been changed. Note that these can only be used from
|
||||
an application's <top> directory.</p>
|
||||
|
||||
<dl>
|
||||
<dt><code>make uninstall.<arch></code></dt>
|
||||
<dd>Deletes the bin/<arch> and lib/<arch> directories for
|
||||
<arch> only. Note that <arch> does not have to be an
|
||||
architecture that this host is configured to build, it works for any
|
||||
arch.</dd>
|
||||
|
||||
<dt><code>make archuninstall</code></dt>
|
||||
<dd>Deletes the bin/<arch> and lib/<arch> directories for all
|
||||
architectures that this host is configured to build. Should not affect files
|
||||
used for multiple architectures, or for host or target architectures that
|
||||
this host is not configured to build.</dd>
|
||||
|
||||
<dt><code>make uninstall</code></dt>
|
||||
<dd>Does archuninstall and also deletes the other install directories include,
|
||||
db, dbd, doc, html, templates and java. This will affect subsequent builds
|
||||
for other architectures, but it doesn't delete their bin/<arch> or
|
||||
lib/<arch> contents.</dd>
|
||||
|
||||
<dt><code>make realuninstall</code></dt>
|
||||
<dd>Deletes all install directories for all architectures.</dd>
|
||||
|
||||
<dt><code>make distclean</code></dt>
|
||||
<dd>Does realclean realuninstall as before, and also now does a cvsclean,
|
||||
which removes file remnants from CVS operations named <code>.#*</code> and
|
||||
editor backups named <code>*~</code> throughout the source tree.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4>Compress record type</h4>
|
||||
|
||||
<p>This record now posts monitors on its NUSE field whenever its value changes.
|
||||
A new field OUSE was added to support this.</p>
|
||||
|
||||
<h4>Remove C++ build rule for <code>.C</code> files</h4>
|
||||
|
||||
<p>An early convention on Unix systems was to name C++ files with an upper-case
|
||||
extention, <code>.C</code>. This does not work on Windows or MacOS where the
|
||||
filesystems are case-insensitive, and the C++ build rule was causing problems so
|
||||
has been eliminated. Any remaining C++ source files that are still using this
|
||||
convention will have to be renamed, preferably to <code>.cpp</code></p>
|
||||
|
||||
<h4>Support <code>make -s</code> on Windows</h4>
|
||||
|
||||
<p>The flag to silence build output did not work on some Windows architecture
|
||||
combinations. This has now been fixed.</p>
|
||||
|
||||
<h4>iocLogServer now supports logrotate</h4>
|
||||
|
||||
<p>The feature in the iocLogServer that closed and reopened the logfile used to
|
||||
ignore the SIGHUP signal when the log filename did not change. This has now been
|
||||
changed so these logfiles can be used with the standard Linux logrotate
|
||||
package.</p>
|
||||
|
||||
|
||||
<h2 align="center">Changes between 3.14.12 and 3.14.12.1</h2>
|
||||
|
||||
<p>This release only contains changes that fix bugs or add build configuration
|
||||
files for new or updated target architectures. No functionality has been
|
||||
changed, and as this is a patch release the software has not gone through as
|
||||
rigorous a testing regime as it does for a normal minor release.</p>
|
||||
|
||||
<h4>Launchpad Bugs Resolved</h4>
|
||||
|
||||
<p>The following are links to bugs in the Launchpad bug tracker that have been
|
||||
fixed in this release:</p>
|
||||
|
||||
<ul>
|
||||
<li>693534
|
||||
<a href="https://launchpad.net/bugs/693534">
|
||||
errlog causes crash on IOC exit</a></li>
|
||||
<li>701673
|
||||
<a href="https://launchpad.net/bugs/701673">
|
||||
Large array problem in 3.14.12</a></li>
|
||||
<li>717252
|
||||
<a href="https://launchpad.net/bugs/771252">
|
||||
local caput causes ioc crash on win32</a></li>
|
||||
<li>750549
|
||||
<a href="https://launchpad.net/bugs/750549 ">
|
||||
epicsTime has non-portable c++ static initialization</a></li>
|
||||
<li>753137
|
||||
<a href="https://launchpad.net/bugs/753137">
|
||||
Makefile dependency checking of database files is broken</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>New/Updated target architectures</h4>
|
||||
|
||||
<p>The following target architectures have been added or updated:</p>
|
||||
|
||||
<dl>
|
||||
<dt>vxWorks-mpc8548</dt>
|
||||
<dt>vxWorks-mpc8548-debug</dt>
|
||||
<dd style="margin-bottom: 1ex">This PowerPC CPU is used on the Emerson MVME4100
|
||||
VME CPU board (from Ernest Williams, SLAC).</dd>
|
||||
|
||||
<dt>vxWorks-ppc32</dt>
|
||||
<dt>vxWorks-ppc32sf</dt>
|
||||
<dt>vxWorks-ppc32-debug</dt>
|
||||
<dt>vxWorks-ppc32sf-debug</dt>
|
||||
<dd style="margin-bottom: 1ex">New generic 32-bit PowerPC targets for vxWorks
|
||||
6.x, using hardware or software floating-point. These targets can be used
|
||||
instead of the CPU-specific ppc603, ppc604, mpc8540 and mpc8548 targets (and
|
||||
their _long alternatives, these targets are all compiled with the -mlongcall
|
||||
flag) to reduce the number of distinct build targets needed when supporting
|
||||
multiple PowerPC board types.</dd>
|
||||
|
||||
<dt>ios-386</dt>
|
||||
<dt>ios-arm</dt>
|
||||
<dd style="margin-bottom: 1ex">Updated for iOS 4.3, which is now the default OS
|
||||
version (from Tom Palaia, ORNL).</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4>IOCSH_STARTUP_SCRIPT environment variable</h4>
|
||||
|
||||
<p>The function <tt>iocsh(const char *pathname)</tt> now sets the environment
|
||||
variable <tt>IOCSH_STARTUP_SCRIPT</tt> to the value of its pathname
|
||||
argument before it starts executing the script commands.</p>
|
||||
|
||||
<h4>RTEMS-mvme5500</h4>
|
||||
|
||||
<p>This target now automatically links binary files with the bspExt library, and
|
||||
adds the extension <tt>.elf</tt> to their filenames, matching the other mvme
|
||||
targets.</p>
|
||||
|
||||
<h4>RTEMS Network Buffer Configuration</h4>
|
||||
|
||||
<p>Add the macros <tt>RTEMS_NETWORK_CONFIG_MBUF_SPACE</tt> and
|
||||
<tt>RTEMS_NETWORK_CONFIG_MBUF_SPACE</tt> to rtems_netconfig.c to allow
|
||||
customization of the network buffer space allocated. The configuration files
|
||||
for the RTEMS-mvme3100, RTEMS-mvme5500 and RTEMS-beatnik targets now default to
|
||||
allocating 2MB for mbufs and 5MB for clusters; other RTEMS targets will continue
|
||||
to use 180KB and 350KB rspectively.</p>
|
||||
|
||||
<h4>RTEMS TFTP filesystem</h4>
|
||||
|
||||
<p>Use the new mount API to initialize TFTP on newer RTEMS versions.</p>
|
||||
|
||||
<h4>C++ build issues on older Solaris compiler</h4>
|
||||
|
||||
<p>Dirk Zimoch reported some problems building with an older SUNWspro C++
|
||||
compiler which have been resolved where possible.</p>
|
||||
|
||||
<h4>FreeBSD broadcast problem</h4>
|
||||
|
||||
<p>The <tt>ifreq_size</tt> macro in freebsd/osdsock.h must be different in BSD
|
||||
4.4.</p>
|
||||
|
||||
<h4>Thread exit synchronization</h4>
|
||||
|
||||
<p>When finished waiting for a thread to exit, signal the event in case other
|
||||
threads are waiting also.</p>
|
||||
|
||||
<h4>Win32 osdTime provider fix</h4>
|
||||
|
||||
<p>Jeff Hill fixed the last time compare in PLL drift factor update loop.</p>
|
||||
|
||||
<h4>Errlog can lose messages</h4>
|
||||
|
||||
<p>Systems that generate large numbers of errlog messages or have a slow message
|
||||
listener could overwrite older messages in the message buffer after the buffer
|
||||
wraps. This also corrects and annotates the test code to describe what's being
|
||||
checked.</p>
|
||||
|
||||
<p>When the IOC is shutting down, the errlog thread should process all queued
|
||||
messages before it quits.</p>
|
||||
|
||||
<h4>Back-slash escapes for Win32</h4>
|
||||
|
||||
<p>Stephen Norum pointed out the need for various Perl scripts to escape
|
||||
back-slash characters in Windows file paths.</p>
|
||||
|
||||
<h4>catools on Windows</h4>
|
||||
|
||||
<p>Windows 7 does not properly support line-mode buffering of stdio streams; the
|
||||
catools programs used this mode to ensure that they could be used in pipelines,
|
||||
but in Windows 7 they became fully buffered and are not flushed when the program
|
||||
exits, so buffering of stdout has now been completely disabled on Windows.</p>
|
||||
|
||||
|
||||
<h2 align="center">Changes between 3.14.11 and 3.14.12</h2>
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h4>Launchpad Bugs Resolved</h4>
|
||||
|
||||
<p>The following are links to bugs in the Launchpad bug tracker that have been
|
||||
fixed in this release:</p>
|
||||
|
||||
<ul>
|
||||
<li>541258
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/541258">
|
||||
compiler warnings in base</a></li>
|
||||
<li>541264
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/541264">
|
||||
CA subscription element count is fixed - eliminates compressed video
|
||||
option</a></li>
|
||||
<li>541331
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/541331">
|
||||
Several devLib routines don't use vector table</a></li>
|
||||
<li>541391
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/541391">
|
||||
when subscribing for zero elements, array element count should be
|
||||
dynamic</a></li>
|
||||
<li>545385
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/545385">
|
||||
SIGFPE calculating epicsNAN, epicsINF</a></li>
|
||||
<li>546991
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/546991">
|
||||
prev. value fields not initialized in init_record</a></li>
|
||||
<li>551909
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/551909">
|
||||
macExpandString writes out of boundary</a></li>
|
||||
<li>552803
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/552803">
|
||||
Compress record segfaults on ALG (algorithm) change</a></li>
|
||||
<li>571121
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/571121">
|
||||
Perl issue compiling with INSTALL_LOCATION set</a></li>
|
||||
<li>572589
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/572589">
|
||||
Make dbl emit empty strings for non-existent fields</a></li>
|
||||
<li>595154
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/595154">
|
||||
C++ errors building base using cygwin1.7</a></li>
|
||||
<li>595240
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/595240">
|
||||
C code uses C++ keywords as variable names</a></li>
|
||||
<li>595242
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/595242">
|
||||
C code uses C++ "//" style comments</a></li>
|
||||
<li>615916
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/615916">
|
||||
Bug in RULES.Db breaks parallel make when using MSI</a></li>
|
||||
<li>625034
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/625034">
|
||||
Remove compiler checks for VMS in src/toolsComm/flex</a></li>
|
||||
<li>626848
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/626848">
|
||||
Build with GNU make 3.82 fails when installing libraries</a></li>
|
||||
<li>626859
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/626859">
|
||||
RTEMS build does not create .d dependancy files</a></li>
|
||||
<li>627511
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/627511">
|
||||
MSVC linker fails if input lib dirs start with forward slash</a></li>
|
||||
<li>644263
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/644263">
|
||||
EPICS softIOC always dies in response to SIGHUP</a></li>
|
||||
<li>650000
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/650000">
|
||||
caput tool won't write to mbbo w/o state strings</a></li>
|
||||
<li>663875
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/663875">
|
||||
NTP broadcasts break NTP synchronization (RTEMS)</a></li>
|
||||
<li>667384
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/667384">
|
||||
are the request and response bytes pending reversed in casr?</a></li>
|
||||
<li>680702
|
||||
<a href="https://bugs.launchpad.net/epics-base/+bug/680702">
|
||||
calc and calcout record get_precision bug</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>Support for Cygwin 1.7</h4>
|
||||
|
||||
<p>Base can now built with shared libraries on Cygwin 1.7.x, although only with
|
||||
the gcc-3 compiler. Cygwin 1.5.x only works when compiled without shared
|
||||
libraries (set <tt>STATIC_BUILD=YES</tt> and <tt>SHARED_LIBRARIES=NO</tt> in
|
||||
<tt>configure/CONFIG_SITE</tt>). There is code in Base now that depends on the
|
||||
Cygwin version, so make sure that you rebuild Base if you upgrade your Cygwin
|
||||
installation.</p>
|
||||
|
||||
<h4>epicsEvent</h4>
|
||||
|
||||
<p>epicsEvent is now explicitly required to act as a simple binary semaphore.
|
||||
A single epicsEventSignal call must awaken just one thread when multiple
|
||||
threads are waiting for the event. A test that checks for this has been
|
||||
added to epicsEventTest and the Application Developer's Guide has been updated
|
||||
to describe this requirement.</p>
|
||||
|
||||
<h4>Enable array puts to subArray records</h4>
|
||||
|
||||
<p>It is now possible to put an array into the VAL field of a soft channel
|
||||
subArray record whose INP field is empty. Processing the record then causes the
|
||||
sub-array extraction process to be done on the current VAL array. This can be
|
||||
used to feed a sequence of values into some other record (set INDX=1 and
|
||||
NELM=MALM and read one element out of the VAL field each time).</p>
|
||||
|
||||
<h4>Added windows-x64 target</h4>
|
||||
|
||||
<p>64-bit binaries for Microsoft Windows platforms can now be built using the
|
||||
target architecture windows-x64, which is also a valid cross-build target for a
|
||||
win32-x86 host. We do not currently support 64-bit MinGW or Cygwin builds.</p>
|
||||
win32-x86 host. We do not currently support or recommend trying to use 64-bit
|
||||
builds on MinGW or Cygwin.</p>
|
||||
|
||||
<h4>Deleted osf-alpha targets</h4>
|
||||
|
||||
@@ -84,8 +628,8 @@ connections over ssh. See the CA reference manual for more details.</p>
|
||||
<h4>Record Types aai and aao</h4>
|
||||
|
||||
<ul>
|
||||
<li>Fixed bug in memory allocation that caused crashes when linking other records
|
||||
to aai or aao.</li>
|
||||
<li>Fixed bug in memory allocation that caused crashes when linking other
|
||||
records to aai or aao.</li>
|
||||
<li>Fixed bug where NELM was modified instead of NORD.</li>
|
||||
<li>Added Soft Channel device support.</li>
|
||||
<li>Added SIOL link and proper simulation mode for Soft Channel support.</li>
|
||||
@@ -113,19 +657,20 @@ macro <tt>NO_DEVLIB_COMPAT</tt> is defined.</li>
|
||||
<li>The "virtual os" table was renamed from <tt>pdevLibVirtualOS</tt> to
|
||||
<tt>pdevLibVME</tt> reflecting the fact that other bus types will need seperate
|
||||
tables.</li>
|
||||
<li>The "virtual os" table API has been moved to a seperate header file,
|
||||
<li>The "virtual os" table API has been moved to a different header file,
|
||||
<tt>devLibVMEImpl.h</tt>.</li>
|
||||
</ul>
|
||||
|
||||
<h4>DTYP and INP/OUT order</h4>
|
||||
|
||||
<p>The fields DTYP and INP/OUT can now be specified in any order.</p>
|
||||
<p>The fields DTYP and INP/OUT can now be specified in any order in a database
|
||||
instance (.db) file.</p>
|
||||
|
||||
<h4>Rewrite epicsThreadOnce()</h4>
|
||||
|
||||
<p>Michael Davidsaver suggested a better implementation of epicsThreadOnce()
|
||||
which makes it possible for all architectures to detect recursive initialization
|
||||
functions. This change also renames the routines to remove the original macro
|
||||
functions. This change also renames the routines to remove the original macro,
|
||||
and fixes some questionable usage in places.</p>
|
||||
|
||||
<h4>Many Record Types</h4>
|
||||
@@ -136,7 +681,7 @@ giving correct initial monitor behavior in some circumstances.</p>
|
||||
|
||||
<h4>Compress Record Type</h4>
|
||||
|
||||
<p>Fixed crash when ALG (algorithm) was changed to Average at runtime.</p>
|
||||
<p>Fixed a crash when ALG (algorithm) was changed to Average at runtime.</p>
|
||||
|
||||
<h4>configure/RELEASE Enhancements</h4>
|
||||
|
||||
@@ -148,9 +693,11 @@ definition is expanded. The variable <tt>EPICS_HOST_ARCH</tt> can now be used,
|
||||
but target-architecture-specific values must be set in a target-specific
|
||||
<tt>configure/RELEASE</tt> file such as <tt>RELEASE.Common.linux-x86</tt>.</p>
|
||||
|
||||
<h4>VxWorks 6.7 support</h4>
|
||||
<h4>VxWorks 6.7 and 6.8 support</h4>
|
||||
|
||||
<p>Added build support for the latest Wind River release.</p>
|
||||
<p>Added build support for the latest Wind River releases. This does not
|
||||
include the ability to run on SMP vxWorks systems though, those will need some
|
||||
more extensive modifications.</p>
|
||||
|
||||
<h4>RTEMS 4.10 support</h4>
|
||||
|
||||
@@ -162,7 +709,7 @@ is used.</p>
|
||||
|
||||
<p>Changes to the way in which we generate header dependency files, which are
|
||||
now named with a <tt>.d</tt> suffix instead of <tt>.depends</tt>. We now use
|
||||
the compiler to generate these if possible, and create them in the
|
||||
the compiler to generate these where possible, and create them in the
|
||||
<tt>O.$(T_A)</tt> directory.</p>
|
||||
|
||||
<h4>Installed file permissions</h4>
|
||||
@@ -184,7 +731,11 @@ server.</p>
|
||||
readline; some need <tt>-lcurses</tt>, others <tt>-lncurses</tt> and others
|
||||
don't require either. The <tt>configure/os/CONFIG_SITE.Common.linux-*</tt>
|
||||
files now make this configuration easy to choose between different settings for
|
||||
the <tt>COMMANDLINE_LIBRARY</tt> variable.</p>
|
||||
the <tt>COMMANDLINE_LIBRARY</tt> variable. If your build fails as it's trying
|
||||
to create the <tt>antelope</tt> binary in the Base directory
|
||||
<tt>src/toolsComm/antelope/O.<i>arch</i></tt> this is almost certainly the
|
||||
problem. You will need to do a <tt>make rebuild</tt> from the top of Base after
|
||||
fixing the setting of <tt>COMMANDLINE_LIBRARY</tt>.</p>
|
||||
|
||||
<h4>CA Command Line Tools Changes</h4>
|
||||
|
||||
|
||||
@@ -12,15 +12,14 @@ include $(TOP)/configure/CONFIG
|
||||
|
||||
INC += epicsRtemsInitHooks.h
|
||||
|
||||
SRCS += rtems_init.c
|
||||
SRCS += rtems_config.c
|
||||
SRCS += rtems_netconfig.c
|
||||
SRCS += rtems_util.c
|
||||
SRCS += setBootConfigFromNVRAM.c
|
||||
SRCS += epicsRtemsInitHookPre.c
|
||||
SRCS += epicsRtemsInitHookPost.c
|
||||
rtemsCom_SRCS += rtems_init.c
|
||||
rtemsCom_SRCS += rtems_config.c
|
||||
rtemsCom_SRCS += rtems_netconfig.c
|
||||
rtemsCom_SRCS += rtems_util.c
|
||||
rtemsCom_SRCS += setBootConfigFromNVRAM.c
|
||||
rtemsCom_SRCS += epicsRtemsInitHookPre.c
|
||||
rtemsCom_SRCS += epicsRtemsInitHookPost.c
|
||||
|
||||
LIBRARY_RTEMS = rtemsCom
|
||||
LIBRARY_SRCS = $(SRCS) $(BUILD_ARCHS)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
@@ -173,7 +173,7 @@ initialize_local_filesystem(char **argv)
|
||||
#if __RTEMS_MAJOR__>4 || \
|
||||
(__RTEMS_MAJOR__==4 && __RTEMS_MINOR__>9) || \
|
||||
(__RTEMS_MAJOR__==4 && __RTEMS_MINOR__==9 && __RTEMS_REVISION__==99)
|
||||
static int
|
||||
int
|
||||
nfsMount(char *uidhost, char *path, char *mntpoint)
|
||||
{
|
||||
int devl = strlen(uidhost) + strlen(path) + 2;
|
||||
@@ -209,7 +209,17 @@ initialize_remote_filesystem(char **argv, int hasLocalFilesystem)
|
||||
{
|
||||
#ifdef OMIT_NFS_SUPPORT
|
||||
printf ("***** Initializing TFTP *****\n");
|
||||
#if __RTEMS_MAJOR__>4 || \
|
||||
(__RTEMS_MAJOR__==4 && __RTEMS_MINOR__>9) || \
|
||||
(__RTEMS_MAJOR__==4 && __RTEMS_MINOR__==9 && __RTEMS_REVISION__==99)
|
||||
mount_and_make_target_path(NULL,
|
||||
"/TFTP",
|
||||
RTEMS_FILESYSTEM_TYPE_TFTPFS,
|
||||
RTEMS_FILESYSTEM_READ_WRITE,
|
||||
NULL);
|
||||
#else
|
||||
rtems_bsdnet_initialize_tftp_filesystem ();
|
||||
#endif
|
||||
if (!hasLocalFilesystem) {
|
||||
char *path;
|
||||
int pathsize = 200;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2002 The University of Saskatchewan
|
||||
* 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.
|
||||
\*************************************************************************/
|
||||
/*
|
||||
@@ -93,6 +92,17 @@ static struct rtems_bsdnet_ifconfig bsp_driver_config = {
|
||||
# define MY_DO_BOOTP rtems_bsdnet_do_bootp
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Allow site- and BSP-specific network buffer space configuration.
|
||||
* The macro values are specified in KBytes.
|
||||
*/
|
||||
#ifndef RTEMS_NETWORK_CONFIG_MBUF_SPACE
|
||||
# define RTEMS_NETWORK_CONFIG_MBUF_SPACE 180
|
||||
#endif
|
||||
#ifndef RTEMS_NETWORK_CONFIG_CLUSTER_SPACE
|
||||
# define RTEMS_NETWORK_CONFIG_CLUSTER_SPACE 350
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Network configuration
|
||||
*/
|
||||
@@ -104,8 +114,8 @@ struct rtems_bsdnet_config rtems_bsdnet_config = {
|
||||
/* EPICS scan thread. */
|
||||
/* If non-zero then the network daemons will run */
|
||||
/* at this *RTEMS* priority */
|
||||
180*1024, /* MBUF space */
|
||||
350*1024, /* MBUF cluster space */
|
||||
RTEMS_NETWORK_CONFIG_MBUF_SPACE*1024,
|
||||
RTEMS_NETWORK_CONFIG_CLUSTER_SPACE*1024,
|
||||
NULL, /* Host name */
|
||||
MY_DOMAINNAME, /* Domain name */
|
||||
};
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2008 UChicago Argonne LLC, as Operator of Argonne
|
||||
* National Laboratory.
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <fcntl.h> /* for open() */
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <rtems/rtems_bsdnet.h>
|
||||
#include <bsp.h>
|
||||
#include <string.h>
|
||||
@@ -125,12 +133,13 @@ motScriptParm(const char *mot_script_boot, char parm)
|
||||
int l;
|
||||
|
||||
while (*mot_script_boot != '\0') {
|
||||
if (isspace(*mot_script_boot)
|
||||
if (isspace(*(unsigned char *)mot_script_boot)
|
||||
&& (*(mot_script_boot+1) == '-')
|
||||
&& (*(mot_script_boot+2) == parm)) {
|
||||
mot_script_boot += 3;
|
||||
cp = mot_script_boot;
|
||||
while ((*mot_script_boot != '\0') && !isspace(*mot_script_boot))
|
||||
while ((*mot_script_boot != '\0') &&
|
||||
!isspace(*(unsigned char *)mot_script_boot))
|
||||
mot_script_boot++;
|
||||
l = mot_script_boot - cp;
|
||||
ret = malloc(l+1);
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
/* share/src/as/asDbLib.c */
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
|
||||
* Copyright (c) 2012 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.
|
||||
\*************************************************************************/
|
||||
/* Author: Marty Kraimer Date: 02-11-94*/
|
||||
@@ -69,18 +67,23 @@ static long asDbAddRecords(void)
|
||||
|
||||
int epicsShareAPI asSetFilename(const char *acf)
|
||||
{
|
||||
if(pacf) free ((void *)pacf);
|
||||
if(acf) {
|
||||
pacf = calloc(1,strlen(acf)+1);
|
||||
if(!pacf) {
|
||||
errMessage(0,"asSetFilename calloc failure");
|
||||
} else {
|
||||
strcpy(pacf,acf);
|
||||
}
|
||||
if (pacf)
|
||||
free (pacf);
|
||||
if (acf) {
|
||||
pacf = calloc(1, strlen(acf)+1);
|
||||
if (!pacf) {
|
||||
errMessage(0, "asSetFilename calloc failure");
|
||||
} else {
|
||||
strcpy(pacf, acf);
|
||||
if (*pacf != '/' && !strchr(pacf, ':')) {
|
||||
printf("asSetFilename: Warning - relative paths won't usually "
|
||||
"work\n");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
pacf = NULL;
|
||||
pacf = NULL;
|
||||
}
|
||||
return(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int epicsShareAPI asSetSubstitutions(const char *substitutions)
|
||||
|
||||
@@ -22,7 +22,8 @@ DBD += bptTypeKdegF.dbd
|
||||
|
||||
PROD_LIBS = Com
|
||||
PROD_HOST += makeBpt
|
||||
makeBpt_SRCS=makeBpt
|
||||
|
||||
makeBpt_SRCS = makeBpt
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ $Date$</span></small></p>
|
||||
<li><a href="#Network">IP Network Administration Background
|
||||
Information</a></li>
|
||||
<li><a href="#port">IP port numbers</a></li>
|
||||
<li><a href="#firewall">Firewalls</a></li>
|
||||
<li><a href="#Environmen">WAN Environment</a></li>
|
||||
<li><a href="#Disconnect">Disconnect Time Out Interval / Server Beacon
|
||||
Period</a></li>
|
||||
@@ -245,7 +246,7 @@ $Date$</span></small></p>
|
||||
|
||||
<h3>Why Reconfigure Channel Access</h3>
|
||||
|
||||
<p>Typically reasons to reconfigure EPICS Channel Access:</p>
|
||||
<p>Typical reasons to reconfigure EPICS Channel Access:</p>
|
||||
<ul>
|
||||
<li>Two independent control systems must share a network without fear of
|
||||
interaction</li>
|
||||
@@ -451,6 +452,32 @@ different port numbers then an extended syntax may be used with the
|
||||
EPICS_CA_ADDR_LIST environment variable. See <a href="#Environmen">WAN
|
||||
Environment</a> below.</p>
|
||||
|
||||
<h3><a name="firewall">Firewalls</a></h3>
|
||||
|
||||
<p>If you want channel access clients on a machine to be able to see
|
||||
beacons and replies to broadcast PV search requests you need to permit
|
||||
inbound UDP packets with source port EPICS_CA_SERVER_PORT (default is 5064)
|
||||
or destination port EPICS_CA_REPEATER_PORT (default is 5065). On systems
|
||||
using iptables this can be accomplished by rules like</p>
|
||||
|
||||
<pre>
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --sport 5064 -j ACCEPT
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --dport 5065 -j ACCEPT
|
||||
</pre>
|
||||
|
||||
<p>If you want channel access servers (e.g. "soft IOCs") on a machine to be
|
||||
able to see clients you need to permit inbound TCP or UDP packets with source
|
||||
port EPICS_CA_SERVER_PORT (default is 5064). On systems using iptables this
|
||||
can be accomplished by rules like</p>
|
||||
|
||||
<pre>
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --dport 5064 -j ACCEPT
|
||||
-A INPUT -s 192.168.0.0/22 -p tcp --dport 5064 -j ACCEPT
|
||||
</pre>
|
||||
|
||||
<p>In all cases the "-s 192.168.0.0/22" specifies the range of addresses from
|
||||
which you wish to accept packets.</p>
|
||||
|
||||
<h3><a name="Environmen">WAN Environment</a></h3>
|
||||
|
||||
<p>When the CA client library connects a channel it must first determine the IP
|
||||
@@ -1295,7 +1322,7 @@ the output.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>-s</td>
|
||||
<td>Get value as string (may honour server-side precision)</td>
|
||||
<td>Get value as string (honors server-side precision)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>-lx</td>
|
||||
@@ -1439,7 +1466,7 @@ the output.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>-s</td>
|
||||
<td>Get value as string (may honour server-side precision)</td>
|
||||
<td>Get value as string (honors server-side precision)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>-lx</td>
|
||||
@@ -4332,7 +4359,7 @@ that use ca_context_destroy).</p>
|
||||
<p><a href="#ca_context_destroy">ca_context_destroy</a>()</p>
|
||||
|
||||
<h3><code><a name="ca_dump_dbr">ca_dump_dbr()</a></code></h3>
|
||||
<pre>void ca_dump_dbr (chtype TYPE, unsigned COUNT, const void * PDBR);</pre>
|
||||
<code><pre>void ca_dump_dbr (chtype TYPE, unsigned COUNT, const void * PDBR);</pre></code>
|
||||
|
||||
<h4>Description</h4>
|
||||
|
||||
|
||||
@@ -91,14 +91,19 @@ PROD_LIBS = ca Com
|
||||
# needed when its an object library build
|
||||
PROD_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||
|
||||
PROD_HOST += caRepeater catime acctst caConnTest casw caEventRate
|
||||
OBJS_IOC_vxWorks += catime acctst caConnTest casw caEventRate
|
||||
PROD_DEFAULT += caRepeater catime acctst caConnTest casw caEventRate
|
||||
PROD_vxWorks = -nil-
|
||||
PROD_RTEMS = -nil-
|
||||
PROD_iOS = -nil-
|
||||
|
||||
OBJS_vxWorks = catime acctst caConnTest casw caEventRate acctstRegister
|
||||
|
||||
caRepeater_SRCS = caRepeater.cpp
|
||||
catime_SRCS = catimeMain.c catime.c
|
||||
acctst_SRCS = acctstMain.c acctst.c
|
||||
catime_SRCS = catimeMain.c catime.c
|
||||
acctst_SRCS = acctstMain.c acctst.c
|
||||
caEventRate_SRCS = caEventRateMain.cpp caEventRate.cpp
|
||||
casw_SRCS = casw.cpp
|
||||
caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
|
||||
caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
|
||||
|
||||
casw_SYS_LIBS_solaris = socket
|
||||
|
||||
|
||||
257
src/ca/acctst.c
257
src/ca/acctst.c
@@ -10,6 +10,10 @@
|
||||
|
||||
/*
|
||||
* CA regression test
|
||||
* Authors:
|
||||
* Jeff Hill
|
||||
* Murali Shankar - initial versions of verifyMultithreadSubscr
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -26,6 +30,8 @@
|
||||
*/
|
||||
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
|
||||
#include "epicsAssert.h"
|
||||
#include "epicsMutex.h"
|
||||
#include "epicsEvent.h"
|
||||
#include "epicsTime.h"
|
||||
#include "dbDefs.h"
|
||||
#include "envDefs.h"
|
||||
@@ -2719,6 +2725,186 @@ void fdRegCB ( void * parg, int fd, int opened )
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
char m_chanName[100u];
|
||||
struct ca_client_context * m_pCtx;
|
||||
chid m_chan;
|
||||
epicsMutexId m_mutex;
|
||||
epicsEventId m_testCompleteEvent;
|
||||
epicsEventId m_threadExitEvent;
|
||||
size_t m_nUpdatesReceived;
|
||||
size_t m_nUpdatesRequired;
|
||||
int m_testInitiated;
|
||||
int m_testComplete;
|
||||
unsigned m_interestLevel;
|
||||
} MultiThreadSubscrTest;
|
||||
|
||||
static void testMultithreadSubscrSubscrCallback
|
||||
( struct event_handler_args eha )
|
||||
{
|
||||
const epicsEventId firstUpdateEvent = ( epicsEventId ) eha.usr;
|
||||
epicsEventSignal ( firstUpdateEvent );
|
||||
}
|
||||
|
||||
static void testMultithreadSubscrCreateSubscr ( void * pParm )
|
||||
{
|
||||
static unsigned nElem = 0;
|
||||
int testComplete = FALSE;
|
||||
evid id;
|
||||
epicsEventId firstUpdateEvent;
|
||||
epicsEventWaitStatus eventWaitStatus;
|
||||
MultiThreadSubscrTest * const pMultiThreadSubscrTest =
|
||||
( MultiThreadSubscrTest * ) pParm;
|
||||
|
||||
/* this is required for the ca_flush below to work correctly */
|
||||
int status = ca_attach_context ( pMultiThreadSubscrTest->m_pCtx );
|
||||
verify ( status == ECA_NORMAL );
|
||||
firstUpdateEvent = epicsEventMustCreate ( epicsEventEmpty );
|
||||
verify ( firstUpdateEvent );
|
||||
status = ca_create_subscription (
|
||||
DBR_TIME_LONG,
|
||||
nElem,
|
||||
pMultiThreadSubscrTest->m_chan,
|
||||
DBE_VALUE,
|
||||
testMultithreadSubscrSubscrCallback,
|
||||
firstUpdateEvent,
|
||||
& id );
|
||||
verify ( status == ECA_NORMAL );
|
||||
status = ca_flush_io ();
|
||||
verify ( status == ECA_NORMAL );
|
||||
/* wait for first update */
|
||||
eventWaitStatus = epicsEventWaitWithTimeout (
|
||||
firstUpdateEvent, 60.0 * 10 );
|
||||
verify ( eventWaitStatus == epicsEventWaitOK );
|
||||
epicsEventDestroy ( firstUpdateEvent );
|
||||
status = ca_clear_subscription ( id );
|
||||
verify ( status == ECA_NORMAL );
|
||||
epicsMutexMustLock ( pMultiThreadSubscrTest->m_mutex );
|
||||
pMultiThreadSubscrTest->m_nUpdatesReceived++;
|
||||
testComplete = ( pMultiThreadSubscrTest->m_nUpdatesReceived ==
|
||||
pMultiThreadSubscrTest->m_nUpdatesRequired );
|
||||
pMultiThreadSubscrTest->m_testComplete = testComplete;
|
||||
epicsMutexUnlock ( pMultiThreadSubscrTest->m_mutex );
|
||||
if ( testComplete ) {
|
||||
epicsEventSignal ( pMultiThreadSubscrTest->m_testCompleteEvent );
|
||||
}
|
||||
}
|
||||
|
||||
void testMultithreadSubscrConnHandler ( struct connection_handler_args args )
|
||||
{
|
||||
MultiThreadSubscrTest * const pMultiThreadSubscrTest =
|
||||
( MultiThreadSubscrTest * ) ca_puser ( args.chid );
|
||||
epicsMutexMustLock ( pMultiThreadSubscrTest->m_mutex );
|
||||
if ( !pMultiThreadSubscrTest->m_testInitiated &&
|
||||
args.op == CA_OP_CONN_UP ) {
|
||||
int i;
|
||||
pMultiThreadSubscrTest->m_testInitiated = TRUE;
|
||||
for ( i = 0; i < pMultiThreadSubscrTest->m_nUpdatesRequired; i++ ) {
|
||||
char threadname[64];
|
||||
epicsThreadId threadId;
|
||||
sprintf(threadname, "testSubscr%06u", i);
|
||||
threadId = epicsThreadCreate ( threadname,
|
||||
epicsThreadPriorityMedium,
|
||||
epicsThreadGetStackSize(epicsThreadStackSmall),
|
||||
testMultithreadSubscrCreateSubscr,
|
||||
pMultiThreadSubscrTest );
|
||||
verify ( threadId );
|
||||
}
|
||||
}
|
||||
epicsMutexUnlock ( pMultiThreadSubscrTest->m_mutex );
|
||||
}
|
||||
|
||||
void testMultithreadSubscr ( void * pParm )
|
||||
{
|
||||
MultiThreadSubscrTest * const pMultiThreadSubscrTest =
|
||||
( MultiThreadSubscrTest * ) pParm;
|
||||
int status;
|
||||
unsigned i;
|
||||
|
||||
status = ca_context_create ( ca_enable_preemptive_callback );
|
||||
verify ( status == ECA_NORMAL );
|
||||
pMultiThreadSubscrTest->m_pCtx = ca_current_context ();
|
||||
verify ( pMultiThreadSubscrTest->m_pCtx );
|
||||
status = ca_create_channel (
|
||||
pMultiThreadSubscrTest->m_chanName,
|
||||
testMultithreadSubscrConnHandler,
|
||||
pMultiThreadSubscrTest,
|
||||
CA_PRIORITY_MIN,
|
||||
& pMultiThreadSubscrTest->m_chan );
|
||||
verify ( status == ECA_NORMAL );
|
||||
|
||||
showProgressBegin ( "verifyMultithreadSubscr",
|
||||
pMultiThreadSubscrTest->m_interestLevel );
|
||||
i = 0;
|
||||
while ( TRUE ) {
|
||||
int success = FALSE;
|
||||
epicsEventWaitStatus eventWaitStatus;
|
||||
epicsMutexMustLock ( pMultiThreadSubscrTest->m_mutex );
|
||||
success = pMultiThreadSubscrTest->m_testComplete;
|
||||
epicsMutexUnlock ( pMultiThreadSubscrTest->m_mutex );
|
||||
if ( success ) {
|
||||
break;
|
||||
}
|
||||
eventWaitStatus = epicsEventWaitWithTimeout (
|
||||
pMultiThreadSubscrTest->m_testCompleteEvent, 0.1 );
|
||||
verify ( eventWaitStatus == epicsEventWaitOK ||
|
||||
eventWaitStatus == epicsEventWaitTimeout );
|
||||
if ( i++ % 100 == 0u )
|
||||
showProgress ( pMultiThreadSubscrTest->m_interestLevel );
|
||||
verify ( i < 1000 );
|
||||
}
|
||||
showProgressEnd ( pMultiThreadSubscrTest->m_interestLevel );
|
||||
|
||||
status = ca_clear_channel ( pMultiThreadSubscrTest->m_chan );
|
||||
verify ( status == ECA_NORMAL );
|
||||
ca_context_destroy ();
|
||||
epicsEventSignal ( pMultiThreadSubscrTest->m_threadExitEvent );
|
||||
}
|
||||
|
||||
/*
|
||||
* test installation of subscriptions similar to usage paterns
|
||||
* employed by modern versions of the sequencer
|
||||
*/
|
||||
void verifyMultithreadSubscr ( const char * pName, unsigned interestLevel )
|
||||
{
|
||||
static unsigned nSubscr = 3000;
|
||||
epicsThreadId threadId;
|
||||
MultiThreadSubscrTest * const pMultiThreadSubscrTest =
|
||||
(MultiThreadSubscrTest*) calloc ( 1,
|
||||
sizeof ( MultiThreadSubscrTest ) );
|
||||
verify ( pMultiThreadSubscrTest);
|
||||
pMultiThreadSubscrTest->m_mutex = epicsMutexMustCreate ();
|
||||
verify ( pMultiThreadSubscrTest->m_mutex );
|
||||
pMultiThreadSubscrTest->m_testCompleteEvent =
|
||||
epicsEventMustCreate ( epicsEventEmpty );
|
||||
verify ( pMultiThreadSubscrTest->m_testCompleteEvent );
|
||||
pMultiThreadSubscrTest->m_threadExitEvent =
|
||||
epicsEventMustCreate ( epicsEventEmpty );
|
||||
verify ( pMultiThreadSubscrTest->m_threadExitEvent );
|
||||
strncpy ( pMultiThreadSubscrTest->m_chanName, pName,
|
||||
sizeof ( pMultiThreadSubscrTest->m_chanName ) );
|
||||
pMultiThreadSubscrTest->m_chanName
|
||||
[ sizeof ( pMultiThreadSubscrTest->m_chanName ) - 1u ] = '\0';
|
||||
pMultiThreadSubscrTest->m_nUpdatesRequired = nSubscr;
|
||||
pMultiThreadSubscrTest->m_interestLevel = interestLevel;
|
||||
threadId = epicsThreadCreate (
|
||||
"testMultithreadSubscr",
|
||||
epicsThreadPriorityMedium,
|
||||
epicsThreadGetStackSize(epicsThreadStackSmall),
|
||||
testMultithreadSubscr, pMultiThreadSubscrTest );
|
||||
verify ( threadId );
|
||||
{
|
||||
epicsEventWaitStatus eventWaitStatus;
|
||||
eventWaitStatus = epicsEventWaitWithTimeout (
|
||||
pMultiThreadSubscrTest->m_threadExitEvent, 1000.0 );
|
||||
verify ( eventWaitStatus == epicsEventWaitOK );
|
||||
}
|
||||
epicsEventDestroy ( pMultiThreadSubscrTest->m_testCompleteEvent );
|
||||
epicsEventDestroy ( pMultiThreadSubscrTest->m_threadExitEvent );
|
||||
epicsMutexDestroy ( pMultiThreadSubscrTest->m_mutex );
|
||||
free ( pMultiThreadSubscrTest );
|
||||
}
|
||||
|
||||
void fdManagerVerify ( const char * pName, unsigned interestLevel )
|
||||
{
|
||||
int status;
|
||||
@@ -2965,17 +3151,22 @@ void verifyContextRundownFlush ( const char * pName, unsigned interestLevel )
|
||||
SEVCHK ( status, "context create failed" );
|
||||
|
||||
status = ca_create_channel ( pName, 0, 0, 0, & chan );
|
||||
SEVCHK ( status, NULL );
|
||||
|
||||
status = ca_pend_io( timeoutToPendIO );
|
||||
SEVCHK ( status, "channel connect failed" );
|
||||
|
||||
status = ca_put ( DBR_DOUBLE, chan, & stim );
|
||||
SEVCHK ( status, "channel put failed" );
|
||||
|
||||
status = ca_clear_channel ( chan );
|
||||
SEVCHK ( status, NULL );
|
||||
|
||||
/*
|
||||
* currently in-memory channels cant be used with this test
|
||||
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
||||
*/
|
||||
if ( status != ECA_UNAVAILINSERV ) {
|
||||
SEVCHK ( status, NULL );
|
||||
|
||||
status = ca_pend_io( timeoutToPendIO );
|
||||
SEVCHK ( status, "channel connect failed" );
|
||||
|
||||
status = ca_put ( DBR_DOUBLE, chan, & stim );
|
||||
SEVCHK ( status, "channel put failed" );
|
||||
|
||||
status = ca_clear_channel ( chan );
|
||||
SEVCHK ( status, NULL );
|
||||
}
|
||||
ca_context_destroy ();
|
||||
}
|
||||
|
||||
@@ -2985,24 +3176,28 @@ void verifyContextRundownFlush ( const char * pName, unsigned interestLevel )
|
||||
dbr_double_t resp;
|
||||
status = ca_context_create ( ca_disable_preemptive_callback );
|
||||
SEVCHK ( status, "context create failed" );
|
||||
|
||||
|
||||
status = ca_create_channel ( pName, 0, 0, 0, & chan );
|
||||
SEVCHK ( status, NULL );
|
||||
|
||||
status = ca_pend_io( timeoutToPendIO );
|
||||
SEVCHK ( status, "channel connect failed" );
|
||||
|
||||
status = ca_get ( DBR_DOUBLE, chan, & resp );
|
||||
SEVCHK ( status, "channel get failed" );
|
||||
|
||||
status = ca_pend_io ( timeoutToPendIO );
|
||||
SEVCHK ( status, "get, pend io failed" );
|
||||
|
||||
verify ( stim == resp );
|
||||
|
||||
status = ca_clear_channel ( chan );
|
||||
SEVCHK ( status, NULL );
|
||||
|
||||
/*
|
||||
* currently in-memory channels cant be used with this test
|
||||
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
||||
*/
|
||||
if ( status != ECA_UNAVAILINSERV ) {
|
||||
status = ca_pend_io( timeoutToPendIO );
|
||||
SEVCHK ( status, "channel connect failed" );
|
||||
|
||||
status = ca_get ( DBR_DOUBLE, chan, & resp );
|
||||
SEVCHK ( status, "channel get failed" );
|
||||
|
||||
status = ca_pend_io ( timeoutToPendIO );
|
||||
SEVCHK ( status, "get, pend io failed" );
|
||||
|
||||
verify ( stim == resp );
|
||||
|
||||
status = ca_clear_channel ( chan );
|
||||
SEVCHK ( status, NULL );
|
||||
}
|
||||
ca_context_destroy ();
|
||||
}
|
||||
|
||||
@@ -3028,6 +3223,13 @@ void verifyContextRundownChanStillExist (
|
||||
|
||||
for ( i = 0; i < NELEMENTS ( chan ); i++ ) {
|
||||
status = ca_create_channel ( pName, 0, 0, 0, & chan[i] );
|
||||
/*
|
||||
* currently in-memory channels cant be used with this test
|
||||
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
||||
*/
|
||||
if ( status == ECA_UNAVAILINSERV ) {
|
||||
break;
|
||||
}
|
||||
SEVCHK ( status, NULL );
|
||||
}
|
||||
|
||||
@@ -3123,6 +3325,7 @@ int acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
|
||||
verifyHighThroughputReadCallback ( chan, interestLevel );
|
||||
verifyHighThroughputWriteCallback ( chan, interestLevel );
|
||||
verifyBadString ( chan, interestLevel );
|
||||
verifyMultithreadSubscr ( pName, interestLevel );
|
||||
if ( select != ca_enable_preemptive_callback ) {
|
||||
fdManagerVerify ( pName, interestLevel );
|
||||
}
|
||||
|
||||
69
src/ca/acctstRegister.cpp
Normal file
69
src/ca/acctstRegister.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2002 The University of Chicago, 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 is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
/*
|
||||
* CA client library diagnostics IOC shell registration
|
||||
* Authors:
|
||||
* Jeff Hill
|
||||
*/
|
||||
|
||||
#include <iocsh.h>
|
||||
#include "caDiagnostics.h"
|
||||
|
||||
/* Information needed by iocsh */
|
||||
static const iocshArg acctstArg0 = { "channel name", iocshArgString };
|
||||
static const iocshArg acctstArg1 = { "interest level", iocshArgInt };
|
||||
static const iocshArg acctstArg2 = { "channel count", iocshArgInt };
|
||||
static const iocshArg acctstArg3 = { "repetition count", iocshArgInt };
|
||||
static const iocshArg acctstArg4 = { "preemptive callback select", iocshArgInt };
|
||||
|
||||
static const iocshArg *acctstArgs[] =
|
||||
{
|
||||
&acctstArg0,
|
||||
&acctstArg1,
|
||||
&acctstArg2,
|
||||
&acctstArg3,
|
||||
&acctstArg4
|
||||
};
|
||||
static const iocshFuncDef acctstFuncDef = {"acctst", 5, acctstArgs};
|
||||
|
||||
|
||||
/* Wrapper called by iocsh, selects the argument types that print needs */
|
||||
static void acctstCallFunc(const iocshArgBuf *args) {
|
||||
if ( args[1].ival < 0 ) {
|
||||
printf ( "negative interest level not allowed\n" );
|
||||
return;
|
||||
}
|
||||
if ( args[2].ival < 0 ) {
|
||||
printf ( "negative channel count not allowed\n" );
|
||||
return;
|
||||
}
|
||||
if ( args[3].ival < 0 ) {
|
||||
printf ( "negative repetition count not allowed\n" );
|
||||
return;
|
||||
}
|
||||
acctst (
|
||||
args[0].sval, /* channel name */
|
||||
( unsigned ) args[1].ival, /* interest level */
|
||||
( unsigned ) args[2].ival, /* channel count */
|
||||
( unsigned ) args[3].ival, /* repetition count */
|
||||
( ca_preemptive_callback_select ) args[4].ival ); /* preemptive callback select */
|
||||
}
|
||||
|
||||
struct AutoInit {
|
||||
AutoInit ();
|
||||
};
|
||||
|
||||
AutoInit :: AutoInit ()
|
||||
{
|
||||
iocshRegister ( &acctstFuncDef, acctstCallFunc );
|
||||
}
|
||||
|
||||
AutoInit autoInit;
|
||||
|
||||
@@ -360,6 +360,6 @@ void bheFreeStore::release ( void * pCadaver )
|
||||
freeList.release ( pCadaver );
|
||||
}
|
||||
|
||||
epicsShareFunc bheMemoryManager::~bheMemoryManager () {}
|
||||
bheMemoryManager::~bheMemoryManager () {}
|
||||
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@ class bheMemoryManager;
|
||||
|
||||
// using a pure abstract wrapper class around the free list avoids
|
||||
// Tornado 2.0.1 GNU compiler bugs
|
||||
class bheMemoryManager {
|
||||
class epicsShareClass bheMemoryManager {
|
||||
public:
|
||||
epicsShareFunc virtual ~bheMemoryManager ();
|
||||
virtual ~bheMemoryManager ();
|
||||
virtual void * allocate ( size_t ) = 0;
|
||||
virtual void release ( void * ) = 0;
|
||||
};
|
||||
|
||||
@@ -266,8 +266,8 @@ private:
|
||||
// **** lock hierarchy ****
|
||||
// 1) callback lock must always be acquired before
|
||||
// the primary mutex if both locks are needed
|
||||
mutable epicsMutex & mutex;
|
||||
mutable epicsMutex & cbMutex;
|
||||
epicsMutex & mutex;
|
||||
epicsMutex & cbMutex;
|
||||
epicsEvent iiuUninstall;
|
||||
ipAddrToAsciiEngine & ipToAEngine;
|
||||
epicsTimerQueueActive & timerQueue;
|
||||
|
||||
@@ -185,7 +185,8 @@ epicsShareFunc enum channel_state epicsShareAPI ca_state (chid chan);
|
||||
epicsShareFunc int epicsShareAPI ca_task_initialize (void);
|
||||
enum ca_preemptive_callback_select
|
||||
{ ca_disable_preemptive_callback, ca_enable_preemptive_callback };
|
||||
epicsShareFunc int epicsShareAPI ca_context_create (enum ca_preemptive_callback_select select);
|
||||
epicsShareFunc int epicsShareAPI
|
||||
ca_context_create (enum ca_preemptive_callback_select select);
|
||||
epicsShareFunc void epicsShareAPI ca_detach_context ();
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef epicsExportSharedSymbols
|
||||
# define repeaterSubscribeTimerh_epicsExportSharedSymbols
|
||||
# undef epicsExportSharedSymbols
|
||||
#endif
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef repeaterSubscribeTimerh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
# include "shareLib.h"
|
||||
#endif
|
||||
|
||||
class epicsMutex;
|
||||
class cacContextNotify;
|
||||
|
||||
|
||||
@@ -26,8 +26,18 @@
|
||||
#ifndef tcpRecvWatchdogh
|
||||
#define tcpRecvWatchdogh
|
||||
|
||||
#ifdef epicsExportSharedSymbols
|
||||
# define tcpRecvWatchdogh_epicsExportSharedSymbols
|
||||
# undef epicsExportSharedSymbols
|
||||
#endif
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef tcpRecvWatchdogh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
# include "shareLib.h"
|
||||
#endif
|
||||
|
||||
class tcpiiu;
|
||||
|
||||
class tcpRecvWatchdog : private epicsTimerNotify {
|
||||
|
||||
@@ -26,8 +26,19 @@
|
||||
#ifndef tcpSendWatchdogh
|
||||
#define tcpSendWatchdogh
|
||||
|
||||
|
||||
#ifdef epicsExportSharedSymbols
|
||||
# define tcpSendWatchdogh_epicsExportSharedSymbols
|
||||
# undef epicsExportSharedSymbols
|
||||
#endif
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef tcpSendWatchdogh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
# include "shareLib.h"
|
||||
#endif
|
||||
|
||||
class tcpSendWatchdog : private epicsTimerNotify {
|
||||
public:
|
||||
tcpSendWatchdog (
|
||||
|
||||
@@ -1866,10 +1866,14 @@ void tcpiiu::unlinkAllChannels (
|
||||
guard.assertIdenticalMutex ( this->mutex );
|
||||
|
||||
while ( nciu * pChan = this->createReqPend.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
pChan->serviceShutdownNotify ( cbGuard, guard );
|
||||
}
|
||||
|
||||
while ( nciu * pChan = this->createRespPend.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
// we dont yet know the server's id so we cant
|
||||
// send a channel delete request and will instead
|
||||
// trust that the server can do the proper cleanup
|
||||
@@ -1878,12 +1882,16 @@ void tcpiiu::unlinkAllChannels (
|
||||
}
|
||||
|
||||
while ( nciu * pChan = this->v42ConnCallbackPend.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
this->clearChannelRequest ( guard,
|
||||
pChan->getSID(guard), pChan->getCID(guard) );
|
||||
pChan->serviceShutdownNotify ( cbGuard, guard );
|
||||
}
|
||||
|
||||
while ( nciu * pChan = this->subscripReqPend.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
pChan->disconnectAllIO ( cbGuard, guard );
|
||||
this->clearChannelRequest ( guard,
|
||||
pChan->getSID(guard), pChan->getCID(guard) );
|
||||
@@ -1891,6 +1899,8 @@ void tcpiiu::unlinkAllChannels (
|
||||
}
|
||||
|
||||
while ( nciu * pChan = this->connectedList.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
pChan->disconnectAllIO ( cbGuard, guard );
|
||||
this->clearChannelRequest ( guard,
|
||||
pChan->getSID(guard), pChan->getCID(guard) );
|
||||
@@ -1898,6 +1908,8 @@ void tcpiiu::unlinkAllChannels (
|
||||
}
|
||||
|
||||
while ( nciu * pChan = this->unrespCircuit.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
pChan->disconnectAllIO ( cbGuard, guard );
|
||||
// if we know that the circuit is unresponsive
|
||||
// then we dont send a channel delete request and
|
||||
@@ -1907,6 +1919,8 @@ void tcpiiu::unlinkAllChannels (
|
||||
}
|
||||
|
||||
while ( nciu * pChan = this->subscripUpdateReqPend.get () ) {
|
||||
pChan->channelNode::listMember =
|
||||
channelNode::cs_none;
|
||||
pChan->disconnectAllIO ( cbGuard, guard );
|
||||
this->clearChannelRequest ( guard,
|
||||
pChan->getSID(guard), pChan->getCID(guard) );
|
||||
|
||||
@@ -81,8 +81,9 @@ udpiiu::udpiiu (
|
||||
cac::lowestPriorityLevelAbove (
|
||||
cac::lowestPriorityLevelAbove (
|
||||
cac.getInitializingThreadsPriority () ) ) ),
|
||||
m_repeaterTimerNotify ( *this ),
|
||||
repeaterSubscribeTmr (
|
||||
*this, timerQueue, cbMutexIn, ctxNotifyIn ),
|
||||
m_repeaterTimerNotify, timerQueue, cbMutexIn, ctxNotifyIn ),
|
||||
govTmr ( *this, timerQueue, cacMutexIn ),
|
||||
maxPeriod ( maxSearchPeriodDefault ),
|
||||
rtteMean ( minRoundTripEstimate ),
|
||||
@@ -396,15 +397,20 @@ void udpRecvThread::run ()
|
||||
} while ( ! this->iiu.shutdownCmd );
|
||||
}
|
||||
|
||||
/* for sunpro compiler */
|
||||
udpiiu::M_repeaterTimerNotify::~M_repeaterTimerNotify ()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* udpiiu::repeaterRegistrationMessage ()
|
||||
* udpiiu::M_repeaterTimerNotify::repeaterRegistrationMessage ()
|
||||
*
|
||||
* register with the repeater
|
||||
*/
|
||||
void udpiiu::repeaterRegistrationMessage ( unsigned attemptNumber )
|
||||
void udpiiu :: M_repeaterTimerNotify :: repeaterRegistrationMessage ( unsigned attemptNumber )
|
||||
{
|
||||
epicsGuard < epicsMutex > cbGuard ( this->cacMutex );
|
||||
caRepeaterRegistrationMessage ( this->sock, this->repeaterPort, attemptNumber );
|
||||
epicsGuard < epicsMutex > cbGuard ( m_udpiiu.cacMutex );
|
||||
caRepeaterRegistrationMessage ( m_udpiiu.sock, m_udpiiu.repeaterPort, attemptNumber );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1233,16 +1239,16 @@ void udpiiu::govExpireNotify (
|
||||
this->ppSearchTmr[0]->installChannel ( guard, chan );
|
||||
}
|
||||
|
||||
int udpiiu :: printFormated (
|
||||
epicsGuard < epicsMutex > & cbGuard,
|
||||
const char * pformat, ... )
|
||||
int udpiiu :: M_repeaterTimerNotify :: printFormated (
|
||||
epicsGuard < epicsMutex > & cbGuard,
|
||||
const char * pformat, ... )
|
||||
{
|
||||
va_list theArgs;
|
||||
int status;
|
||||
|
||||
va_start ( theArgs, pformat );
|
||||
|
||||
status = this->cacRef.varArgsPrintFormated ( cbGuard, pformat, theArgs );
|
||||
status = m_udpiiu.cacRef.varArgsPrintFormated ( cbGuard, pformat, theArgs );
|
||||
|
||||
va_end ( theArgs );
|
||||
|
||||
|
||||
@@ -88,8 +88,7 @@ static const double beaconAnomalySearchPeriod = 5.0; // seconds
|
||||
class udpiiu :
|
||||
private netiiu,
|
||||
private searchTimerNotify,
|
||||
private disconnectGovernorNotify,
|
||||
private repeaterTimerNotify {
|
||||
private disconnectGovernorNotify {
|
||||
public:
|
||||
udpiiu (
|
||||
epicsGuard < epicsMutex > & cacGuard,
|
||||
@@ -139,9 +138,25 @@ private:
|
||||
private:
|
||||
udpiiu & _udpiiu;
|
||||
};
|
||||
class M_repeaterTimerNotify :
|
||||
public repeaterTimerNotify {
|
||||
public:
|
||||
M_repeaterTimerNotify ( udpiiu & iiu ) :
|
||||
m_udpiiu ( iiu ) {}
|
||||
~M_repeaterTimerNotify (); /* for sunpro compiler */
|
||||
// repeaterTimerNotify
|
||||
void repeaterRegistrationMessage (
|
||||
unsigned attemptNumber );
|
||||
int printFormated (
|
||||
epicsGuard < epicsMutex > & callbackControl,
|
||||
const char * pformat, ... );
|
||||
private:
|
||||
udpiiu & m_udpiiu;
|
||||
};
|
||||
char xmitBuf [MAX_UDP_SEND];
|
||||
char recvBuf [MAX_UDP_RECV];
|
||||
udpRecvThread recvThread;
|
||||
M_repeaterTimerNotify m_repeaterTimerNotify;
|
||||
repeaterSubscribeTimer repeaterSubscribeTmr;
|
||||
disconnectGovernorTimer govTmr;
|
||||
tsDLList < SearchDest > _searchDestList;
|
||||
@@ -149,8 +164,8 @@ private:
|
||||
double rtteMean;
|
||||
double rtteMeanDev;
|
||||
cac & cacRef;
|
||||
mutable epicsMutex & cbMutex;
|
||||
mutable epicsMutex & cacMutex;
|
||||
epicsMutex & cbMutex;
|
||||
epicsMutex & cacMutex;
|
||||
epics_auto_ptr < epics_auto_ptr < class searchTimer >, eapt_array > ppSearchTmr;
|
||||
unsigned nBytesInXmitBuf;
|
||||
unsigned nTimers;
|
||||
@@ -278,14 +293,6 @@ private:
|
||||
void govExpireNotify (
|
||||
epicsGuard < epicsMutex > &, nciu & );
|
||||
|
||||
// repeaterTimerNotify
|
||||
void repeaterRegistrationMessage (
|
||||
unsigned attemptNumber );
|
||||
|
||||
int printFormated (
|
||||
epicsGuard < epicsMutex > & callbackControl,
|
||||
const char * pformat, ... );
|
||||
|
||||
udpiiu ( const udpiiu & );
|
||||
udpiiu & operator = ( const udpiiu & );
|
||||
|
||||
@@ -294,6 +301,7 @@ private:
|
||||
// These are needed for the vxWorks 5.5 compiler:
|
||||
friend class udpiiu::SearchDestUDP;
|
||||
friend class udpiiu::SearchRespCallback;
|
||||
friend class udpiiu::M_repeaterTimerNotify;
|
||||
};
|
||||
|
||||
#endif // udpiiuh
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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,6 +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)
|
||||
|
||||
HTMLS_DIR = .
|
||||
HTMLS = CA.html
|
||||
endif
|
||||
endif
|
||||
|
||||
Cap5_SRCS = Cap5.xs
|
||||
@@ -40,12 +50,6 @@ Cap5_LIBS = ca Com
|
||||
Cap5_INCLUDES = -I$(shell $(PERL) ../perlConfig.pl archlib)/CORE
|
||||
Cap5_CFLAGS = $(shell $(PERL) ../perlConfig.pl ccflags)
|
||||
|
||||
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
|
||||
# Can only create docs in Host build
|
||||
HTMLS_DIR = .
|
||||
HTMLS = CA.html
|
||||
endif
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
ifdef T_A
|
||||
@@ -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
|
||||
|
||||
@@ -73,6 +73,13 @@ LIBSRCS += casDGIntfIO.cc
|
||||
LIBSRCS += casStreamIO.cc
|
||||
LIBSRCS += ipIgnoreEntry.cc
|
||||
|
||||
# There is a bug in some vxWorks compilers that these work around:
|
||||
ifeq ($(VX_GNU_VERSION), 4.1.2)
|
||||
casStreamOS_CXXFLAGS_vxWorks-ppc604_altivec = -O0
|
||||
casStreamOS_CXXFLAGS_vxWorks-ppc604_long = -O0
|
||||
casStreamOS_CXXFLAGS_vxWorks-ppc604 = -O0
|
||||
endif
|
||||
|
||||
LIBSRCS_vxWorks += templateInstances.cpp
|
||||
|
||||
LIBRARY = cas
|
||||
|
||||
@@ -23,8 +23,8 @@ PROD_LIBS := cas ca gdd Com
|
||||
#
|
||||
PROD_SYS_LIBS_WIN32 := ws2_32 advapi32 user32
|
||||
|
||||
SRCS += main.cc
|
||||
SRCS += directoryServer.cc
|
||||
caDirServ_SRCS += main.cc
|
||||
caDirServ_SRCS += directoryServer.cc
|
||||
|
||||
PROD_HOST = caDirServ
|
||||
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
* 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
|
||||
* in file LICENSE that is included with this distribution.
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
/*
|
||||
* $Revision-Id$
|
||||
@@ -15,8 +14,8 @@
|
||||
* 505 665 1831
|
||||
*/
|
||||
|
||||
#include "dbMapper.h" // ait to dbr types
|
||||
#include "gddAppTable.h" // EPICS application type table
|
||||
#include "dbMapper.h" // ait to dbr types
|
||||
#include "gddAppTable.h" // EPICS application type table
|
||||
#include "fdManager.h"
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
@@ -37,67 +36,67 @@ caServer::caServer ()
|
||||
|
||||
caServer::~caServer()
|
||||
{
|
||||
if (this->pCAS) {
|
||||
delete this->pCAS;
|
||||
if (this->pCAS) {
|
||||
delete this->pCAS;
|
||||
this->pCAS = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pvExistReturn caServer::pvExistTest ( const casCtx & ctx,
|
||||
const caNetAddr & /* clientAddress */, const char * pPVAliasName )
|
||||
const caNetAddr & /* clientAddress */, const char * pPVAliasName )
|
||||
{
|
||||
return this->pvExistTest ( ctx, pPVAliasName );
|
||||
}
|
||||
|
||||
pvExistReturn caServer::pvExistTest ( const casCtx &, const char * )
|
||||
{
|
||||
return pverDoesNotExistHere;
|
||||
return pverDoesNotExistHere;
|
||||
}
|
||||
|
||||
pvCreateReturn caServer::createPV ( const casCtx &, const char * )
|
||||
{
|
||||
return S_casApp_pvNotFound;
|
||||
return S_casApp_pvNotFound;
|
||||
}
|
||||
|
||||
pvAttachReturn caServer::pvAttach ( const casCtx &ctx, const char *pAliasName )
|
||||
{
|
||||
// remain backwards compatible (call deprecated routine)
|
||||
return this->createPV ( ctx, pAliasName );
|
||||
// remain backwards compatible (call deprecated routine)
|
||||
return this->createPV ( ctx, pAliasName );
|
||||
}
|
||||
|
||||
casEventMask caServer::registerEvent (const char *pName) // X aCC 361
|
||||
casEventMask caServer::registerEvent (const char *pName)
|
||||
{
|
||||
if (this->pCAS) {
|
||||
return this->pCAS->registerEvent(pName);
|
||||
}
|
||||
else {
|
||||
casEventMask emptyMask;
|
||||
printf("caServer:: no server internals attached\n");
|
||||
return emptyMask;
|
||||
}
|
||||
if (this->pCAS) {
|
||||
return this->pCAS->registerEvent(pName);
|
||||
}
|
||||
else {
|
||||
casEventMask emptyMask;
|
||||
printf("caServer:: no server internals attached\n");
|
||||
return emptyMask;
|
||||
}
|
||||
}
|
||||
|
||||
void caServer::show(unsigned level) const
|
||||
{
|
||||
if (this->pCAS) {
|
||||
this->pCAS->show(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
if (this->pCAS) {
|
||||
this->pCAS->show(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
}
|
||||
|
||||
void caServer::setDebugLevel (unsigned level)
|
||||
{
|
||||
if (pCAS) {
|
||||
this->pCAS->setDebugLevel(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
if (pCAS) {
|
||||
this->pCAS->setDebugLevel(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
}
|
||||
|
||||
unsigned caServer::getDebugLevel () const // X aCC 361
|
||||
unsigned caServer::getDebugLevel () const
|
||||
{
|
||||
if (pCAS) {
|
||||
return this->pCAS->getDebugLevel();
|
||||
@@ -108,7 +107,7 @@ unsigned caServer::getDebugLevel () const // X aCC 361
|
||||
}
|
||||
}
|
||||
|
||||
casEventMask caServer::valueEventMask () const // X aCC 361
|
||||
casEventMask caServer::valueEventMask () const
|
||||
{
|
||||
if (pCAS) {
|
||||
return this->pCAS->valueEventMask();
|
||||
@@ -119,7 +118,7 @@ casEventMask caServer::valueEventMask () const // X aCC 361
|
||||
}
|
||||
}
|
||||
|
||||
casEventMask caServer::logEventMask () const // X aCC 361
|
||||
casEventMask caServer::logEventMask () const
|
||||
{
|
||||
if (pCAS) {
|
||||
return this->pCAS->logEventMask();
|
||||
@@ -130,7 +129,7 @@ casEventMask caServer::logEventMask () const // X aCC 361
|
||||
}
|
||||
}
|
||||
|
||||
casEventMask caServer::alarmEventMask () const // X aCC 361
|
||||
casEventMask caServer::alarmEventMask () const
|
||||
{
|
||||
if ( pCAS ) {
|
||||
return this->pCAS->alarmEventMask ();
|
||||
@@ -141,12 +140,23 @@ casEventMask caServer::alarmEventMask () const // X aCC 361
|
||||
}
|
||||
}
|
||||
|
||||
casEventMask caServer::propertyEventMask () const
|
||||
{
|
||||
if (pCAS) {
|
||||
return this->pCAS->propertyEventMask();
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
return casEventMask();
|
||||
}
|
||||
}
|
||||
|
||||
class epicsTimer & caServer::createTimer ()
|
||||
{
|
||||
return fileDescriptorManager.createTimer ();
|
||||
}
|
||||
|
||||
unsigned caServer::subscriptionEventsProcessed () const // X aCC 361
|
||||
unsigned caServer::subscriptionEventsProcessed () const
|
||||
{
|
||||
if ( pCAS ) {
|
||||
return this->pCAS->subscriptionEventsProcessed ();
|
||||
@@ -156,7 +166,7 @@ unsigned caServer::subscriptionEventsProcessed () const // X aCC 361
|
||||
}
|
||||
}
|
||||
|
||||
unsigned caServer::subscriptionEventsPosted () const // X aCC 361
|
||||
unsigned caServer::subscriptionEventsPosted () const
|
||||
{
|
||||
if ( pCAS ) {
|
||||
return this->pCAS->subscriptionEventsPosted ();
|
||||
|
||||
@@ -47,22 +47,23 @@ caServerI::caServerI ( caServer & tool ) :
|
||||
nEventsPosted ( 0u ),
|
||||
ioInProgressCount ( 0u )
|
||||
{
|
||||
assert ( & adapter != NULL );
|
||||
assert ( & adapter != NULL );
|
||||
|
||||
// create predefined event types
|
||||
this->valueEvent = registerEvent ( "value" );
|
||||
this->logEvent = registerEvent ( "log" );
|
||||
this->alarmEvent = registerEvent ( "alarm" );
|
||||
this->logEvent = registerEvent ( "log" );
|
||||
this->alarmEvent = registerEvent ( "alarm" );
|
||||
this->propertyEvent = registerEvent ( "property" );
|
||||
|
||||
this->locateInterfaces ();
|
||||
|
||||
if (this->intfList.count()==0u) {
|
||||
errMessage (S_cas_noInterface,
|
||||
if (this->intfList.count()==0u) {
|
||||
errMessage (S_cas_noInterface,
|
||||
"- CA server internals init unable to continue");
|
||||
throw S_cas_noInterface;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
caServerI::~caServerI()
|
||||
@@ -70,22 +71,22 @@ caServerI::~caServerI()
|
||||
delete & this->beaconAnomalyGov;
|
||||
delete & this->beaconTmr;
|
||||
|
||||
// delete all clients
|
||||
// delete all clients
|
||||
while ( casStrmClient * pClient = this->clientList.get() ) {
|
||||
delete pClient;
|
||||
}
|
||||
delete pClient;
|
||||
}
|
||||
|
||||
casIntfOS *pIF;
|
||||
while ( ( pIF = this->intfList.get() ) ) {
|
||||
delete pIF;
|
||||
}
|
||||
casIntfOS *pIF;
|
||||
while ( ( pIF = this->intfList.get() ) ) {
|
||||
delete pIF;
|
||||
}
|
||||
}
|
||||
|
||||
void caServerI::destroyClient ( casStrmClient & client )
|
||||
{
|
||||
{
|
||||
epicsGuard < epicsMutex > locker ( this->mutex );
|
||||
this->clientList.remove ( client );
|
||||
this->clientList.remove ( client );
|
||||
}
|
||||
delete & client;
|
||||
}
|
||||
@@ -143,11 +144,11 @@ caStatus caServerI::attachInterface ( const caNetAddr & addrIn,
|
||||
void caServerI::sendBeacon ( ca_uint32_t beaconNo )
|
||||
{
|
||||
epicsGuard < epicsMutex > locker ( this->mutex );
|
||||
tsDLIter < casIntfOS > iter = this->intfList.firstIter ();
|
||||
while ( iter.valid () ) {
|
||||
iter->sendBeacon ( beaconNo );
|
||||
iter++;
|
||||
}
|
||||
tsDLIter < casIntfOS > iter = this->intfList.firstIter ();
|
||||
while ( iter.valid () ) {
|
||||
iter->sendBeacon ( beaconNo );
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
|
||||
void caServerI::generateBeaconAnomaly ()
|
||||
@@ -259,11 +260,11 @@ void caServerI::casMonitorDestroy ( casMonitor & cm )
|
||||
}
|
||||
|
||||
//
|
||||
// caServerI::dumpMsg()
|
||||
// caServerI::dumpMsg()
|
||||
//
|
||||
// Debug aid - print the header part of a message.
|
||||
// Debug aid - print the header part of a message.
|
||||
//
|
||||
// dp arg allowed to be null
|
||||
// dp arg allowed to be null
|
||||
//
|
||||
//
|
||||
void caServerI::dumpMsg ( const char * pHostName, const char * pUserName,
|
||||
|
||||
@@ -44,23 +44,24 @@ caStatus convertContainerMemberToAtomic ( class gdd & dd,
|
||||
aitUint32 appType, aitUint32 elemCount );
|
||||
|
||||
class caServerI :
|
||||
public caServerIO,
|
||||
public ioBlockedList,
|
||||
public casEventRegistry {
|
||||
public caServerIO,
|
||||
public ioBlockedList,
|
||||
public casEventRegistry {
|
||||
public:
|
||||
caServerI ( caServer &tool );
|
||||
~caServerI ();
|
||||
bool roomForNewChannel() const;
|
||||
unsigned getDebugLevel() const { return debugLevel; }
|
||||
inline void setDebugLevel ( unsigned debugLevelIn );
|
||||
void show ( unsigned level ) const;
|
||||
caServerI ( caServer &tool );
|
||||
~caServerI ();
|
||||
bool roomForNewChannel() const;
|
||||
unsigned getDebugLevel() const { return debugLevel; }
|
||||
inline void setDebugLevel ( unsigned debugLevelIn );
|
||||
void show ( unsigned level ) const;
|
||||
void destroyMonitor ( casMonitor & );
|
||||
caServer * getAdapter ();
|
||||
caServer * operator -> ();
|
||||
void connectCB ( casIntfOS & );
|
||||
casEventMask valueEventMask () const; // DBE_VALUE registerEvent("value")
|
||||
casEventMask logEventMask () const; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEventMask () const; // DBE_ALARM registerEvent("alarm")
|
||||
caServer * getAdapter ();
|
||||
caServer * operator -> ();
|
||||
void connectCB ( casIntfOS & );
|
||||
casEventMask valueEventMask () const; // DBE_VALUE registerEvent("value")
|
||||
casEventMask logEventMask () const; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEventMask () const; // DBE_ALARM registerEvent("alarm")
|
||||
casEventMask propertyEventMask () const; // DBE_PROPERTY registerEvent("property")
|
||||
unsigned subscriptionEventsProcessed () const;
|
||||
void incrEventsProcessedCounter ();
|
||||
unsigned subscriptionEventsPosted () const;
|
||||
@@ -82,29 +83,30 @@ public:
|
||||
private:
|
||||
clientBufMemoryManager clientBufMemMgr;
|
||||
tsFreeList < casMonitor, 1024 > casMonitorFreeList;
|
||||
tsDLList < casStrmClient > clientList;
|
||||
tsDLList < casStrmClient > clientList;
|
||||
tsDLList < casIntfOS > intfList;
|
||||
mutable epicsMutex mutex;
|
||||
mutable epicsMutex diagnosticCountersMutex;
|
||||
caServer & adapter;
|
||||
mutable epicsMutex mutex;
|
||||
mutable epicsMutex diagnosticCountersMutex;
|
||||
caServer & adapter;
|
||||
beaconTimer & beaconTmr;
|
||||
beaconAnomalyGovernor & beaconAnomalyGov;
|
||||
unsigned debugLevel;
|
||||
unsigned debugLevel;
|
||||
unsigned nEventsProcessed;
|
||||
unsigned nEventsPosted;
|
||||
unsigned ioInProgressCount;
|
||||
|
||||
casEventMask valueEvent; // DBE_VALUE registerEvent("value")
|
||||
casEventMask logEvent; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEvent; // DBE_ALARM registerEvent("alarm")
|
||||
casEventMask logEvent; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEvent; // DBE_ALARM registerEvent("alarm")
|
||||
casEventMask propertyEvent; // DBE_PROPERTY registerEvent("property")
|
||||
|
||||
caStatus attachInterface ( const caNetAddr & addr, bool autoBeaconAddr,
|
||||
bool addConfigAddr );
|
||||
caStatus attachInterface ( const caNetAddr & addr, bool autoBeaconAddr,
|
||||
bool addConfigAddr );
|
||||
|
||||
void sendBeacon ( ca_uint32_t beaconNo );
|
||||
|
||||
caServerI ( const caServerI & );
|
||||
caServerI & operator = ( const caServerI & );
|
||||
caServerI ( const caServerI & );
|
||||
caServerI & operator = ( const caServerI & );
|
||||
|
||||
friend class beaconAnomalyGovernor;
|
||||
friend class beaconTimer;
|
||||
@@ -113,17 +115,17 @@ private:
|
||||
|
||||
inline caServer * caServerI::getAdapter()
|
||||
{
|
||||
return & this->adapter;
|
||||
return & this->adapter;
|
||||
}
|
||||
|
||||
inline caServer * caServerI::operator -> ()
|
||||
{
|
||||
return this->getAdapter();
|
||||
return this->getAdapter();
|
||||
}
|
||||
|
||||
inline void caServerI::setDebugLevel(unsigned debugLevelIn)
|
||||
{
|
||||
this->debugLevel = debugLevelIn;
|
||||
this->debugLevel = debugLevelIn;
|
||||
}
|
||||
|
||||
inline casEventMask caServerI::valueEventMask() const
|
||||
@@ -141,6 +143,11 @@ inline casEventMask caServerI::alarmEventMask() const
|
||||
return this->alarmEvent;
|
||||
}
|
||||
|
||||
inline casEventMask caServerI::propertyEventMask() const
|
||||
{
|
||||
return this->propertyEvent;
|
||||
}
|
||||
|
||||
inline bool caServerI :: ioIsPending () const
|
||||
{
|
||||
return ( ioInProgressCount > 0u );
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user