aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2017-01-04 12:47:30 -0500
committerJack Lloyd <[email protected]>2017-01-06 09:36:53 -0500
commit309f9153831e07d726ceecf08c2d6cd3de372c11 (patch)
tree9c9447432c4f61f05833eb3b10da314a8dac158a
parenta1d25be46c86f37ad1b6b6cf00ee18b2f7dd5456 (diff)
Update shared object naming for new versioning scheme.
Cleans up so object naming since most of the time (across Unix) we follow the exact same naming scheme; just make it the default if only the so suffix is specified in the file. Also updates include header dir to be botan-${major} Changes behavior when shared lib not supported; instead of making the user explicitly try again with --disable-shared, just assume it and continue running.
-rw-r--r--botan_version.py8
-rwxr-xr-xconfigure.py29
-rw-r--r--doc/manual/building.rst12
-rw-r--r--src/build-data/botan.pc.in4
-rw-r--r--src/build-data/os/aix.txt2
-rw-r--r--src/build-data/os/android.txt4
-rw-r--r--src/build-data/os/darwin.txt6
-rw-r--r--src/build-data/os/dragonfly.txt2
-rw-r--r--src/build-data/os/freebsd.txt4
-rw-r--r--src/build-data/os/haiku.txt1
-rw-r--r--src/build-data/os/hpux.txt3
-rw-r--r--src/build-data/os/hurd.txt2
-rw-r--r--src/build-data/os/irix.txt2
-rw-r--r--src/build-data/os/linux.txt4
-rw-r--r--src/build-data/os/nacl.txt2
-rw-r--r--src/build-data/os/netbsd.txt2
-rw-r--r--src/build-data/os/openbsd.txt2
-rw-r--r--src/build-data/os/qnx.txt3
-rw-r--r--src/build-data/os/solaris.txt2
-rwxr-xr-xsrc/python/botan.py4
20 files changed, 66 insertions, 32 deletions
diff --git a/botan_version.py b/botan_version.py
index 74ba8b3d5..0188a470b 100644
--- a/botan_version.py
+++ b/botan_version.py
@@ -1,8 +1,8 @@
-release_major = 1
-release_minor = 11
-release_patch = 35
-release_so_abi_rev = release_patch
+release_major = 2
+release_minor = 0
+release_patch = 0
+release_so_abi_rev = 0
# These are set by the distribution script
release_vc_rev = None
diff --git a/configure.py b/configure.py
index 8690957aa..e583ac683 100755
--- a/configure.py
+++ b/configure.py
@@ -205,7 +205,7 @@ class BuildConfigurationInformation(object):
return (self.test_sources, self.testobj_dir)
def pkg_config_file(self):
- return 'botan-%d.%d.pc' % (self.version_major, self.version_minor)
+ return 'botan-%d.pc' % (self.version_major)
"""
@@ -1078,6 +1078,7 @@ class OsInfo(object):
{ 'os_type': None,
'program_suffix': '',
'obj_suffix': 'o',
+ 'soname_suffix': '',
'soname_pattern_patch': '',
'soname_pattern_abi': '',
'soname_pattern_base': '',
@@ -1094,6 +1095,22 @@ class OsInfo(object):
'install_cmd_exec': 'install -m 755'
})
+ if self.soname_pattern_base != '':
+ if self.soname_pattern_patch == '' and self.soname_pattern_abi == '':
+ self.soname_pattern_patch = self.soname_pattern_base
+ self.soname_pattern_patch_abi = self.soname_pattern_base
+
+ elif self.soname_pattern_abi != '' and self.soname_pattern_abi != '':
+ pass # all 3 values set, nothing needs to happen here
+ else:
+ # base set, only one of patch/abi set
+ raise Exception("Invalid soname_patterns in %s" % (self.infofile))
+
+ if self.soname_pattern_base == '' and self.soname_suffix != '':
+ self.soname_pattern_base = "libbotan-{version_major}.%s" % (self.soname_suffix)
+ self.soname_pattern_abi = self.soname_pattern_base + ".{abi_rev}"
+ self.soname_pattern_patch = self.soname_pattern_abi + ".{version_minor}.{version_patch}"
+
self.ar_needs_ranlib = bool(self.ar_needs_ranlib)
self.building_shared_supported = (True if self.building_shared_supported == 'yes' else False)
@@ -1612,9 +1629,9 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo):
vars['botan_pkgconfig'] = prefix_with_build_dir(os.path.join(build_config.build_dir,
build_config.pkg_config_file()))
- # 'botan' or 'botan-1.11'. Used in Makefile and install script
+ # 'botan' or 'botan-2'. Used in Makefile and install script
# This can be made consistent over all platforms in the future
- vars['libname'] = 'botan-%d.%d' % (build_config.version_major, build_config.version_minor)
+ vars['libname'] = 'botan-%d' % (build_config.version_major)
else:
if options.with_debug_info:
vars['libname'] = 'botand'
@@ -2109,7 +2126,7 @@ def main(argv = None):
if len(info) == 0:
logging.warning('Failed to load any %s files' % (descr))
else:
- logging.debug('Loaded %d %s files' % (len(info), descr))
+ logging.debug('Loaded %d %s files (%s)' % (len(info), descr, ' '.join(sorted(map(str, info)))))
return info
@@ -2241,8 +2258,8 @@ def main(argv = None):
raise Exception("--via-amalgamation was removed. Use --amalgamation instead.")
if options.build_shared_lib and not osinfo.building_shared_supported:
- raise Exception('Botan does not support building as shared library on the target os. '
- 'Build static using --disable-shared.')
+ logging.warning('Shared libs not supported on %s, disabling shared lib support' % (self.infofile))
+ options.build_shared_lib = False
loaded_mods = choose_modules_to_use(modules, module_policy, arch, cc, options)
diff --git a/doc/manual/building.rst b/doc/manual/building.rst
index c9e8a0bbd..5e09d1569 100644
--- a/doc/manual/building.rst
+++ b/doc/manual/building.rst
@@ -214,12 +214,12 @@ To compile for the iPhone Simulator, configure and make with::
Now create the universal binary and confirm the library is compiled
for all three architectures::
- $ xcrun --sdk iphoneos lipo -create -output libbotan-1.11.a \
- iphone-32/lib/libbotan-1.11.a \
- iphone-64/lib/libbotan-1.11.a \
- iphone-simulator/lib/libbotan-1.11.a
- $ xcrun --sdk iphoneos lipo -info libbotan-1.11.a
- Architectures in the fat file: libbotan-1.11.a are: armv7 x86_64 armv64
+ $ xcrun --sdk iphoneos lipo -create -output libbotan-2.a \
+ iphone-32/lib/libbotan-2.a \
+ iphone-64/lib/libbotan-2.a \
+ iphone-simulator/lib/libbotan-2.a
+ $ xcrun --sdk iphoneos lipo -info libbotan-2.a
+ Architectures in the fat file: libbotan-2.a are: armv7 x86_64 armv64
The resulting static library can be linked to your app in Xcode.
diff --git a/src/build-data/botan.pc.in b/src/build-data/botan.pc.in
index 49d7cfb59..85943ab3f 100644
--- a/src/build-data/botan.pc.in
+++ b/src/build-data/botan.pc.in
@@ -1,12 +1,12 @@
prefix=%{prefix}
exec_prefix=${prefix}
libdir=${prefix}/%{libdir}
-includedir=${prefix}/include/botan-%{version_major}.%{version_minor}
+includedir=${prefix}/include/botan-%{version_major}
Name: Botan
Description: Crypto and TLS for C++11
Version: %{version}
-Libs: -L${libdir} -lbotan-%{version_major}.%{version_minor}
+Libs: -L${libdir} -lbotan-%{version_major}
Libs.private: %{link_to}
Cflags: -I${includedir}
diff --git a/src/build-data/os/aix.txt b/src/build-data/os/aix.txt
index de417ce90..70c37d39a 100644
--- a/src/build-data/os/aix.txt
+++ b/src/build-data/os/aix.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
<target_features>
gettimeofday
threads
diff --git a/src/build-data/os/android.txt b/src/build-data/os/android.txt
index 64a639909..50d97fd8f 100644
--- a/src/build-data/os/android.txt
+++ b/src/build-data/os/android.txt
@@ -1,8 +1,6 @@
os_type unix
-soname_pattern_base "libbotan-{version_major}.{version_minor}.so"
-soname_pattern_abi "libbotan-{version_major}.{version_minor}.so.{abi_rev}"
-soname_pattern_patch "libbotan-{version_major}.{version_minor}.so.{abi_rev}.{version_patch}"
+soname_suffix "so"
<target_features>
clock_gettime
diff --git a/src/build-data/os/darwin.txt b/src/build-data/os/darwin.txt
index 662101b1c..a27259876 100644
--- a/src/build-data/os/darwin.txt
+++ b/src/build-data/os/darwin.txt
@@ -1,8 +1,8 @@
os_type unix
-soname_pattern_base "libbotan-{version_major}.{version_minor}.dylib"
-soname_pattern_abi "libbotan-{version_major}.{version_minor}.{abi_rev}.dylib"
-soname_pattern_patch "libbotan-{version_major}.{version_minor}.{abi_rev}.{version_patch}.dylib"
+soname_pattern_base "libbotan-{version_major}.dylib"
+soname_pattern_abi "libbotan-{version_major}.{abi_rev}.dylib"
+soname_pattern_patch "libbotan-{version_major}.{abi_rev}.{version_minor}.{version_patch}.dylib"
# It doesn't have the 's' option; you need to use needs ranlib
ar_command "ar cr"
diff --git a/src/build-data/os/dragonfly.txt b/src/build-data/os/dragonfly.txt
index 1ff2804b0..628ac7c98 100644
--- a/src/build-data/os/dragonfly.txt
+++ b/src/build-data/os/dragonfly.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
<target_features>
clock_gettime
gettimeofday
diff --git a/src/build-data/os/freebsd.txt b/src/build-data/os/freebsd.txt
index 326e6661a..0e60abd2e 100644
--- a/src/build-data/os/freebsd.txt
+++ b/src/build-data/os/freebsd.txt
@@ -1,8 +1,6 @@
os_type unix
-soname_pattern_base "libbotan-{version_major}.{version_minor}.so"
-soname_pattern_abi "libbotan-{version_major}.{version_minor}.so.{abi_rev}"
-soname_pattern_patch "libbotan-{version_major}.{version_minor}.so.{abi_rev}.{version_patch}"
+soname_suffix "so"
<target_features>
clock_gettime
diff --git a/src/build-data/os/haiku.txt b/src/build-data/os/haiku.txt
index 9ad3f29f7..8b6f0641d 100644
--- a/src/build-data/os/haiku.txt
+++ b/src/build-data/os/haiku.txt
@@ -1,5 +1,6 @@
os_type unix
+building_shared_supported no
install_root /boot
header_dir develop/headers
lib_dir system/lib
diff --git a/src/build-data/os/hpux.txt b/src/build-data/os/hpux.txt
index 3f6f0d940..f8c2d0d2a 100644
--- a/src/build-data/os/hpux.txt
+++ b/src/build-data/os/hpux.txt
@@ -1,5 +1,8 @@
os_type unix
+# It is "sl" on HP-PA, but HP-UX on PA is EOL
+soname_suffix "so"
+
<target_features>
gettimeofday
threads
diff --git a/src/build-data/os/hurd.txt b/src/build-data/os/hurd.txt
index 35a65315d..846117805 100644
--- a/src/build-data/os/hurd.txt
+++ b/src/build-data/os/hurd.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
<target_features>
posix_mlock
threads
diff --git a/src/build-data/os/irix.txt b/src/build-data/os/irix.txt
index de417ce90..70c37d39a 100644
--- a/src/build-data/os/irix.txt
+++ b/src/build-data/os/irix.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
<target_features>
gettimeofday
threads
diff --git a/src/build-data/os/linux.txt b/src/build-data/os/linux.txt
index cb6c75df9..6bd81f7f2 100644
--- a/src/build-data/os/linux.txt
+++ b/src/build-data/os/linux.txt
@@ -1,8 +1,6 @@
os_type unix
-soname_pattern_base "libbotan-{version_major}.{version_minor}.so"
-soname_pattern_abi "libbotan-{version_major}.{version_minor}.so.{abi_rev}"
-soname_pattern_patch "libbotan-{version_major}.{version_minor}.so.{abi_rev}.{version_patch}"
+soname_suffix "so"
<target_features>
clock_gettime
diff --git a/src/build-data/os/nacl.txt b/src/build-data/os/nacl.txt
index e2e2f34be..c24413618 100644
--- a/src/build-data/os/nacl.txt
+++ b/src/build-data/os/nacl.txt
@@ -1,4 +1,6 @@
+building_shared_supported no
+
<target_features>
gettimeofday
threads
diff --git a/src/build-data/os/netbsd.txt b/src/build-data/os/netbsd.txt
index baf4b1a9c..4c82e6239 100644
--- a/src/build-data/os/netbsd.txt
+++ b/src/build-data/os/netbsd.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
<target_features>
clock_gettime
gettimeofday
diff --git a/src/build-data/os/openbsd.txt b/src/build-data/os/openbsd.txt
index 0e18eb8e1..0e60abd2e 100644
--- a/src/build-data/os/openbsd.txt
+++ b/src/build-data/os/openbsd.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
<target_features>
clock_gettime
gettimeofday
diff --git a/src/build-data/os/qnx.txt b/src/build-data/os/qnx.txt
index a2061594f..76a10f951 100644
--- a/src/build-data/os/qnx.txt
+++ b/src/build-data/os/qnx.txt
@@ -1,5 +1,8 @@
+# not really, but for our purposes
os_type unix
+soname_suffix "so"
+
<target_features>
clock_gettime
gettimeofday
diff --git a/src/build-data/os/solaris.txt b/src/build-data/os/solaris.txt
index 1e740aea7..49962e82c 100644
--- a/src/build-data/os/solaris.txt
+++ b/src/build-data/os/solaris.txt
@@ -1,5 +1,7 @@
os_type unix
+soname_suffix "so"
+
install_cmd_data '/usr/ucb/install -m 644'
install_cmd_exec '/usr/ucb/install -m 755'
diff --git a/src/python/botan.py b/src/python/botan.py
index 093359970..4da158285 100755
--- a/src/python/botan.py
+++ b/src/python/botan.py
@@ -27,9 +27,9 @@ import time
Module initialization
"""
if sys.platform == 'darwin':
- botan = CDLL('libbotan-1.11.dylib')
+ botan = CDLL('libbotan-2.dylib')
else:
- botan = CDLL('libbotan-1.11.so')
+ botan = CDLL('libbotan-2.so')
expected_api_rev = 20151015
botan_api_rev = botan.botan_ffi_api_version()