Added loadable library definitions and rules

This commit is contained in:
Janet B. Anderson
2003-07-03 16:17:38 +00:00
parent 03e7db8ff0
commit c6464b8797
19 changed files with 89 additions and 21 deletions

View File

@@ -57,6 +57,8 @@
# LIBRARY products to build and install
# LIBRARY_HOST products to build and install
# LIBRARY_IOC products to build and install
# LOADABLE_LIBRARY module to build and install
# LOADABLE_LIBRARY_HOST module to build and install
# SCRIPTS scripts and install
# SCRIPTS_HOST host system scripts to install
# SCRIPTS_IOC ioc system scripts to install
@@ -326,6 +328,22 @@ LIBRARY_HOST+=$(LIBRARY_HOST_DEFAULT)
endif
endif
ifneq ($(strip $(LOADABLE_LIBRARY_$(OS_CLASS))),)
LOADABLE_LIBRARY+=$(subst -nil-,,$(LOADABLE_LIBRARY_$(OS_CLASS)))
else
ifneq (,$(strip $(LOADABLE_LIBRARY_DEFAULT)))
LOADABLE_LIBRARY+=$(LOADABLE_LIBRARY_DEFAULT)
endif
endif
ifneq ($(strip $(LOADABLE_LIBRARY_HOST_$(OS_CLASS))),)
LOADABLE_LIBRARY_HOST+=$(subst -nil-,,$(LOADABLE_LIBRARY_HOST_$(OS_CLASS)))
else
ifneq (,$(strip $(LOADABLE_LIBRARY_HOST_DEFAULT)))
LOADABLE_LIBRARY_HOST+=$(LOADABLE_LIBRARY_HOST_DEFAULT)
endif
endif
ifneq ($(strip $(PROD_LIBS_$(OS_CLASS))),)
PROD_LIBS += $(subst -nil-,,$(PROD_LIBS_$(OS_CLASS)))
else

View File

@@ -319,6 +319,7 @@ 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_DLL_LINK_LIBS=$(DLL_LINK_LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%)
INSTALL_TCLINDEX=$(TCLINDEX:%=$(INSTALL_TCLLIB)/%)

View File

@@ -36,6 +36,7 @@ include $(CONFIG)/CONFIG_ADDONS
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
LIBRARY += $(LIBRARY_HOST)
LOADABLE_LIBRARY += $(LOADABLE_LIBRARY_HOST)
OBJS += $(OBJS_HOST)
PROD += $(PROD_HOST)
SCRIPTS += $(SCRIPTS_HOST)
@@ -74,15 +75,15 @@ endif
#---------------------------------------------------------------
# Create included Makefile for prod,testprod, and library targets
ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY)))
ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY) $(LOADABLE_LIBRARY)))
MakefileInclude: ../Makefile
@$(RM) $@
@$(PERL) $(TOOLS)/makeMakefileInclude.pl $(PROD) $(TESTPROD) $(LIBRARY) $@
@$(PERL) $(TOOLS)/makeMakefileInclude.pl $(PROD) $(TESTPROD) $(LIBRARY) $(LOADABLE_LIBRARY) $@
-include MakefileInclude
endif # PROD, TESTPROD, or LIBRARY defined
endif # PROD, TESTPROD, LIBRARY, or LOADABLE_LIBRARY defined
#---------------------------------------------------------------
# Products and Object libraries
@@ -93,10 +94,10 @@ PRODTARGETS += $(PRODNAME) $(MUNCHNAME) $(CTDT_SRCS) $(CTDT_OBJS) $(NMS)
# Libraries
#
LIBTARGETS += $(LIBNAME)
LIBTARGETS += $(INSTALL_LIBS)
LIBTARGETS += $(SHRLIBNAME) $(INSTALL_SHRLIBS) \
$(DLL_LINK_LIBNAME) $(INSTALL_DLL_LINK_LIBS)
LIBTARGETS += $(LIBNAME) $(INSTALL_LIBS) \
$(SHRLIBNAME) $(INSTALL_SHRLIBS) \
$(DLL_LINK_LIBNAME) $(INSTALL_DLL_LINK_LIBS) \
$(LOADABLE_SHRLIBNAME) $(INSTALL_LOADABLE_SHRLIBS)
#---------------------------------------------------------------
ifneq ($(CONFIG),$(TOP)/configure)
@@ -137,7 +138,7 @@ clean::
@echo "Cleaning"
@$(RM) *.i *$(OBJ) *.a $(TESTPRODNAME) $(LIBNAME) $(SHRLIBNAME)\
$(INC) *$(RES) $(TARGETS) $(DLL_LINK_LIBNAME) $(TDS) \
*.out MakefileInclude \
*.out MakefileInclude $(LOADABLE_SHRLIBNAME) \
$(COMMON_INC) $(HDEPENDS_FILES) $(PRODTARGETS)
ifdef BAF
@$(RM) $(PROD_BAF) $(LIB_BAF) *$(BOF)
@@ -268,6 +269,10 @@ $(SHRLIBNAME):$(LIB_PREFIX)%$(SHRLIB_SUFFIX): $(LIBRARY_OBJS) $(LIBRARY_RESS) $(
@$(RM) $@
$(LINK.shrlib)
$(LOADABLE_SHRLIBNAME):$(LOADABLE_SHRLIB_PREFIX)%$(LOADABLE_SHRLIB_SUFFIX): $(LIBRARY_OBJS) $(LIBRARY_RESS) $(SHRLIB_DEPLIBS)
@$(RM) $@
$(LINK.loadable_shrlib)
# C++ munching for VxWorks
%.nm : %$(EXE)
@$(RM) $@
@@ -340,6 +345,10 @@ $(INSTALL_TCLLIB)/%: ../%
@$(INSTALL) -d -m 555 $< $(INSTALL_TCLLIB)
endif
$(INSTALL_LOADABLE_SHRLIBS): $(INSTALL_SHRLIB)/%: %
@echo "Installing loadable shared library $@"
@$(INSTALL) -d -m 555 $< $(INSTALL_SHRLIB)
$(INSTALL_CONFIG)/%: %
@echo "Installing config file $@"
@$(INSTALL) -d -m 644 $< $(@D)

View File

@@ -24,6 +24,8 @@ OBJ = .o
LIB_PREFIX = lib
LIB_SUFFIX = .a
SHRLIB_SUFFIX = .so$(addprefix .,$(SHRLIB_VERSION))
LOADABLE_SHRLIB_SUFFIX = .so$(addprefix .,$(SHRLIB_VERSION))
LOADABLE_SHRLIB_PREFIX =
#-------------------------------------------------------
# names of libraries to build
@@ -31,6 +33,7 @@ SHRLIB_SUFFIX = .so$(addprefix .,$(SHRLIB_VERSION))
LIBNAME = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
# <lib> -> lib<lib>.so.<version>
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(SHRLIB_SUFFIX))
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:$(LOADABLE_SHRLIB_PREFIX)%=%$(LOADABLE_SHRLIB_SUFFIX))
#-------------------------------------------------------
# shrlib: DEPLIBS, LDFLAGS, and LDLIBS definitions
@@ -78,6 +81,8 @@ LINK.cpp = $(CCC) -o $@ $(STATIC_LDFLAGS) $(PRODDIR_LDFLAGS) $(LDFLAGS)
LINK.cpp += $(PROD_LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS)
LINK.shrlib = $(CCC) -o $@ $(SHRLIB_LDFLAGS) $(SHRLIBDIR_LDFLAGS) $(LDFLAGS)
LINK.shrlib += $(LIB_LDFLAGS) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
LINK.loadable_shrlib = $(CCC) -o $@ $(LOADABLE_SHRLIB_LDFLAGS) $(SHRLIBDIR_LDFLAGS) $(LDFLAGS)
LINK.loadable_shrlib += $(LIB_LDFLAGS) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
#--------------------------------------------------
# Operating system definitions

View File

@@ -21,6 +21,8 @@ OP_SYS_CFLAGS = -D_HPUX_SOURCE
OP_SYS_CXXFLAGS =
SHRLIB_SUFFIX = .sl$(addprefix .,$(SHRLIB_VERSION))
LOADABLE_SHRLIB_SUFFIX = .sl$(addprefix .,$(SHRLIB_VERSION))
LOADABLE_SHRLIB_PREFIX =
# Set runtime path for shared libraries
empty:= # trick from the make docs...

View File

@@ -24,6 +24,10 @@ SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
SHRLIB_SUFFIX = .$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION).dylib
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
LOADABLE_SHRLIB_LDFLAGS = -bundle -flat_namespace -undefined suppress
LOADABLE_SHRLIB_SUFFIX = .so
LOADABLE_SHRLIB_PREFIX =
#
# Position-independent code is the default on Darwin.
#

View File

@@ -27,3 +27,4 @@ USR_SYS_LIBS += pthread
# C++ templates need PIC definition also in link phase
SHRLIB_LDFLAGS += -shared -fPIC
LOADABLE_SHRLIB_LDFLAGS += $(SHRLIB_LDFLAGS)

View File

@@ -55,3 +55,4 @@ STATIC_LDLIBS_NO =
TARGET_LDFLAGS += -AA -mt
SHRLIB_LDFLAGS = -b
LOADABLE_SHRLIB_LDFLAGS = $(SHRLIB_LDFLAGS)

View File

@@ -14,6 +14,6 @@ GNU_DIR = /usr
CC = $(GNU_BIN)/gcc
CCC = $(GNU_BIN)/g++
SHRLIB_ALLOW_UNDEFINEDS=NO
SHRLIB_LDFLAGS_NO = -z defs
SHRLIB_LDFLAGS += -shared $(SHRLIB_LDFLAGS_$(SHRLIB_ALLOW_UNDEFINEDS))
SHRLIB_LDFLAGS += -shared -z defs
LOADABLE_SHRLIB_LDFLAGS = -shared

View File

@@ -41,6 +41,7 @@ STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS = -shared
LOADABLE_SHRLIB_LDFLAGS = $(SHRLIB_LDFLAGS)
############# ???????????
#####ACC_SFLAGS_YES= -non_shared

View File

@@ -25,4 +25,5 @@ STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS = -G -h $@ -z ignore -z combreloc -z lazyload
SHRLIB_LDFLAGS += -z defs
LOADABLE_SHRLIB_LDFLAGS = -G -h $@ -z ignore -z combreloc -z lazyload

View File

@@ -52,9 +52,8 @@ STATIC_LDFLAGS_NO=
STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_CFLAGS += -KPIC
SHRLIB_LDFLAGS += -G -h $@
SHRLIB_LDFLAGS += -z defs
SHRLIB_LDFLAGS += -z defs -KPIC -G -h $@
LOADABLE_SHRLIB_LDFLAGS += -KPIC -G -h $@
OP_SYS_LDFLAGS += -z ignore -z combreloc -z lazyload

View File

@@ -18,8 +18,8 @@ AR = ar -rc
RANLIB=
LD = ld -r
SHRLIB_LDFLAGS = -G -h $@
SHRLIB_LDFLAGS += -z defs
SHRLIB_LDFLAGS = -z defs -G -h $@
LOADABLE_SHRLIB_LDFLAGS += -G -h $@
OP_SYS_LDFLAGS = -z ignore -z combreloc -z lazyload

View File

@@ -51,9 +51,8 @@ STATIC_LDFLAGS_NO=
STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_CFLAGS += -KPIC
SHRLIB_LDFLAGS = -G -h $@
SHRLIB_LDFLAGS += -z defs
SHRLIB_LDFLAGS = -z defs -KPIC -G -h $@
LOADABLE_SHRLIB_LDFLAGS = -KPIC -G -h $@
OP_SYS_LDFLAGS = -z ignore -z combreloc -z lazyload
OP_SYS_LDFLAGS = -z ignore -z combreloc -z lazyload

View File

@@ -45,4 +45,5 @@ STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS = -assert pure-text -h $@
LOADABLE_SHRLIB_LDFLAGS = -assert pure-text -h $@

View File

@@ -13,6 +13,8 @@ VALID_BUILDS = Host Ioc
#-------------------------------------------------------
LIBRARY += $(LOADABLE_LIBRARY)
BORLAND_INC = $(BORLAND)\\include
BORLAND_LIB = $(BORLAND)\\lib
BORLAND_BIN = $(BORLAND)\\bin

View File

@@ -16,6 +16,8 @@ PATH_FILTER = $(subst /,\\,$(1))
#-------------------------------------------------------
LIBRARY += $(LOADABLE_LIBRARY)
#
# "\ " forces gnu make to keep this as one token
#

View File

@@ -72,7 +72,7 @@ $outfile = $ARGV[0];
# Read the RELEASE file(s)
$relfile = "$top/configure/RELEASE";
die "Can't find configure/RELEASE file" unless (-r $relfile);
die "Can't find configure/RELEASE file" unless (-f $relfile);
&readRelease($relfile, \%macros, \@apps);
if ($hostarch) {

View File

@@ -107,6 +107,7 @@ foreach $name ( @nameList ) {
print OUT "endif\n";
print OUT "\n";
print OUT "ifeq (\$(filter ${name},\$(LIBRARY)),${name})\n";
print OUT "ifneq (\$(filter ${name},\$(LOADABLE_LIBRARY)),${name})\n";
print OUT "ifneq (,\$(strip \$(${name}_OBJS) \$(LIBRARY_OBJS)))\n";
print OUT "BUILD_LIBRARY += ${name}\n";
print OUT "endif\n";
@@ -128,6 +129,27 @@ foreach $name ( @nameList ) {
print OUT "\$(LIB_PREFIX)${name}\$(SHRLIB_SUFFIX):\$(${name}_DEPLIBS)\n";
print OUT "\$(LIB_PREFIX)${name}\$(SHRLIB_SUFFIX):\$(${name}_DLL_DEPLIBS)\n";
print OUT "endif\n";
print OUT "endif\n";
print OUT "ifeq (\$(filter ${name},\$(LOADABLE_LIBRARY)),${name})\n";
print OUT "ifneq (,\$(strip \$(${name}_OBJS) \$(LIBRARY_OBJS)))\n";
print OUT "LOADABLE_BUILD_LIBRARY += ${name}\n";
print OUT "endif\n";
print OUT "${name}_RESS+=\$(addsuffix \$(RES),\$(basename \$(${name}_RCS)))\n";
print OUT "${name}_OBJSNAME+=\$(addsuffix \$(OBJ),\$(basename \$(${name}_OBJS)))\n";
print OUT "${name}_DEPLIBS=\$(foreach lib, \$(${name}_LDLIBS),\\\n";
print OUT " \$(firstword \$(wildcard \$(addsuffix /\$(LIB_PREFIX)\$(lib)\*,\\\n";
print OUT " \$(\$(lib)_DIR) \$(SHRLIB_SEARCH_DIRS)))\\\n";
print OUT " \$(addsuffix /\$(LIB_PREFIX)\$(lib)\$(LIB_SUFFIX),\\\n";
print OUT " \$(firstword \$(\$(lib)_DIR) \$(SHRLIB_SEARCH_DIRS))\/)))\n";
print OUT "${name}_DLL_DEPLIBS=\$(foreach lib, \$(${name}_DLL_LIBS),\\\n";
print OUT " \$(firstword \$(wildcard \$(addsuffix /\$(LIB_PREFIX)\$(lib)\*,\\\n";
print OUT " \$(\$(lib)_DIR) \$(SHRLIB_SEARCH_DIRS)))\\\n";
print OUT " \$(addsuffix /\$(LIB_PREFIX)\$(lib)\$(LIB_EXT),\\\n";
print OUT " \$(firstword \$(\$(lib)_DIR) \$(SHRLIB_SEARCH_DIRS))\/)))\n";
print OUT "\$(LOADABLE_SHRLIB_PREFIX)${name}\$(LOADABLE_SHRLIB_SUFFIX):\$(${name}_OBJSNAME) \$(${name}_RESS)\n";
print OUT "\$(LOADABLE_SHRLIB_PREFIX)${name}\$(LOADABLE_SHRLIB_SUFFIX):\$(${name}_DEPLIBS)\n";
print OUT "\$(LOADABLE_SHRLIB_PREFIX)${name}\$(LOADABLE_SHRLIB_SUFFIX):\$(${name}_DLL_DEPLIBS)\n";
print OUT "endif\n";
print OUT "\n";
}
close OUT or die "Cannot close $outfile: $!";