162 lines
5.7 KiB
Plaintext
162 lines
5.7 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 the file LICENSE that is included with this distribution.
|
|
#*************************************************************************
|
|
|
|
# RULES_TARGET
|
|
|
|
define TARGET_template
|
|
$(1)_$(2) += $$(if $$(strip $$($(1)_$(2)_$$(OS_CLASS))), \
|
|
$$(subst -nil-,,$$($(1)_$(2)_$$(OS_CLASS))), \
|
|
$$($(1)_$(2)_DEFAULT))
|
|
endef
|
|
|
|
$(foreach type, SRCS RCS OBJS LDFLAGS LDOBJS SYS_LIBS , \
|
|
$(foreach target, $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY) , \
|
|
$(eval $(call TARGET_template,$(strip $(target)),$(type)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
define PROD_template
|
|
ifeq ($$(strip $$($(1)_OBJS) $$($(1)_SRCS) $$(PRODUCT_OBJS)),)
|
|
$(1)_OBJS = $(1)$$(OBJ)
|
|
endif
|
|
endef
|
|
|
|
$(foreach target, $(PROD) $(TESTPROD), \
|
|
$(eval $(call PROD_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
# These must be done before PROD2_template
|
|
define TESTLIBRARY_template
|
|
$(1)_DIR = .
|
|
TESTBUILD_LIBRARY += $$(if $$(strip $$($(1)_OBJSNAME) $$(LIBRARY_OBJS)),$(1),)
|
|
endef
|
|
|
|
$(foreach target, $(TESTLIBRARY), \
|
|
$(eval $(call TESTLIBRARY_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
define TARGET2_template
|
|
$(1)_LDLIBS += $$($(1)_LIBS)
|
|
$(1)_LDLIBS += $$(if $$(strip $$($(1)_LIBS_$(OS_CLASS))), \
|
|
$$(subst -nil-,,$$($(1)_LIBS_$(OS_CLASS))), \
|
|
$$($(1)_LIBS_DEFAULT))
|
|
|
|
$(1)_RESS = $$(if $(RES),$$(addsuffix $(RES),$$(basename $$($(1)_RCS))),)
|
|
$(1)_OBJSNAME = $$(addsuffix $(OBJ),$$(basename $$($(1)_OBJS) $$($(1)_SRCS) ))
|
|
$(1)_DEPLIBS = $$(foreach lib, $$($(1)_LDLIBS), \
|
|
$$(firstword $$(wildcard \
|
|
$$(addsuffix /$(DLLSTUB_PREFIX)$$(lib)$(DLLSTUB_SUFFIX), \
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
|
|
$$(addsuffix /$(SHRLIB_PREFIX)$$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
|
|
$$(addsuffix /$(LIB_PREFIX)$$(lib)$(LIB_SUFFIX), \
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
|
|
) $$(addsuffix /$(BUILDLIB_PREFIX)$$(lib)$(BUILDLIB_SUFFIX), \
|
|
$$(firstword $$($$(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))))
|
|
endef
|
|
|
|
$(foreach target, $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY) , \
|
|
$(eval $(call TARGET2_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
define PROD2_template
|
|
|
|
$(1)$$(EXE): $$($(1)_OBJSNAME) $$($(1)_RESS) $$($(1)_DEPLIBS)
|
|
endef
|
|
|
|
$(foreach target, $(PROD) $(TESTPROD), \
|
|
$(eval $(call PROD2_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
define LIBRARY_template
|
|
|
|
$(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS), \
|
|
$$(firstword $$(wildcard \
|
|
$$(addsuffix /$(DLLSTUB_PREFIX)$$(lib)$(DLLSTUB_SUFFIX), \
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
|
|
$$(addsuffix /$(SHRLIB_PREFIX)$$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
|
|
$$(addsuffix /$(LIB_PREFIX)$$(lib)$(LIB_SUFFIX), \
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
|
|
) $$(addsuffix /$(BUILDLIB_PREFIX)$$(lib)$(BUILDLIB_SUFFIX), \
|
|
$$(firstword $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))))
|
|
|
|
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
|
|
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_DEPLIBS)
|
|
|
|
ifneq ($$($(1)_API),)
|
|
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX): API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
|
|
endif
|
|
|
|
ifeq ($$(SHARED_LIBRARIES),YES)
|
|
|
|
ifdef SHRLIB_SUFFIX
|
|
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
|
|
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DEPLIBS)
|
|
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS)
|
|
|
|
ifneq ($$($(1)_API),)
|
|
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX): API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
endef
|
|
|
|
$(foreach target, $(LIBRARY) $(TESTLIBRARY), \
|
|
$(eval $(call LIBRARY_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
define LIBRARY2_template
|
|
BUILD_LIBRARY += $$(if $$(strip $$($(1)_OBJSNAME) $$(LIBRARY_OBJS)),$(1),)
|
|
|
|
# Needed for -j parallel builds option
|
|
ifeq ($$(SHARED_LIBRARIES),YES)
|
|
ifdef SHRLIB_SUFFIX
|
|
$$(INSTALL_LIB)/$$(DLLSTUB_PREFIX)$(1)$$(DLLSTUB_SUFFIX): \
|
|
$$(INSTALL_SHRLIB)/$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX)
|
|
endif
|
|
endif
|
|
endef
|
|
|
|
$(foreach target, $(LIBRARY), \
|
|
$(eval $(call LIBRARY2_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|
|
|
|
define LOADABLE_LIBRARY_template
|
|
LOADABLE_BUILD_LIBRARY += $$(if $$(strip $$($(1)_OBJSNAME) $$(LIBRARY_OBJS)),$(1),)
|
|
|
|
$(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS),\
|
|
$$(firstword $$(wildcard $$(addsuffix /$$(LIB_PREFIX)$$(lib).\*,\
|
|
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))\
|
|
$$(addsuffix /$$(LIB_PREFIX)$$(lib)$$(LIB_SUFFIX),\
|
|
$$(firstword $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))))
|
|
|
|
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
|
|
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_DEPLIBS)
|
|
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS)
|
|
|
|
ifneq ($$($(1)_API),)
|
|
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX): \
|
|
API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
|
|
endif
|
|
endef
|
|
|
|
$(foreach target, $(LOADABLE_LIBRARY), \
|
|
$(eval $(call LOADABLE_LIBRARY_template,$(strip $(target)))))
|
|
|
|
#-----------------------------------------------------------------------
|