Added loadable library definitions and rules
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)/%)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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...
|
||||
|
||||
@@ -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.
|
||||
#
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -55,3 +55,4 @@ STATIC_LDLIBS_NO =
|
||||
TARGET_LDFLAGS += -AA -mt
|
||||
|
||||
SHRLIB_LDFLAGS = -b
|
||||
LOADABLE_SHRLIB_LDFLAGS = $(SHRLIB_LDFLAGS)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ STATIC_LDLIBS_YES= -Bdynamic
|
||||
STATIC_LDLIBS_NO=
|
||||
|
||||
SHRLIB_LDFLAGS = -shared
|
||||
LOADABLE_SHRLIB_LDFLAGS = $(SHRLIB_LDFLAGS)
|
||||
|
||||
############# ???????????
|
||||
#####ACC_SFLAGS_YES= -non_shared
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -45,4 +45,5 @@ STATIC_LDLIBS_YES= -Bdynamic
|
||||
STATIC_LDLIBS_NO=
|
||||
|
||||
SHRLIB_LDFLAGS = -assert pure-text -h $@
|
||||
LOADABLE_SHRLIB_LDFLAGS = -assert pure-text -h $@
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ VALID_BUILDS = Host Ioc
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
LIBRARY += $(LOADABLE_LIBRARY)
|
||||
|
||||
BORLAND_INC = $(BORLAND)\\include
|
||||
BORLAND_LIB = $(BORLAND)\\lib
|
||||
BORLAND_BIN = $(BORLAND)\\bin
|
||||
|
||||
@@ -16,6 +16,8 @@ PATH_FILTER = $(subst /,\\,$(1))
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
LIBRARY += $(LOADABLE_LIBRARY)
|
||||
|
||||
#
|
||||
# "\ " forces gnu make to keep this as one token
|
||||
#
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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: $!";
|
||||
|
||||
Reference in New Issue
Block a user