From 9e66d439da9e7a7a2c4b9a93e7f4c87a5b229952 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 9 Apr 2021 11:50:40 +0000 Subject: build system: posix make support: refactored shared library versioning schemes. --- Makefile.in | 2 + configure | 13 ++++- sofort/ccenv/ccenv.sh | 11 +++- sofort/config/opt.vars | 1 + .../core/_version/_soname/version_soname_copy.mk | 8 +++ .../_version/_soname/version_soname_symlink.mk | 12 +++++ sofort/core/_version/version_none.mk | 10 ++++ sofort/core/_version/version_used.mk | 26 ++++++++++ sofort/core/version.mk | 58 +--------------------- 9 files changed, 81 insertions(+), 60 deletions(-) create mode 100644 sofort/config/opt.vars create mode 100644 sofort/core/_version/_soname/version_soname_copy.mk create mode 100644 sofort/core/_version/_soname/version_soname_symlink.mk create mode 100644 sofort/core/_version/version_none.mk create mode 100644 sofort/core/_version/version_used.mk diff --git a/Makefile.in b/Makefile.in index 87e92df..ed67e4c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -119,6 +119,8 @@ USE_CUSTOM_USRDEFS = @use_custom_usrdefs@ SHARED_LIB_CMD = @shared_lib_cmd@ SHARED_LIB_LDFLAGS = @shared_lib_ldflags@ +VERSION_OPT = @version_opt@ + .cflags-host: @printf '%s' "$(CFLAGS)" diff --git a/configure b/configure index 2240589..df05578 100755 --- a/configure +++ b/configure @@ -135,6 +135,7 @@ init_vars() sfrt_core_dir=$sfrt_impl_dir/core sfrt_config_vars=$sfrt_config_dir/config.vars sfrt_flag_vars=$sfrt_config_dir/flag.vars + sfrt_opt_vars=$sfrt_config_dir/opt.vars sfrt_cfgdefs_in=$sfrt_config_dir/cfgdefs.in mb_make_vars=$(< "$sfrt_config_vars" \ @@ -649,11 +650,20 @@ config_flags() } +config_opts() +{ + if [ "$mb_avoid_version" = 'yes' ]; then + mb_version_opt='none' + else + mb_version_opt='used' + fi +} + config_copy() { output_step_prolog ${mb_script} 'config_copy' - mb_vars=$(cut -d'=' -f1 $sfrt_config_vars \ + mb_vars=$(cut -d'=' -f1 "$sfrt_config_vars" "$sfrt_opt_vars" \ | grep -v '^#') mb_sed_substs=" \ @@ -1129,6 +1139,7 @@ common_defaults # five: config config_flags +config_opts config_copy config_ccenv config_custom diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh index 0f94ddc..623ac38 100644 --- a/sofort/ccenv/ccenv.sh +++ b/sofort/ccenv/ccenv.sh @@ -1369,7 +1369,10 @@ ccenv_common_init() if [ $ccenv_cfgtype = 'host' ]; then ccenv_tflags= - ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" OS_DSO_EXRULES=default .cflags-host) + ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" \ + OS_DSO_EXRULES=default \ + OS_SONAME=symlink \ + .cflags-host) ccenv_cc="$mb_user_cc" ccenv_cpp="$mb_user_cpp" @@ -1379,7 +1382,11 @@ ccenv_common_init() ccenv_pe_image_base="$mb_pe_image_base" else ccenv_tflags= - ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" OS_DSO_EXRULES=default .cflags-native) + ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" \ + OS_DSO_EXRULES=default \ + OS_SONAME=symlink \ + .cflags-native) + ccenv_cc="$mb_native_cc" ccenv_cpp="$mb_native_cpp" ccenv_cxx="$mb_native_cxx" diff --git a/sofort/config/opt.vars b/sofort/config/opt.vars new file mode 100644 index 0000000..c2ff58d --- /dev/null +++ b/sofort/config/opt.vars @@ -0,0 +1 @@ +version_opt diff --git a/sofort/core/_version/_soname/version_soname_copy.mk b/sofort/core/_version/_soname/version_soname_copy.mk new file mode 100644 index 0000000..c176d5a --- /dev/null +++ b/sofort/core/_version/_soname/version_soname_copy.mk @@ -0,0 +1,8 @@ +# version_soname_copy.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +install-soname: install-lib + cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(DSO_SONAME) + +$(SHARED_SONAME): $(SHARED_LIB) + cp $(SHARED_LIB) $(SHARED_SONAME) diff --git a/sofort/core/_version/_soname/version_soname_symlink.mk b/sofort/core/_version/_soname/version_soname_symlink.mk new file mode 100644 index 0000000..963b891 --- /dev/null +++ b/sofort/core/_version/_soname/version_soname_symlink.mk @@ -0,0 +1,12 @@ +# version_soname_symlink.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +$(SHARED_SONAME): $(SHARED_LIB) + rm -f $@.tmp + ln -s $(DSO_VER) $@.tmp + mv $@.tmp $@ + +install-soname: install-lib + rm -f $(SHARED_SONAME).tmp + ln -s $(DSO_VER) $(SHARED_SONAME).tmp + mv $(SHARED_SONAME).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SONAME) diff --git a/sofort/core/_version/version_none.mk b/sofort/core/_version/version_none.mk new file mode 100644 index 0000000..d8fc570 --- /dev/null +++ b/sofort/core/_version/version_none.mk @@ -0,0 +1,10 @@ +# version_none.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +VER_XYZ = +VER_SONAME = + +package-shared-soname: +package-shared-solink: +package-install-soname: +package-install-solink: diff --git a/sofort/core/_version/version_used.mk b/sofort/core/_version/version_used.mk new file mode 100644 index 0000000..4724cee --- /dev/null +++ b/sofort/core/_version/version_used.mk @@ -0,0 +1,26 @@ +# version_used.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +VER_XYZ = .$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH) +VER_SONAME = .$(VER_MAJOR) + +package-shared-soname: shared-soname +package-shared-solink: shared-solink +package-install-soname: install-soname +package-install-solink: install-solink + + + +# libfoo.so (common) +install-solink: install-lib + rm -f $(SHARED_SOLINK).tmp + ln -s $(DSO_VER) $(SHARED_SOLINK).tmp + mv $(SHARED_SOLINK).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SOLINK) + +$(SHARED_SOLINK): $(SHARED_LIB) + rm -f $@.tmp + ln -s $(DSO_VER) $@.tmp + mv $@.tmp $@ + +# libfoo.so.x (symlink or copy) +include $(PROJECT_DIR)/sofort/core/_version/_soname/version_soname_$(OS_SONAME).mk diff --git a/sofort/core/version.mk b/sofort/core/version.mk index eb6c2f2..ad693ab 100644 --- a/sofort/core/version.mk +++ b/sofort/core/version.mk @@ -7,60 +7,4 @@ CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_MAJOR=$(VER_MAJOR) CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_MINOR=$(VER_MINOR) CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_PATCH=$(VER_PATCH) -ifeq ($(AVOID_VERSION),yes) - -VER_XYZ = -VER_SONAME = - -package-shared-soname: -package-shared-solink: -package-install-soname: -package-install-solink: - -else - -VER_XYZ = .$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH) -VER_SONAME = .$(VER_MAJOR) - -package-shared-soname: shared-soname -package-shared-solink: shared-solink -package-install-soname: install-soname -package-install-solink: install-solink - - - -# libfoo.so (common) -install-solink: install-lib - rm -f $(SHARED_SOLINK).tmp - ln -s $(DSO_VER) $(SHARED_SOLINK).tmp - mv $(SHARED_SOLINK).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SOLINK) - -$(SHARED_SOLINK): $(SHARED_LIB) - rm -f $@.tmp - ln -s $(DSO_VER) $@.tmp - mv $@.tmp $@ - -# libfoo.so.x (symlink) -ifeq ($(OS_SONAME),symlink) -$(SHARED_SONAME): $(SHARED_LIB) - rm -f $@.tmp - ln -s $(DSO_VER) $@.tmp - mv $@.tmp $@ - -install-soname: install-lib - rm -f $(SHARED_SONAME).tmp - ln -s $(DSO_VER) $(SHARED_SONAME).tmp - mv $(SHARED_SONAME).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SONAME) -endif - - -# libfoo.so.x (copy) -ifeq ($(OS_SONAME),copy) -install-soname: install-lib - cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(DSO_SONAME) - -$(SHARED_SONAME): $(SHARED_LIB) - cp $(SHARED_LIB) $(SHARED_SONAME) -endif - -endif +include $(PROJECT_DIR)/sofort/core/_version/version_$(VERSION_OPT).mk -- cgit v1.2.3