Prior ECHO definition strips T_A=XXX command line variable definitions from MAKEFLAGS but doesn't strip other variable definitions such as INSTALL_LOCATION. As a result, if you "make INSTALL_LOCATION=XXX" the ECHO definition erroneously matches if your install location contains 's'. Changing the ECHO definition to MFLAGS avoids all command line variable definitions.
459 lines
16 KiB
Plaintext
459 lines
16 KiB
Plaintext
#*************************************************************************
|
|
# Copyright (c) 2011 UChicago Argonne LLC, as Operator of Argonne
|
|
# National Laboratory.
|
|
# Copyright (c) 2002 The Regents of the University of California, as
|
|
# Operator of Los Alamos National Laboratory.
|
|
# EPICS BASE is distributed subject to a Software License Agreement found
|
|
# in file LICENSE that is included with this distribution.
|
|
#*************************************************************************
|
|
#
|
|
# CONFIG_COMMON
|
|
#
|
|
# This file is to be maintained by the community.
|
|
#
|
|
# Common Configuration Information
|
|
|
|
#-------------------------------------------------------
|
|
# POSIX is OS default
|
|
POSIX=YES
|
|
|
|
#-------------------------------------------------------
|
|
# Divider symbol
|
|
DIVIDER = .
|
|
|
|
#-------------------------------------------------------
|
|
# Build architectures
|
|
|
|
# CROSS1 will be defined only when CROSS_COMPILER_HOST_ARCHS is NOT defined
|
|
CROSS1 = $(CROSS_COMPILER_TARGET_ARCHS$(word 1,$(CROSS_COMPILER_HOST_ARCHS)))
|
|
|
|
# CROSS2 will be defined only when CROSS_COMPILER_HOST_ARCHS is defined
|
|
# and EPICS_HOST_ARCH is one of its words
|
|
CROSS2 = $(CROSS_COMPILER_TARGET_ARCHS$(filter-out 1,$(words $(filter $(EPICS_HOST_ARCH),$(CROSS_COMPILER_HOST_ARCHS)))))
|
|
|
|
BUILD_ARCHS = $(EPICS_HOST_ARCH) $(CROSS1) $(CROSS2)
|
|
|
|
#-------------------------------------------------------
|
|
# Default for perl if it's on the PATH,
|
|
# otherwise override this in os/CONFIG_SITE.<host_arch>.Common
|
|
PERL = perl -CSD
|
|
|
|
#-------------------------------------------------------
|
|
# dbst based database optimization default
|
|
DB_OPT = NO
|
|
|
|
#-------------------------------------------------------
|
|
# Check configure/RELEASE file for consistency
|
|
CHECK_RELEASE_YES = checkRelease
|
|
CHECK_RELEASE_NO = noCheckRelease
|
|
CHECK_RELEASE_WARN = warnRelease
|
|
|
|
#-------------------------------------------------------
|
|
# GNU directory
|
|
# GNU_DIR definition is here because it is used to find
|
|
# READLINE library even if GNU compiler is not used
|
|
GNU_DIR = /usr
|
|
|
|
#-------------------------------------------------------
|
|
# Directories
|
|
|
|
INSTALL_LOCATION = $(TOP)
|
|
|
|
INSTALL_LOCATION_LIB = $(INSTALL_LOCATION)/lib
|
|
INSTALL_LOCATION_BIN = $(INSTALL_LOCATION)/bin
|
|
|
|
INSTALL_HOST_BIN = $(INSTALL_LOCATION_BIN)/$(EPICS_HOST_ARCH)
|
|
INSTALL_HOST_LIB = $(INSTALL_LOCATION_LIB)/$(EPICS_HOST_ARCH)
|
|
|
|
INSTALL_INCLUDE = $(INSTALL_LOCATION)/include
|
|
INSTALL_DOC = $(INSTALL_LOCATION)/doc
|
|
INSTALL_HTML = $(INSTALL_LOCATION)/html
|
|
INSTALL_TEMPLATES = $(INSTALL_LOCATION)/templates
|
|
INSTALL_DBD = $(INSTALL_LOCATION)/dbd
|
|
INSTALL_DB = $(INSTALL_LOCATION)/db
|
|
INSTALL_CONFIG = $(INSTALL_LOCATION)/configure
|
|
|
|
# Directory for OS independant build created files
|
|
COMMON_DIR = ../O.Common
|
|
|
|
# IOC's absolute path to $(TOP), may be overridden inside the application
|
|
IOCS_APPL_TOP = $(shell $(FULLPATHNAME) $(INSTALL_LOCATION))
|
|
|
|
#-------------------------------------------------------
|
|
# Make echo output - suppress echoing if make's '-s' flag is set
|
|
NOP = :
|
|
ECHO = @$(if $(findstring s,$(MFLAGS)),$(NOP),echo)
|
|
|
|
#-------------------------------------------------------
|
|
ifdef T_A
|
|
|
|
INSTALL_LIB = $(INSTALL_LOCATION_LIB)/$(T_A)
|
|
INSTALL_SHRLIB = $(INSTALL_LOCATION_LIB)/$(T_A)
|
|
INSTALL_TCLLIB = $(INSTALL_LOCATION_LIB)/$(T_A)
|
|
INSTALL_BIN = $(INSTALL_LOCATION_BIN)/$(T_A)
|
|
|
|
#Directories for libraries
|
|
SHRLIB_SEARCH_DIRS = $(INSTALL_LIB)
|
|
|
|
#-------------------------------------------------------
|
|
# Ext, app, and module configure dir targets
|
|
CONFIG_INSTALLS += ../RULES_BUILD ../RELEASE*
|
|
|
|
#-------------------------------------------------------
|
|
# Cross compile default, HOST or CROSS, CONFIG.crossCommon will override
|
|
BUILD_CLASS = HOST
|
|
|
|
#-------------------------------------------------------
|
|
# Build defaults, CONFIG_SITE, CONFIG, or os/CONFIG* will override
|
|
STATIC_BUILD=NO
|
|
SHARED_LIBRARIES=YES
|
|
HOST_OPT=YES
|
|
CROSS_OPT=YES
|
|
HOST_WARN=YES
|
|
CROSS_WARN=YES
|
|
GNU=NO
|
|
|
|
#-------------------------------------------------------
|
|
# Run checkRelease in $(TOP)/configure/O.*
|
|
CONFIG_TARGETS += $(CHECK_RELEASE_$(CHECK_RELEASE))
|
|
|
|
#-------------------------------------------------------
|
|
# Prefix and suffix
|
|
DEP = .d
|
|
OBJ = .o
|
|
CMPLR_SUFFIX =
|
|
CMPLR_PREFIX =
|
|
LIB_PREFIX =
|
|
LIB_SUFFIX =
|
|
SHRLIB_PREFIX = $(LIB_PREFIX)
|
|
DLLSTUB_PREFIX = $(LIB_PREFIX)
|
|
DLLSTUB_SUFFIX = $(LIB_SUFFIX)
|
|
|
|
BUILDLIB_PREFIX_YES = $(DLLSTUB_PREFIX)
|
|
BUILDLIB_PREFIX_NO = $(LIB_PREFIX)
|
|
BUILDLIB_SUFFIX_YES = $(DLLSTUB_SUFFIX)
|
|
BUILDLIB_SUFFIX_NO = $(LIB_SUFFIX)
|
|
BUILDLIB_PREFIX = $(BUILDLIB_PREFIX_$(SHARED_LIBRARIES))
|
|
BUILDLIB_SUFFIX = $(BUILDLIB_SUFFIX_$(SHARED_LIBRARIES))
|
|
|
|
#--------------------------------------------------
|
|
# vpath directories
|
|
POSIX_YES = os/posix
|
|
GENERIC_SRC_DIRS = .. $(SRC_DIRS)
|
|
OS_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
|
|
$(addprefix $(dir)/, os/$(OS_CLASS) $(POSIX_$(POSIX)) os/default ))
|
|
CMPLR_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
|
|
$(addprefix $(dir)/, compiler/$(CMPLR_CLASS) compiler/default ))
|
|
ALL_SRC_DIRS = $(CMPLR_SRC_DIRS) $(OS_SRC_DIRS) $(GENERIC_SRC_DIRS)
|
|
|
|
#--------------------------------------------------
|
|
# compile line include directories
|
|
INSTALL_INCLUDES += \
|
|
-I$(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS) \
|
|
-I$(INSTALL_INCLUDE)/os/$(OS_CLASS) \
|
|
-I$(INSTALL_INCLUDE)
|
|
SRC_INCLUDES = -I$(COMMON_DIR) $(addprefix -I, $(wildcard $(ALL_SRC_DIRS)))
|
|
|
|
#--------------------------------------------------
|
|
# Target filename definitions
|
|
OBJSNAME = $(addsuffix $(OBJ),$(basename $(OBJS)))
|
|
PRODNAME = $(addsuffix $(EXE),$(basename $(PROD)))
|
|
TESTPRODNAME = $(addsuffix $(EXE),$(basename $(TESTPROD)))
|
|
|
|
SHRLIBNAME = $(SHRLIBNAME_$(SHARED_LIBRARIES))
|
|
TESTSHRLIBNAME = $(TESTSHRLIBNAME_$(SHARED_LIBRARIES))
|
|
|
|
#--------------------------------------------------
|
|
# obj files
|
|
|
|
TARGET_OBJS = $($*_OBJLIBS) $($*_LDOBJS) $(addsuffix $(OBJ),$(basename $($*_OBJS) $($*_SRCS)))
|
|
|
|
PRODUCT_OBJS = $(addsuffix $(OBJ),$(basename $(SRCS) $(USR_SRCS) $(PROD_SRCS) $(USR_OBJS) $(PROD_OBJS)))
|
|
PROD_LD_OBJS = $(USR_OBJLIBS) $(PROD_OBJLIBS) $(TARGET_OBJS) $(PRODUCT_OBJS)
|
|
|
|
LIBRARY_OBJS = $(addsuffix $(OBJ),$(basename $(SRCS) $(USR_SRCS) $(LIB_SRCS) $(LIBSRCS) $(USR_OBJS) $(LIB_OBJS)))
|
|
LIBRARY_LD_OBJS = $(USR_OBJLIBS) $(LIB_OBJLIBS) $(TARGET_OBJS) $(LIBRARY_OBJS)
|
|
|
|
#--------------------------------------------------
|
|
# Windows resource files
|
|
|
|
TARGET_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $($*_RCS))),)
|
|
|
|
PROD_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $(RCS) $(PROD_RCS))),)
|
|
PROD_LD_RESS = $(TARGET_RESS) $(PROD_RESS)
|
|
|
|
LIBRARY_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $(RCS) $(LIB_RCS) $(LIBRARY_RCS))),)
|
|
LIBRARY_LD_RESS = $(TARGET_RESS) $(LIBRARY_RESS)
|
|
|
|
#--------------------------------------------------
|
|
# C preprocessor, compiler, and linker flag defaults
|
|
|
|
# Target architecture specific flags
|
|
ARCH_DEP_CPPFLAGS =
|
|
ARCH_DEP_CFLAGS =
|
|
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
|
ARCH_DEP_LDFLAGS =
|
|
ARCH_DEP_LDLIBS =
|
|
|
|
# Target operating system specific flags
|
|
OP_SYS_CPPFLAGS =
|
|
OP_SYS_CFLAGS =
|
|
OP_SYS_CXXFLAGS = $(OP_SYS_CFLAGS)
|
|
OP_SYS_LDFLAGS =
|
|
OP_SYS_INCLUDES =
|
|
|
|
# Makefile specific flags
|
|
USR_INCLUDES =
|
|
USR_CFLAGS =
|
|
USR_CXXFLAGS =
|
|
USR_LDFLAGS =
|
|
USR_LIBS =
|
|
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 =
|
|
DEBUG_CXXFLAGS = $(DEBUG_CFLAGS)
|
|
DEBUG_LDFLAGS =
|
|
DEBUG_LDLIBS =
|
|
|
|
# Target specific options
|
|
TARGET_INCLUDES = $($(basename $@)_INCLUDES_$(T_A))
|
|
TARGET_CFLAGS = $($(basename $@)_CFLAGS_$(T_A))
|
|
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS_$(T_A))
|
|
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS_$(T_A))
|
|
|
|
TARGET_INCLUDES += $($(basename $@)_INCLUDES_$(OS_CLASS)) $($(basename $@)_INCLUDES)
|
|
TARGET_CFLAGS += $($(basename $@)_CFLAGS_$(OS_CLASS)) $($(basename $@)_CFLAGS)
|
|
TARGET_CXXFLAGS += $($(basename $@)_CXXFLAGS_$(OS_CLASS)) $($(basename $@)_CXXFLAGS)
|
|
TARGET_CPPFLAGS += $($(basename $@)_CPPFLAGS_$(OS_CLASS)) $($(basename $@)_CPPFLAGS)
|
|
|
|
TARGET_LDFLAGS = $($*_LDFLAGS)
|
|
|
|
# Warnings flags
|
|
WARN_CPPFLAGS = $(WARN_CPPFLAGS_$($(BUILD_CLASS)_WARN))
|
|
WARN_CFLAGS = $(WARN_CFLAGS_$($(BUILD_CLASS)_WARN))
|
|
WARN_CXXFLAGS = $(WARN_CXXFLAGS_$($(BUILD_CLASS)_WARN))
|
|
|
|
# Optimization flags
|
|
OPT_CPPFLAGS = $(OPT_CPPFLAGS_$($(BUILD_CLASS)_OPT))
|
|
OPT_CFLAGS = $(OPT_CFLAGS_$($(BUILD_CLASS)_OPT))
|
|
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$($(BUILD_CLASS)_OPT))
|
|
|
|
# Static build flags
|
|
STATIC_CFLAGS = $(STATIC_CFLAGS_$(STATIC_BUILD))
|
|
STATIC_CXXCFLAGS = $(STATIC_CXXFLAGS_$(STATIC_BUILD))
|
|
STATIC_LDFLAGS = $(STATIC_LDFLAGS_$(STATIC_BUILD))
|
|
STATIC_LDLIBS = $(STATIC_LDLIBS_$(STATIC_BUILD))
|
|
|
|
#--------------------------------------------------
|
|
# cflags for shared library src files (from SHRLIB_CFLAGS)
|
|
LIBRARY_SRCS=$(basename $(foreach lib,$(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY),$($(lib)_OBJSNAME) $(LIBRARY_OBJS)))
|
|
LIBRARY_SRC_CFLAGS=$($(patsubst $*,SHRLIB,$(findstring $*,$(LIBRARY_SRCS)))_CFLAGS)
|
|
|
|
#--------------------------------------------------
|
|
# prefix, suffix, and ldflags for loadable shared libraries
|
|
TARGET_LIB_LDFLAGS=$($(patsubst $*,LOADABLE_,$(findstring $*,$(LOADABLE_LIBRARY)))SHRLIB_LDFLAGS)
|
|
LOADABLE_SHRLIB_PREFIX=$(SHRLIB_PREFIX)
|
|
LOADABLE_SHRLIB_SUFFIX=$(SHRLIB_SUFFIX)
|
|
|
|
#--------------------------------------------------
|
|
# Command-line input support default
|
|
COMMANDLINE_LIBRARY = EPICS
|
|
OP_SYS_LDLIBS += $(LDLIBS_$(COMMANDLINE_LIBRARY))
|
|
OP_SYS_LDFLAGS += $(LDFLAGS_$(COMMANDLINE_LIBRARY))
|
|
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
|
|
|
#--------------------------------------------------
|
|
# Flags
|
|
|
|
INCLUDES = -I. $(SRC_INCLUDES) $(INSTALL_INCLUDES) $(RELEASE_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) $(CMD_CFLAGS) $(ARCH_DEP_CFLAGS) $(CODE_CFLAGS)\
|
|
$(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_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)
|
|
|
|
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))
|
|
|
|
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) $(CMD_ARFLAGS) $@ $(LIBRARY_LD_OBJS)
|
|
|
|
#--------------------------------------------------
|
|
# 'Munch' link-edit
|
|
MUNCH_CMD = $(LD) $(MUNCH_LDFLAGS) -o $@ $^
|
|
|
|
#--------------------------------------------------
|
|
# LEX default options
|
|
#
|
|
# Allow 8-bit characters
|
|
LEXOPT += -8
|
|
# Generate an "interactive" scanner, solves problems at EOF.
|
|
LEXOPT += -I
|
|
|
|
#--------------------------------------------------
|
|
# Build compile line here
|
|
|
|
COMPILE.c = $(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDES)
|
|
COMPILE.cpp = $(CCC) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES)
|
|
|
|
#--------------------------------------------------
|
|
# C preprocessor command
|
|
PREPROCESS.cpp = $(CPP) $(CPPFLAGS) $(INCLUDES) $< > $@
|
|
|
|
#--------------------------------------------------
|
|
# Header dependency file generation
|
|
|
|
HDEPENDS_METHOD = MKMF
|
|
|
|
HDEPENDS_MKMFFLAGS = -m $@ $(INCLUDES) $*$(OBJ)
|
|
HDEPENDS_MKMF.c = $(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDS_MKMFFLAGS)
|
|
HDEPENDS_MKMF.cpp = $(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDS_MKMFFLAGS)
|
|
|
|
HDEPENDS_COMP.c = $(COMPILE.c) $(HDEPENDS_COMPFLAGS) $(HDEPENDS_ARCHFLAGS)
|
|
HDEPENDS_COMP.cpp = $(COMPILE.cpp) $(HDEPENDS_COMPFLAGS) $(HDEPENDS_ARCHFLAGS)
|
|
|
|
HDEPENDS.c = $(HDEPENDS_$(HDEPENDS_METHOD).c)
|
|
HDEPENDS.cpp = $(HDEPENDS_$(HDEPENDS_METHOD).cpp)
|
|
|
|
#--------------------------------------------------
|
|
# Dependency files
|
|
|
|
TARGET_SRCS = $(foreach name, \
|
|
$(TESTPROD) $(PROD) $(TESTLIBRARY) $(LIBRARY) $(LOADABLE_LIBRARY), \
|
|
$($(name)_SRCS))
|
|
SRC_FILES = $(LIB_SRCS) $(LIBSRCS) $(SRCS) $(USR_SRCS) $(PROD_SRCS) $(TARGET_SRCS)
|
|
HDEPENDS_FILES = $(addsuffix $(DEP),$(notdir $(basename $(SRC_FILES))))
|
|
|
|
#--------------------------------------------------
|
|
# Deprecated and no longer used in Base
|
|
|
|
PATH_FILTER = $(1)$(warning PATH_FILTER is deprecated; used for $(1))
|
|
|
|
#---------------------------------------------------------------
|
|
# Names of installed items
|
|
#
|
|
# each list starts with the destination directory name(s)
|
|
# to make sure it's there
|
|
|
|
INSTALL_PROD= $(PRODNAME:%= $(INSTALL_BIN)/%)
|
|
INSTALL_LIBS= $(LIBNAME:%=$(INSTALL_LIB)/%)
|
|
INSTALL_MUNCHS= $(MUNCHNAME:%=$(INSTALL_BIN)/%)
|
|
INSTALL_SHRLIBS= $(SHRLIBNAME:%=$(INSTALL_SHRLIB)/%)
|
|
INSTALL_LOADABLE_SHRLIBS= $(LOADABLE_SHRLIBNAME:%=$(INSTALL_SHRLIB)/%)
|
|
INSTALL_DLLSTUB_LIBS=$(DLLSTUB_LIBNAME:%=$(INSTALL_LIB)/%)
|
|
INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%)
|
|
INSTALL_TCLINDEX=$(TCLINDEX:%=$(INSTALL_TCLLIB)/%)
|
|
INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%)
|
|
INSTALL_OBJS = $(OBJSNAME:%= $(INSTALL_BIN)/%)
|
|
|
|
INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%)
|
|
INSTALL_HTMLS = $(HTMLS:%= $(INSTALL_HTML)/$(HTMLS_DIR)/%)
|
|
|
|
INSTALL_TEMPLATE = $(addprefix $(INSTALL_TEMPLATES_SUBDIR)/, \
|
|
$(subst $(CONFIG),top/configure,$(TEMPLATES)))
|
|
INSTALL_CONFIGS = $(CONFIGS:%= $(INSTALL_CONFIG)/%)
|
|
|
|
INSTALL_BIN_INSTALLS = $(addprefix $(INSTALL_BIN)/,$(notdir $(BIN_INSTALLS)))
|
|
INSTALL_LIB_INSTALLS = $(addprefix $(INSTALL_LIB)/,$(notdir $(LIB_INSTALLS)))
|
|
|
|
#---------------------------------------------------------------
|
|
# Installed file permissions
|
|
BIN_PERMISSIONS = 555
|
|
LIB_PERMISSIONS = 444
|
|
SHRLIB_PERMISSIONS = 555
|
|
INSTALL_PERMISSIONS = 444
|
|
|
|
#---------------------------------------------------------------
|
|
#
|
|
# auto determine the directory paths that things are installed to
|
|
# RULES:
|
|
# 0) found in any one of several compiler specific paths
|
|
# => install to $(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS)
|
|
# 1) not found in (0) and found in any one of several OS specific paths
|
|
# => install to $(INSTALL_INCLUDE)/os/$(OS_CLASS)
|
|
# 2) not found in (1) and found in generic paths
|
|
# => install to $(INSTALL_INCLUDE)
|
|
# 3) not found in (1) or (2) then may be (not yet) computer generated
|
|
# => install into $(INSTALL_INCLUDE)/os/$(OS_CLASS) and let
|
|
# build rules work on vpath
|
|
#
|
|
# These rules guarantee that the users include from
|
|
# no more than three directories
|
|
#
|
|
INSTALL_INC += $(foreach inc, $(INC), \
|
|
$(firstword \
|
|
$(CMPLR_INSTALL_INC) \
|
|
$(OS_INSTALL_INC) \
|
|
$(GENERIC_INSTALL_INC) \
|
|
$(GENERATED_INSTALL_INC) ) )
|
|
INSTALL_INC += $(addprefix $(INSTALL_INCLUDE)/os/$(OS_CLASS)/, $(INC_$(OS_CLASS)) )
|
|
|
|
#
|
|
# Rule 0
|
|
#
|
|
CMPLR_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS)/, $(INSTALL_INC_jjj) )
|
|
INSTALL_INC_jjj = $(foreach dir, $(CMPLR_SRC_DIRS), $(INSTALL_INC_iii) )
|
|
INSTALL_INC_iii = $(subst $(dir)/, , $(INSTALL_INC_hhh) )
|
|
INSTALL_INC_hhh = $(wildcard $(addsuffix /$(inc), $(dir)) )
|
|
|
|
#
|
|
# Rule 1
|
|
#
|
|
OS_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/os/$(OS_CLASS)/, $(INSTALL_INC_ggg) )
|
|
INSTALL_INC_ggg = $(foreach dir, $(OS_SRC_DIRS), $(INSTALL_INC_fff) )
|
|
INSTALL_INC_fff = $(subst $(dir)/, , $(INSTALL_INC_eee) )
|
|
INSTALL_INC_eee = $(wildcard $(addsuffix /$(inc), $(dir)) )
|
|
|
|
#
|
|
# Rule 2
|
|
#
|
|
GENERIC_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/, $(INSTALL_INC_ccc) )
|
|
INSTALL_INC_ccc = $(foreach dir, .. $(SRC_DIRS), $(INSTALL_INC_bbb) )
|
|
INSTALL_INC_bbb = $(subst $(dir)/, , $(INSTALL_INC_aaa) )
|
|
INSTALL_INC_aaa = $(wildcard $(addsuffix /$(inc), $(dir)) )
|
|
|
|
#
|
|
# Rule 3
|
|
#
|
|
GENERATED_INSTALL_INC = $(INSTALL_INCLUDE)/$(inc)
|
|
|
|
COMMON_INC += $(filter $(COMMON_DIR)/%, $(foreach file, $(INC), \
|
|
$(firstword $(SOURCE_INC) $(COMMON_DIR)/$(file) ) ) )
|
|
SOURCE_INC = $(wildcard $(file) $(SOURCE_INC_bbb) )
|
|
SOURCE_INC_bbb = $(foreach dir, $(ALL_SRC_DIRS), $(SOURCE_INC_aaa) )
|
|
SOURCE_INC_aaa = $(addsuffix /$(file), $(dir) )
|
|
|
|
endif
|