From 21f4b0f98770ca11c8f434ce8e0c585d37400d45 Mon Sep 17 00:00:00 2001 From: "Janet B. Anderson" Date: Thu, 10 Jul 2008 18:28:19 +0000 Subject: [PATCH] Added RULES_TARGET & made changes to allow removing makeMakefileInclude.pl --- configure/CONFIG_COMMON | 11 ++-- configure/RULES_BUILD | 14 ++--- configure/RULES_TARGET | 111 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 16 deletions(-) create mode 100755 configure/RULES_TARGET diff --git a/configure/CONFIG_COMMON b/configure/CONFIG_COMMON index 1f67a5313..7117ee206 100644 --- a/configure/CONFIG_COMMON +++ b/configure/CONFIG_COMMON @@ -116,7 +116,6 @@ GNU=NO # Prefix and suffix DEP=.depends OBJ = . -RES = . CMPLR_SUFFIX= CMPLR_PREFIX= LIB_PREFIX= @@ -151,7 +150,7 @@ JAR = #-------------------------------------------------- # obj files -TARGET_OBJS = $($*_OBJLIBS) $($*_LDOBJS) $(addsuffix $(OBJ),$(basename $($*_OBJS))) +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) @@ -162,12 +161,12 @@ LIBRARY_LD_OBJS = $(USR_OBJLIBS) $(LIB_OBJLIBS) $(TARGET_OBJS) $(LIBRARY_OBJS) #-------------------------------------------------- # WIN95/NT resource files -TARGET_RESS = $(addsuffix $(RES),$(basename $($*_RCS))) +TARGET_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $($*_RCS))),) -PROD_RESS = $(addsuffix $(RES),$(basename $(RCS) $(PROD_RCS))) +PROD_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $(RCS) $(PROD_RCS))),) PROD_LD_RESS = $(TARGET_RESS) $(PROD_RESS) -LIBRARY_RESS = $(addsuffix $(RES),$(basename $(RCS) $(LIB_RCS) $(LIBRARY_RCS))) +LIBRARY_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $(RCS) $(LIB_RCS) $(LIBRARY_RCS))),) LIBRARY_LD_RESS = $(TARGET_RESS) $(LIBRARY_RESS) #-------------------------------------------------- @@ -247,7 +246,7 @@ STATIC_LDLIBS = $(STATIC_LDLIBS_$(STATIC_BUILD)) #-------------------------------------------------- # cflags for shared library src files (from SHRLIB_CFLAGS) -LIBRARY_SRCS=$(basename $(foreach lib,$(LIBRARY) $(LOADABLE_LIBRARY),$($(lib)_OBJS) $(LIBRARY_OBJS))) +LIBRARY_SRCS=$(basename $(foreach lib,$(LIBRARY) $(LOADABLE_LIBRARY),$($(lib)_OBJSNAME) $(LIBRARY_OBJS))) LIBRARY_SRC_CFLAGS=$($(patsubst $*,SHRLIB,$(findstring $*,$(LIBRARY_SRCS)))_CFLAGS) #-------------------------------------------------- diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD index ffe7b78ad..092142c63 100644 --- a/configure/RULES_BUILD +++ b/configure/RULES_BUILD @@ -74,17 +74,11 @@ ifneq (,$(strip $(HDEPENDS_FILES))) endif #--------------------------------------------------------------- -# Create included Makefile for prod,testprod, and library targets +# Included defines and rules for prod,testprod, and library targets -ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY) $(LOADABLE_LIBRARY))) - -MakefileInclude: ../Makefile $(wildcard $(TOP)/configure/RELEASE*) - @$(RM) $@ - @$(PERL) $(TOOLS)/makeMakefileInclude.pl $(PROD) $(TESTPROD) $(LIBRARY) $(LOADABLE_LIBRARY) $@ - --include MakefileInclude - -endif # PROD, TESTPROD, LIBRARY, or LOADABLE_LIBRARY defined +#ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY) $(LOADABLE_LIBRARY))) +include $(CONFIG)/RULES_TARGET +#endif #--------------------------------------------------------------- # Products and Object libraries diff --git a/configure/RULES_TARGET b/configure/RULES_TARGET new file mode 100755 index 000000000..6f7ad6d96 --- /dev/null +++ b/configure/RULES_TARGET @@ -0,0 +1,111 @@ +#************************************************************************* +# Copyright (c) 2002 The University of Chicago, 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 Versions 3.13.7 +# and higher are distributed subject to a Software License Agreement found +# in file LICENSE that is included with this distribution. +#************************************************************************* +# +# $Id$ +# +# RULES_TARGET +# +# This file is to be maintained by the community. +# +#----------------------------------------------------------------------- + +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 OBJLIBS LDOBJS SYS_LIBS , \ +$(foreach target, $(PROD) $(TESTPROD) $(LIBRARY) $(LOADABLE_LIBRARY) , \ + $(eval $(call TARGET_template,$(strip $(target)),$(type))))) + +#----------------------------------------------------------------------- + +# This define block requires GNU make 3.81 +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))))) + +#----------------------------------------------------------------------- + +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 /$$(LIB_PREFIX)$$(lib).*,\ + $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))\ + $$(addsuffix /$$(LIB_PREFIX)$$(lib)$$(LIB_SUFFIX),\ + $$(firstword $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS))))) + +endef + +$(foreach target, $(PROD) $(TESTPROD) $(LIBRARY) $(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 +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))))) + +$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS) +$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_DEPLIBS) +$$(LIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS) +$$(LIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DEPLIBS) +$$(LIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS) +endef + +$(foreach target, $(LIBRARY), \ + $(eval $(call LIBRARY_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) +endef + +$(foreach target, $(LOADABLE_LIBRARY), \ + $(eval $(call LOADABLE_LIBRARY_template,$(strip $(target))))) +