summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2021-04-09 11:50:40 +0000
committermidipix <writeonce@midipix.org>2021-04-10 20:54:48 +0000
commit2e3df6a3070ae5e2871a5ea024c09e6461cedfa6 (patch)
treeaa96feccba33d926d40a44deb4b1bb398c09f388
parent840f5a80e569a012e79ebb3d8a4e80ab5979c6e3 (diff)
downloadperk-2e3df6a3070ae5e2871a5ea024c09e6461cedfa6.tar.bz2
perk-2e3df6a3070ae5e2871a5ea024c09e6461cedfa6.tar.xz
build system: posix make support: refactored shared library versioning schemes.
-rw-r--r--Makefile.in2
-rwxr-xr-xconfigure13
-rw-r--r--sofort/ccenv/ccenv.sh11
-rw-r--r--sofort/config/opt.vars1
-rw-r--r--sofort/core/_version/_soname/version_soname_copy.mk8
-rw-r--r--sofort/core/_version/_soname/version_soname_symlink.mk12
-rw-r--r--sofort/core/_version/version_none.mk10
-rw-r--r--sofort/core/_version/version_used.mk26
-rw-r--r--sofort/core/version.mk58
9 files changed, 81 insertions, 60 deletions
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