Compare commits
134 Commits
R3.14.12.4
...
R3.14.12.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc61957963 | ||
|
|
583108e42a | ||
|
|
9470830091 | ||
|
|
e84e7b930f | ||
|
|
f498b36438 | ||
|
|
d927afe257 | ||
|
|
f994944531 | ||
|
|
5ffda58351 | ||
|
|
f6373093a5 | ||
|
|
8215244a28 | ||
|
|
de298da94c | ||
|
|
753bfcc579 | ||
|
|
4568cd3616 | ||
|
|
e75ec5f85b | ||
|
|
657f726527 | ||
|
|
0f0a8cbbe5 | ||
|
|
84e74d0924 | ||
|
|
2a6714fd03 | ||
|
|
5610b07068 | ||
|
|
d26654674c | ||
|
|
5f638805dd | ||
|
|
bc52c8e374 | ||
|
|
fb1a0c2b1e | ||
|
|
2378d465d1 | ||
|
|
2799f1cf3f | ||
|
|
91c8ba592d | ||
|
|
004e7237c3 | ||
|
|
d53521f160 | ||
|
|
12793d3313 | ||
|
|
65d39fcbc8 | ||
|
|
b7baa2504e | ||
|
|
4a0880003c | ||
|
|
d06b1a178a | ||
|
|
2bae36845e | ||
|
|
2d7a8a4aee | ||
|
|
3601a73b77 | ||
|
|
335cba0049 | ||
|
|
0f2d6eac9b | ||
|
|
88314d0374 | ||
|
|
4658a88584 | ||
|
|
4cf3613ace | ||
|
|
0fa8702842 | ||
|
|
a437768c9c | ||
|
|
a6af0daae9 | ||
|
|
3e6597be90 | ||
|
|
c0cf25eeee | ||
|
|
3501fda48d | ||
|
|
e822d8d8c4 | ||
|
|
9813fa6474 | ||
|
|
b1e99f6f1a | ||
|
|
836d81f0b7 | ||
|
|
804aeafaa7 | ||
|
|
dda4eb3a58 | ||
|
|
b041041518 | ||
|
|
d2a216b28e | ||
|
|
7e36a58f1e | ||
|
|
f16bdb0c83 | ||
|
|
681a996bf0 | ||
|
|
276ea54ee4 | ||
|
|
2623c2f46f | ||
|
|
b996e63beb | ||
|
|
2f0e9172a4 | ||
|
|
c5ded30684 | ||
|
|
2e4d8b31ff | ||
|
|
26d60bc516 | ||
|
|
f874913cf7 | ||
|
|
26ab431c0a | ||
|
|
02aa7e2f73 | ||
|
|
727a3af59d | ||
|
|
1a094f5971 | ||
|
|
4b0a4ffee2 | ||
|
|
c91725d3a4 | ||
|
|
6a9eccdec1 | ||
|
|
2b950754c4 | ||
|
|
846d55dac5 | ||
|
|
db0fbf9f73 | ||
|
|
c1d33e614c | ||
|
|
69eaaa17ba | ||
|
|
89777707c4 | ||
|
|
3d03822043 | ||
|
|
702edbf4af | ||
|
|
0d0ac88242 | ||
|
|
53d9a07f64 | ||
|
|
9f163ef8d9 | ||
|
|
f0156119be | ||
|
|
f808e4309d | ||
|
|
f59123bd3c | ||
|
|
49a9d64946 | ||
|
|
c5740c0dd0 | ||
|
|
e1eac6657d | ||
|
|
02afb98f38 | ||
|
|
a5fe64a8ad | ||
|
|
152e8865cc | ||
|
|
2bf6d88607 | ||
|
|
e374ee4658 | ||
|
|
ba6a32fefb | ||
|
|
aff46bd19a | ||
|
|
39b068cf0a | ||
|
|
6e01fd9c3d | ||
|
|
2b7781c8d9 | ||
|
|
9170d79ffe | ||
|
|
3019a5fb07 | ||
|
|
2efb1d0373 | ||
|
|
ca9ef80760 | ||
|
|
475296ad49 | ||
|
|
e2e40a4b9f | ||
|
|
a3b5ced30b | ||
|
|
e63f14bc95 | ||
|
|
b1ece5d8d2 | ||
|
|
894771e789 | ||
|
|
f5b9db9583 | ||
|
|
4e1a5eefff | ||
|
|
0ba29b2eff | ||
|
|
5ad46f557c | ||
|
|
d90f4d7976 | ||
|
|
5bdd9ddca6 | ||
|
|
7eba398792 | ||
|
|
3fd8d4515c | ||
|
|
a591857c30 | ||
|
|
6ad61aea32 | ||
|
|
b32127c5de | ||
|
|
bfde24907c | ||
|
|
da6228f135 | ||
|
|
3009091875 | ||
|
|
6a0d5e0e87 | ||
|
|
97636a45e0 | ||
|
|
a50c66b6ff | ||
|
|
88ae947c84 | ||
|
|
22540ac743 | ||
|
|
197e992241 | ||
|
|
b0cf5c256a | ||
|
|
76e967c960 | ||
|
|
4ac35ab85c | ||
|
|
4209abe2cf |
@@ -6,3 +6,4 @@
|
||||
./include
|
||||
./templates
|
||||
**/O.*
|
||||
./QtC-*
|
||||
|
||||
111
configure/CONFIG
111
configure/CONFIG
@@ -1,34 +1,30 @@
|
||||
#*************************************************************************
|
||||
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
|
||||
# Copyright (c) 2013 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
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# The developer may edit this file.
|
||||
# assume T_A is the host arch if not specified
|
||||
|
||||
#
|
||||
# Common build definitions
|
||||
#
|
||||
|
||||
ifneq ($(wildcard $(TOP)/configure/CONFIG_BASE_VERSION),)
|
||||
EPICS_BASE = $(INSTALL_LOCATION)
|
||||
CONFIG = $(TOP)/configure
|
||||
BASE_TOP=YES
|
||||
EPICS_BASE = $(INSTALL_LOCATION)
|
||||
CONFIG = $(TOP)/configure
|
||||
BASE_TOP=YES
|
||||
else
|
||||
CONFIG ?= $(EPICS_BASE)/configure
|
||||
CONFIG ?= $(EPICS_BASE)/configure
|
||||
endif
|
||||
|
||||
# Provide a default if the user hasn't set EPICS_HOST_ARCH
|
||||
ifeq ($(origin EPICS_HOST_ARCH), undefined)
|
||||
# NB: Must use a simply expanded variable here for performance:
|
||||
EPICS_HOST_ARCH := $(shell $(CONFIG)/../startup/EpicsHostArch.pl)
|
||||
# NB: We use a simply expanded variable here for performance:
|
||||
EPICS_HOST_ARCH := $(shell $(CONFIG)/../startup/EpicsHostArch.pl)
|
||||
endif
|
||||
#
|
||||
|
||||
@@ -38,8 +34,8 @@ endif
|
||||
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH)
|
||||
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH).Common
|
||||
ifdef T_A
|
||||
-include $(CONFIG)/RELEASE.Common.$(T_A)
|
||||
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
|
||||
-include $(CONFIG)/RELEASE.Common.$(T_A)
|
||||
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
|
||||
endif
|
||||
|
||||
include $(CONFIG)/CONFIG_COMMON
|
||||
@@ -62,52 +58,56 @@ include $(CONFIG)/CONFIG_BASE_VERSION
|
||||
include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
|
||||
|
||||
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
|
||||
|
||||
|
||||
ifdef T_A
|
||||
|
||||
# Cross compile specific definitions
|
||||
#
|
||||
ifneq ($(EPICS_HOST_ARCH),$(T_A))
|
||||
include $(CONFIG)/CONFIG.CrossCommon
|
||||
endif
|
||||
# Cross compile specific definitions
|
||||
#
|
||||
ifneq ($(EPICS_HOST_ARCH),$(T_A))
|
||||
include $(CONFIG)/CONFIG.CrossCommon
|
||||
endif
|
||||
|
||||
# Target architecture specific definitions
|
||||
#
|
||||
-include $(CONFIG)/os/CONFIG.Common.$(T_A)
|
||||
# Target architecture specific definitions
|
||||
#
|
||||
-include $(CONFIG)/os/CONFIG.Common.$(T_A)
|
||||
|
||||
# Host-Target architecture specific definitions
|
||||
#
|
||||
-include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).$(T_A)
|
||||
# Host-Target architecture specific definitions
|
||||
#
|
||||
-include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).$(T_A)
|
||||
|
||||
# RELEASE file specific definitions
|
||||
#
|
||||
ifneq ($(CONFIG),$(TOP)/configure)
|
||||
-include $(CONFIG)/CONFIG_APP_INCLUDE
|
||||
endif
|
||||
# RELEASE file specific definitions
|
||||
#
|
||||
ifneq ($(CONFIG),$(TOP)/configure)
|
||||
-include $(CONFIG)/CONFIG_APP_INCLUDE
|
||||
endif
|
||||
|
||||
# Site specific target and host-target definitions
|
||||
#
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.$(T_A)
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
|
||||
# Site specific target and host-target definitions
|
||||
#
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.$(T_A)
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
|
||||
|
||||
endif # ifdef T_A
|
||||
|
||||
endif
|
||||
|
||||
# Include <top>/cfg/CONFIG* definitions from tops defined in RELEASE* files
|
||||
#
|
||||
ifneq ($(CONFIG),$(TOP)/configure)
|
||||
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
|
||||
RELEASE_CFG_CONFIGS = $(foreach top, $(RELEASE_TOPS), $(wildcard $($(top))/cfg/CONFIG*))
|
||||
ifneq ($(RELEASE_CFG_CONFIGS),)
|
||||
include $(RELEASE_CFG_CONFIGS)
|
||||
endif
|
||||
RELEASE_TOPS_REVERSE := $(shell \
|
||||
$(PERL) -e '$$,=" ";print reverse @ARGV' $(RELEASE_TOPS))
|
||||
RELEASE_CFG_CONFIGS = $(foreach top, $(RELEASE_TOPS_REVERSE), \
|
||||
$(wildcard $($(top))/cfg/CONFIG*))
|
||||
ifneq ($(RELEASE_CFG_CONFIGS),)
|
||||
include $(RELEASE_CFG_CONFIGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Include $(INSTALL_CFG)/CONFIG* definitions
|
||||
#
|
||||
ifndef T_A
|
||||
TOP_CFG_CONFIGS = $(wildcard $(INSTALL_CFG)/CONFIG*)
|
||||
ifneq ($(TOP_CFG_CONFIGS),)
|
||||
include $(TOP_CFG_CONFIGS)
|
||||
endif
|
||||
include $(TOP_CFG_CONFIGS)
|
||||
endif
|
||||
|
||||
# User specific definitions
|
||||
@@ -115,26 +115,7 @@ endif
|
||||
-include $(HOME)/configure/CONFIG_USER
|
||||
-include $(HOME)/configure/CONFIG_USER.$(EPICS_HOST_ARCH)
|
||||
ifdef T_A
|
||||
-include $(HOME)/configure/CONFIG_USER.Common.$(T_A)
|
||||
-include $(HOME)/configure/CONFIG_USER.$(EPICS_HOST_ARCH).$(T_A)
|
||||
-include $(HOME)/configure/CONFIG_USER.Common.$(T_A)
|
||||
-include $(HOME)/configure/CONFIG_USER.$(EPICS_HOST_ARCH).$(T_A)
|
||||
endif
|
||||
|
||||
# All options
|
||||
# may be overridden here.
|
||||
#
|
||||
# EXAMPLES
|
||||
# --------
|
||||
# Build client objects statically ? must be either YES or NO
|
||||
#STATIC_BUILD=NO
|
||||
# Host build optimization, must be either YES or NO
|
||||
#HOST_OPT=YES
|
||||
# Cross build optimization, must be either YES or NO
|
||||
#CROSS_OPT=YES
|
||||
# Generate Verbose Compiler Warnings for host build, must be either YES or NO
|
||||
#HOST_WARN=YES
|
||||
# Generate Verbose Compiler Warnings for cross compile builds, must be either YES or NO
|
||||
#CROSS_WARN=YES
|
||||
#etc.
|
||||
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
# USR_CFLAGS C flags
|
||||
# USR_CXXFLAGS C++ flags
|
||||
# USR_CPPFLAGS c preprocesser flags
|
||||
# INC include-files to install
|
||||
# SRCS source files for building libraries and prods
|
||||
# USR_SRCS source files for building libraries and prods
|
||||
# PROD_SRCS source files for building prods
|
||||
@@ -376,17 +375,6 @@ USR_LIBS += $(USR_LIBS_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# concat specific include files
|
||||
#
|
||||
ifneq ($(strip $(INC_$(OS_CLASS))),)
|
||||
INC += $(subst -nil-,,$(INC_$(OS_CLASS)))
|
||||
else
|
||||
ifdef INC_DEFAULT
|
||||
INC+=$(INC_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# concat specific library contents (if defined) to SYS_PROD_LIBS
|
||||
#
|
||||
|
||||
@@ -1,24 +1,34 @@
|
||||
export TOP
|
||||
export IOCAPPS
|
||||
#*************************************************************************
|
||||
# Copyright (c) 2013 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 is distributed subject to a Software License Agreement found
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
|
||||
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
|
||||
export TOP
|
||||
|
||||
ifneq ($(RELEASE_TOPS),)
|
||||
|
||||
define RELEASE_FLAGS_template
|
||||
export $(1)
|
||||
$(1)_HOST_BIN = $$(strip $$($(1)))/bin/$$(EPICS_HOST_ARCH)
|
||||
$(1)_HOST_LIB = $$(strip $$($(1)))/lib/$$(EPICS_HOST_ARCH)
|
||||
$(1)_BIN = $$(wildcard $$(strip $$($(1)))/bin/$$(T_A))
|
||||
$(1)_LIB = $$(wildcard $$(strip $$($(1)))/lib/$$(T_A))
|
||||
$(1)_HOST_BIN = $$(strip $$($(1)))/bin/$(EPICS_HOST_ARCH)
|
||||
$(1)_HOST_LIB = $$(strip $$($(1)))/lib/$(EPICS_HOST_ARCH)
|
||||
$(1)_BIN = $$(wildcard $$(strip $$($(1)))/bin/$(T_A))
|
||||
$(1)_LIB = $$(wildcard $$(strip $$($(1)))/lib/$(T_A))
|
||||
SHRLIB_SEARCH_DIRS += $$($(1)_LIB)
|
||||
RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/os/$$(OS_CLASS)))
|
||||
RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/os/$(OS_CLASS)))
|
||||
RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include))
|
||||
RELEASE_DBD_DIRS += $$(wildcard $$(strip $$($(1)))/dbd)
|
||||
RELEASE_DB_DIRS += $$(wildcard $$(strip $$($(1)))/db)
|
||||
RELEASE_PERL_MODULE_DIRS += $$(wildcard $$($(1)_LIB)/perl)
|
||||
RELEASE_PERL_MODULE_DIRS += $$(wildcard $$(strip $$($(1)))/lib/perl)
|
||||
endef
|
||||
$(foreach top, $(RELEASE_TOPS), $(eval $(call RELEASE_FLAGS_template,$(top)) ))
|
||||
$(foreach top, $(RELEASE_TOPS), \
|
||||
$(eval $(call RELEASE_FLAGS_template,$(top))))
|
||||
|
||||
endif
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ BASE_CPPFLAGS += $(OSITHREAD_DEFAULT_STACK_FLAGS_$(OSITHREAD_USE_DEFAULT_STACK))
|
||||
# Where to find the installed build tools
|
||||
|
||||
TOOLS = $(EPICS_BASE_HOST_BIN)
|
||||
FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) $(TOP)/src/tools/$(1)))
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Epics base build tools and tool flags
|
||||
@@ -63,7 +64,7 @@ DBEXPAND = $(call PATH_FILTER, $(TOOLS)/dbExpand$(HOSTEXE))
|
||||
DBTORECORDTYPEH = $(call PATH_FILTER, $(TOOLS)/dbToRecordtypeH$(HOSTEXE))
|
||||
DBTOMENUH = $(call PATH_FILTER, $(TOOLS)/dbToMenuH$(HOSTEXE))
|
||||
REGISTERRECORDDEVICEDRIVER = $(PERL) $(TOOLS)/registerRecordDeviceDriver.pl
|
||||
CONVERTRELEASE = $(PERL) $(TOOLS)/convertRelease.pl
|
||||
CONVERTRELEASE = $(PERL) $(call FIND_TOOL,convertRelease.pl)
|
||||
FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
@@ -30,7 +30,7 @@ EPICS_MODIFICATION = 12
|
||||
|
||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||
# Not included if zero
|
||||
EPICS_PATCH_LEVEL = 4
|
||||
EPICS_PATCH_LEVEL = 5
|
||||
|
||||
# This will end in -DEV between official releases
|
||||
#EPICS_DEV_SNAPSHOT=-DEV
|
||||
@@ -38,11 +38,11 @@ EPICS_PATCH_LEVEL = 4
|
||||
#EPICS_DEV_SNAPSHOT=-pre1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre2
|
||||
#EPICS_DEV_SNAPSHOT=-pre2-DEV
|
||||
EPICS_DEV_SNAPSHOT=-rc1
|
||||
#EPICS_DEV_SNAPSHOT=-rc1
|
||||
#EPICS_DEV_SNAPSHOT=-rc1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc2
|
||||
#EPICS_DEV_SNAPSHOT=-rc2-DEV
|
||||
#EPICS_DEV_SNAPSHOT=
|
||||
EPICS_DEV_SNAPSHOT=
|
||||
|
||||
# No changes should be needed below here
|
||||
|
||||
|
||||
@@ -209,6 +209,16 @@ USR_CPPFLAGS =
|
||||
USR_DBDFLAGS =
|
||||
USR_ARFLAGS =
|
||||
|
||||
# Variables to be set only on the command-line:
|
||||
# CMD_INCLUDES =
|
||||
# CMD_CFLAGS =
|
||||
# CMD_CXXFLAGS =
|
||||
# CMD_LDFLAGS =
|
||||
# CMD_CPPFLAGS =
|
||||
# CMD_DBFLAGS =
|
||||
# CMD_DBDFLAGS =
|
||||
# CMD_ARFLAGS =
|
||||
|
||||
# Debug specific options
|
||||
DEBUG_CPPFLAGS =
|
||||
DEBUG_CFLAGS =
|
||||
@@ -267,32 +277,35 @@ RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
# Flags
|
||||
|
||||
INCLUDES = -I. $(SRC_INCLUDES) $(INSTALL_INCLUDES) $(RELEASE_INCLUDES)\
|
||||
$(TARGET_INCLUDES) $(USR_INCLUDES) $(OP_SYS_INCLUDES) $($(BUILD_CLASS)_INCLUDES)
|
||||
$(TARGET_INCLUDES) $(USR_INCLUDES) $(CMD_INCLUDES) $(OP_SYS_INCLUDES)\
|
||||
$($(BUILD_CLASS)_INCLUDES)
|
||||
|
||||
CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
|
||||
$(PIPE_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS)\
|
||||
$(CODE_CFLAGS) $(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS)\
|
||||
$(DEBUG_CFLAGS) $(PIPE_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS)\
|
||||
$(USR_CFLAGS) $(CMD_CFLAGS) $(ARCH_DEP_CFLAGS) $(CODE_CFLAGS)\
|
||||
$(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS) $(DEBUG_CXXFLAGS)\
|
||||
$(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS)\
|
||||
$(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
$(DEBUG_CXXFLAGS) $(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS)\
|
||||
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS)\
|
||||
$(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(POSIX_LDFLAGS) \
|
||||
$(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS) $($(BUILD_CLASS)_LDFLAGS)\
|
||||
$(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS)\
|
||||
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS)\
|
||||
$($(BUILD_CLASS)_LDFLAGS) $(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
|
||||
LDLIBS = \
|
||||
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS) $(GNU_LDLIBS_$(GNU))
|
||||
LDLIBS = $(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS)\
|
||||
$(GNU_LDLIBS_$(GNU))
|
||||
|
||||
CPPFLAGS += $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS)\
|
||||
$(OPT_CPPFLAGS) $(DEBUG_CPPFLAGS) $(WARN_CPPFLAGS)\
|
||||
$(BASE_CPPFLAGS) $(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS)\
|
||||
$(OP_SYS_CPPFLAGS) $(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
|
||||
CPPFLAGS = $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
|
||||
$(DEBUG_CPPFLAGS) $(WARN_CPPFLAGS) $(BASE_CPPFLAGS) $(TARGET_CPPFLAGS)\
|
||||
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
|
||||
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# ar definition default
|
||||
ARFLAGS =
|
||||
ARCMD = $(AR) $(ARFLAGS) $(USR_ARFLAGS) $@ $(LIBRARY_LD_OBJS)
|
||||
ARCMD = $(AR) $(ARFLAGS) $(USR_ARFLAGS) $(CMD_ARFLAGS) $@ $(LIBRARY_LD_OBJS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# 'Munch' link-edit
|
||||
@@ -323,8 +336,7 @@ PREPROCESS.cpp = $(CPP) $(CPPFLAGS) $(INCLUDES) $< > $@
|
||||
HDEPENDS = YES
|
||||
HDEPENDS_METHOD = CMD
|
||||
|
||||
HDEPENDS_INCLUDES = $(subst -I,,$(INCLUDES))
|
||||
HDEPENDSFLAGS = -m $*$(DEP) $(HDEPENDS_INCLUDES) $@ $<
|
||||
HDEPENDSFLAGS = -m $*$(DEP) $(INCLUDES) $@ $<
|
||||
HDEPENDSCMD = -$(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDSFLAGS)
|
||||
|
||||
HDEPENDS_CMD_NO = $(ECHO) ""
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#*************************************************************************
|
||||
# Copyright (c) 2006 UChicago Argonne LLC, as Operator of Argonne
|
||||
# Copyright (c) 2013 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 is distributed subject to a Software License Agreement found
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
# $Revision-Id$
|
||||
#
|
||||
@@ -12,7 +12,7 @@
|
||||
#
|
||||
|
||||
# --------------------------------------------------------------
|
||||
# Module developers can now define a new type of file, e.g. ABC,
|
||||
# Module developers can now define a new type of file, e.g. ABC,
|
||||
# so that files of type ABC will be installed into a directory
|
||||
# defined by INSTALL_ABC. This is done by creating a new CONFIG<name>
|
||||
# file, e.g. CONFIG_ABC, with the following lines:
|
||||
@@ -24,8 +24,14 @@
|
||||
# $(INSTALL_LOCATION). The file type ABC should be target
|
||||
# architecture independent (alh files, medm files, edm files).
|
||||
#
|
||||
# Optional rules necessary for files of type ABC should be put in
|
||||
# a RULES_ABC file.
|
||||
# Files of type ABC are then installed into the INSTALL_ABC
|
||||
# directory by adding a line like the following to a Makefile.
|
||||
#
|
||||
# ABC += <filename1> <filename2> <filename3>
|
||||
#
|
||||
# Rules necessary to create files of type ABC should be put in
|
||||
# a RULES_ABC file. Variables used by those rules should appear
|
||||
# in a CONFIG_ABC file.
|
||||
#
|
||||
# The module developer installs new CONFIG* or RULES* files
|
||||
# into the directory $(INSTALL_LOCATION)/cfg by including the
|
||||
@@ -33,16 +39,11 @@
|
||||
#
|
||||
# CFG += CONFIG_ABC RULES_ABC
|
||||
#
|
||||
# Files of type ABC are installed into INSTALL_ABC directory
|
||||
# by adding a line like the following to a Makefile.
|
||||
#
|
||||
# ABC += <filename1> <filename2> <filename3>
|
||||
#
|
||||
# Files in $(INSTALL_LOCATION)/cfg directory are now included by
|
||||
# the base config files so the definitions and rules are available
|
||||
# for use by later src directory Makefiles in the same module or
|
||||
# by other modules with a RELEASE line pointing to the TOP of
|
||||
# the module with RULES_ABC.
|
||||
# CONFIG and RULES files in the $(INSTALL_LOCATION)/cfg directory
|
||||
# are included by the Base config files so their definitions and
|
||||
# rules are available for use by later src directory Makefiles in
|
||||
# the same module, or by other modules with a RELEASE line that
|
||||
# points to the TOP of the module providing these files.
|
||||
|
||||
FILE_TYPE += ADL
|
||||
INSTALL_ADL = $(INSTALL_LOCATION)/adl
|
||||
@@ -59,6 +60,6 @@ INSTALL_EDL = $(INSTALL_LOCATION)/edl
|
||||
FILE_TYPE += PERL_MODULES
|
||||
INSTALL_PERL_MODULES = $(INSTALL_LOCATION_LIB)/perl
|
||||
|
||||
INSTALLS_CFG= $(CFG:%= $(INSTALL_CFG)/%)
|
||||
INSTALLS_CFG = $(CFG:%= $(INSTALL_CFG)/%)
|
||||
DIRECTORY_TARGETS += $(foreach type, $(FILE_TYPE),$(INSTALL_$(type)))
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
# darwin-x86 (Intel based Apple running OSX)
|
||||
# freebsd-x86 (GNU compiler used for host builds)
|
||||
# freebsd-x86_64 (GNU compiler used for host builds)
|
||||
# linux-arm (GNU compiler used for host builds)
|
||||
# linux-ppc (GNU compiler used for host builds)
|
||||
# linux-ppc64 (GNU compiler used for host builds)
|
||||
# linux-x86 (GNU compiler used for host builds)
|
||||
@@ -41,10 +42,13 @@
|
||||
# win32-x86 (MS Visual C++ compiler used for host builds)
|
||||
# win32-x86-cygwin (WIN32 API with cygwin GNU compiler used for host builds)
|
||||
# win32-x86-mingw (MinGW compiler used for host builds)
|
||||
# win32-x86-static (MS Visual C++ compiler used for host builds)
|
||||
# windows-x64 (MS Visual C++ compiler used for host builds)
|
||||
# windows-x64-mingw (MinGW compiler used for host builds)
|
||||
# windows-x64-static (MS Visual C++ compiler used for host builds)
|
||||
|
||||
# Debugging builds
|
||||
# Debugging builds:
|
||||
# linux-arm-debug (GNU compiler used for host builds)
|
||||
# linux-x86-debug (GNU compiler with -g option for host builds)
|
||||
# linux-x86_64-debug (GNU compiler with -g option for host builds)
|
||||
# solaris-sparc-debug (sun compiler no optimization,-g for debugging info)
|
||||
@@ -61,13 +65,13 @@
|
||||
#
|
||||
# Currently Supporting:
|
||||
|
||||
# ios-arm
|
||||
# ios-386
|
||||
# ios-arm (darwin-x86 host)
|
||||
# ios-386 (darwin-x86 host)
|
||||
# linux-386 (linux-x86 host)
|
||||
# linux-486 (linux-x86 host)
|
||||
# linux-586 (linux-x86 host)
|
||||
# linux-686 (linux-x86 host)
|
||||
# linux-arm (linux-x86 host)
|
||||
# linux-arm (linux-x86 or -x86_64 host)
|
||||
# linux-arm_eb (linux-x86 host)
|
||||
# linux-arm_el (linux-x86 host)
|
||||
# linux-athlon (linux-x86 host)
|
||||
@@ -102,6 +106,7 @@
|
||||
# RTEMS-pc386
|
||||
# RTEMS-psim
|
||||
# RTEMS-uC5282
|
||||
# win32-x86-mingw (linux-x86 or -x86_64 host)
|
||||
#
|
||||
|
||||
# Definitions of CROSS_COMPILER_TARGET_ARCHS in
|
||||
@@ -176,7 +181,7 @@ COMPAT_313=NO
|
||||
#INSTALL_LOCATION=<fullpathname>
|
||||
|
||||
# Use POSIX thread priority scheduling (YES or NO)
|
||||
USE_POSIX_THREAD_PRIORITY_SCHEDULING = NO
|
||||
USE_POSIX_THREAD_PRIORITY_SCHEDULING = YES
|
||||
|
||||
# Site version number, if set will append '-' and this string to the
|
||||
# EPICS version number string that is reported by many tools
|
||||
|
||||
@@ -24,8 +24,8 @@ vpath %.acs $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
|
||||
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))
|
||||
DBDFLAGS = $(USR_DBDFLAGS) $(CMD_DBDFLAGS) $(addprefix -I,$(DBD_SEARCH_DIRS))
|
||||
DBFLAGS = $($*_DBFLAGS) $(USR_DBFLAGS) $(CMD_DBFLAGS) $(addprefix -I,$(DB_SEARCH_DIRS))
|
||||
|
||||
#####################################################
|
||||
# To allow os specific dbd files AND have the -j option work properly,
|
||||
@@ -119,6 +119,9 @@ DBDDEPENDS_CMD = -$(MKMF) -m $(notdir $@)$(DEP) $(DBDDEPENDS_FLAGS) $@ $<
|
||||
|
||||
ifndef T_A
|
||||
|
||||
DEP = .d
|
||||
TEMPLATE3+=$(addsuffix .template, $(TEMPLATE2))
|
||||
|
||||
COMMON_DIR = .
|
||||
INSTALL_DBDS =
|
||||
INSTALL_DBS =
|
||||
@@ -131,7 +134,7 @@ ACTIONS += build
|
||||
ACTIONS += install
|
||||
ACTIONS += buildInstall
|
||||
ACTIONS += browse
|
||||
ACTIONS += runtests
|
||||
ACTIONS += runtests tapfiles
|
||||
|
||||
actionArchTargets = $(foreach x, $(ACTIONS),\ $(foreach arch,$(BUILD_ARCHS), $(x)$(DIVIDER)$(arch)))
|
||||
|
||||
@@ -196,7 +199,7 @@ $(COMMON_DIR)/%.substitutions:
|
||||
endif
|
||||
|
||||
$(INSTALL_DB)/%.substitutions: %.substitutions
|
||||
$(ECHO) "Installing db file $@"
|
||||
$(ECHO) "Installing substitution file $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
|
||||
.PRECIOUS: $(COMMON_DIR)/%.substitutions
|
||||
@@ -210,7 +213,7 @@ $(COMMON_DIR)/%.template: $(COMMON_DIR)/%.edf
|
||||
@$(RM) $@.VAR
|
||||
|
||||
$(INSTALL_DB)/%.template: %.template
|
||||
$(ECHO) "Installing db file $@"
|
||||
$(ECHO) "Installing template file $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
|
||||
.PRECIOUS: $(COMMON_DIR)/%.template
|
||||
@@ -348,7 +351,7 @@ $(COMMON_DIR)/%.db: $(COMMON_DIR)/%.db$(RAW)
|
||||
else
|
||||
|
||||
$(INSTALL_DB)/%: %
|
||||
$(ECHO) "Installing db file $@"
|
||||
$(ECHO) "Installing $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
endif
|
||||
|
||||
|
||||
@@ -18,16 +18,17 @@ ifeq ($(filter $(ARCH),$(BUILD_ARCHS)),$(ARCH))
|
||||
buildInstall$(DIVIDER)$(ARCH) buildInstall: $(TARGETS)
|
||||
|
||||
clean$(DIVIDER)$(ARCH) clean:
|
||||
$(RM) cdCommands envPaths dllPath.bat
|
||||
$(RM) cdCommands envPaths dllPath.bat relPaths.sh
|
||||
else
|
||||
buildInstall$(DIVIDER)$(ARCH) buildInstall:
|
||||
clean$(DIVIDER)$(ARCH) clean:
|
||||
endif
|
||||
|
||||
cdCommands envPaths dllPath.bat: $(wildcard $(TOP)/configure/RELEASE*) \
|
||||
cdCommands envPaths dllPath.bat relPaths.sh: \
|
||||
$(wildcard $(TOP)/configure/RELEASE*) \
|
||||
$(wildcard $(TOP)/configure/CONFIG_SITE*) $(INSTALL_BIN)
|
||||
$(CONVERTRELEASE) -a $(ARCH) -t $(IOCS_APPL_TOP) $@
|
||||
|
||||
realclean:
|
||||
$(RM) cdCommands envPaths dllPath.bat
|
||||
$(RM) cdCommands envPaths dllPath.bat relPaths.sh
|
||||
|
||||
|
||||
@@ -17,41 +17,40 @@ ACTIONS += build
|
||||
ACTIONS += install
|
||||
ACTIONS += buildInstall
|
||||
ACTIONS += browse
|
||||
ACTIONS += runtests
|
||||
ACTIONS += runtests tapfiles
|
||||
#ACTIONS += rebuild
|
||||
|
||||
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
|
||||
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
|
||||
actionArchTargets = $(foreach action, $(ACTIONS), \
|
||||
$(foreach arch, $(BUILD_ARCHS), \
|
||||
$(action)$(DIVIDER)$(arch)))
|
||||
|
||||
actionArchTargets = $(foreach x, $(ACTIONS),\
|
||||
$(foreach arch,$(BUILD_ARCHS), $(x)$(DIVIDER)$(arch)))
|
||||
|
||||
cleanArchTargets = $(foreach arch,$(BUILD_ARCHS), clean$(DIVIDER)$(arch))
|
||||
cleanArchTargets = $(foreach arch, $(BUILD_ARCHS), \
|
||||
clean$(DIVIDER)$(arch))
|
||||
|
||||
buildDirs = $(addprefix O.,$(BUILD_ARCHS))
|
||||
|
||||
#*************************************************************************
|
||||
# Create epics_host_arch dependancies for GNU make -j option
|
||||
# Only works with GNU make 3.81 or later (uses eval function)
|
||||
# Include <top>/cfg/DIR_RULES* files from tops defined in RELEASE* files
|
||||
# Do this here so they can add ACTIONS
|
||||
#
|
||||
RELEASE_CFG_DIR_RULES = $(foreach top, $(RELEASE_TOPS), \
|
||||
$(wildcard $($(top))/cfg/DIR_RULES*))
|
||||
ifneq ($(RELEASE_CFG_DIR_RULES),)
|
||||
include $(RELEASE_CFG_DIR_RULES)
|
||||
endif
|
||||
|
||||
# Create EPICS_HOST_ARCH dependancies for GNU make -j option.
|
||||
# Needed in dirs where EPICS_HOST_ARCH build creates a tool used in
|
||||
# cross arch builds
|
||||
|
||||
CROSS_ARCHS += $(CROSS1) $(CROSS2)
|
||||
|
||||
# j is NOT found in MAKEFLAGS when using make 3.81
|
||||
# Hope to uncomment this for GNU make 3.82
|
||||
#ifeq ($(findstring j,$(MAKEFLAGS)),j)
|
||||
|
||||
define DEP_template
|
||||
$(2): $$(EPICS_HOST_ARCH)
|
||||
$(1)$$(DIVIDER)$(2): $(1)$$(DIVIDER)$$(EPICS_HOST_ARCH) O.$(2)
|
||||
endef
|
||||
|
||||
$(foreach action, $(ACTIONS), $(foreach arch,\
|
||||
$(CROSS_ARCHS),$(eval $(call DEP_template,$(action),$(arch)))))
|
||||
|
||||
#endif
|
||||
#*************************************************************************
|
||||
$(foreach action, $(ACTIONS), \
|
||||
$(foreach arch, $(CROSS_ARCHS), \
|
||||
$(eval $(call DEP_template,$(action),$(arch)))))
|
||||
|
||||
# Allows rebuild to work with parallel builds option, -j.
|
||||
ifeq (rebuild,$(filter rebuild,$(MAKECMDGOALS)))
|
||||
@@ -59,8 +58,11 @@ $(buildDirs) O.Common : clean
|
||||
rebuild: install
|
||||
endif
|
||||
|
||||
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
|
||||
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
|
||||
$(actionArchTargets) : $(buildDirs) O.Common
|
||||
$(MAKE) -C O.$(archPart) -f ../Makefile TOP=$(TOP)/.. T_A=$(archPart) $(actionPart)
|
||||
$(MAKE) -C O.$(archPart) -f ../Makefile TOP=$(TOP)/.. \
|
||||
T_A=$(archPart) $(actionPart)
|
||||
|
||||
$(BUILD_ARCHS) : % : O.% O.Common
|
||||
$(MAKE) -C O.$@ -f ../Makefile TOP=$(TOP)/.. T_A=$@
|
||||
@@ -73,8 +75,7 @@ $(buildDirs):
|
||||
O.Common:
|
||||
$(MKDIR) O.Common
|
||||
|
||||
#
|
||||
# special clean rule
|
||||
# Clean rules
|
||||
#
|
||||
clean ::
|
||||
$(RMDIR) $(addprefix O.,$(BUILD_ARCHS)) O.Common
|
||||
@@ -92,3 +93,7 @@ realclean ::
|
||||
.PHONY : $(cleanArchTargets)
|
||||
.PHONY : $(BUILD_ARCHS) rebuild
|
||||
.PHONY : $(ACTIONS) clean realclean archclean all
|
||||
|
||||
# User specific rules
|
||||
#
|
||||
-include $(HOME)/configure/RULES_USER
|
||||
|
||||
@@ -96,6 +96,8 @@ ifneq (,$(strip $(TESTS)))
|
||||
TARGETS += testspec
|
||||
endif
|
||||
|
||||
TAPFILES += $(TESTSCRIPTS:.t=.tap)
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Libraries
|
||||
#
|
||||
@@ -142,7 +144,8 @@ clean::
|
||||
@$(RM) *.i *$(OBJ) *.a $(TESTPRODNAME) $(LIBNAME) $(SHRLIBNAME) \
|
||||
$(INC) $(TARGETS) $(DLL_LINK_LIBNAME) $(TDS) \
|
||||
*.out MakefileInclude $(LOADABLE_SHRLIBNAME) *.manifest *.exp \
|
||||
$(COMMON_INC) $(HDEPENDS_FILES) $(PRODTARGETS) $(TESTSCRIPTS)
|
||||
$(COMMON_INC) $(HDEPENDS_FILES) $(PRODTARGETS) \
|
||||
$(TESTSCRIPTS) $(TAPFILES)
|
||||
ifdef RES
|
||||
@$(RM) *$(RES)
|
||||
endif
|
||||
@@ -195,17 +198,23 @@ $(OBJLIBNAME):%$(OBJ):
|
||||
@$(RM) $@
|
||||
$(COMPILE.ctdt) $<
|
||||
|
||||
%$(OBJ): %.c
|
||||
# Cancel GNUMake's built-in rules, which don't have our _INC
|
||||
# dependencies so could get used in some circumstances (gdd)
|
||||
%.o : %.c
|
||||
%.o : %.cc
|
||||
%.o : %.cpp
|
||||
|
||||
%$(OBJ): %.c $(COMMON_INC) $(INSTALL_INC)
|
||||
@$(HDEPENDS_CMD)
|
||||
@$(RM) $@
|
||||
$(COMPILE.c) $(call PATH_FILTER,$<) $(COMPILE_FILTER.c)
|
||||
|
||||
%$(OBJ): %.cc
|
||||
%$(OBJ): %.cc $(COMMON_INC) $(INSTALL_INC)
|
||||
@$(HDEPENDS_CMD)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) $(call PATH_FILTER,$<) $(COMPILE_FILTER.cpp)
|
||||
|
||||
%$(OBJ): %.cpp
|
||||
%$(OBJ): %.cpp $(COMMON_INC) $(INSTALL_INC)
|
||||
@$(HDEPENDS_CMD)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) $(call PATH_FILTER,$<) $(COMPILE_FILTER.cpp)
|
||||
@@ -322,6 +331,12 @@ $(OBJLIB_MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(OBJ)
|
||||
@$(RM) $@
|
||||
$(MUNCH_CMD)
|
||||
|
||||
# GeSys modules for RTEMS
|
||||
$(MODNAME): %$(MODEXT): %$(EXE)
|
||||
@echo "Building module $@"
|
||||
@$(RM) $@
|
||||
$(LINK.mod)
|
||||
|
||||
runtests: $(TESTSCRIPTS)
|
||||
-$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
|
||||
|
||||
@@ -332,16 +347,22 @@ testspec: $(TESTSCRIPTS)
|
||||
$(if $^, @echo Tests: $^ >> $@)
|
||||
$(if $(TESTSPEC_$(OS_CLASS)), @echo "Harness: $(TESTSPEC_$(OS_CLASS))" >> $@)
|
||||
|
||||
tapfiles: $(TESTSCRIPTS) $(TAPFILES)
|
||||
|
||||
# A .tap file is the output from running the associated test script
|
||||
%.tap: %.t
|
||||
-$(PERL) $< -tap > $@
|
||||
|
||||
# If there's a perl test script (.plt) available, use it
|
||||
%.t: ../%.plt
|
||||
@$(RM) $@
|
||||
@$(CP) $< $@
|
||||
$(CP) $< $@
|
||||
|
||||
# Some versions of Test::Harness expect test programs in perl only.
|
||||
# Test programs (.t files) must be written in Perl.
|
||||
# Generate a perl program to exec the real test binary.
|
||||
%.t: %$(EXE)
|
||||
%.t: %$(EXE) $(TOOLS)/makeTestfile.pl
|
||||
@$(RM) $@
|
||||
@$(PERL) $(TOOLS)/makeTestfile.pl $@ $<
|
||||
$(PERL) $(TOOLS)/makeTestfile.pl $@ $<
|
||||
|
||||
#---------------------------------------------------------------
|
||||
## Install rules for BIN_INSTALLS and LIB_INSTALLS
|
||||
|
||||
@@ -12,28 +12,33 @@
|
||||
|
||||
|
||||
ARCHS += $(BUILD_ARCHS)
|
||||
ACTIONS += inc build install buildInstall clean realclean archclean runtests
|
||||
|
||||
dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@))))
|
||||
|
||||
actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$(notdir $@))), \
|
||||
$(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@)))))
|
||||
ACTIONS += inc build install buildInstall clean realclean archclean
|
||||
ACTIONS += runtests tapfiles
|
||||
|
||||
dirActionArchTargets = $(foreach dir, $(DIRS), \
|
||||
$(foreach action, $(ACTIONS),\
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch))))
|
||||
$(foreach action, $(ACTIONS), \
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch))))
|
||||
dirArchTargets += $(foreach dir, $(DIRS), \
|
||||
$(foreach arch, $(ARCHS),\
|
||||
$(dir)$(DIVIDER)$(arch)))
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(dir)$(DIVIDER)$(arch)))
|
||||
dirActionTargets += $(foreach dir, $(DIRS), \
|
||||
$(foreach action, $(ACTIONS),\
|
||||
$(dir)$(DIVIDER)$(action)))
|
||||
actionArchTargets = $(foreach action, $(ACTIONS),\
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(action)$(DIVIDER)$(arch)))
|
||||
$(foreach action, $(ACTIONS), \
|
||||
$(dir)$(DIVIDER)$(action)))
|
||||
actionArchTargets = $(foreach action, $(ACTIONS), \
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(action)$(DIVIDER)$(arch)))
|
||||
|
||||
all : install
|
||||
all: install
|
||||
|
||||
# Include <top>/cfg/DIR_RULES* files from tops defined in RELEASE* files
|
||||
# Do this here so they can add ACTIONS
|
||||
#
|
||||
RELEASE_CFG_DIR_RULES = $(foreach top, $(RELEASE_TOPS), \
|
||||
$(wildcard $($(top))/cfg/DIR_RULES*))
|
||||
ifneq ($(RELEASE_CFG_DIR_RULES),)
|
||||
include $(RELEASE_CFG_DIR_RULES)
|
||||
endif
|
||||
|
||||
# Allows rebuild to work with parallel builds option, -j.
|
||||
ifeq (rebuild,$(filter rebuild,$(MAKECMDGOALS)))
|
||||
@@ -47,30 +52,42 @@ endif
|
||||
define DEP_template1
|
||||
$(1): $$($(1)_DEPEND_DIRS)
|
||||
endef
|
||||
$(foreach dir, $(DIRS),$(eval $(call DEP_template1,$(dir))))
|
||||
$(foreach dir, $(DIRS), \
|
||||
$(eval $(call DEP_template1,$(dir))))
|
||||
|
||||
define DEP_template2
|
||||
$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS),$$(addsuffix $$(DIVIDER)$(2),$$(ddir)))
|
||||
$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \
|
||||
$$(addsuffix $$(DIVIDER)$(2),$$(ddir)))
|
||||
endef
|
||||
$(foreach action, $(ACTIONS), $(foreach dir, $(DIRS),$(eval $(call DEP_template2,$(dir),$(action)))))
|
||||
$(foreach action, $(ACTIONS), \
|
||||
$(foreach dir, $(DIRS), \
|
||||
$(eval $(call DEP_template2,$(dir),$(action)))))
|
||||
|
||||
define DEP_template3
|
||||
$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS),$$(addsuffix $$(DIVIDER)$(2),$$(ddir)))
|
||||
$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \
|
||||
$$(addsuffix $$(DIVIDER)$(2),$$(ddir)))
|
||||
endef
|
||||
$(foreach arch, $(ARCHS), $(foreach dir, $(DIRS),$(eval $(call DEP_template3,$(dir),$(arch)))))
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(foreach dir, $(DIRS), \
|
||||
$(eval $(call DEP_template3,$(dir),$(arch)))))
|
||||
|
||||
define DEP_template4
|
||||
$(1)$$(DIVIDER)$(2)$$(DIVIDER)$(3) : $$(foreach ddir, $$($(1)_DEPEND_DIRS),$$(addsuffix $$(DIVIDER)$(2)$$(DIVIDER)$(3),$$(ddir)))
|
||||
$(1)$$(DIVIDER)$(2)$$(DIVIDER)$(3) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \
|
||||
$$(addsuffix $$(DIVIDER)$(2)$$(DIVIDER)$(3),$$(ddir)))
|
||||
endef
|
||||
$(foreach arch, $(ARCHS), $(foreach action, $(ACTIONS), $(foreach dir, $(DIRS), \
|
||||
$(eval $(call DEP_template4,$(dir),$(action),$(arch))))))
|
||||
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(foreach action, $(ACTIONS), \
|
||||
$(foreach dir, $(DIRS), \
|
||||
$(eval $(call DEP_template4,$(dir),$(action),$(arch))))))
|
||||
|
||||
dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@))))
|
||||
actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$(notdir $@))), \
|
||||
$(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@)))))
|
||||
$(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets) :
|
||||
$(MAKE) -C $(dirPart) $(actionArchPart)
|
||||
|
||||
$(ARCHS) $(ACTIONS) $(actionArchTargets) :%: \
|
||||
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
|
||||
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
|
||||
|
||||
.PHONY : $(DIRS) all rebuild
|
||||
.PHONY : $(ARCHS) $(ACTIONS)
|
||||
@@ -78,3 +95,7 @@ $(ARCHS) $(ACTIONS) $(actionArchTargets) :%: \
|
||||
.PHONY : $(dirActionArchTargets)
|
||||
.PHONY : $(actionArchTargets)
|
||||
|
||||
|
||||
# User specific rules
|
||||
#
|
||||
-include $(HOME)/configure/RULES_USER
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
#*************************************************************************
|
||||
# Copyright (c) 2006 UChicago Argonne LLC, as Operator of Argonne
|
||||
# Copyright (c) 2013 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 is distributed subject to a Software License Agreement found
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Include <top>/configure/RULES_BUILD definitions from tops defined in RELEASE* files
|
||||
# Include <top>/configure/RULES_BUILD from tops defined in RELEASE* files
|
||||
#
|
||||
RELEASE_RULES_BUILDS = $(foreach top, $(RELEASE_TOPS), $(wildcard $($(top))/configure/RULES_BUILD))
|
||||
RELEASE_RULES_BUILDS = $(foreach top, $(RELEASE_TOPS), \
|
||||
$(wildcard $($(top))/configure/RULES_BUILD))
|
||||
ifneq ($(RELEASE_RULES_BUILDS),)
|
||||
include $(RELEASE_RULES_BUILDS)
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Include <top>/cfg/RULES* definitions from tops defined in RELEASE* files
|
||||
# Include <top>/cfg/RULES* files from tops defined in RELEASE* files
|
||||
#
|
||||
RELEASE_CFG_RULES = $(foreach top, $(RELEASE_TOPS), $(wildcard $($(top))/cfg/RULES*))
|
||||
RELEASE_CFG_RULES = $(foreach top, $(RELEASE_TOPS), \
|
||||
$(wildcard $($(top))/cfg/RULES*))
|
||||
ifneq ($(RELEASE_CFG_RULES),)
|
||||
include $(RELEASE_CFG_RULES)
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# If this is not BASE then include TOP/configure/RULES_BUILD definitions
|
||||
# If this is not BASE then include <TOP>/configure/RULES_BUILD
|
||||
#
|
||||
ifeq ($(wildcard $(TOP)/configure/CONFIG_BASE_VERSION),)
|
||||
TOP_RULES_BUILDS = $(wildcard $(TOP)/configure/RULES_BUILD)
|
||||
@@ -35,39 +35,38 @@ ifneq ($(TOP_RULES_BUILDS),)
|
||||
endif
|
||||
endif
|
||||
|
||||
#---------------------------------------------
|
||||
# Include existing and new $(INSTALL_CFG)/* definitions
|
||||
# Include our own $(INSTALL_CFG)/RULES* files
|
||||
#
|
||||
TOP_CFG_FILES = $(sort $(wildcard $(INSTALL_CFG)/RULES*) \
|
||||
$(wildcard $(INSTALL_CFG)/CONFIG*) \
|
||||
$(addprefix $(INSTALL_CFG)/,$(CFG)))
|
||||
ifneq ($(TOP_CFG_FILES),)
|
||||
include $(TOP_CFG_FILES)
|
||||
TOP_CFG_RULES = $(wildcard $(INSTALL_CFG)/RULES*)
|
||||
ifneq ($(TOP_CFG_RULES),)
|
||||
include $(TOP_CFG_RULES)
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
|
||||
# Rules to install each FILE_TYPE
|
||||
#
|
||||
define FILE_TYPE_template
|
||||
|
||||
$(1) += $$(if $$(strip $$($(1)_$$(OS_CLASS))),$$(subst -nil-,,$$($(1)_$$(OS_CLASS))), $$($(1)_DEFAULT))
|
||||
|
||||
$(1) += $$(if $$(strip $$($(1)_$(OS_CLASS))), \
|
||||
$$(subst -nil-,,$$($(1)_$(OS_CLASS))), \
|
||||
$$($(1)_DEFAULT))
|
||||
INSTALLS_$(1) = $$($(1):%=$$(INSTALL_$(1))/%)
|
||||
|
||||
$$(INSTALL_$(1))/%: ../%
|
||||
$(ECHO) "Installing $(1) file $$@"
|
||||
@$$(INSTALL) -d -m $$(INSTALL_PERMISSIONS) $$< $$(dir $$@)
|
||||
|
||||
$$(INSTALL_$(1))/%: %
|
||||
$(ECHO) "Installing $(1) file $$@"
|
||||
@$$(INSTALL) -d -m $$(INSTALL_PERMISSIONS) $$< $$(dir $$@)
|
||||
|
||||
buildInstall : $$(INSTALLS_$(1))
|
||||
|
||||
buildInstall: $$(INSTALLS_$(1))
|
||||
endef
|
||||
$(foreach type, $(FILE_TYPE), \
|
||||
$(eval $(call FILE_TYPE_template,$(strip $(type)))))
|
||||
|
||||
$(foreach type, $(FILE_TYPE),$(eval $(call FILE_TYPE_template,$(strip $(type)))))
|
||||
#---------------------------------------------
|
||||
|
||||
# Cleaning FILE_TYPE files
|
||||
#
|
||||
clean::
|
||||
@$(RM) $(foreach type, $(FILE_TYPE), $($(type)))
|
||||
|
||||
# User specific rules
|
||||
#
|
||||
-include $(HOME)/configure/RULES_USER
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
# 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.
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
#
|
||||
# $Revision-Id$
|
||||
# $Revision-Id$
|
||||
#
|
||||
|
||||
include $(CONFIG)/RULES_DIRS
|
||||
|
||||
distclean: realclean cvsclean realuninstall
|
||||
|
||||
CVSCLEAN=$(firstword $(wildcard $(TOOLS)/cvsclean.pl $(TOP)/src/tools/cvsclean.pl))
|
||||
CVSCLEAN = $(call FIND_TOOL,cvsclean.pl)
|
||||
cvsclean:
|
||||
$(PERL) $(CVSCLEAN)
|
||||
|
||||
@@ -22,17 +22,15 @@ 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 += $(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
|
||||
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS)) | cleandirs
|
||||
|
||||
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
|
||||
uninstall$(DIVIDER)%:
|
||||
@@ -40,14 +38,14 @@ uninstall$(DIVIDER)%:
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)/$(archPart)
|
||||
|
||||
cleandirs:
|
||||
@$(NOP)
|
||||
ifeq ($(wildcard $(INSTALL_LOCATION_BIN)/*),)
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)
|
||||
endif
|
||||
ifeq ($(wildcard $(INSTALL_LOCATION_LIB)/*),)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)
|
||||
endif
|
||||
@echo
|
||||
# The echo above stops a "nothing to be done for cleandirs" message
|
||||
|
||||
|
||||
help:
|
||||
@echo "Usage: gnumake [options] [target] ..."
|
||||
@@ -82,3 +80,10 @@ help:
|
||||
.PHONY: cleandirs distclean cvsclean realuninstall archuninstall uninstallDirs
|
||||
.PHONY: uninstall help
|
||||
|
||||
# Include <top>/cfg/TOP_RULES* files from tops defined in RELEASE* files
|
||||
#
|
||||
RELEASE_CFG_TOP_RULES = $(foreach top, $(RELEASE_TOPS), \
|
||||
$(wildcard $($(top))/cfg/TOP_RULES*))
|
||||
ifneq ($(RELEASE_CFG_TOP_RULES),)
|
||||
include $(RELEASE_CFG_TOP_RULES)
|
||||
endif
|
||||
|
||||
@@ -49,28 +49,31 @@ RANLIB := $(RTEMS_TOOLS)/bin/$(RANLIB)
|
||||
VALID_BUILDS = Ioc
|
||||
|
||||
#--------------------------------------------------
|
||||
# The RTEMS Makefiles redefine several macros, so we have to go
|
||||
# through the following contortions to get the EPICS flags back.
|
||||
CFLAGS = $(CROSS_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)\
|
||||
$(WARN_CFLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS)\
|
||||
$(CODE_CFLAGS) $(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS)\
|
||||
$(HDEPENDS_CFLAGS)
|
||||
# The RTEMS Makefiles redefine several macros, so we have to
|
||||
# reset them to the proper EPICS values, from CONFIG_COMMON
|
||||
CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS)\
|
||||
$(DEBUG_CFLAGS) $(PIPE_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS)\
|
||||
$(USR_CFLAGS) $(CMD_CFLAGS) $(ARCH_DEP_CFLAGS) $(CODE_CFLAGS)\
|
||||
$(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
|
||||
CXXFLAGS = $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
$(DEBUG_CXXFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS)\
|
||||
$(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS)\
|
||||
$(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
$(DEBUG_CXXFLAGS) $(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS)\
|
||||
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS)\
|
||||
$(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS) $(HDEPENDS_CFLAGS)
|
||||
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) \
|
||||
$(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)\
|
||||
$(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS)\
|
||||
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS)\
|
||||
$($(BUILD_CLASS)_LDFLAGS) $(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
|
||||
LDLIBS = \
|
||||
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS)
|
||||
LDLIBS = $(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS)\
|
||||
$(GNU_LDLIBS_$(GNU))
|
||||
|
||||
CPPFLAGS += $(CROSS_CPPFLAGS) $(POSIX_CPPFLAGS)\
|
||||
$(BASE_CPPFLAGS) $(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS)\
|
||||
$(OP_SYS_CPPFLAGS) $(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
|
||||
CPPFLAGS += $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
|
||||
$(DEBUG_CPPFLAGS) $(WARN_CPPFLAGS) $(BASE_CPPFLAGS) $(TARGET_CPPFLAGS)\
|
||||
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
|
||||
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
|
||||
|
||||
ECHO = @$(if $(findstring s,$(patsubst T_A=%,,$(MAKEFLAGS))),$(NOP),echo)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Although RTEMS uses gcc, it wants to use gcc its own way
|
||||
@@ -82,6 +85,8 @@ OPT_CXXFLAGS_YES = $(CFLAGS_OPTIMIZE_V)
|
||||
OPT_CFLAGS_NO = $(CFLAGS_DEBUG_V)
|
||||
OPT_CXXFLAGS_NO = $(CFLAGS_DEBUG_V)
|
||||
|
||||
MODEXT=.obj
|
||||
|
||||
#--------------------------------------------------
|
||||
# operating system class (include/os/<os_class>)
|
||||
OS_CLASS = RTEMS
|
||||
@@ -96,6 +101,42 @@ OP_SYS_LDFLAGS += $(CPU_CFLAGS) -u Init \
|
||||
$(PROJECT_RELEASE)/lib/no-signal.rel \
|
||||
$(PROJECT_RELEASE)/lib/no-rtmon.rel
|
||||
|
||||
MOD_SYS_LDFLAGS += $(CPU_CFLAGS) -Wl,-r -nostdlib
|
||||
|
||||
# Do not link against libraries which are part of the Generic Image
|
||||
GESYS_LIBS += -lgcc
|
||||
GESYS_LIBS += -lc -lm -lrtemscpu -lrtemsbsp -lrtems++ -lbspExt
|
||||
GESYS_LIBS += -lcexp -ltecla_r -lspencer_regexp -lpmelf -lpmbfd
|
||||
GESYS_LIBS += -lnfs -ltelnetd -lrtems-gdb-stub
|
||||
|
||||
# While not part of the Generic Image it provides symbols which
|
||||
# would conflict.
|
||||
GESYS_LIBS += -lrtemsCom
|
||||
|
||||
#--------------------------------------------------
|
||||
# Options for building GeSys loadable objects
|
||||
|
||||
MODNAME_YES = $(PRODNAME:%$(EXE)=%$(MODEXT))
|
||||
MODNAME += $(MODNAME_$(USE_GESYS))
|
||||
PRODTARGETS += $(MODNAME)
|
||||
BIN_INSTALLS += $(MODNAME)
|
||||
|
||||
# changes to LDFLAGS in CONFIG_COMMON and LINK.cpp in CONFIG.Common.UnixCommon
|
||||
# should be reflected here with the following exceptions
|
||||
#
|
||||
# replace OP_SYS_LDFLAGS with MOD_SYS_LDFLAGS
|
||||
# replace PROD_LDLIBS with MOD_LDLIBS
|
||||
# remove STATIC_LDFLAGS
|
||||
|
||||
MOD_LDLIBS = $(filter-out $(GESYS_LIBS),$(PROD_LDLIBS))
|
||||
|
||||
MOD_LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(POSIX_LDFLAGS) \
|
||||
$(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(MOD_SYS_LDFLAGS) $($(BUILD_CLASS)_LDFLAGS)\
|
||||
$(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
|
||||
LINK.mod = $(CCC) -o $@ $(PRODDIR_LDFLAGS) $(MOD_LDFLAGS)
|
||||
LINK.mod += $(PROD_LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(MOD_LDLIBS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# RTEMS has neither shared libraries nor dynamic loading
|
||||
STATIC_BUILD=YES
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-mvme3100
|
||||
# CONFIG.Common.RTEMS-mvme2100
|
||||
# $Revision-Id$
|
||||
# Author: W. Eric Norum <wenorum@lbl.gov>
|
||||
#
|
||||
|
||||
@@ -22,4 +22,6 @@ define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
endef
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
@@ -12,7 +12,7 @@ MUNCH_SUFFIX = .boot
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< temp.bin
|
||||
$(PROJECT_RELEASE)/build-tools/bin2boot $@ 0x00097E00 \
|
||||
$(BIN2BOOT) $@ 0x00097E00 \
|
||||
$(PROJECT_RELEASE)/lib/start16.bin 0x00097C00 0 temp.bin 0x00100000 0
|
||||
rm -f temp.bin
|
||||
endef
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
IOS_PLATFORM = iPhoneOS
|
||||
|
||||
OP_SYS_CFLAGS += -fno-inline-functions
|
||||
OP_SYS_CFLAGS += -miphoneos-version-min=$(IOS_DEPLOYMENT_TARGET)
|
||||
OP_SYS_LDFLAGS += -miphoneos-version-min=$(IOS_DEPLOYMENT_TARGET)
|
||||
|
||||
# iOS optimization flags for arm architecture
|
||||
OPT_CFLAGS_YES = -O2
|
||||
|
||||
@@ -10,10 +10,8 @@
|
||||
|
||||
IOS_PLATFORM = iPhoneSimulator
|
||||
|
||||
#
|
||||
# Architecture-specific information
|
||||
#
|
||||
ARCH_CLASS = i386
|
||||
OP_SYS_CFLAGS += -mios-simulator-version-min=$(IOS_DEPLOYMENT_TARGET)
|
||||
OP_SYS_LDFLAGS += -mios-simulator-version-min=$(IOS_DEPLOYMENT_TARGET)
|
||||
|
||||
# Include definitions common to all iOS targets
|
||||
include $(CONFIG)/os/CONFIG.Common.iosCommon
|
||||
|
||||
@@ -25,7 +25,7 @@ OS_CLASS = iOS
|
||||
#--------------------------------------------------
|
||||
# GNU and SDK directories
|
||||
GNU_DIR = $(PLATFORM_DIR)/Developer/usr
|
||||
SDK_DIR = $(PLATFORM_DIR)/Developer/SDKs/$(IOS_PLATFORM)$(IOS_VERSION).sdk
|
||||
SDK_DIR = $(PLATFORM_DIR)/Developer/SDKs/$(IOS_PLATFORM).sdk
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Build architecture flags
|
||||
@@ -40,7 +40,7 @@ ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Operating system flags
|
||||
OP_SYS_CFLAGS += -isysroot $(SDK_DIR) -D__IPHONE_OS_VERSION_MIN_REQUIRED=30200
|
||||
OP_SYS_CFLAGS += -isysroot $(SDK_DIR)
|
||||
OP_SYS_LDFLAGS += -isysroot $(SDK_DIR)
|
||||
|
||||
#--------------------------------------------------
|
||||
@@ -104,6 +104,9 @@ HDEPENDS_METHOD = CMD
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).iosCommon
|
||||
|
||||
#--------------------------------------------------
|
||||
# Find the Xcode compilers for the specified SDK just once
|
||||
# Find the Xcode programs for the selected SDK
|
||||
CC := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find $(CC_$(COMPILER)))
|
||||
CCC := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find $(CCC_$(COMPILER)))
|
||||
AR := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find ar) -rc
|
||||
LD := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find ld) -r
|
||||
RANLIB := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find ranlib)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# CONFIG.Common.linux-arm
|
||||
#
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for linux-arm target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-arm
|
||||
# Override these settings in CONFIG_SITE.Common.linux-arm
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
@@ -11,26 +9,3 @@ include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = arm
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc
|
||||
GNU_TARGET = arm-linux
|
||||
|
||||
# prefix of compiler tools
|
||||
CMPLR_SUFFIX =
|
||||
CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
|
||||
|
||||
# Provide a link-time path for shared libraries
|
||||
SHRLIBDIR_RPATH_LDFLAGS_YES += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
|
||||
SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
# 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
|
||||
|
||||
13
configure/os/CONFIG.Common.linux-arm-debug
Normal file
13
configure/os/CONFIG.Common.linux-arm-debug
Normal file
@@ -0,0 +1,13 @@
|
||||
# CONFIG.Common.linux-arm-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for linux-arm with debug compiler flags
|
||||
# Override these settings in CONFIG_SITE.Common.linux-arm-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux-arm target archs
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-arm
|
||||
|
||||
HOST_OPT=NO
|
||||
@@ -12,13 +12,10 @@ include $(CONFIG)/os/CONFIG.Common.UnixCommon
|
||||
|
||||
OS_CLASS = Linux
|
||||
|
||||
CODE_CPPFLAGS = -D_REENTRANT
|
||||
|
||||
POSIX_CPPFLAGS = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500
|
||||
# Define _GNU_SOURCE and _DEFAULT_SOURCE for maximum portability
|
||||
POSIX_CPPFLAGS = -D_GNU_SOURCE -D_DEFAULT_SOURCE
|
||||
POSIX_LDLIBS = -lpthread
|
||||
|
||||
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
|
||||
OP_SYS_CPPFLAGS += -D_BSD_SOURCE
|
||||
OP_SYS_CPPFLAGS += -Dlinux
|
||||
OP_SYS_LDLIBS += -lrt -ldl
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ COMPILER_LDFLAGS += -mt
|
||||
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
|
||||
|
||||
POSIX_CPPFLAGS += -D_POSIX_C_SOURCE=199506L $(POSIX_CPPFLAGS_$(SOLARIS_VERSION))
|
||||
POSIX_CPPFLAGS += -D_XOPEN_SOURCE=500
|
||||
POSIX_LDLIBS += -lposix4 -lpthread $(POSIX_LDLIBS_$(SOLARIS_VERSION))
|
||||
|
||||
OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION) $(COMPILER_CPPFLAGS)
|
||||
|
||||
@@ -21,7 +21,6 @@ COMPILER_LDFLAGS += -mt
|
||||
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
|
||||
|
||||
POSIX_CPPFLAGS += -D_POSIX_C_SOURCE=199506L $(POSIX_CPPFLAGS_$(SOLARIS_VERSION))
|
||||
POSIX_CPPFLAGS += -D_XOPEN_SOURCE=500
|
||||
POSIX_LDLIBS += -lposix4 -lpthread $(POSIX_LDLIBS_$(SOLARIS_VERSION))
|
||||
|
||||
OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION) $(COMPILER_CPPFLAGS)
|
||||
@@ -53,6 +52,7 @@ OP_SYS_LDLIBS += -lsocket -lnsl
|
||||
OP_SYS_LDLIBS_8 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_9 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_10 += -lCrun -lc
|
||||
OP_SYS_LDLIBS_11 += -lCrun -lc
|
||||
OP_SYS_LDLIBS += $(OP_SYS_LDLIBS_$(SOLARIS_VERSION))
|
||||
OP_SYS_LDLIBS += $(STLPORT_LDLIBS_$(USE_STLPORT))
|
||||
|
||||
|
||||
@@ -17,4 +17,5 @@ STLPORT_LDLIBS_NO =
|
||||
OP_SYS_LDLIBS_8 = -ldl -lc
|
||||
OP_SYS_LDLIBS_9 = -ldl -lc
|
||||
OP_SYS_LDLIBS_10 = -lc
|
||||
OP_SYS_LDLIBS_11 = -lc
|
||||
|
||||
|
||||
@@ -11,14 +11,13 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||
|
||||
# Vx GNU cross compiler suffix
|
||||
CMPLR_SUFFIX = 386
|
||||
CMPLR_SUFFIX = pentium
|
||||
|
||||
ARCH_CLASS = pc486
|
||||
ARCH_CLASS = x86
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=I80486 -D_X86_
|
||||
ARCH_DEP_CFLAGS = -m486
|
||||
ARCH_DEP_CXXFLAGS += -x 'c++'
|
||||
ARCH_DEP_CFLAGS += -fno-defer-pop
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=I80486 -D_X86_
|
||||
ARCH_DEP_CFLAGS = -mtune=i486 -march=i486
|
||||
ARCH_DEP_CFLAGS += -fno-zero-initialized-in-bss -fno-defer-pop
|
||||
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-486
|
||||
|
||||
@@ -11,12 +11,14 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||
|
||||
# Vx GNU cross compiler suffix
|
||||
CMPLR_SUFFIX = 386
|
||||
|
||||
ARCH_CLASS = pcPentium
|
||||
CMPLR_SUFFIX = pentium
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PENTIUM -D_X86_
|
||||
ARCH_DEP_CFLAGS = -mpentium
|
||||
ARCH_DEP_CXXFLAGS += -x 'c++'
|
||||
ARCH_DEP_CFLAGS += -fno-defer-pop
|
||||
ARCH_CLASS = x86
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PENTIUM -D_X86_
|
||||
ARCH_DEP_CFLAGS = -mtune=pentium -march=pentium
|
||||
ARCH_DEP_CFLAGS += -fno-zero-initialized-in-bss -fno-defer-pop
|
||||
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-pentium
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for cygwin-x86 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.cygwin-x86
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.win32-x86-cygwin
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all Unix targets
|
||||
|
||||
@@ -34,7 +34,8 @@ ARCH_DEP_LDFLAGS += -m32
|
||||
# Override for -DUNIX from CONFIG.Common.UnixCommon
|
||||
OP_SYS_CPPFLAGS = -D_MINGW
|
||||
|
||||
EXE=.exe
|
||||
EXE = .exe
|
||||
RES = .coff
|
||||
|
||||
VISC_DLL_NO = -DEPICS_DLL_NO
|
||||
VISC_DLL_YES =
|
||||
|
||||
12
configure/os/CONFIG.linux-arm-debug.Common
Normal file
12
configure/os/CONFIG.linux-arm-debug.Common
Normal file
@@ -0,0 +1,12 @@
|
||||
# CONFIG.linux-arm-debug.Common
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for linux-arm-debug host builds
|
||||
# Override these settings in CONFIG_SITE.linux-arm-debug.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to linux-arm hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-arm.Common
|
||||
|
||||
14
configure/os/CONFIG.linux-arm-debug.linux-arm-debug
Normal file
14
configure/os/CONFIG.linux-arm-debug.linux-arm-debug
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG.linux-arm-debug.linux-arm-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for linux-arm-debug host and target build
|
||||
# Override these settings in CONFIG_SITE.linux-arm-debug.linux-arm-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-arm.linux-arm
|
||||
|
||||
# Removes -O optimization and adds -g compile option
|
||||
HOST_OPT=NO
|
||||
|
||||
15
configure/os/CONFIG.linux-arm.linux-arm-debug
Normal file
15
configure/os/CONFIG.linux-arm.linux-arm-debug
Normal file
@@ -0,0 +1,15 @@
|
||||
# CONFIG.linux-arm.linux-arm-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for linux-arm host - linux-arm-debug target build
|
||||
# Override these settings in CONFIG_SITE.linux-arm.linux-arm-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
-include $(CONFIG)/os/CONFIG.linux-arm.linux-arm
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.linux-arm
|
||||
-include $(CONFIG)/os/CONFIG_SITE.linux-arm.linux-arm
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT=NO
|
||||
@@ -1,10 +1,31 @@
|
||||
# CONFIG.linux-x86.linux-arm
|
||||
#
|
||||
# Definitions for linux-x86 host - linux-arm target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-arm
|
||||
# Override these settings in CONFIG_SITE.linux-x86.linux-arm
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Copied from x86.x86
|
||||
VALID_BUILDS = Ioc
|
||||
GNU_TARGET = arm-linux
|
||||
|
||||
# prefix of compiler tools
|
||||
CMPLR_SUFFIX =
|
||||
CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
|
||||
|
||||
# Provide a link-time path for shared libraries
|
||||
SHRLIBDIR_RPATH_LDFLAGS_YES += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
|
||||
SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
# 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))
|
||||
|
||||
# Library flags
|
||||
STATIC_LDFLAGS_YES= -Wl,-Bstatic
|
||||
STATIC_LDFLAGS_NO=
|
||||
STATIC_LDLIBS_YES= -Wl,-Bdynamic
|
||||
|
||||
9
configure/os/CONFIG.linux-x86.linux-arm-debug
Normal file
9
configure/os/CONFIG.linux-x86.linux-arm-debug
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG.linux-x86.linux-arm-debug
|
||||
#
|
||||
# Definitions for linux-x86 host - linux-arm-debug target builds
|
||||
# Override these settings in CONFIG_SITE.linux-x86.linux-arm-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions for linux-arm targets
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-arm
|
||||
|
||||
22
configure/os/CONFIG.linux-x86.win32-x86-mingw
Normal file
22
configure/os/CONFIG.linux-x86.win32-x86-mingw
Normal file
@@ -0,0 +1,22 @@
|
||||
# CONFIG.linux-x86.win32-x86-mingw
|
||||
#
|
||||
# Definitions for linux-x86 host win32-x86-mingw target builds
|
||||
# Override these definitions in CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include common gnu compiler definitions
|
||||
include $(CONFIG)/CONFIG.gnuCommon
|
||||
|
||||
# Add resource compiler
|
||||
RCCMD = $(CMPLR_PREFIX)windres$(CMPLR_SUFFIX) $(INCLUDES) $< $@
|
||||
|
||||
# Remove -fPIC flags, add out-implib
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
|
||||
# Don't link with gcc library
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
# Link with winsock2
|
||||
OP_SYS_LDLIBS = -lws2_32
|
||||
8
configure/os/CONFIG.linux-x86_64.linux-arm
Normal file
8
configure/os/CONFIG.linux-x86_64.linux-arm
Normal file
@@ -0,0 +1,8 @@
|
||||
# CONFIG.linux-x86_64.linux-arm
|
||||
#
|
||||
# Definitions for linux-x86_64 host - linux-arm target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86_64.linux-arm
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-arm
|
||||
|
||||
8
configure/os/CONFIG.linux-x86_64.linux-arm-debug
Normal file
8
configure/os/CONFIG.linux-x86_64.linux-arm-debug
Normal file
@@ -0,0 +1,8 @@
|
||||
# CONFIG.linux-x86_64.linux-arm-debug
|
||||
#
|
||||
# Definitions for linux-x86_64 host - linux-arm-debug target builds
|
||||
# Override these settings in CONFIG_SITE.linux-x86_64.linux-arm-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-arm
|
||||
|
||||
9
configure/os/CONFIG.linux-x86_64.win32-x86-mingw
Normal file
9
configure/os/CONFIG.linux-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG.linux-x86_64.win32-x86-mingw
|
||||
#
|
||||
# Definitions for linux-x86_64 host win32-x86-mingw target builds
|
||||
# Override these definitions in CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Settings as for the linux-x86 host architecture
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.win32-x86-mingw
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for solaris-sparc Sun compiler host builds
|
||||
# Definitions for solaris-sparc64 Sun compiler host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-sparc64.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for solaris-sparc Sun compiler host - solaris-sparc Sun compiler target builds
|
||||
# Definitions for solaris-sparc64 compiler host - solaris-sparc64 compiler target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-sparc64.solaris-sparc64
|
||||
#-------------------------------------------------------
|
||||
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for solaris-sparc host - solaris-sparc target build
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-sparc.solaris-sparc
|
||||
# Definitions for solaris host - solaris target build
|
||||
# Sites may override these definitions in CONFIG_SITE.solarisCommon.solarisCommon
|
||||
#-------------------------------------------------------
|
||||
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
GNU = NO
|
||||
|
||||
# SPARCWORKS path is set in a CONFIG_SITE file
|
||||
|
||||
CC = $(SPARCWORKS)/bin/cc
|
||||
CCC = $(SPARCWORKS)/bin/CC
|
||||
CPP = $(CC) -E -Qn
|
||||
|
||||
@@ -261,7 +261,7 @@ LINK.cpp += , $@ ,,$(LINKLIBS) $(subst /,\\,$(PROD_LDLIBS))
|
||||
#--------------------------------------------------
|
||||
|
||||
# override of CONFIG_COMMON
|
||||
HDEPENDS_INCLUDES_MKMF = $(filter-out $(BORLAND_INC),$(subst -I,,$(INCLUDES)))
|
||||
HDEPENDS_INCLUDES_MKMF = $(filter-out $(addprefix -I,$(BORLAND_INC)),$(INCLUDES))
|
||||
|
||||
|
||||
TDS = $(addsuffix .tds,$(basename $(PROD) $(TESTPROD) $(BUILD_LIBRARY)))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for win32-x86-cygwin host archs
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-cygwin.Common
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-mingw.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
|
||||
@@ -9,22 +9,27 @@
|
||||
# Include common gnu compiler definitions
|
||||
include $(CONFIG)/CONFIG.gnuCommon
|
||||
|
||||
# Undo various things set by CONFIG.gnuCommon
|
||||
|
||||
CMPLR_PREFIX =
|
||||
|
||||
# Remove $(GNU_BIN)/ path
|
||||
CC = $(CMPLR_PREFIX)gcc
|
||||
CCC = $(CMPLR_PREFIX)g++
|
||||
AR = $(CMPLR_PREFIX)ar -rc
|
||||
LD = $(CMPLR_PREFIX)ld -r
|
||||
RANLIB = $(CMPLR_PREFIX)ranlib
|
||||
RES = .coff
|
||||
|
||||
# Add resource compiler
|
||||
RCCMD = $(CMPLR_PREFIX)windres $(INCLUDES) $< $@
|
||||
|
||||
# No -fPIC avoids "-fPIC ignored for target (all code is position independent)"
|
||||
# Remove -fPIC flags, add out-implib
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
|
||||
# Override linking with gcc library from CONFIG.gnuCommon
|
||||
# Don't link with gcc library
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
# Link with winsock2
|
||||
OP_SYS_LDLIBS = -lws2_32
|
||||
|
||||
11
configure/os/CONFIG.win32-x86-static.Common
Normal file
11
configure/os/CONFIG.win32-x86-static.Common
Normal file
@@ -0,0 +1,11 @@
|
||||
# CONFIG.win32-x86-static.Common
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for win32-x86-static host archs
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-static.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.win32-x86.Common
|
||||
|
||||
13
configure/os/CONFIG.win32-x86-static.win32-x86-static
Normal file
13
configure/os/CONFIG.win32-x86-static.win32-x86-static
Normal file
@@ -0,0 +1,13 @@
|
||||
# CONFIG.win32-x86-static.win32-x86.static
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for win32-x86-static target archs when host arch is win32-x86-static
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-static.win32-x86-static
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
||||
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD = YES
|
||||
@@ -189,7 +189,8 @@ OP_SYS_CXXFLAGS = $(COMPILER_CXXFLAGS)
|
||||
# '-entry:_DllMainCRTStartup$(DLLENTRY)'
|
||||
DLLENTRY = @12
|
||||
|
||||
WIN32_DLLFLAGS = /subsystem:windows /dll $(OPT_LDFLAGS) $(USR_LDFLAGS) $(TARGET_LDFLAGS) $(LIB_LDFLAGS)
|
||||
WIN32_DLLFLAGS = /subsystem:windows /dll $(OPT_LDFLAGS) \
|
||||
$(USR_LDFLAGS) $(CMD_LDFLAGS) $(TARGET_LDFLAGS) $(LIB_LDFLAGS)
|
||||
|
||||
#
|
||||
# specify dll .def file only if it exists
|
||||
|
||||
14
configure/os/CONFIG.win32-x86.win32-x86-static
Normal file
14
configure/os/CONFIG.win32-x86.win32-x86-static
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG.win32-x86.win32-x86-static
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for win32-x86-static target archs when host arch is win32-x86
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86.win32-x86-static
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD = YES
|
||||
@@ -13,7 +13,7 @@
|
||||
ARCH_DEP_CPPFLAGS += /favor:blend
|
||||
#ARCH_DEP_CPPFLAGS += /Wp64
|
||||
|
||||
# /favor:blend both AMD64 and INTEL64
|
||||
# /favor:blend both AMD64 and INTEL64 This is the default
|
||||
# /favor:AMD64
|
||||
# /favor:INTEL64 (new value)
|
||||
# /favor:EN64T (old value)
|
||||
|
||||
11
configure/os/CONFIG.windows-x64-static.Common
Normal file
11
configure/os/CONFIG.windows-x64-static.Common
Normal file
@@ -0,0 +1,11 @@
|
||||
# CONFIG.windows-x64-static.Common
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for windows-x64-static host archs
|
||||
# Sites may override these definitions in CONFIG_SITE.windows-x64-static.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.Common
|
||||
|
||||
13
configure/os/CONFIG.windows-x64-static.windows-x64-static
Normal file
13
configure/os/CONFIG.windows-x64-static.windows-x64-static
Normal file
@@ -0,0 +1,13 @@
|
||||
# CONFIG.windows-x64-static.windows-x64-static
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for windows-x64-static target archs when host arch is windows-x64-static
|
||||
# Sites may override these definitions in CONFIG_SITE.windows-x64-static.windows-x64-static
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
|
||||
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD= YES
|
||||
12
configure/os/CONFIG.windows-x64.windows-x64-debug
Normal file
12
configure/os/CONFIG.windows-x64.windows-x64-debug
Normal file
@@ -0,0 +1,12 @@
|
||||
# CONFIG.windows-x64.windows-x64-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for windows-x64 compiler host - windows-x64 debug compiler target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.windows-x64.windows-x64-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
|
||||
|
||||
HOST_OPT=NO
|
||||
14
configure/os/CONFIG.windows-x64.windows-x64-static
Normal file
14
configure/os/CONFIG.windows-x64.windows-x64-static
Normal file
@@ -0,0 +1,14 @@
|
||||
# CONFIG.windows-x86.windows-x86-static
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for windows-x64-static target archs when host arch is windows-x64
|
||||
# Sites may override these definitions in CONFIG_SITE.windows-x64.windows-x64-static
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD = YES
|
||||
@@ -1,17 +1,26 @@
|
||||
# CONFIG_SITE.Common.RTEMS
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site-specific information for all RTEMS targets
|
||||
#
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Where to find RTEMS
|
||||
#
|
||||
# APS:
|
||||
RTEMS_VERSION = 4.10.2
|
||||
RTEMS_BASE = /usr/local/rtems/rtems-$(RTEMS_VERSION)
|
||||
RTEMS_BASE = /usr/local/vw/rtems/rtems-$(RTEMS_VERSION)
|
||||
|
||||
# Cross-compile toolchain in $(RTEMS_TOOLS)/bin
|
||||
#
|
||||
RTEMS_TOOLS = $(RTEMS_BASE)
|
||||
|
||||
# Link Generic System loadable objects instead of full executable.
|
||||
#
|
||||
# A GeSys object is similar to a shared library. It can be (un)loaded
|
||||
# at runtime by the Generic System loader which is available as a
|
||||
# patch against RTEMS.
|
||||
USE_GESYS = NO
|
||||
|
||||
# If you're using neither BOOTP/DHCP nor FLASH to pick up your IOC
|
||||
# network configuration you must uncomment and specify your Internet
|
||||
|
||||
@@ -16,11 +16,12 @@
|
||||
#
|
||||
# Xcode 4.5 dropped support for the ARMv6.
|
||||
#
|
||||
# ARMv8 (arm64) devices: iPhone 5S
|
||||
# ARMv7s devices: iPhone 5 and 5C, iPad Gen 4
|
||||
# ARMv7 devices: iPhone 3GS, 4 and 4S, iPod Touch Gen 3 to 5
|
||||
# iPad Gen 1 to 3, iPad Mini, Apple TV Gen 2 and 3
|
||||
# ARMv6 devices: iPhone 1 and 3G, iPod Touch Gen 1 and 2
|
||||
# arm64 devices: iPhone 5S, 6 and 6 Plus, iPad Air Gen 1 and 2,
|
||||
# iPad Mini Gen 2 and 3
|
||||
# armv7s devices: iPhone 5 and 5C, iPad Gen 4
|
||||
# armv7 devices: iPhone 3GS, 4 and 4S, iPod Touch Gen 3 to 5
|
||||
# iPad Gen 1 to 3, iPad Mini, Apple TV Gen 2 and 3
|
||||
# armv6 devices: iPhone 1 and 3G, iPod Touch Gen 1 and 2
|
||||
|
||||
#ARCH_CLASS = arm64
|
||||
#ARCH_CLASS = armv7s arm64
|
||||
|
||||
18
configure/os/CONFIG_SITE.Common.ios-x86
Normal file
18
configure/os/CONFIG_SITE.Common.ios-x86
Normal file
@@ -0,0 +1,18 @@
|
||||
# CONFIG_SITE.Common.ios-x86
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site-specific settings for ios-x86 target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Which x86 instruction set(s) to generate code for:
|
||||
# The iPhone Simulator now supports both 32-bit and 64-bit
|
||||
# instruction sets since the iPhone 6 uses a 64-bit CPU.
|
||||
#
|
||||
# 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.
|
||||
|
||||
#ARCH_CLASS = i386
|
||||
ARCH_CLASS = i386 x86_64
|
||||
#ARCH_CLASS = x86_64
|
||||
@@ -5,17 +5,20 @@
|
||||
# Site-specific settings for Apple iOS builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# iOS Version number
|
||||
# Minimum version of iOS the executables must run on.
|
||||
# Earlier versions may work, if XCode supports them.
|
||||
|
||||
#IOS_VERSION = 3.2
|
||||
#IOS_VERSION = 4.1
|
||||
#IOS_VERSION = 4.2
|
||||
#IOS_VERSION = 4.3
|
||||
#IOS_VERSION = 5.0
|
||||
#IOS_VERSION = 5.1
|
||||
#IOS_VERSION = 6.0
|
||||
#IOS_VERSION = 6.1
|
||||
IOS_VERSION = 7.0
|
||||
#IOS_DEPLOYMENT_TARGET = 5.0
|
||||
#IOS_DEPLOYMENT_TARGET = 5.1
|
||||
#IOS_DEPLOYMENT_TARGET = 6.0
|
||||
#IOS_DEPLOYMENT_TARGET = 6.1
|
||||
#IOS_DEPLOYMENT_TARGET = 7.0
|
||||
#IOS_DEPLOYMENT_TARGET = 7.1
|
||||
IOS_DEPLOYMENT_TARGET = 8.0
|
||||
#IOS_DEPLOYMENT_TARGET = 8.1
|
||||
|
||||
# Older versions of Xcode may require this SDK_DIR definition
|
||||
#SDK_DIR = $(PLATFORM_DIR)/Developer/SDKs/$(IOS_PLATFORM)$(IOS_DEPLOYMENT_TARGET).sdk
|
||||
|
||||
|
||||
# Which compiler to use:
|
||||
|
||||
41
configure/os/CONFIG_SITE.Common.linux-arm
Normal file
41
configure/os/CONFIG_SITE.Common.linux-arm
Normal file
@@ -0,0 +1,41 @@
|
||||
# CONFIG_SITE.Common.linux-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for all linux-arm targets
|
||||
#-------------------------------------------------------
|
||||
|
||||
# NOTE for SHARED_LIBRARIES: In most cases if this is set to YES the
|
||||
# shared libraries will be found automatically. However if the .so
|
||||
# files are installed at a different path to their compile-time path
|
||||
# then in order to be found at runtime do one of these:
|
||||
# a) LD_LIBRARY_PATH must include the full absolute pathname to
|
||||
# $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) when invoking base
|
||||
# executables.
|
||||
# b) Add the runtime path to SHRLIB_DEPLIB_DIRS and PROD_DEPLIB_DIRS, which
|
||||
# will add the named directory to the list contained in the executables.
|
||||
# c) Add the runtime path to /etc/ld.so.conf and run ldconfig
|
||||
# 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 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
|
||||
|
||||
|
||||
# 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
|
||||
OPT_CXXFLAGS_YES += -g
|
||||
@@ -1,9 +1,12 @@
|
||||
# CONFIG_SITE.Common.linux-xscale_be
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# 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
|
||||
# APS:
|
||||
GNU_DIR = /usr/local/vw/xscale_be
|
||||
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
# Site Specific definitions for solaris-sparc target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# If readline is installed uncomment the following macro definition
|
||||
# to include command-line editing and history support
|
||||
#
|
||||
# location of the Solaris Studio (was SunPro) compilers
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
#SPARCWORKS = /opt/solarisstudio12.3
|
||||
|
||||
# Readline library provides command-line editing and history in IOC shell
|
||||
# If readline is installed, uncomment the following macro definition
|
||||
# to use it for command-line editing and history support
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Use stLport library instead of default Cstd library
|
||||
|
||||
11
configure/os/CONFIG_SITE.Common.solaris-x86
Normal file
11
configure/os/CONFIG_SITE.Common.solaris-x86
Normal file
@@ -0,0 +1,11 @@
|
||||
# CONFIG_SITE.Common.solaris-x86
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for solaris-x86 targets
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# location of the Solaris Studio (was SunPro) compilers
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
#SPARCWORKS = /opt/solarisstudio12.3
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# Site Specific definitions for solaris-x86_64 target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Include definitions common to all solaris-x86_64 target archs
|
||||
# Include definitions common to all solaris-x86 target archs
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.solaris-x86
|
||||
|
||||
COMMANDLINE_LIBRARY = EPICS
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for cygwin-x86 target
|
||||
# Site Specific definitions for win32-x86-cygwin target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
# CONFIG_SITE.win32-x86-mingw.Common
|
||||
# CONFIG_SITE.Common.win32-x86-mingw
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for cygwin-x86 target
|
||||
# Only the local epics system manager should modify this file
|
||||
# Site Specific definitions for win32-x86-mingw target
|
||||
|
||||
# If readline is not installed comment the following line
|
||||
# to omit command-line editing and history support
|
||||
# If readline is available uncomment the following line
|
||||
# to enable command-line editing and history support
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
|
||||
13
configure/os/CONFIG_SITE.linux-arm-debug.linux-arm-debug
Normal file
13
configure/os/CONFIG_SITE.linux-arm-debug.linux-arm-debug
Normal file
@@ -0,0 +1,13 @@
|
||||
# CONFIG_SITE.linux-arm-debug.linux-arm-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific overrides for linux-arm-debug host and target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Prepares the object code to collect data for profiling with prof.
|
||||
#PROFILE=YES
|
||||
|
||||
#Compiles for profiling with the gprof profiler.
|
||||
#GPROF=YES
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# CONFIG_SITE.linux-x86-debug.linux-x86-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific overrides for linux-x86-debug host and target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Prepares the object code to collect data for profiling with prof.
|
||||
#PROFILE=YES
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# CONFIG_SITE.linux-x86.linux-arm
|
||||
# CONFIG_SITE.linux-x86.linux-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
@@ -8,7 +8,8 @@
|
||||
# Tools install path
|
||||
#GNU_DIR = /home/targetOS/linux-arm/host/x86-linux/gcc_3.3.3
|
||||
|
||||
GNU_DIR = /net/phoebus/vw/zynq-2011.09
|
||||
# APS:
|
||||
GNU_DIR = /usr/local/vw/zynq-2011.09
|
||||
|
||||
# GNU crosscompiler target name
|
||||
GNU_TARGET = arm-xilinx-linux-gnueabi
|
||||
|
||||
9
configure/os/CONFIG_SITE.linux-x86.linux-arm-debug
Normal file
9
configure/os/CONFIG_SITE.linux-x86.linux-arm-debug
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG_SITE.linux-x86.linux-arm-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific settings for linux-x86 host - linux-arm-debug target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Inherit settings from linux-arm
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-arm
|
||||
23
configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
Normal file
23
configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
Normal file
@@ -0,0 +1,23 @@
|
||||
# CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
#
|
||||
# Configuration for linux-x86 host win32-x86-mingw target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Early versions of the MinGW cross-build tools can only build
|
||||
# static (non-DLL) libraries. Fedora's cross-build of gcc 4.4.6
|
||||
# needs these uncommented, other distributions have not been
|
||||
# tested with this release of Base:
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD = YES
|
||||
|
||||
# The cross-build tools are in $(GNU_DIR)/bin
|
||||
# Default is /usr
|
||||
#GNU_DIR = /usr/local
|
||||
|
||||
# Different distribution cross-build packages use different prefixes:
|
||||
# Ubuntu:
|
||||
#CMPLR_PREFIX = i686-w64-mingw32-
|
||||
# RHEL:
|
||||
CMPLR_PREFIX = i686-pc-mingw32-
|
||||
# Debian?
|
||||
#CMPLR_PREFIX = i586-mingw32msvc-
|
||||
@@ -2,10 +2,8 @@
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific override definitions for solaris-sparc host builds
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
|
||||
# Site specific overrides for linux-x86_64 host and target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Prepares the object code to collect data for profiling with prof.
|
||||
#PROFILE=YES
|
||||
|
||||
9
configure/os/CONFIG_SITE.linux-x86_64.linux-arm
Normal file
9
configure/os/CONFIG_SITE.linux-x86_64.linux-arm
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG_SITE.linux-x86_64.linux-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific settings for linux-x86_64 host - linux-arm target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Inherit setting from linux-x86
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-arm
|
||||
9
configure/os/CONFIG_SITE.linux-x86_64.linux-arm-debug
Normal file
9
configure/os/CONFIG_SITE.linux-x86_64.linux-arm-debug
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG_SITE.linux-x86_64.linux-arm-debug
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site specific settings for linux-x86_64 host - linux-arm-debug target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Inherit settings from linux-arm
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-arm
|
||||
8
configure/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
Normal file
8
configure/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1,8 @@
|
||||
# CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
#
|
||||
# Configuration for linux-x86_64 host win32-x86-mingw target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Inherit from the linux-x86 host architecture
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
|
||||
@@ -4,7 +4,4 @@
|
||||
#
|
||||
# Site specific override definitions for solaris-sparc host builds
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
#INSTALL_LOCATION = /home/phoebus/JBA/testBaseNew
|
||||
|
||||
#CROSS_COMPILER_TARGET_ARCHS += vxWorks-ppc604 vxWorks-ppc603 vxWorks-68040
|
||||
|
||||
@@ -3,15 +3,9 @@
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for win32-x86-mingw target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# The MinGW bin directory must be in your path.
|
||||
|
||||
# Uncomment the following settings for MinGW_w32 releases
|
||||
# <MinGW directory>/bin should be in your path
|
||||
#CMPLR_PREFIX=i686-w64-mingw32-
|
||||
#CC = $(CMPLR_PREFIX)gcc
|
||||
#CCC = $(CMPLR_PREFIX)g++
|
||||
#AR = $(CMPLR_PREFIX)ar -rc
|
||||
#LD = $(CMPLR_PREFIX)ld -r
|
||||
#RANLIB = $(CMPLR_PREFIX)ranlib
|
||||
|
||||
# Set the compiler prefix for your MinGW installation
|
||||
#CMPLR_PREFIX = i686-w64-mingw32-
|
||||
#CMPLR_PREFIX = i586-mingw32msvc-
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
later.
|
||||
|
||||
GNU readline or Tecla library
|
||||
GNU readline and Tecla librararies can be used by the IOC shell to
|
||||
GNU readline and Tecla libraries can be used by the IOC shell to
|
||||
provide command line editing and command line history recall and edit.
|
||||
GNU readline (or Tecla library) must be installed on your target system
|
||||
when COMMANDLINE_LIBRARY is set to READLINE (or TECLA) for that target.
|
||||
@@ -124,7 +124,7 @@
|
||||
EPICS documentation is available through the [3]EPICS website at
|
||||
Argonne.
|
||||
|
||||
Release specific documenataion can also be found in the
|
||||
Release specific documentation can also be found in the
|
||||
base/documentation directory of the distribution.
|
||||
|
||||
Directory Structure
|
||||
@@ -137,7 +137,7 @@
|
||||
base/configure Operating system independent build config files
|
||||
base/configure/os Operating system dependent build config files
|
||||
base/configure/tools Perl and shell scripts used in the build
|
||||
base/documentation Distributation documentation
|
||||
base/documentation Distribution documentation
|
||||
base/src All epics base source code in subdirectories
|
||||
base/src/RTEMS Code to configure RTEMS for EPICS
|
||||
base/src/as Access security
|
||||
@@ -170,7 +170,7 @@
|
||||
base/src/libCom/macLib Macro substitution handler
|
||||
base/src/libCom/misc Miscellaneous utilities
|
||||
base/src/libCom/osi Operating system independent API
|
||||
base/src/libCom/osi/os Operating system dependant code in subdirectories
|
||||
base/src/libCom/osi/os Operating system dependent code in subdirectories
|
||||
base/src/libCom/ring Methods for creating and using ring buffers
|
||||
base/src/libCom/taskwd Task watchdog
|
||||
base/src/libCom/test Test tools (timer, semBinary, semMutex,fdmgr, ...)
|
||||
@@ -206,14 +206,14 @@
|
||||
|
||||
Build related components
|
||||
|
||||
base/documentation/README* files
|
||||
base/documentation directory - contains setup, build, and install documents
|
||||
|
||||
README.1st Instructions for setup and building epics base
|
||||
README.html html version of README.1st
|
||||
README.WIN32 Microsoft WIN32 specific instructions
|
||||
README.cxxTemplates Information about C++ templates in EPICS base
|
||||
README.MS_Windows Microsoft Windows specific instructions
|
||||
README.cris Axis CRIS specific instructions
|
||||
README.darwin.html Installation notes for OS X (Darwin)
|
||||
README.niCpu030 NI cpu030 specific instructions
|
||||
README.darwin Installation notes for Mac OS X (Darwin)
|
||||
RELEASE_NOTES.html Notes on release changes
|
||||
KnownProblems.html List of known problems and workarounds
|
||||
Converting*To*.html Release specific conversion instructions
|
||||
@@ -240,7 +240,7 @@
|
||||
CONFIG_BASE_VERSION Definitions for EPICS base version number
|
||||
CONFIG_COMMON Definitions common to all builds
|
||||
CONFIG_ENV Definitions of EPICS environment variables
|
||||
CONFIG_SITE Site specific make defintions
|
||||
CONFIG_SITE Site specific make definitions
|
||||
CONFIG_SITE_ENV Site defaults for EPICS environment variables
|
||||
MAKEFILE Installs CONFIG* RULES* creates
|
||||
CONFIG_APP_INCLUDE
|
||||
@@ -271,7 +271,7 @@
|
||||
base/src/tools directory - contains Perl scripts used for the build
|
||||
|
||||
Makefile Makefile for installing the scripts into cfg dir
|
||||
convertRelease.pl Performs consistancy checks on RELEASE files
|
||||
convertRelease.pl Performs consistency checks on RELEASE files
|
||||
cvsclean.pl Remove all .#* files in directory tree
|
||||
dos2unix.pl Converts text file from DOS CR/LF to unix ISO
|
||||
expandvars.pl Tool to expand @VAR@ variables while copying a file
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<!DOCTYPE HTML>
|
||||
<!-- Generate the README.1st file from this file using:
|
||||
elinks -dump -no-numbering -no-references -dump-width 80 README.html
|
||||
-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>README - EPICS Base Installation Instructions</TITLE>
|
||||
@@ -102,7 +105,7 @@
|
||||
For RTEMS targets, you need RTEMS core and toolset version 4.9.2 or later.</P>
|
||||
|
||||
<P><B>GNU readline or Tecla library</B><BR>
|
||||
GNU readline and Tecla librararies can be used by the IOC shell to
|
||||
GNU readline and Tecla libraries can be used by the IOC shell to
|
||||
provide command line editing and command line history recall and edit.
|
||||
GNU readline (or Tecla library) must be installed on your target system
|
||||
when COMMANDLINE_LIBRARY is set to READLINE (or TECLA) for that target.
|
||||
@@ -124,7 +127,7 @@
|
||||
<H3><A NAME="0_0_8"> Documentation</A></H3>
|
||||
<BLOCKQUOTE>EPICS documentation is available through the
|
||||
<a href="http://www.aps.anl.gov/epics/">EPICS website</a> at Argonne.
|
||||
<P>Release specific documenataion can also be found in the base/documentation
|
||||
<P>Release specific documentation can also be found in the base/documentation
|
||||
directory of the distribution.</BLOCKQUOTE>
|
||||
|
||||
<H3><A NAME="0_0_10"> Directory Structure</A></H3>
|
||||
@@ -137,7 +140,7 @@
|
||||
base/configure Operating system independent build config files
|
||||
base/configure/os Operating system dependent build config files
|
||||
base/configure/tools Perl and shell scripts used in the build
|
||||
base/documentation Distributation documentation
|
||||
base/documentation Distribution documentation
|
||||
base/src All epics base source code in subdirectories
|
||||
base/src/RTEMS Code to configure RTEMS for EPICS
|
||||
base/src/as Access security
|
||||
@@ -170,7 +173,7 @@
|
||||
base/src/libCom/macLib Macro substitution handler
|
||||
base/src/libCom/misc Miscellaneous utilities
|
||||
base/src/libCom/osi Operating system independent API
|
||||
base/src/libCom/osi/os Operating system dependant code in subdirectories
|
||||
base/src/libCom/osi/os Operating system dependent code in subdirectories
|
||||
base/src/libCom/ring Methods for creating and using ring buffers
|
||||
base/src/libCom/taskwd Task watchdog
|
||||
base/src/libCom/test Test tools (timer, semBinary, semMutex,fdmgr, ...)
|
||||
@@ -210,14 +213,15 @@
|
||||
<H3><A NAME="0_0_11"> Build related components</A></H3>
|
||||
<BLOCKQUOTE>
|
||||
|
||||
<H4>base/documentation/README* files</H4>
|
||||
<H4>base/documentation directory - contains setup, build, and install
|
||||
documents</H4>
|
||||
<PRE>
|
||||
README.1st Instructions for setup and building epics base
|
||||
README.html html version of README.1st
|
||||
README.WIN32 Microsoft WIN32 specific instructions
|
||||
README.cxxTemplates Information about C++ templates in EPICS base
|
||||
README.MS_Windows Microsoft Windows specific instructions
|
||||
README.cris Axis CRIS specific instructions
|
||||
README.darwin.html Installation notes for OS X (Darwin)
|
||||
README.niCpu030 NI cpu030 specific instructions
|
||||
README.darwin Installation notes for Mac OS X (Darwin)
|
||||
RELEASE_NOTES.html Notes on release changes
|
||||
KnownProblems.html List of known problems and workarounds
|
||||
Converting*To*.html Release specific conversion instructions
|
||||
@@ -246,7 +250,7 @@
|
||||
CONFIG_BASE_VERSION Definitions for EPICS base version number
|
||||
CONFIG_COMMON Definitions common to all builds
|
||||
CONFIG_ENV Definitions of EPICS environment variables
|
||||
CONFIG_SITE Site specific make defintions
|
||||
CONFIG_SITE Site specific make definitions
|
||||
CONFIG_SITE_ENV Site defaults for EPICS environment variables
|
||||
MAKEFILE Installs CONFIG* RULES* creates
|
||||
CONFIG_APP_INCLUDE
|
||||
@@ -279,7 +283,7 @@
|
||||
<H4>base/src/tools directory - contains Perl scripts used for the build</H4>
|
||||
<PRE>
|
||||
Makefile Makefile for installing the scripts into cfg dir
|
||||
convertRelease.pl Performs consistancy checks on RELEASE files
|
||||
convertRelease.pl Performs consistency checks on RELEASE files
|
||||
cvsclean.pl Remove all .#* files in directory tree
|
||||
dos2unix.pl Converts text file from DOS CR/LF to unix ISO
|
||||
expandvars.pl Tool to expand @VAR@ variables while copying a file
|
||||
|
||||
@@ -1,18 +1,242 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||
<title>EPICS Base R3.14.12.4-rc1 Release Notes</title>
|
||||
<title>EPICS Base R3.14.12.5 Release Notes</title>
|
||||
</head>
|
||||
|
||||
<body lang="en">
|
||||
<h1 align="center">EPICS Base Release 3.14.12.4-rc1</h1>
|
||||
<h1 align="center">EPICS Base Release 3.14.12.5</h1>
|
||||
|
||||
<h2 align="center">Changes between 3.14.12.4 and 3.14.12.5</h2>
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h3>aoRecord raw conversion overflows</h3>
|
||||
|
||||
<p>The ao record type now checks converted raw values and limits them to the
|
||||
32-bit integer range before writing them to the RVAL field. Previously value
|
||||
overflows relied on Undefined Behaviour which could give different results on
|
||||
different platforms. The ROFF fields of the ao and ai record types are now
|
||||
DBF_ULONG to allow an ROFF setting of 0x80000000 to work properly.</p>
|
||||
|
||||
<h3>Changes to <top>/cfg/* files</h3>
|
||||
|
||||
<p>The order in which cfg/CONFIG* and cfg/RULES* files are included from support
|
||||
applications listed in the configure/RELEASE* files has been changed. Previously
|
||||
these files were included in the order in which the top areas are listed in the
|
||||
RELEASE file, but it makes more sense to load them in reverse order since later
|
||||
entries override earlier ones in Makefiles but the release file order is
|
||||
supposed to allow earlier entries to take precedence over later ones. The same
|
||||
change has been made to the inclusion of the <top>/configure/RULES_BUILD
|
||||
files.</p>
|
||||
|
||||
<p>Two new file types can also be provided in a module's cfg directory. Files
|
||||
named TOP_RULES* will be included by the top-level Makefile of other modules
|
||||
that refer to this module; files name DIR_RULES* will be included by all
|
||||
Makefiles that merely descend into lower-level directories. The cfg/RULES* files
|
||||
are only included when make is building code inside the O.<arch>
|
||||
directories.</p>
|
||||
|
||||
<p>The new cfg/DIR_RULES* file inclusion was designed to permit new recursive
|
||||
make actions to be implemented by appending the name of the new action to the
|
||||
ACTIONS variable. There must be a matching rule in one of the cfg/RULES* files
|
||||
when doing this. Similar rules may also be defined in the cfg/TOP_RULES* and/or
|
||||
cfg/DIR_RULES* files, but these should only state prerequisites and not directly
|
||||
provide commands to be executed.</p>
|
||||
|
||||
<h3>MinGW Cross-builds from Linux</h3>
|
||||
|
||||
<p>Build configuration files have been back-ported from the 3.15 branch that
|
||||
allows cross-building of the win32-x86-mingw target from either linux-x86 or
|
||||
linux-x86_64 hosts. Many Linux distributions now package the necessary MinGW
|
||||
cross-build tools and libraries to support this. Adjust the settings in
|
||||
configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw and add win32-x86-mingw to
|
||||
the CROSS_COMPILER_TARGET_ARCHS variable in configure/CONFIG_SITE or in
|
||||
configure/os/CONFIG_SITE.linux-x86.Common.</p>
|
||||
|
||||
<h3>Build rules for RTEMS GESYS modules</h3>
|
||||
|
||||
<p>RTEMS target builds can now be configured to make GESYS modules by changing
|
||||
the <CODE>USE_GESYS=NO</code> setting in the file
|
||||
configure/os/CONFIG_SITE.Common.RTEMS to <code>YES</code>.</p>
|
||||
|
||||
<h3>Added Make variables for command-line use</h3>
|
||||
|
||||
<p>The following variables are now used during the build process, reserved for
|
||||
setting on the command-line only (Makefiles should continue to use the
|
||||
<code>USR_</code> equivalents):</p>
|
||||
|
||||
<ul>
|
||||
<li>CMD_INCLUDES</li>
|
||||
<li>CMD_CPPFLAGS</li>
|
||||
<li>CMD_CFLAGS</li>
|
||||
<li>CMD_CXXFLAGS</li>
|
||||
<li>CMD_LDFLAGS</li>
|
||||
<li>CMD_DBFLAGS</li>
|
||||
<li>CMD_DBDFLAGS</li>
|
||||
<li>CMD_ARFLAGS</li>
|
||||
</ul>
|
||||
|
||||
<p>For example:</p>
|
||||
|
||||
<blockquote><pre>
|
||||
make CMD_INCLUDES=/opt/local/include CMD_LDFLAGS=-L/opt/local/lib
|
||||
</pre></blockquote>
|
||||
|
||||
<h3>Back-ported dbLoadRecordsHook from the 3.15 branch</h3>
|
||||
|
||||
<p>See the Release Notes from the Base 3.15.1 release for details.</p>
|
||||
|
||||
<h3>Enhanced API for asTrapWrite listeners</h3>
|
||||
|
||||
<p>External software such as the CA Put Logging module that registers a listener
|
||||
with the asTrapWrite subsystem was not previously given access to the actual
|
||||
data being sent by the CA client. In most cases this was not a problem as the
|
||||
listener can look at the field being modified both before and after the
|
||||
operation, but if the put processes the record which immediately overwrites the
|
||||
new value, the client's value cannot be observed.</p>
|
||||
|
||||
<p>This release adds three fields to the asTrapWriteMessage structure that is
|
||||
passed to the listener routines. These new fields provide the CA data type, the
|
||||
number of array elements, and a pointer to the source data buffer. This change
|
||||
is completely backwards compatible with listener code written against the
|
||||
original API. The new API can be detected at compile-time as follows:</p>
|
||||
|
||||
<blockquote><pre>
|
||||
#include "asLib.h"
|
||||
|
||||
/* ... */
|
||||
|
||||
#ifdef asTrapWriteWithData
|
||||
/* Enhanced API */
|
||||
#endif
|
||||
</pre></blockquote>
|
||||
|
||||
<h3>Back-ported the <q>tapfiles</q> build target from 3.15</h3>
|
||||
|
||||
<p>This GNUmake target runs the same tests as the <q>runtests</q> target, but
|
||||
instead of summarizing or displaying the output for each test script it creates
|
||||
a <q>.tap</q> file inside the architecture build directory which contains the
|
||||
detailed test output. The output file can be parsed by continuous integration
|
||||
packages such as <a href="http://www.jenkins-ci.org/">Jenkins</a> to show the
|
||||
test results.</p>
|
||||
|
||||
<h3>Fix buffer overflow in epicsStrnRawFromEscaped()</h3>
|
||||
|
||||
<p>Launchpad <a href="https://bugs.launchpad.net/bugs/1388313">bug
|
||||
1388313</a> reported by Bruce Hill and Chris Ford.</p>
|
||||
|
||||
<h3>Better Cygwin IOC Application Support</h3>
|
||||
|
||||
<p>IOC applications built for Cygwin with shared libraries need to have PATH
|
||||
configured to include all of the bin directories for support modules listed in
|
||||
the RELEASE file. For applications run from the Windows cmd.exe shell the
|
||||
Makefile in the application's iocBoot/ioc directory can be set to build a file
|
||||
dllPath.bat which performs the appropriate changes to PATH, but this file uses
|
||||
syntax which is unique to the cmd.exe shell. Cygwin applications can now add a
|
||||
target relPaths.sh to this Makefile, which will generate a file appropriate for
|
||||
sourcing in the Bash shell instead.</p>
|
||||
|
||||
<p>The makeBaseApp.pl templates now include this file in the list of targets to
|
||||
be built in the iocBoot/ioc/Makefile for Cygwin architectures.</p>
|
||||
|
||||
<h3>Reject NULL callback functions in ca_array_*_callback</h3>
|
||||
|
||||
<p>The two CA routines ca_array_get_callback() and ca_array_put_callback() were
|
||||
not checking the pfunc callback function argument for NULL. Passing in a NULL
|
||||
would cause the client library to segfault when the callback was called. Doing
|
||||
this will now result in the error status ECA_BADFUNCPTR being returned. This
|
||||
chage fixes <a href="https://bugs.launchpad.net/bugs/1369626">Launchpad bug
|
||||
1369626</a>.</p>
|
||||
|
||||
<h3>Support for Solaris 11</h3>
|
||||
|
||||
<p>The build rules have been updated to support Solaris 11. Note that APS staff
|
||||
may not be able to maintain EPICS on Solaris for much longer, so the existing
|
||||
support code is likely to bit-rot and future versions of the OS may not be able
|
||||
to build or run EPICS applications unless someone else picks up the maintenance
|
||||
tasks.</p>
|
||||
|
||||
<h3>Generating OS-specific include files</h3>
|
||||
|
||||
<p>A fix has been applied to the build rules to permit OS-specific header files
|
||||
to be generated by adding them to the appropriate INC_<osclass> variable.
|
||||
To avoid problems with parallel builds, the rule to generate a header file
|
||||
should look something like this:</p>
|
||||
|
||||
<blockquote><pre>
|
||||
$(COMMON_DIR)/os/vxWorks/file.h:
|
||||
$(MKDIR) -p $(dir $@)
|
||||
<i>generate-file</i> -o $(notdir $@)
|
||||
$(MV) $(notdir $@) $@
|
||||
</pre></blockquote>
|
||||
|
||||
<h3>Added CA->version function to CA Perl Bindings</h3>
|
||||
|
||||
<p>This new function returns the version string from Base. The ca*.pl tools have
|
||||
been updated to display this in their help output.</p>
|
||||
|
||||
<h3>epicsString.h comparison functions fixed</h3>
|
||||
|
||||
<p>The case-independent string comparison functions epicsStrCaseCmp() and
|
||||
epicsStrnCaseCmp() were returning incorrect results when the strings did not
|
||||
match; if the left-hand string is a shorter sub-set of the right-hand one the
|
||||
result should be -1. These functions now match their BSD equivalents.</p>
|
||||
|
||||
<h3>Windows -static targets included</h3>
|
||||
|
||||
<p>The win32-x86 and windows-x64 host target architectures can now cross-build
|
||||
the associated -static target, i.e. win32-x86-static or windows-x64-static
|
||||
(these targets can also be used as regular host architectures). Users could
|
||||
always have added configuration files themselves to build these, but we needed
|
||||
them for continuous integration testing of static builds.</p>
|
||||
|
||||
<h3>iOS Build Rules fixed</h3>
|
||||
|
||||
<p>The problem building for the ios-x86 simulator target architecture has been
|
||||
resolved.</p>
|
||||
|
||||
<h2 align="center">Changes between 3.14.12.3 and 3.14.12.4</h2>
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
<h3>New test for environment variables</h3>
|
||||
|
||||
<p>A new test program epicsEnvTest has been added to the libCom tests which
|
||||
checks environment variable APIs. It was written to confirm that threads see
|
||||
environment variable values that have been set in their parent thread. VxWorks
|
||||
6.x boot images must be configured with ENV_VAR_USE_HOOKS set to FALSE for the
|
||||
correct behaviour to occur (a test failure on VxWorks explains this).</p>
|
||||
|
||||
<h3>Inclusion of <top>/cfg/* files refined</h3>
|
||||
|
||||
<p>The way the build system includes files installed in the <top>/cfg/*
|
||||
directory has been cleaned up. Files whose names begin with CONFIG will now get
|
||||
included by the CONFIG step, and files whose names begin with RULES will get
|
||||
included in the RULES step. These files are only ever included when GNUMake is
|
||||
working in an application build (O.) directory and T_A is defined, so they
|
||||
cannot be used to create generic build targets at other levels.</p>
|
||||
|
||||
<p>Files whose names don't start with either CONFIG or RULES are no longer
|
||||
included automatically, but such files can still be installed into
|
||||
<top>/cfg by naming them in the CFG variable.</p>
|
||||
|
||||
<h3>Fixed iocsh stream redirection for several commands</h3>
|
||||
|
||||
<p>A number of iocsh commands did not respond correctly to redirection of their
|
||||
output using the iocsh '>file' or '2>error-file' syntax, and redirecting an
|
||||
empty command could create files with garbage names. There may still be a few
|
||||
commands that do not properly redirect their output, please notify the core
|
||||
developers if you discover any. Thanks to Eric Norum for the iocsh changes.</p>
|
||||
|
||||
<p>For externally developed commands, the simplest way to support redirection in
|
||||
your C/C++ code is to <tt>#include "epicsStdioRedirect.h"</tt> instead of
|
||||
<tt>stdio.h</tt>.</p>
|
||||
|
||||
<h3>Fixed crash on loading record instance of unknown type</h3>
|
||||
|
||||
<p>Fixed segfault when dbLoadRecords tried to load a record of a type that was
|
||||
not defined in its DBD files.</p>
|
||||
|
||||
<h3>Hex literal support in epicStrtod()</h3>
|
||||
|
||||
@@ -26,6 +250,12 @@ Dirk Zimoch for suggesting this change.</p>
|
||||
|
||||
<p>Both windows-x64-mingw and cygwin-x86_64 build targets are now provided.</p>
|
||||
|
||||
<h3>Windows build issues</h3>
|
||||
|
||||
<p>Thanks to Peter Heesterman for suggesting a number of small changes that
|
||||
clean up build issues on Windows, mostly related to symbol import and export
|
||||
to/from DLLs.</p>
|
||||
|
||||
<h3>CAS: GDD Reference Count Underflow</h3>
|
||||
|
||||
<p>Thanks to Bruce Hill a source of an underflow in a GDD reference count in the
|
||||
@@ -34,7 +264,9 @@ CAS code has been fixed.</p>
|
||||
<h3>Support for Apple Xcode 5.0</h3>
|
||||
|
||||
<p>This adds the ability to build for iOS 7.0 and the ARMv8 64-bit CPU on the
|
||||
newest iPhone 5S device.</p>
|
||||
newest iPhone 5S device. Unfortunately the Xcode upgrade breaks the build of the
|
||||
ios-x86 simulator target, although the ios-arm target successfully builds code
|
||||
which runs fine on the real hardware.</p>
|
||||
|
||||
<h3>Reading TSEL field</h3>
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ rtems_task Init (rtems_task_argument argument);
|
||||
* appropriate conditionals to use.
|
||||
* The new general time support makes including the RTC driverr less important.
|
||||
*/
|
||||
#if !defined(mpc604) && !defined(__mc68040__) && !defined(__mcf5200__) && !defined(mpc7455) && !defined(__arm__) /* don't have RTC code */
|
||||
#if !defined(mpc604) && !defined(__mc68040__) && !defined(__mcf5200__) && !defined(mpc7455) && !defined(__arm__) && !defined(__nios2__)/* don't have RTC code */
|
||||
#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
|
||||
#endif
|
||||
|
||||
|
||||
@@ -279,11 +279,45 @@ initialize_remote_filesystem(char **argv, int hasLocalFilesystem)
|
||||
LogFatal("\"%s\" is not a valid command pathname.\n", rtems_bsdnet_bootp_cmdline);
|
||||
cp = mustMalloc(l + 20, "NFS mount paths");
|
||||
server_path = cp;
|
||||
server_name = rtems_bsdnet_bootp_server_name;
|
||||
if (rtems_bsdnet_bootp_cmdline[0] == '/') {
|
||||
mount_point = server_path;
|
||||
strncpy(mount_point, rtems_bsdnet_bootp_cmdline, l);
|
||||
mount_point[l] = '\0';
|
||||
argv[1] = rtems_bsdnet_bootp_cmdline;
|
||||
/*
|
||||
* Its probably common to embed the mount point in the server
|
||||
* name so, when this is occurring, dont clobber the mount point
|
||||
* by appending the first node from the command path. This allows
|
||||
* the mount point to be a different path then the server's mount
|
||||
* path.
|
||||
*
|
||||
* This allows for example a line similar to as follows the DHCP
|
||||
* configuration file.
|
||||
*
|
||||
* server-name "159.233@192.168.0.123:/vol/vol0/bootRTEMS";
|
||||
*/
|
||||
if ( server_name ) {
|
||||
const size_t allocSize = strlen ( server_name ) + 2;
|
||||
char * const pServerName = mustMalloc( allocSize,
|
||||
"NFS mount paths");
|
||||
char * const pServerPath = mustMalloc ( allocSize,
|
||||
"NFS mount paths");
|
||||
const int scanfStatus = sscanf (
|
||||
server_name,
|
||||
"%[^:] : / %s",
|
||||
pServerName,
|
||||
pServerPath + 1u );
|
||||
if ( scanfStatus == 2 ) {
|
||||
pServerPath[0u]= '/';
|
||||
server_name = pServerName;
|
||||
server_path = pServerPath;
|
||||
}
|
||||
else {
|
||||
free ( pServerName );
|
||||
free ( pServerPath );
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
char *abspath = mustMalloc(strlen(rtems_bsdnet_bootp_cmdline)+2,"Absolute command path");
|
||||
@@ -296,7 +330,6 @@ initialize_remote_filesystem(char **argv, int hasLocalFilesystem)
|
||||
strcat(abspath, rtems_bsdnet_bootp_cmdline);
|
||||
argv[1] = abspath;
|
||||
}
|
||||
server_name = rtems_bsdnet_bootp_server_name;
|
||||
}
|
||||
nfsMount(server_name, server_path, mount_point);
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <Winver.h>
|
||||
#include <winver.h>
|
||||
#include "epicsVersion.h"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <Winver.h>
|
||||
#include <winver.h>
|
||||
#include "epicsVersion.h"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
|
||||
@@ -30,25 +30,38 @@ typedef enum{
|
||||
} asClientStatus;
|
||||
|
||||
typedef void (*ASCLIENTCALLBACK) (ASCLIENTPVT,asClientStatus);
|
||||
|
||||
/* The following routines are macros with the following syntax
|
||||
long asCheckGet(ASCLIENTPVT asClientPvt);
|
||||
long asCheckPut(ASCLIENTPVT asClientPvt);
|
||||
*/
|
||||
#define asCheckGet(asClientPvt)\
|
||||
(asActive \
|
||||
? ((asClientPvt)->access>=asREAD ? TRUE : FALSE)\
|
||||
: TRUE)
|
||||
#define asCheckPut(asClientPvt)\
|
||||
(asActive \
|
||||
? ((asClientPvt)->access>=asWRITE ? TRUE : FALSE)\
|
||||
: TRUE)
|
||||
#define asTrapWriteBefore(asClientPvt,user,host,addr) \
|
||||
(((asActive) && (asClientPvt)->trapMask) \
|
||||
? asTrapWriteBeforeWrite((user),(host),(addr)) \
|
||||
: 0)
|
||||
#define asCheckGet(asClientPvt) \
|
||||
(!asActive || ((asClientPvt)->access >= asREAD))
|
||||
#define asCheckPut(asClientPvt) \
|
||||
(!asActive || ((asClientPvt)->access >= asWRITE))
|
||||
|
||||
/* More convenience macros
|
||||
void *asTrapWriteWithData(ASCLIENTPVT asClientPvt,
|
||||
const char *userid, const char *hostid, void *addr,
|
||||
int dbrType, int no_elements, void *data);
|
||||
void asTrapWriteAfter(ASCLIENTPVT asClientPvt);
|
||||
*/
|
||||
#define asTrapWriteWithData(asClientPvt, user, host, addr, type, count, data) \
|
||||
((asActive && (asClientPvt)->trapMask) \
|
||||
? asTrapWriteBeforeWithData((user), (host), (addr), (type), (count), (data)) \
|
||||
: 0)
|
||||
#define asTrapWriteAfter(pvt) \
|
||||
if (pvt) asTrapWriteAfterWrite(pvt)
|
||||
|
||||
/* This macro is for backwards compatibility, upgrade any code
|
||||
calling it to use asTrapWriteWithData() instead ASAP:
|
||||
void *asTrapWriteBefore(ASCLIENTPVT asClientPvt,
|
||||
const char *userid, const char *hostid, void *addr);
|
||||
*/
|
||||
#define asTrapWriteBefore(asClientPvt, user, host, addr) \
|
||||
asTrapWriteWithData(asClientPvt, user, host, addr, 0, 0, NULL)
|
||||
|
||||
|
||||
#define asTrapWriteAfter(pvt) if((pvt)) asTrapWriteAfterWrite((pvt))
|
||||
|
||||
epicsShareFunc long epicsShareAPI asInitialize(ASINPUTFUNCPTR inputfunction);
|
||||
epicsShareFunc long epicsShareAPI asInitFile(
|
||||
const char *filename,const char *substitutions);
|
||||
@@ -100,8 +113,9 @@ epicsShareFunc int epicsShareAPI asDumpMemFP(FILE *fp,const char *asgname,
|
||||
epicsShareFunc int epicsShareAPI asDumpHash(void);
|
||||
epicsShareFunc int epicsShareAPI asDumpHashFP(FILE *fp);
|
||||
|
||||
epicsShareFunc void * epicsShareAPI asTrapWriteBeforeWrite(
|
||||
const char *userid,const char *hostid,void *addr);
|
||||
epicsShareFunc void * epicsShareAPI asTrapWriteBeforeWithData(
|
||||
const char *userid, const char *hostid, void *addr,
|
||||
int dbrType, int no_elements, void *data);
|
||||
|
||||
epicsShareFunc void epicsShareAPI asTrapWriteAfterWrite(void *pvt);
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
* 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.
|
||||
\*************************************************************************/
|
||||
/*asTrapWrite.c */
|
||||
@@ -100,47 +99,53 @@ void epicsShareAPI asTrapWriteUnregisterListener(asTrapWriteId id)
|
||||
= (listenerPvt *)ellNext(&plistenerPvt->node);
|
||||
if(plistenerPvt->plistener == plistener) {
|
||||
ellDelete(&pwriteMessage->listenerPvtList,&plistenerPvt->node);
|
||||
freeListFree(pasTrapWritePvt->freeListListenerPvt,(void *)plistenerPvt);
|
||||
freeListFree(pasTrapWritePvt->freeListListenerPvt, plistenerPvt);
|
||||
}
|
||||
plistenerPvt = pnext;
|
||||
}
|
||||
pwriteMessage = (writeMessage *)ellNext(&pwriteMessage->node);
|
||||
}
|
||||
ellDelete(&pasTrapWritePvt->listenerList,&plistener->node);
|
||||
free((void *)plistener);
|
||||
free(plistener);
|
||||
epicsMutexUnlock(pasTrapWritePvt->lock);
|
||||
}
|
||||
|
||||
void * epicsShareAPI asTrapWriteBeforeWrite(
|
||||
const char *userid,const char *hostid,void *addr)
|
||||
void * epicsShareAPI asTrapWriteBeforeWithData(
|
||||
const char *userid, const char *hostid, void *addr,
|
||||
int dbrType, int no_elements, void *data)
|
||||
{
|
||||
writeMessage *pwriteMessage;
|
||||
listener *plistener;
|
||||
listenerPvt *plistenerPvt;
|
||||
|
||||
if(pasTrapWritePvt==0) return(0);
|
||||
if(ellCount(&pasTrapWritePvt->listenerList)<=0) return 0;
|
||||
if (pasTrapWritePvt == 0 ||
|
||||
ellCount(&pasTrapWritePvt->listenerList) <= 0) return 0;
|
||||
|
||||
pwriteMessage = (writeMessage *)freeListCalloc(
|
||||
pasTrapWritePvt->freeListWriteMessage);
|
||||
pwriteMessage->message.userid = userid;
|
||||
pwriteMessage->message.hostid = hostid;
|
||||
pwriteMessage->message.serverSpecific = addr;
|
||||
pwriteMessage->message.dbrType = dbrType;
|
||||
pwriteMessage->message.no_elements = no_elements;
|
||||
pwriteMessage->message.data = data;
|
||||
ellInit(&pwriteMessage->listenerPvtList);
|
||||
|
||||
epicsMutexMustLock(pasTrapWritePvt->lock);
|
||||
ellAdd(&pasTrapWritePvt->writeMessageList,&pwriteMessage->node);
|
||||
ellAdd(&pasTrapWritePvt->writeMessageList, &pwriteMessage->node);
|
||||
plistener = (listener *)ellFirst(&pasTrapWritePvt->listenerList);
|
||||
while(plistener) {
|
||||
plistenerPvt = (listenerPvt *)freeListCalloc(
|
||||
while (plistener) {
|
||||
listenerPvt *plistenerPvt = (listenerPvt *)freeListCalloc(
|
||||
pasTrapWritePvt->freeListListenerPvt);
|
||||
|
||||
plistenerPvt->plistener = plistener;
|
||||
pwriteMessage->message.userPvt = 0;
|
||||
(*plistener->func)(&pwriteMessage->message,0);
|
||||
plistener->func(&pwriteMessage->message, 0);
|
||||
plistenerPvt->userPvt = pwriteMessage->message.userPvt;
|
||||
ellAdd(&pwriteMessage->listenerPvtList,&plistenerPvt->node);
|
||||
ellAdd(&pwriteMessage->listenerPvtList, &plistenerPvt->node);
|
||||
plistener = (listener *)ellNext(&plistener->node);
|
||||
}
|
||||
epicsMutexUnlock(pasTrapWritePvt->lock);
|
||||
return((void *)pwriteMessage);
|
||||
return pwriteMessage;
|
||||
}
|
||||
|
||||
void epicsShareAPI asTrapWriteAfterWrite(void *pvt)
|
||||
@@ -148,20 +153,22 @@ void epicsShareAPI asTrapWriteAfterWrite(void *pvt)
|
||||
writeMessage *pwriteMessage = (writeMessage *)pvt;
|
||||
listenerPvt *plistenerPvt;
|
||||
|
||||
if(pwriteMessage==0 || pasTrapWritePvt==0) return;
|
||||
if (pwriteMessage == 0 ||
|
||||
pasTrapWritePvt == 0) return;
|
||||
|
||||
epicsMutexMustLock(pasTrapWritePvt->lock);
|
||||
plistenerPvt = (listenerPvt *)ellFirst(&pwriteMessage->listenerPvtList);
|
||||
while(plistenerPvt) {
|
||||
while (plistenerPvt) {
|
||||
listenerPvt *pnext = (listenerPvt *)ellNext(&plistenerPvt->node);
|
||||
listener *plistener;
|
||||
plistener = plistenerPvt->plistener;
|
||||
listener *plistener = plistenerPvt->plistener;
|
||||
|
||||
pwriteMessage->message.userPvt = plistenerPvt->userPvt;
|
||||
(*plistener->func)(&pwriteMessage->message,1);
|
||||
ellDelete(&pwriteMessage->listenerPvtList,&plistenerPvt->node);
|
||||
freeListFree(pasTrapWritePvt->freeListListenerPvt,(void *)plistenerPvt);
|
||||
plistener->func(&pwriteMessage->message, 1);
|
||||
ellDelete(&pwriteMessage->listenerPvtList, &plistenerPvt->node);
|
||||
freeListFree(pasTrapWritePvt->freeListListenerPvt, plistenerPvt);
|
||||
plistenerPvt = pnext;
|
||||
}
|
||||
ellDelete(&pasTrapWritePvt->writeMessageList,&pwriteMessage->node);
|
||||
freeListFree(pasTrapWritePvt->freeListWriteMessage,(void *)pwriteMessage);
|
||||
ellDelete(&pasTrapWritePvt->writeMessageList, &pwriteMessage->node);
|
||||
freeListFree(pasTrapWritePvt->freeListWriteMessage, pwriteMessage);
|
||||
epicsMutexUnlock(pasTrapWritePvt->lock);
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
\*************************************************************************/
|
||||
/*asTrapWrite.h*/
|
||||
/* Author: Marty Kraimer Date: 07NOV2000 */
|
||||
@@ -24,6 +23,9 @@ typedef struct asTrapWriteMessage {
|
||||
const char *hostid;
|
||||
void *serverSpecific;
|
||||
void *userPvt;
|
||||
int dbrType; /* Data type from ca/db_access.h, NOT dbFldTypes.h */
|
||||
int no_elements;
|
||||
void *data; /* Might be NULL if no data is available */
|
||||
} asTrapWriteMessage;
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
#include <Winver.h>
|
||||
#include <winver.h>
|
||||
#include "epicsVersion.h"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
|
||||
@@ -57,9 +57,9 @@ void getCallback::completion (
|
||||
// fetch client context and destroy prior to releasing
|
||||
// the lock and calling cb in case they destroy channel there
|
||||
this->chan.getClientCtx().destroyGetCallback ( guard, *this );
|
||||
{
|
||||
if ( pFuncTmp ) {
|
||||
epicsGuardRelease < epicsMutex > unguard ( guard );
|
||||
( *pFuncTmp ) ( args );
|
||||
pFuncTmp ( args );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "envDefs.h"
|
||||
#include "epicsAssert.h"
|
||||
#include "epicsStdioRedirect.h"
|
||||
#include "errlog.h"
|
||||
#include "osiWireFormat.h"
|
||||
|
||||
|
||||
@@ -591,7 +591,7 @@ void ca_client_context :: whenThereIsAnExceptionDestroySyncGroupIO (
|
||||
}
|
||||
else {
|
||||
// dont reverse the lock hierarchy
|
||||
epicsGuardRelease < epicsMutex > guardRelease ();
|
||||
epicsGuardRelease < epicsMutex > guardRelease ( guard );
|
||||
{
|
||||
//
|
||||
// we will definately stall out here if all of the
|
||||
|
||||
@@ -343,6 +343,9 @@ int epicsShareAPI ca_array_get_callback ( chtype type,
|
||||
if ( type < 0 ) {
|
||||
return ECA_BADTYPE;
|
||||
}
|
||||
if ( pfunc == NULL ) {
|
||||
return ECA_BADFUNCPTR;
|
||||
}
|
||||
unsigned tmpType = static_cast < unsigned > ( type );
|
||||
|
||||
epicsGuard < epicsMutex > guard ( pChan->cacCtx.mutexRef () );
|
||||
@@ -416,6 +419,9 @@ int epicsShareAPI ca_array_put_callback ( chtype type, arrayElementCount count,
|
||||
if ( type < 0 ) {
|
||||
return ECA_BADTYPE;
|
||||
}
|
||||
if ( pfunc == NULL ) {
|
||||
return ECA_BADFUNCPTR;
|
||||
}
|
||||
epicsGuard < epicsMutex > guard ( pChan->cacCtx.mutexRef () );
|
||||
pChan->eliminateExcessiveSendBacklog ( guard );
|
||||
unsigned tmpType = static_cast < unsigned > ( type );
|
||||
|
||||
@@ -57,9 +57,9 @@ void putCallback::completion ( epicsGuard < epicsMutex > & guard )
|
||||
// fetch client context and destroy prior to releasing
|
||||
// the lock and calling cb in case they destroy channel there
|
||||
this->chan.getClientCtx().destroyPutCallback ( guard, *this );
|
||||
{
|
||||
if ( pFuncTmp ) {
|
||||
epicsGuardRelease < epicsMutex > unguard ( guard );
|
||||
( *pFuncTmp ) ( args );
|
||||
pFuncTmp ( args );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
* 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.
|
||||
\*************************************************************************/
|
||||
/*
|
||||
@@ -16,26 +15,6 @@
|
||||
* Author: Jeff Hill
|
||||
* Date: 3-27-90
|
||||
*
|
||||
* Control System Software for the GTA Project
|
||||
*
|
||||
* Copyright 1988, 1989, the Regents of the University of California.
|
||||
*
|
||||
* This software was produced under a U.S. Government contract
|
||||
* (W-7405-ENG-36) at the Los Alamos National Laboratory, which is
|
||||
* operated by the University of California for the U.S. Department
|
||||
* of Energy.
|
||||
*
|
||||
* Developed by the Controls and Automation Group (AT-8)
|
||||
* Accelerator Technology Division
|
||||
* Los Alamos National Laboratory
|
||||
*
|
||||
* Direct inqueries to:
|
||||
* Jeff HIll, AT-8, Mail Stop H820
|
||||
* Los Alamos National Laboratory
|
||||
* Los Alamos, New Mexico 87545
|
||||
* Phone: (505) 665-1831
|
||||
* E-mail: johill@lanl.gov
|
||||
*
|
||||
* PURPOSE:
|
||||
* Broadcasts fan out over the LAN, but old IP kernels do not allow
|
||||
* two processes on the same machine to get the same broadcast
|
||||
@@ -108,23 +87,24 @@ static const unsigned short PORT_ANY = 0u;
|
||||
/*
|
||||
* makeSocket()
|
||||
*/
|
||||
static bool makeSocket ( unsigned short port, bool reuseAddr, SOCKET * pSock )
|
||||
static int makeSocket ( unsigned short port, bool reuseAddr, SOCKET * pSock )
|
||||
{
|
||||
int status;
|
||||
union {
|
||||
struct sockaddr_in ia;
|
||||
struct sockaddr sa;
|
||||
} bd;
|
||||
|
||||
SOCKET sock = epicsSocketCreate ( AF_INET, SOCK_DGRAM, 0 );
|
||||
|
||||
if ( sock == INVALID_SOCKET ) {
|
||||
return false;
|
||||
*pSock = sock;
|
||||
return SOCKERRNO;
|
||||
}
|
||||
|
||||
/*
|
||||
* no need to bind if unconstrained
|
||||
*/
|
||||
if ( port != PORT_ANY ) {
|
||||
int status;
|
||||
union {
|
||||
struct sockaddr_in ia;
|
||||
struct sockaddr sa;
|
||||
} bd;
|
||||
|
||||
memset ( (char *) &bd, 0, sizeof (bd) );
|
||||
bd.ia.sin_family = AF_INET;
|
||||
@@ -132,15 +112,16 @@ static bool makeSocket ( unsigned short port, bool reuseAddr, SOCKET * pSock )
|
||||
bd.ia.sin_port = htons ( port );
|
||||
status = bind ( sock, &bd.sa, (int) sizeof(bd) );
|
||||
if ( status < 0 ) {
|
||||
status = SOCKERRNO;
|
||||
epicsSocketDestroy ( sock );
|
||||
return false;
|
||||
return status;
|
||||
}
|
||||
if ( reuseAddr ) {
|
||||
epicsSocketEnableAddressReuseDuringTimeWaitState ( sock );
|
||||
}
|
||||
}
|
||||
*pSock = sock;
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
repeaterClient::repeaterClient ( const osiSockAddr &fromIn ) :
|
||||
@@ -156,10 +137,10 @@ bool repeaterClient::connect ()
|
||||
{
|
||||
int status;
|
||||
|
||||
if ( ! makeSocket ( PORT_ANY, false, & this->sock ) ) {
|
||||
if ( int sockerrno = makeSocket ( PORT_ANY, false, & this->sock ) ) {
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
epicsSocketConvertErrorToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ), sockerrno );
|
||||
fprintf ( stderr, "%s: no client sock because \"%s\"\n",
|
||||
__FILE__, sockErrBuf );
|
||||
return false;
|
||||
@@ -300,20 +281,25 @@ inline bool repeaterClient::identicalPort ( const osiSockAddr &fromIn )
|
||||
bool repeaterClient::verify ()
|
||||
{
|
||||
SOCKET tmpSock;
|
||||
bool success = makeSocket ( this->port (), false, & tmpSock );
|
||||
if ( success ) {
|
||||
int sockerrno = makeSocket ( this->port (), false, & tmpSock );
|
||||
|
||||
if ( sockerrno == SOCK_EADDRINUSE ) {
|
||||
// Normal result, client using port
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( sockerrno == 0 ) {
|
||||
// Client went away, released port
|
||||
epicsSocketDestroy ( tmpSock );
|
||||
}
|
||||
else {
|
||||
if ( SOCKERRNO != SOCK_EADDRINUSE ) {
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
fprintf ( stderr, "CA Repeater: bind test err was \"%s\"\n",
|
||||
sockErrBuf );
|
||||
}
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrorToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ), sockerrno );
|
||||
fprintf ( stderr, "CA Repeater: Bind test error \"%s\"\n",
|
||||
sockErrBuf );
|
||||
}
|
||||
return ! success;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -387,10 +373,10 @@ static void register_new_client ( osiSockAddr & from,
|
||||
|
||||
if ( ! init ) {
|
||||
SOCKET sock;
|
||||
if ( ! makeSocket ( PORT_ANY, true, & sock ) ) {
|
||||
if ( int sockerrno = makeSocket ( PORT_ANY, true, & sock ) ) {
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
epicsSocketConvertErrorToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ), sockerrno );
|
||||
fprintf ( stderr, "%s: Unable to create repeater bind test socket because \"%s\"\n",
|
||||
__FILE__, sockErrBuf );
|
||||
}
|
||||
@@ -511,18 +497,18 @@ void ca_repeater ()
|
||||
|
||||
port = envGetInetPortConfigParam ( & EPICS_CA_REPEATER_PORT,
|
||||
static_cast <unsigned short> (CA_REPEATER_PORT) );
|
||||
if ( ! makeSocket ( port, true, & sock ) ) {
|
||||
if ( int sockerrno = makeSocket ( port, true, & sock ) ) {
|
||||
/*
|
||||
* test for server was already started
|
||||
*/
|
||||
if ( SOCKERRNO == SOCK_EADDRINUSE ) {
|
||||
if ( sockerrno == SOCK_EADDRINUSE ) {
|
||||
osiSockRelease ();
|
||||
debugPrintf ( ( "CA Repeater: exiting because a repeater is already running\n" ) );
|
||||
return;
|
||||
}
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
epicsSocketConvertErrorToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ), sockerrno );
|
||||
fprintf ( stderr, "%s: Unable to create repeater socket because \"%s\" - fatal\n",
|
||||
__FILE__, sockErrBuf );
|
||||
osiSockRelease ();
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* simple stub for testing monitors
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "epicsStdioRedirect.h"
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include "cadef.h"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my $version = '0.4';
|
||||
my $version = '0.5';
|
||||
|
||||
|
||||
package CA;
|
||||
@@ -95,8 +95,8 @@ CA - Perl 5 interface to EPICS Channel Access
|
||||
} else {
|
||||
printf " Value: %g\n", $data->{value};
|
||||
printf " Severity: %s\n", $data->{severity};
|
||||
printf " Timestamp: %d.%09d\n",
|
||||
$data->{stamp}, $data->{stamp_fraction};
|
||||
printf " Timestamp: %.6f\n",
|
||||
$data->{stamp} + $data->{stamp_fraction};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,7 +235,7 @@ C<die> with an exception object in the callback and catch that using C<eval> in
|
||||
the main thread are not likely to succeed and will probably result in a crash.
|
||||
Callbacks should not perform any operations that would block for more than a
|
||||
fraction of a second as this will hold up network communications with the
|
||||
relevent server and could cause the Perl program and/or the Channel Access
|
||||
relevant server and could cause the Perl program and/or the Channel Access
|
||||
server to crash. Calling C<< CA->pend_event >> from within a callback is not
|
||||
permitted by the underlying Channel Access library.
|
||||
|
||||
@@ -291,7 +291,7 @@ apply to the callback subroutine as described in C<get_callback> above.
|
||||
|
||||
=item put_acks( I<SEVR>, I<SUB> )
|
||||
|
||||
Applications that need to ackowledge alarms by doing a C<ca_put()> with type
|
||||
Applications that need to acknowledge alarms by doing a C<ca_put()> with type
|
||||
C<DBR_PUT_ACKS> can do so using the C<put_acks> method. The severity argument
|
||||
may be provided as an integer from zero through three or as a string containing
|
||||
one of the corresponding EPICS severity names C<NO_ALARM>, C<MINOR>, C<MAJOR> or
|
||||
@@ -325,11 +325,12 @@ The data provided to a callback function registered with either C<get_callback>
|
||||
or C<create_subscription> can be a scalar value or a reference to an array or a
|
||||
hash, depending on the data type that was used for the data transfer. If the
|
||||
request was for a single item of one of the basic data types, the data argument
|
||||
will be a perl scalar that holds the value directly. If the request was for
|
||||
will be a Perl scalar that holds the value directly. If the request was for
|
||||
multiple items of one of the basic types, the data argument will be a reference
|
||||
to an array holding the data. There is one exception though; if the data type
|
||||
requested was for an array of C<DBF_CHAR> values that array will be represented
|
||||
as a single Perl string contining all the characters before the first zero byte.
|
||||
as a single Perl string containing all the characters before the first zero
|
||||
byte.
|
||||
|
||||
If the request was for one of the compound data types, the data argument will be
|
||||
a reference to a hash with keys as described below. Keys that are not classed
|
||||
@@ -355,7 +356,7 @@ widened from the original type used to request or subscribe for the data.
|
||||
The number of elements in the data returned by the server. If the data type is
|
||||
C<DBF_CHAR> the value given for C<COUNT> is the number of bytes (including any
|
||||
trailing zeros) returned by the server, although the value field is given as a
|
||||
Perl string contining all the characters before the first zero byte.
|
||||
Perl string containing all the characters before the first zero byte.
|
||||
|
||||
=back
|
||||
|
||||
@@ -417,7 +418,7 @@ Present only when I<TYPE> is C<DBR_GR_ENUM> or C<DBR_CTRL_ENUM>.
|
||||
=item stamp
|
||||
|
||||
The process variable timestamp, converted to a local C<time_t>. This value is
|
||||
suitable for passing to the perl C<localtime> or C<gmtime> functions.
|
||||
suitable for passing to the Perl C<localtime> or C<gmtime> functions.
|
||||
|
||||
Present only when I<TYPE> is C<DBR_TIME_yyy>.
|
||||
|
||||
@@ -507,6 +508,11 @@ class method syntax, e.g. C<< CA->pend_io(10) >>.
|
||||
|
||||
=over 4
|
||||
|
||||
=item version
|
||||
|
||||
Returns the EPICS_VERSION_STRING from the version of EPICS Base this software
|
||||
was built using.
|
||||
|
||||
=item flush_io
|
||||
|
||||
Flush outstanding IO requests to the server. This routine is useful for users
|
||||
@@ -615,15 +621,15 @@ passing C<undef> as the subroutine reference.
|
||||
|
||||
Errors in using the library will be indicated by the module throwing an
|
||||
exception, i.e. calling C<croak()> with an appropriate error message. These
|
||||
exceptions can be caught using the standard Parl C<eval {}> statement and
|
||||
exceptions can be caught using the standard Perl C<eval {}> statement and
|
||||
testing the C<$@> variable afterwards; if not caught, they will cause the
|
||||
running program to C<die> with an appropriate error message pointing to the
|
||||
program line that called the C<CA> library.
|
||||
|
||||
Errors messages reported by the underlying CA client library all start with the
|
||||
Error messages reported by the underlying CA client library all start with the
|
||||
string C<ECA_> and the remainder of the symbol for the associated CA error
|
||||
number, and are followed after a space-hyphen-space by a human-readable message
|
||||
describing the error. Errors that are detected by the perl interface layer do
|
||||
describing the error. Errors that are detected by the Perl interface layer do
|
||||
not follow this pattern, but are still printable strings.
|
||||
|
||||
|
||||
@@ -633,7 +639,7 @@ not follow this pattern, but are still printable strings.
|
||||
|
||||
=item [1] R3.14 Channel Access Reference Manual by Jeffrey O. Hill
|
||||
|
||||
L<http://www.aps.anl.gov/epics/base/R3-14/11-docs/CAref.html>
|
||||
L<http://www.aps.anl.gov/epics/base/R3-14/12-docs/CAref.html>
|
||||
|
||||
=back
|
||||
|
||||
@@ -644,7 +650,7 @@ Andrew Johnson, E<lt>anj@aps.anl.govE<gt>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2008 UChicago Argonne LLC, as Operator of Argonne National
|
||||
Copyright (C) 2008-2014 UChicago Argonne LLC, as Operator of Argonne National
|
||||
Laboratory.
|
||||
|
||||
This software is distributed under the terms of the EPICS Open License.
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "cadef.h"
|
||||
#include "db_access.h"
|
||||
#include "epicsVersion.h"
|
||||
#include "alarm.h"
|
||||
#include "alarmString.h"
|
||||
|
||||
@@ -461,7 +462,7 @@ SV * CA_new(const char *class, const char *name, ...) {
|
||||
SvREFCNT_dec(ca_ref);
|
||||
if (pch->conn_sub)
|
||||
SvREFCNT_dec(pch->conn_sub);
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
|
||||
return ca_ref;
|
||||
@@ -490,7 +491,7 @@ void CA_DESTROY(SV *ca_ref) {
|
||||
Safefree(pch);
|
||||
|
||||
if (status != ECA_NORMAL)
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
|
||||
|
||||
@@ -515,7 +516,7 @@ void CA_change_connection_event(SV *ca_ref, SV *sub) {
|
||||
status = ca_change_connection_event(pch->chan, handler);
|
||||
|
||||
if (status != ECA_NORMAL) {
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -599,7 +600,7 @@ void CA_put(SV *ca_ref, SV *val, ...) {
|
||||
Safefree(p.dbr);
|
||||
}
|
||||
if (status != ECA_NORMAL) {
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
XSRETURN(0);
|
||||
}
|
||||
@@ -694,7 +695,7 @@ void CA_put_callback(SV *ca_ref, SV *sub, SV *val, ...) {
|
||||
}
|
||||
if (status != ECA_NORMAL) {
|
||||
SvREFCNT_dec(put_sub);
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
XSRETURN(0);
|
||||
}
|
||||
@@ -735,7 +736,7 @@ void CA_put_acks(SV *ca_ref, SV *sevr, ...) {
|
||||
status = ca_put(DBR_PUT_ACKS, pch->chan, &acks);
|
||||
|
||||
if (status != ECA_NORMAL)
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
|
||||
XSRETURN(0);
|
||||
}
|
||||
@@ -759,7 +760,7 @@ void CA_put_ackt(SV *ca_ref, int ack, ...) {
|
||||
status = ca_put(DBR_PUT_ACKS, pch->chan, &ackt);
|
||||
|
||||
if (status != ECA_NORMAL)
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
|
||||
XSRETURN(0);
|
||||
}
|
||||
@@ -787,7 +788,7 @@ void CA_get(SV *ca_ref) {
|
||||
status = ca_get(best_type(pch), pch->chan, &pch->data);
|
||||
}
|
||||
if (status != ECA_NORMAL) {
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -868,7 +869,7 @@ void CA_get_callback(SV *ca_ref, SV *sub, ...) {
|
||||
|
||||
exit_croak:
|
||||
SvREFCNT_dec(get_sub);
|
||||
croak(croak_msg);
|
||||
croak("%s", croak_msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -914,16 +915,18 @@ SV * CA_create_subscription(SV *ca_ref, const char *mask_str, SV *sub, ...) {
|
||||
|
||||
dbr_text_to_type(treq, type);
|
||||
if (type < 0) {
|
||||
croak_msg = "Unknown data type";
|
||||
croak_msg = "Unknown CA data type";
|
||||
goto exit_croak;
|
||||
}
|
||||
if (type == DBR_PUT_ACKT ||
|
||||
type == DBR_PUT_ACKS) {
|
||||
croak_msg = "DBR_PUT_ACK types are write-only";
|
||||
goto exit_croak;
|
||||
} else if (type == DBR_CLASS_NAME ||
|
||||
} else if (type == DBR_GR_ENUM ||
|
||||
type == DBR_CTRL_ENUM ||
|
||||
type == DBR_CLASS_NAME ||
|
||||
type == DBR_STSACK_STRING)
|
||||
/* These break the dbr_type_is macros */ ;
|
||||
/* These above types are supported */ ;
|
||||
else if (dbr_type_is_SHORT(type))
|
||||
type += (DBR_LONG - DBR_SHORT);
|
||||
else if (dbr_type_is_FLOAT(type))
|
||||
@@ -950,7 +953,7 @@ SV * CA_create_subscription(SV *ca_ref, const char *mask_str, SV *sub, ...) {
|
||||
exit_croak:
|
||||
SvREFCNT_dec(mon_ref);
|
||||
SvREFCNT_dec(mon_sub);
|
||||
croak(croak_msg);
|
||||
croak("%s", croak_msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -967,7 +970,7 @@ void CA_clear_subscription(const char *class, SV *mon_ref) {
|
||||
status = ca_clear_subscription(event);
|
||||
|
||||
if (status != ECA_NORMAL) {
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -977,7 +980,7 @@ void CA_clear_subscription(const char *class, SV *mon_ref) {
|
||||
void CA_pend_io(const char *class, double timeout) {
|
||||
int status = ca_pend_io(timeout);
|
||||
if (status != ECA_NORMAL) {
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -992,7 +995,7 @@ int CA_test_io(const char *class) {
|
||||
void CA_pend_event(const char *class, double timeout) {
|
||||
int status = ca_pend_event(timeout);
|
||||
if (status != ECA_TIMEOUT) {
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1010,6 +1013,12 @@ void CA_flush_io(const char *class) {
|
||||
}
|
||||
|
||||
|
||||
/* CA::version($class) */
|
||||
|
||||
const char * CA_version(const char *class) {
|
||||
return EPICS_VERSION_STRING;
|
||||
}
|
||||
|
||||
/* CA::add_exception_event($class, \&sub) */
|
||||
|
||||
static
|
||||
@@ -1080,7 +1089,7 @@ void CA_add_exception_event(const char *class, SV *sub) {
|
||||
if (status != ECA_NORMAL) {
|
||||
SvREFCNT_dec(exception_sub);
|
||||
exception_sub = NULL;
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1138,7 +1147,7 @@ void CA_replace_printf_handler(const char *class, SV *sub) {
|
||||
if (status != ECA_NORMAL) {
|
||||
SvREFCNT_dec(printf_sub);
|
||||
printf_sub = NULL;
|
||||
croak(get_error_msg(status));
|
||||
croak("%s", get_error_msg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1385,6 +1394,10 @@ void
|
||||
CA_flush_io (class)
|
||||
const char * class
|
||||
|
||||
const char *
|
||||
CA_version (class)
|
||||
const char * class
|
||||
|
||||
void
|
||||
CA_add_exception_event (class, sub)
|
||||
const char * class
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user