diff --git a/configure/CONFIG.CrossCommon b/configure/CONFIG.CrossCommon index 2fa6460d7..65e62dfb1 100644 --- a/configure/CONFIG.CrossCommon +++ b/configure/CONFIG.CrossCommon @@ -17,14 +17,14 @@ BUILD_CLASS = CROSS # ifdef CROSS looks better than ifeq ($(BUILD_CLASS),CROSS) CROSS = YES -GNU_TARGET_INCLUDE_DIR = $(GNU_TARGET:%= $(GNU_DIR)/%/include) -GNU_TARGET_LIB_DIR = $(GNU_TARGET:%= $(GNU_DIR)/%/lib) +GNU_TARGET_INCLUDE_DIR = $(wildcard $(GNU_TARGET:%=$(GNU_DIR)/%/include)) +GNU_TARGET_LIB_DIR = $(wildcard $(GNU_TARGET:%=$(GNU_DIR)/%/lib)) -CROSS_INCLUDES = $(addprefix -I,$(GNU_TARGET_INCLUDE_DIR)) -CROSS_LDFLAGS = $(addprefix -L,$(GNU_TARGET_LIB_DIR)) +CROSS_INCLUDES = $(GNU_TARGET_INCLUDE_DIR:%=-I%) +CROSS_LDFLAGS = $(GNU_TARGET_LIB_DIR:%=-L%) -CMPLR_PREFIX_CROSS=$(addsuffix -,$(GNU_TARGET)) -CMPLR_PREFIX=$(CMPLR_PREFIX_$(BUILD_CLASS)) +CMPLR_PREFIX_CROSS = $(addsuffix -,$(GNU_TARGET)) +CMPLR_PREFIX = $(CMPLR_PREFIX_$(BUILD_CLASS)) # Cross builds usually use the gnu compiler include $(CONFIG)/CONFIG.gnuCommon diff --git a/configure/CONFIG_SITE_ENV b/configure/CONFIG_SITE_ENV index 2c56ff229..271fd7134 100644 --- a/configure/CONFIG_SITE_ENV +++ b/configure/CONFIG_SITE_ENV @@ -13,7 +13,7 @@ # # CONFIG_SITE_ENV - EPICS Environment Parameter Site configuration file # -# This file is read by the script base/src/libCom/env/bldEnvdata.pl +# This file is read by the script base/src/libCom/env/bldEnvData.pl # Variable definitions must take the form # VAR = VALUE # or @@ -26,31 +26,46 @@ # Time service: # EPICS_TIMEZONE -# local timezone info for vxWorks and RTEMS IOCs. The format is +# Local timezone info for vxWorks and RTEMS. The format is # :::: # where the start and end are mmddhh - that is month,day,hour -# e.g. for ANL in 2016: EPICS_TIMEZONE=CST/CDT::360:031302:110602 +# e.g. for ANL in 2018: EPICS_TIMEZONE=CUS::360:031102:110402 +# The future dates below assume the rules don't get changed; +# see http://www.timeanddate.com/time/dst/2018.html to check. # -# DST for 2016 US: Mar 13 - Nov 06 -# EU: Mar 27 - Oct 30 # DST for 2017 US: Mar 12 - Nov 05 # EU: Mar 26 - Oct 29 +EPICS_TIMEZONE = CUS::360:031202:110502 +#EPICS_TIMEZONE = MET::-60:032602:102902 +# # DST for 2018 US: Mar 11 - Nov 04 # EU: Mar 25 - Oct 28 +#EPICS_TIMEZONE = CUS::360:031102:110402 +#EPICS_TIMEZONE = MET::-60:032502:102802 +# # DST for 2019 US: Mar 10 - Nov 03 # EU: Mar 31 - Oct 27 +#EPICS_TIMEZONE = CUS::360:031002:110302 +#EPICS_TIMEZONE = MET::-60:033102:102702 +# # DST for 2020 US: Mar 08 - Nov 01 # EU: Mar 29 - Oct 25 +#EPICS_TIMEZONE = CUS::360:030802:110102 +#EPICS_TIMEZONE = MET::-60:032902:102502 +# # DST for 2021 US: Mar 14 - Nov 07 # EU: Mar 28 - Oct 31 -# (see: http://www.timeanddate.com/time/dst/2016.html etc. ) +#EPICS_TIMEZONE = CUS::360:031402:110702 +#EPICS_TIMEZONE = MET::-60:032802:103102 # -# These values are for 2016: -EPICS_TIMEZONE=CST/CDT::360:031302:110602 -#EPICS_TIMEZONE=CET/CEST::-60:032702:103002 +# DST for 2022 US: Mar 13 - Nov 06 +# EU: Mar 27 - Oct 30 +#EPICS_TIMEZONE = CUS::360:031302:110602 +#EPICS_TIMEZONE = MET::-60:032702:103002 # EPICS_TS_NTP_INET -# NTP time server ip address. Uses boot host if not set. +# NTP time server ip address for VxWorks and RTEMS. +# IOC will use its boot host if this is not set. EPICS_TS_NTP_INET= # IOC Shell: diff --git a/configure/os/CONFIG.Common.linux-xscale_be b/configure/os/CONFIG.Common.linux-xscale_be index 8597aa208..462320f66 100644 --- a/configure/os/CONFIG.Common.linux-xscale_be +++ b/configure/os/CONFIG.Common.linux-xscale_be @@ -15,5 +15,14 @@ ARCH_CLASS = xscale ifeq ($(BUILD_CLASS),CROSS) VALID_BUILDS = Ioc GNU_TARGET = xscale_be - CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET)) + CMPLR_PREFIX = $(GNU_TARGET:%=%-) + + # Configure for readline if requested + OP_SYS_INCLUDES += $(READLINE_DIR:%=-I%/include) + READLINE_LDFLAGS = $(READLINE_DIR:%=-L%/lib) + RUNTIME_LDFLAGS_READLINE_YES_NO = $(READLINE_DIR:%=-Wl,-rpath,%/lib) + RUNTIME_LDFLAGS += \ + $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH)_$(STATIC_BUILD)) + SHRLIBDIR_LDFLAGS += $(READLINE_LDFLAGS) + PRODDIR_LDFLAGS += $(READLINE_LDFLAGS) endif diff --git a/configure/os/CONFIG.Common.linuxCommon b/configure/os/CONFIG.Common.linuxCommon index d50ce60d9..965de09b8 100644 --- a/configure/os/CONFIG.Common.linuxCommon +++ b/configure/os/CONFIG.Common.linuxCommon @@ -23,13 +23,15 @@ STATIC_LDFLAGS_YES= -Wl,-Bstatic STATIC_LDFLAGS_NO= STATIC_LDLIBS_YES= -Wl,-Bdynamic -# Set runtime path for shared libraries -SHRLIBDIR_RPATH_LDFLAGS_YES += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%) -SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH)) +# Set runtime path for shared libraries if USE_RPATH=YES and STATIC_BUILD=NO +SHRLIBDIR_RPATH_LDFLAGS_YES_NO = $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%) +SHRLIBDIR_LDFLAGS += \ + $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH)_$(STATIC_BUILD)) -# Set runtime path for products -PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%) -PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH)) +# Set runtime path for products if USE_RPATH=YES and STATIC_BUILD=NO +PRODDIR_RPATH_LDFLAGS_YES_NO = $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%) +PRODDIR_LDFLAGS += \ + $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH)_$(STATIC_BUILD)) # Link libraries controlled by COMMANDLINE_LIBRARY # The newest Linux versions only need readline, older ones need both diff --git a/configure/os/CONFIG.Common.vxWorksCommon b/configure/os/CONFIG.Common.vxWorksCommon index 3952fa970..875fe81b7 100644 --- a/configure/os/CONFIG.Common.vxWorksCommon +++ b/configure/os/CONFIG.Common.vxWorksCommon @@ -106,20 +106,10 @@ GNU_DIR_6 = $(WIND_BASE)/gnu/$(VX_GNU_VERSION)-vxworks-$(VXWORKS_VERSION)/$(WIND GNU_DIR = $(GNU_DIR_$(VXWORKS_MAJOR_VERSION)) #-------------------------------------------------- -# Wind River moved nm out of GNU_BIN in some versions +# This finds nm on any supported VxWorks version -WORKBENCH_BIN = $(WIND_BASE)/workbench-$(WORKBENCH_VERSION)/$(WIND_HOST_TYPE)/bin -UTILITIES_BIN = $(WIND_BASE)/utilities-$(UTILITIES_VERSION)/$(WIND_HOST_TYPE)/bin - -NM_DIR_6.4 = $(WORKBENCH_BIN) -NM_DIR_6.5 = $(WORKBENCH_BIN) -NM_DIR_6.6 = $(WORKBENCH_BIN) -NM_DIR_6.7 = $(GNU_BIN) -NM_DIR_6.8 = $(UTILITIES_BIN) -NM_DIR_6.9 = $(UTILITIES_BIN) -NM_DIR = $(firstword $(NM_DIR_$(VXWORKS_VERSION)) $(GNU_BIN)) - -NM = $(NM_DIR)/$(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE) +NMPROG = $(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE) +NM = $(firstword $(wildcard $(WIND_BASE)/*/$(WIND_HOST_TYPE)/bin/$(NMPROG))) #-------------------------------------------------- # A linker script is essential for munching from vxWorks 6.6 onwards @@ -132,6 +122,7 @@ MUNCH_LDFLAGS = $(MUNCH_LDFLAGS_$(VXWORKS_MAJOR_VERSION)) #-------------------------------------------------- # These are required by some of the Wind River tools export WIND_BASE +export WIND_HOME = $(WIND_BASE) export WIND_HOST_TYPE export TOOL_FAMILY = GNU @@ -179,6 +170,8 @@ OSITHREAD_USE_DEFAULT_STACK = NO #-------------------------------------------------- # Link definitions +CROSS_LDFLAGS = +# LINK.cpp = $(LD) -o $@ $(STATIC_LDFLAGS) $(PRODDIR_LDFLAGS) $(LDFLAGS) LINK.cpp += $(PROD_LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS) diff --git a/configure/os/CONFIG.linux-x86.linux-arm b/configure/os/CONFIG.linux-x86.linux-arm index e2cf36a52..63bd5d8be 100644 --- a/configure/os/CONFIG.linux-x86.linux-arm +++ b/configure/os/CONFIG.linux-x86.linux-arm @@ -11,19 +11,14 @@ GNU_TARGET = arm-linux 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)) +# Provide a link-time path for readline if needed +OP_SYS_INCLUDES += $(READLINE_DIR:%=-I%/include) +READLINE_LDFLAGS = $(READLINE_DIR:%=-L%/lib) +RUNTIME_LDFLAGS_READLINE_YES_NO = $(READLINE_DIR:%=-Wl,-rpath,%/lib) +RUNTIME_LDFLAGS += \ + $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH)_$(STATIC_BUILD)) +SHRLIBDIR_LDFLAGS += $(READLINE_LDFLAGS) +PRODDIR_LDFLAGS += $(READLINE_LDFLAGS) # Library flags STATIC_LDFLAGS_YES= -Wl,-Bstatic diff --git a/configure/os/CONFIG_SITE.Common.linux-xscale_be b/configure/os/CONFIG_SITE.Common.linux-xscale_be index 69efd6ffa..015229647 100644 --- a/configure/os/CONFIG_SITE.Common.linux-xscale_be +++ b/configure/os/CONFIG_SITE.Common.linux-xscale_be @@ -1,10 +1,4 @@ # CONFIG_SITE.Common.linux-xscale_be # -# Site specific definitions for linux-xscale_be target builds. +# Site specific definitions for all linux-xscale_be target builds. #------------------------------------------------------- - -# Set GNU_DIR to point to directory containing the tool-chain - -# APS: -GNU_DIR = /usr/local/vw/xscale_be - diff --git a/configure/os/CONFIG_SITE.Common.vxWorksCommon b/configure/os/CONFIG_SITE.Common.vxWorksCommon index 993694350..38e63893f 100644 --- a/configure/os/CONFIG_SITE.Common.vxWorksCommon +++ b/configure/os/CONFIG_SITE.Common.vxWorksCommon @@ -9,7 +9,7 @@ # Note: vxWorks 5.4.x (Tornado 2.0.x) is not supported -VXWORKS_VERSION = 5.5 +#VXWORKS_VERSION = 5.5 #VXWORKS_VERSION = 6.0 #VXWORKS_VERSION = 6.1 #VXWORKS_VERSION = 6.2 @@ -19,7 +19,7 @@ VXWORKS_VERSION = 5.5 #VXWORKS_VERSION = 6.6 #VXWORKS_VERSION = 6.7 #VXWORKS_VERSION = 6.8 -#VXWORKS_VERSION = 6.9 +VXWORKS_VERSION = 6.9 # Sites may override the following path for a particular host @@ -29,19 +29,6 @@ VXWORKS_VERSION = 5.5 # WIND_BASE is where you installed the Wind River software. # Under vxWorks 6.x this is *not* the same as the old VX_DIR setting -WIND_BASE = /usr/local/vw/tornado22-$(ARCH_CLASS) -#WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION) +#WIND_BASE = /usr/local/vw/tornado22-$(ARCH_CLASS) +WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION) #WIND_BASE = /ade/vxWorks/$(VXWORKS_VERSION) - - -# WorkBench Version number, if you're using vxWorks 6.x - -#WORKBENCH_VERSION = 2.6 -#WORKBENCH_VERSION = 3.0 -#WORKBENCH_VERSION = 3.2 -#WORKBENCH_VERSION = 3.3 - - -# Utilities Version number, required from vxWorks 6.8 and later - -#UTILITIES_VERSION = 1.0 diff --git a/configure/os/CONFIG_SITE.linux-x86.linux-arm b/configure/os/CONFIG_SITE.linux-x86.linux-arm index 1500c4526..a1edb423d 100644 --- a/configure/os/CONFIG_SITE.linux-x86.linux-arm +++ b/configure/os/CONFIG_SITE.linux-x86.linux-arm @@ -7,8 +7,25 @@ GNU_TARGET = arm-xilinx-linux-gnueabi # Set GNU tools install path -# This is the install path at APS: +# Examples are installations at the APS: GNU_DIR = /usr/local/vw/zynq-2011.09 +#GNU_DIR = /usr/local/Xilinx/SDK/2016.3/gnu/arm/lin +#GNU_DIR = /APSshare/XilinxSDK/2015.4/gnu/arm/lin + +# If cross-building shared libraries and the paths on the target machine are +# different than on the build host, you should uncomment the lines below to +# disable putting runtime library paths in products and shared libraries. +# You will also need to provide another way for programs to find their shared +# libraries at runtime, such as by setting LD_LIBRARY_PATH or by using +# mechanisms related to /etc/ld.so.conf +#SHRLIBDIR_RPATH_LDFLAGS_YES_NO = +#PRODDIR_RPATH_LDFLAGS_YES_NO = +# Note: It may be simpler to just set STATIC_BUILD=YES here and not +# try to use shared libraries at all in these circumstances. + +# To use libreadline, point this to its install prefix +#READLINE_DIR = $(GNU_DIR) +#READLINE_DIR = /tools/cross/linux-x86.linux-arm/readline +# See CONFIG_SITE.Common.linux-arm for other COMMANDLINE_LIBRARY values +#COMMANDLINE_LIBRARY = READLINE -# With a Xilinx SDK, it'll be something like -#GNU_DIR = /usr/local/zynq/Xilinx/SDK/2015.4/gnu/arm/lin diff --git a/configure/os/CONFIG_SITE.linux-x86.linux-xscale_be b/configure/os/CONFIG_SITE.linux-x86.linux-xscale_be new file mode 100644 index 000000000..6df78db19 --- /dev/null +++ b/configure/os/CONFIG_SITE.linux-x86.linux-xscale_be @@ -0,0 +1,11 @@ +# CONFIG_SITE.linux-x86.linux-xscale_be +# +# Site specific definitions for linux-x86 host - linux-xscale_be targets +#------------------------------------------------------- + +# Set GNU_DIR to point to directory containing the tool-chain +GNU_DIR = /usr/local/vw/xscale_be + +# If readline is available, configure it +READLINE_DIR = $(GNU_DIR)/target/usr +COMMANDLINE_LIBRARY = READLINE diff --git a/configure/os/CONFIG_SITE.linux-x86_64.linux-xscale_be b/configure/os/CONFIG_SITE.linux-x86_64.linux-xscale_be new file mode 100644 index 000000000..d016ce985 --- /dev/null +++ b/configure/os/CONFIG_SITE.linux-x86_64.linux-xscale_be @@ -0,0 +1,7 @@ +# CONFIG_SITE.linux-x86_64.linux-xscale_be +# +# Site specific settings for linux-x86_64 host - linux-xscale_be target +#------------------------------------------------------- + +# Inherit setting from linux-x86 +include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-xscale_be