Produce libraries with conventional names

This commit is contained in:
Ehmry - 2020-05-05 21:39:21 +05:30
parent 6006051fb9
commit 3ef6db31ee
6 changed files with 24 additions and 13 deletions

View File

@ -142,8 +142,8 @@ endif
echo " DEBUG_DIR=\$$(DEBUG_DIR)"; \
echo "") >> $(LIB_DEP_FILE)
ifdef SHARED_LIB
@(echo "SO_NAME($(LIB)) := $(LIB).lib.so"; \
echo "") >> $(LIB_DEP_FILE)
@(echo "SO_NAME($(LIB)) := lib$(LIB).so"; \
echo "") | sed -e 's/libld.so/ld.lib.so/' -e 's/liblib/lib/' >> $(LIB_DEP_FILE)
else
@(echo "ARCHIVE_NAME($(LIB)) := $(LIB).lib.a"; \
echo "") >> $(LIB_DEP_FILE)

View File

@ -93,7 +93,7 @@ endif
# if the target does not depend on any library with unsatisfied build
# requirements. In such a case, the target cannot be linked anyway.
#
@(echo "ifeq (\$$(filter \$$(DEP_A_$(TARGET).prg:.lib.a=) \$$(DEP_SO_$(TARGET).prg:.lib.so=) $(LIBS),\$$(INVALID_DEPS)),)"; \
@(echo "ifeq (\$$(filter \$$(DEP_A_$(TARGET).prg:.lib.a=) \$$(patsubst lib%.lib.so,%,$(DEP_SO_$(TARGET).prg)) $(LIBS),\$$(INVALID_DEPS)),)"; \
echo "all: $(TARGET).prg"; \
echo "endif") >> $(LIB_DEP_FILE)
#

View File

@ -129,7 +129,7 @@ binary_%.o: %
# This is a problem in situations where the undefined symbol is resolved by an
# archive rather than the target. I.e., when linking posix.lib.a (which
# provides 'Libc::Component::construct'), the 'construct' function is merely
# referenced by the libc.lib.so's 'Component::construct' function. But this
# referenced by the libc.so's 'Component::construct' function. But this
# reference apparently does not suffice to keep the posix.lib.a's symbol. By
# adding a hard dependency, we force the linker to resolve the symbol and don't
# drop posix.lib.a.
@ -164,12 +164,17 @@ endif
# time a user of the library is linked, the ABI stub should be used instead of
# the library.
#
select_so = $(firstword $(wildcard $(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).abi.so \
$(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).lib.so))
select_so = $(firstword $(wildcard \
$(LIB_CACHE_DIR)/$(patsubst lib%.so,%,$1)/$(patsubst lib%.so,%,$1).abi.so \
$(LIB_CACHE_DIR)/$(patsubst lib%.so,%,$1)/$(1) \
$(LIB_CACHE_DIR)/$(patsubst %.so,%,$1)/$(1) \
$(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).abi.so \
$(LIB_CACHE_DIR)/$(1:.lib.so=)/$(1:.lib.so=).lib.so \
$(LIB_CACHE_DIR)/$(1:.so=)/$(1:.so=).abi.so ))
ifneq ($(filter-out $(foreach s,$(SHARED_LIBS),$(realpath $s)), \
$(foreach s,$(SHARED_LIBS),$(call select_so,$s))),)
.PHONY: $(SHARED_LIBS)
endif
$(SHARED_LIBS):
$(VERBOSE)ln -sf $(call select_so,$@) $@
$(VERBOSE)ln -sf $(call select_so,$@) $(patsubst liblib%,lib%,$@)

View File

@ -123,14 +123,20 @@ message:
include $(BASE_DIR)/mk/generic.mk
#
# Name of <libname>.lib.a or <libname>.lib.so file to create
# Name of <libname>.lib.a or lib<libname>.so file to create
#
# Skip the creation and installation of an .so file if there are no
# ingredients. This is the case if the library is present as ABI only.
#
ifdef SHARED_LIB
ifneq ($(sort $(OBJECTS) $(LIBS)),)
LIB_SO := $(addsuffix .lib.so,$(LIB))
ifeq ($(LIB),ld)
LIB_SO := ld.lib.so
else ifeq ($(patsubst ld-%,ld-,$(LIB)),ld-)
LIB_SO := $(LIB).lib.so
else
LIB_SO := $(patsubst liblib%,lib%,$(patsubst %,lib%.so,$(LIB)))
endif
INSTALL_SO := $(INSTALL_DIR)/$(LIB_SO)
DEBUG_SO := $(DEBUG_DIR)/$(LIB_SO)
endif
@ -150,7 +156,7 @@ ifneq ($(LIB_SO),)
endif
#
# Trigger the creation of the <libname>.lib.a or <libname>.lib.so file
# Trigger the creation of the <libname>.lib.a or lib<libname>.so file
#
LIB_TAG := $(addsuffix .lib.tag,$(LIB))
all: $(LIB_TAG)
@ -203,7 +209,7 @@ STATIC_LIBS := $(sort $(foreach l,$(ARCHIVES:.lib.a=),$(LIB_CACHE_DIR)/$l/
STATIC_LIBS_BRIEF := $(subst $(LIB_CACHE_DIR),$$libs,$(STATIC_LIBS))
#
# Rule to build the <libname>.lib.so file
# Rule to build the lib<libname>.so file
#
# When linking the shared library, we have to link all shared sub libraries
# (LIB_SO_DEPS) to the library to store the library-dependency information in

View File

@ -235,6 +235,6 @@ endif
clean_prg_objects:
$(MSG_CLEAN)$(PRG_REL_DIR)
$(VERBOSE)$(RM) -f $(OBJECTS) $(OBJECTS:.o=.d) $(TARGET) $(TARGET).stripped $(BINDER_SRC)
$(VERBOSE)$(RM) -f *.d *.i *.ii *.s *.ali *.lib.so
$(VERBOSE)$(RM) -f *.d *.i *.ii *.s *.ali *.lib.so lib*.so
clean: clean_prg_objects

View File

@ -117,7 +117,7 @@ Vfs::Global_file_system_factory::_try_create(Vfs::Env &env,
Library_name Vfs::Global_file_system_factory::_library_name(Node_name const &node_name)
{
char lib_name [Library_name::capacity()];
Genode::snprintf(lib_name, sizeof(lib_name), "vfs_%s.lib.so",
Genode::snprintf(lib_name, sizeof(lib_name), "libvfs_%s.so",
node_name.string());
return Library_name(lib_name);