If you overwrite INSTALL_LOCATION in CONFIG_SITE, then it would be the case that TOP_CFG_CONFIGS would point to those from EPICS base and not from the module that you are loading. Fetching these earlier fixes that issue.
136 lines
3.8 KiB
Plaintext
136 lines
3.8 KiB
Plaintext
#*************************************************************************
|
|
# 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.
|
|
#*************************************************************************
|
|
|
|
#
|
|
# Common build definitions
|
|
#
|
|
|
|
ifneq ($(wildcard $(TOP)/configure/CONFIG_BASE_VERSION),)
|
|
EPICS_BASE = $(INSTALL_LOCATION)
|
|
CONFIG = $(TOP)/configure
|
|
BASE_TOP=YES
|
|
else
|
|
ifneq ($(origin EPICS_BASE),file)
|
|
# Essential for the EPICS build system, see convertRelease.pl
|
|
$(error EPICS_BASE must be set in a configure/RELEASE file)
|
|
endif
|
|
CONFIG ?= $(EPICS_BASE)/configure
|
|
endif
|
|
|
|
# Provide a default if the user hasn't set EPICS_HOST_ARCH
|
|
#
|
|
ifeq ($(origin EPICS_HOST_ARCH), undefined)
|
|
# Bootstrapping ...
|
|
EHA := $(firstword $(wildcard $(EPICS_BASE)/lib/perl/EpicsHostArch.pl \
|
|
$(TOP)/src/tools/EpicsHostArch.pl))
|
|
# NB: We use a simply expanded variable here for performance:
|
|
export EPICS_HOST_ARCH := $(shell perl $(EHA))
|
|
EHA :=
|
|
endif
|
|
|
|
# Make Perl hash iteration reproducible.
|
|
# See: https://reproducible-builds.org/docs/stable-outputs/
|
|
#
|
|
export PERL_HASH_SEED = 0
|
|
|
|
-include $(CONFIG)/RELEASE
|
|
-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)
|
|
endif
|
|
|
|
include $(CONFIG)/CONFIG_COMMON
|
|
include $(CONFIG)/CONFIG_FILE_TYPE
|
|
|
|
# Fetch the module-specific CFGS before overwriting INSTALL_LOCATION in order to load them later
|
|
TOP_CFG_CONFIGS := $(wildcard $(INSTALL_CFG)/CONFIG*)
|
|
|
|
# Base-specific build options
|
|
#
|
|
include $(CONFIG)/CONFIG_BASE
|
|
|
|
# Site-specific build options
|
|
#
|
|
include $(CONFIG)/CONFIG_SITE
|
|
|
|
# Version numbering
|
|
#
|
|
include $(CONFIG)/CONFIG_BASE_VERSION
|
|
|
|
# Host architecture specific definitions
|
|
#
|
|
include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common
|
|
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
|
|
|
|
# Parse configure/RELEASE to find all upstream modules
|
|
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
|
|
|
|
ifdef T_A
|
|
# Information from the target's compiler
|
|
#
|
|
-include $(EPICS_BASE)/cfg/TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A)
|
|
|
|
# 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)
|
|
|
|
# Host-Target architecture specific definitions
|
|
#
|
|
-include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).$(T_A)
|
|
|
|
# Site specific target and host-target definitions and overrides
|
|
#
|
|
-include $(CONFIG)/os/CONFIG_SITE.Common.$(T_A)
|
|
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
|
|
|
|
# RELEASE file specific definitions
|
|
#
|
|
ifneq ($(CONFIG),$(TOP)/configure)
|
|
-include $(CONFIG)/CONFIG_APP_INCLUDE
|
|
endif
|
|
|
|
endif # ifdef T_A
|
|
|
|
|
|
# Include <top>/cfg/CONFIG* definitions from tops defined in RELEASE* files
|
|
#
|
|
ifneq ($(CONFIG),$(TOP)/configure)
|
|
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
|
|
#
|
|
ifneq ($(TOP_CFG_CONFIGS),)
|
|
include $(TOP_CFG_CONFIGS)
|
|
endif
|
|
|
|
# User specific definitions
|
|
#
|
|
-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)
|
|
endif
|
|
|