Files
vxWorks/h/make/defs.link
2025-08-20 18:25:46 +08:00

136 lines
5.7 KiB
SYSTEMD

# defs.link - libraries and libraries search path definitions
#
# Copyright 1984-2005, Wind River Systems, Inc.
#
# modification history
# --------------------
# 04l,15sep05,jlb Use CPU_CLASS to access middleware component archives
# 04k,28apr05,edc Fixed component libpaths from WS_ROOT_DIR such that it
# propagates the macro when WS_ROOT_DIR is defined as UNKNOWN
# during VIP create time.
# 04j,22apr05,edc Did not (could not) break up lines 82-89.
# 04i,22apr05,edc Added component libpaths from the workspace directory,
# broke long lines, and added comments.
# 04h,19may04,dlk Include defs.option from this file.
# 04g,03feb04,dlk support option builds.
# 04f,30jan03,pch add LD_LINK_PATH_ATEND
# 04e,12nov01,j_s written
#
# DESCRIPTION
# This file defines OS libraries VX_OS_LIBS and the library search paths
# LD_LINK_PATH. LIBS is also defined here which includes LIB_EXTRA and
# VX_OS_LIBS by default. It can be overwitten by project. This file is
# included by both defs.bsp and defs.project
include $(TGT_DIR)/h/make/defs.option
## libraries
#
# LD_LINK_PATH: list of paths that ld search for archive libraries.
# It includes the tool independant and dependant directories, as
# well as any additional directory specified via
# LD_LINK_PATH_EXTRA.
# LD_LINK_LIBS: list of libraries searched by ld in the paths defined by
# LD_LINK_PATH. This list is automatically generated and
# corresponds to all of the libraries located in the directories
# specified in LD_LINK_PATH whose name is of the form libXXX.a.
#
LD_LINK_PATH = $(LD_LINK_PATH_EXTRA) \
-L$(TGT_DIR)/lib/$(VX_CPU_FAMILY)/$(CPU)/$(TOOL)
LD_LINK_PATH += -L$(TGT_DIR)/lib/$(VX_CPU_FAMILY)/$(CPU)/$(TOOL_COMMON_DIR)
# ifneq ($(LD_LINK_PATH_ATEND),)
LD_LINK_PATH += $(LD_LINK_PATH_ATEND)
# endif
LIBS_PRESENT = $(notdir $(foreach dir, $(subst -L,, $(LD_LINK_PATH)), \
$(wildcard $(dir)/lib*.a)))
# The option libraries are those containing a dash '-' in their name.
# No non-option library may contain a dash.
OPT_LIBS_PRESENT = $(notdir $(foreach dir, $(subst -L,, $(LD_LINK_PATH)), \
$(wildcard $(dir)/lib*-*.a)))
ifneq ($(OPT),)
OPT_LIBS = $(filter %$(OPT).a, $(LIBS_PRESENT))
THIS_OPT_LIBS = $(patsubst %,lib%.a,$(LIB_BASE_NAMES$(OPT)))
else
OPT_LIBS =
THIS_OPT_LIBS =
endif
# Remove any option libraries, and also any libraries replaced
# by option libraries for the present $(OPT) value.
NONOPT_LIBS = $(filter-out $(OPT_LIBS_PRESENT) $(THIS_OPT_LIBS), \
$(LIBS_PRESENT))
LD_LINK_LIBS = $(patsubst lib%.a,-l%, $(OPT_LIBS) $(NONOPT_LIBS))
ifeq ($(CPU_CLASS),)
CPU_CLASS = $(CPU)
endif
#
# VX_OS_LIBS: libraries present in LD_LINK_PATH and
# $(TGT_DIR)/lib/lib$(CPU)$(TOOL)vx.a. Supposedly, only OS libraries
# should be there.
# LIBS: customer's libraries and VX_OS_LIBS
#
VX_OS_LIBS = $(LD_LINK_LIBS) $(TGT_DIR)/lib/lib$(CPU)$(TOOL)vx.a
LIBS = $(LIB_EXTRA) $(VX_OS_LIBS)
# Add component libpaths from the workspace directory WS_ROOT_DIR
ifeq ($(WS_ROOT_DIR),UNKNOWN)
WS_ROOT_DIR_LIBPATH = $$(WS_ROOT_DIR)/obj/$(WIND_PLATFORM)/krnl/lib
COMP_LD_LINK_PATH += -L$(WS_ROOT_DIR_LIBPATH)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL)
COMP_LD_LINK_PATH += -L$(WS_ROOT_DIR_LIBPATH)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL_COMMON_DIR)
else
ifneq ($(WS_ROOT_DIR),)
WS_ROOT_DIR_LIBPATH = $(WS_ROOT_DIR)/obj/$(WIND_PLATFORM)/krnl/lib
COMP_LD_LINK_PATH += -L$(WS_ROOT_DIR_LIBPATH)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL)
COMP_LD_LINK_PATH += -L$(WS_ROOT_DIR_LIBPATH)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL_COMMON_DIR)
COMP_LIBS_PRESENT += $(notdir $(wildcard $(WS_ROOT_DIR_LIBPATH)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL)/lib*.a))
COMP_LIBS_PRESENT += $(notdir $(wildcard $(WS_ROOT_DIR_LIBPATH)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL_COMMON_DIR)/lib*.a))
endif
endif
# Add component libpaths and modules defined in WIND_COMPONENT_LIBPATHS and
# WIND_COMPONENT_MODULES
WIND_COMPONENTS_LIBPATHS := $(subst \,/,$(WIND_COMPONENTS_LIBPATHS))
WIND_COMPONENTS_MODULES := $(subst \,/,$(WIND_COMPONENTS_MODULES))
ifeq ($(WIND_HOST_TYPE),x86-win32)
COMP_LD_LINK_PATH += $(foreach dir,$(subst ;, ,$(WIND_COMPONENTS_LIBPATHS)), \
-L$(dir)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL))
COMP_LD_LINK_PATH += $(foreach dir,$(subst ;, ,$(WIND_COMPONENTS_LIBPATHS)), \
-L$(dir)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL_COMMON_DIR))
COMP_LIBNAMES = $(foreach name,$(subst ;, ,$(WIND_COMPONENTS_LIBNAMES)),lib$(name).a)
COMP_MODULES = $(foreach file,$(subst ;, ,$(WIND_COMPONENTS_MODULES)), $(file))
else
COMP_LD_LINK_PATH += $(foreach dir,$(subst :, ,$(WIND_COMPONENTS_LIBPATHS)), \
-L$(dir)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL))
COMP_LD_LINK_PATH += $(foreach dir,$(subst :, ,$(WIND_COMPONENTS_LIBPATHS)), \
-L$(dir)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL_COMMON_DIR))
COMP_LIBNAMES = $(foreach name,$(subst :, ,$(WIND_COMPONENTS_LIBNAMES)),lib$(name).a)
COMP_MODULES = $(foreach file,$(subst :, ,$(WIND_COMPONENTS_MODULES)), $(file))
endif
COMP_LIBS_PRESENT += $(notdir $(foreach dir,$(WIND_COMPONENTS_LIBPATHS),\
$(wildcard $(dir)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL)/lib*.a)))
COMP_LIBS_PRESENT += $(notdir $(foreach dir,$(WIND_COMPONENTS_LIBPATHS),\
$(wildcard $(dir)/$(VX_CPU_FAMILY)/$(CPU_CLASS)/$(TOOL_COMMON_DIR)/lib*.a)))
COMP_LD_LINK_LIBS = $(patsubst lib%.a,-l%,$(filter $(COMP_LIBNAMES),$(COMP_LIBS_PRESENT)))
COMP_LIBS = $(COMPONENT_MODULES) $(COMP_MODULES) $(COMPONENT_LIBRARIES) \
$(COMP_LD_LINK_LIBS)
LD_LINK_PATH += $(COMP_LD_LINK_PATH)