From: Benjamin Kaduk Date: Fri, 19 Sep 2014 18:39:04 +0000 (-0400) Subject: Build hcrypto with libtool X-Git-Tag: openafs-stable-1_8_0pre1~544 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=f2d4ba8b61bfe51d2c2167190f0049c4ec94f220;hp=a6d7014187e238c9659141919d3c0934aac61f3b Build hcrypto with libtool Or rather, with lwptool, since we need a LWP version as well as the various pthreaded versions. The previous version was the initial version, 1.1, but since we're switching to libtool, bump the version to 2.0 just to be safe. Libtool abstracts away the extra logic that had previously been needed to build different copies of rand-fortuna for the pthreaded and LWP libraries. As for roken, we must install both shared and static libraries to $(TOP_LIBDIR) for unity of consumption, but remove the libtool archive after instllation. Change-Id: Ibc530a1fa4baa7a38b44eb3e0719e1905a6fe269 Reviewed-on: http://gerrit.openafs.org/11482 Reviewed-by: Benjamin Kaduk Reviewed-by: D Brashear Tested-by: D Brashear --- diff --git a/src/crypto/hcrypto/Makefile.in b/src/crypto/hcrypto/Makefile.in index 77e8fdb..e076b89 100644 --- a/src/crypto/hcrypto/Makefile.in +++ b/src/crypto/hcrypto/Makefile.in @@ -4,14 +4,23 @@ # This software has been released under the terms of the BSD License # For details, see the LICENSE file in the top level source directory -# API version. Must be incremented whenever something changes. -LIBMAJOR=1 -LIBMINOR=1 - srcdir=@srcdir@ include @TOP_OBJDIR@/src/config/Makefile.config -include @TOP_OBJDIR@/src/config/Makefile.shared +include @TOP_OBJDIR@/src/config/Makefile.lwp +include @TOP_OBJDIR@/src/config/Makefile.lwptool +top_builddir=@top_builddir@ + +LT_current = 2 +LT_revision = 0 +LT_age = 0 + +LT_objs = aes.lo camellia.lo camellia-ntt.lo des.lo engine.lo evp.lo \ + evp-hcrypto.lo evp-cc.lo hmac.lo md2.lo md4.lo md5.lo pkcs5.lo \ + rand-egd.lo rand-timer.lo rand-unix.lo rand.lo rc2.lo rc4.lo \ + rijndael-alg-fst.lo rnd_keys.lo sha.lo sha256.lo sha512.lo ui.lo \ + validate.lo rand-fortuna.lo +LT_libs = $(LDFLAGS_roken) $(LIB_roken) HEADERS= ${TOP_INCDIR}/hcrypto/aes.h \ ${TOP_INCDIR}/hcrypto/des.h \ @@ -33,11 +42,9 @@ UPSTREAM= ${TOP_SRCDIR}/external/heimdal MODULE_INCLUDE=-I${srcdir} -I${TOP_INCDIR}/hcrypto -I$(UPSTREAM)/hcrypto -SHLIBOBJ= libafshcrypto.${SHLIB_SUFFIX}.${LIBMAJOR}.${LIBMINOR} - all: @hcrypto_all_target@ -all-internal: ${HEADERS} ${TOP_LIBDIR}/${SHLIBOBJ} \ +all-internal: ${HEADERS} ${TOP_LIBDIR}/libafshcrypto.$(SHLIB_SUFFIX) \ ${TOP_LIBDIR}/libafshcrypto.a \ ${TOP_LIBDIR}/libafshcrypto_lwp.a @@ -47,52 +54,33 @@ buildtools: ${HEADERS} ${TOP_LIBDIR}/libafshcrypto.a install: @hcrypto_install_target@ -install-internal: libafshcrypto.a ${SHLIBOBJ} - ${TOP_OBJDIR}/src/config/shlib-install -d ${DESTDIR}${libdir} \ - -l libafshcrypto -M ${LIBMAJOR} -m ${LIBMINOR} +install-internal: libafshcrypto.la libafshcrypto.a + ${LT_INSTALL_DATA} libafshcrypto.la ${DESTDIR}${libdir}/libafshcrypto.la + ${RM} ${DESTDIR}${libdir}/libafshcrypto.la ${INSTALL_DATA} libafshcrypto.a ${DESTDIR}${libdir}/libafshcrypto.a -dest: libafshcrypto.a ${SHLIBOBJ} - ${TOP_OBJDIR}/src/config/shlib-install -d ${DEST}/lib \ - -l libafshcrypto -M ${LIBMAJOR} -m ${LIBMINOR} +dest: libafshcrypto.la libafshcrypto.a + ${LT_INSTALL_DATA} libafshcrypto.la ${DEST}/lib/libafshcrypto.la + ${RM} ${DEST}/lib/libafshcrypto.la ${INSTALL_DATA} libafshcrypto.a ${DEST}/lib/libafshcrypto.a clean: - $(RM) -f ${OBJECTS} ${SHLIBOBJ} rand-fortuna_lwp.o \ + $(LT_CLEAN) + $(RM) -f ${OBJECTS} rand-fortuna_lwp.o \ libafshcrypto.a libafshcrypto_lwp.a libafshcrypto.exp \ test_cipher test_cipher.o -COMMON_OBJS= aes.o camellia.o camellia-ntt.o des.o engine.o evp.o \ - evp-hcrypto.o evp-cc.o hmac.o md2.o md4.o md5.o pkcs5.o \ - rand-egd.o rand-timer.o rand-unix.o rand.o rc2.o rc4.o \ - rijndael-alg-fst.o rnd_keys.o sha.o sha256.o sha512.o ui.o \ - validate.o - -OBJECTS = $(COMMON_OBJS) rand-fortuna.o - -LWP_OBJS = $(COMMON_OBJS) rand-fortuna_lwp.o +libafshcrypto.la: libafshcrypto.la.sym $(LT_objs) + $(LT_LDLIB_shlib) $(LT_objs) $(LT_libs) -${TOP_LIBDIR}/${SHLIBOBJ}: ${SHLIBOBJ} - ${TOP_OBJDIR}/src/config/shlib-install -d ${TOP_LIBDIR} \ - -l libafshcrypto -M ${LIBMAJOR} -m ${LIBMINOR} +libafshcrypto.a: $(LT_objs) + $(LT_LDLIB_static) $(LT_objs) -${SHLIBOBJ}: ${OBJECTS} libafshcrypto.map - ${TOP_OBJDIR}/src/config/shlib-build -d $(srcdir) -l libafshcrypto \ - -M ${LIBMAJOR} -m ${LIBMINOR} -- \ - ${OBJECTS} $(LDFLAGS_roken) $(LIB_roken) ${MT_LIBS} +libafshcrypto_lwp.a: $(LT_objs) + $(LT_LDLIB_lwp) $(LT_objs) -libafshcrypto.a: ${OBJECTS} - $(RM) -f $@ - $(AR) crv $@ ${OBJECTS} - $(RANLIB) $@ - -libafshcrypto_lwp.a: $(LWP_OBJS) - $(RM) -f $@ - $(AR) crv $@ $(LWP_OBJS) - $(RANLIB) $@ - -test_cipher: test_cipher.o libafshcrypto.a - $(AFS_LDRULE) test_cipher.o libafshcrypto.a $(LIB_roken) +test_cipher: test_cipher.lo libafshcrypto.la + $(LT_LDRULE_static) test_cipher.lo libafshcrypto.la ${TOP_INCDIR}/hcrypto/aes.h: ${UPSTREAM}/hcrypto/aes.h ${INSTALL_DATA} $? $@ @@ -154,6 +142,11 @@ ${TOP_INCDIR}/hcrypto/sha.h: ${UPSTREAM}/hcrypto/sha.h ${TOP_INCDIR}/hcrypto/ui.h: ${UPSTREAM}/hcrypto/ui.h ${INSTALL_DATA} $? $@ +${TOP_LIBDIR}/libafshcrypto.$(SHLIB_SUFFIX): libafshcrypto.la + $(LT_INSTALL_DATA) libafshcrypto.la $(TOP_LIBDIR)/libafshcrypto.la + # libtool gets confused if we leave these around + $(RM) $(TOP_LIBDIR)/libafshcrypto.la + ${TOP_LIBDIR}/libafshcrypto.a: libafshcrypto.a ${INSTALL_DATA} $? $@ @@ -162,97 +155,94 @@ ${TOP_LIBDIR}/libafshcrypto_lwp.a: libafshcrypto_lwp.a # Pthread Targets -CFLAGS_test_cipher.o= -I${UPSTREAM}/roken/ -CFLAGS_rand-unix.o=@CFLAGS_NOERROR@ -CFLAGS_validate.o=@CFLAGS_NOERROR@ -CFLAGS_evp.o=-DHAVE_CONFIG_H - -aes.o: ${UPSTREAM}/hcrypto/aes.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/aes.c - -bn.o: ${UPSTREAM}/hcrypto/bn.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/bn.c - -camellia.o: ${UPSTREAM}/hcrypto/camellia.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/camellia.c +CFLAGS_test_cipher.lo= -I${UPSTREAM}/roken/ +CFLAGS_rand-unix.lo=@CFLAGS_NOERROR@ +CFLAGS_validate.lo=@CFLAGS_NOERROR@ +CFLAGS_evp.lo=-DHAVE_CONFIG_H -camellia-ntt.o: ${UPSTREAM}/hcrypto/camellia-ntt.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/camellia-ntt.c +# Here we have explicit rules for all the libtool objects we might need to +# build. The implicit rules don't work since the sources are in a different +# castle. +aes.lo: ${UPSTREAM}/hcrypto/aes.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/aes.c -des.o: ${UPSTREAM}/hcrypto/des.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/des.c +bn.lo: ${UPSTREAM}/hcrypto/bn.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/bn.c -evp.o: ${UPSTREAM}/hcrypto/evp.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/evp.c +camellia.lo: ${UPSTREAM}/hcrypto/camellia.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/camellia.c -evp-hcrypto.o: ${UPSTREAM}/hcrypto/evp-hcrypto.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/evp-hcrypto.c +camellia-ntt.lo: ${UPSTREAM}/hcrypto/camellia-ntt.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/camellia-ntt.c -evp-cc.o: ${UPSTREAM}/hcrypto/evp-cc.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/evp-cc.c +des.lo: ${UPSTREAM}/hcrypto/des.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/des.c -hmac.o: ${UPSTREAM}/hcrypto/hmac.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/hmac.c +evp.lo: ${UPSTREAM}/hcrypto/evp.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/evp.c -md2.o: ${UPSTREAM}/hcrypto/md2.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/md2.c +evp-hcrypto.lo: ${UPSTREAM}/hcrypto/evp-hcrypto.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/evp-hcrypto.c -md4.o: ${UPSTREAM}/hcrypto/md4.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/md4.c +evp-cc.lo: ${UPSTREAM}/hcrypto/evp-cc.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/evp-cc.c -md5.o: ${UPSTREAM}/hcrypto/md5.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/md5.c +hmac.lo: ${UPSTREAM}/hcrypto/hmac.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/hmac.c -pkcs5.o: ${UPSTREAM}/hcrypto/pkcs5.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/pkcs5.c +md2.lo: ${UPSTREAM}/hcrypto/md2.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/md2.c -rand-egd.o: ${UPSTREAM}/hcrypto/rand-egd.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rand-egd.c +md4.lo: ${UPSTREAM}/hcrypto/md4.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/md4.c -rand-fortuna.o: ${UPSTREAM}/hcrypto/rand-fortuna.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rand-fortuna.c +md5.lo: ${UPSTREAM}/hcrypto/md5.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/md5.c -rand-timer.o: ${UPSTREAM}/hcrypto/rand-timer.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rand-timer.c +pkcs5.lo: ${UPSTREAM}/hcrypto/pkcs5.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/pkcs5.c -rand-unix.o: ${UPSTREAM}/hcrypto/rand-unix.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rand-unix.c +rand-egd.lo: ${UPSTREAM}/hcrypto/rand-egd.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rand-egd.c -rand.o: ${UPSTREAM}/hcrypto/rand.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rand.c +rand-fortuna.lo: ${UPSTREAM}/hcrypto/rand-fortuna.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rand-fortuna.c -rc2.o: ${UPSTREAM}/hcrypto/rc2.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rc2.c +rand-timer.lo: ${UPSTREAM}/hcrypto/rand-timer.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rand-timer.c -rc4.o: ${UPSTREAM}/hcrypto/rc4.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rc4.c +rand-unix.lo: ${UPSTREAM}/hcrypto/rand-unix.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rand-unix.c -rijndael-alg-fst.o: ${UPSTREAM}/hcrypto/rijndael-alg-fst.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rijndael-alg-fst.c +rand.lo: ${UPSTREAM}/hcrypto/rand.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rand.c -rnd_keys.o: ${UPSTREAM}/hcrypto/rnd_keys.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/rnd_keys.c +rc2.lo: ${UPSTREAM}/hcrypto/rc2.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rc2.c -sha.o: ${UPSTREAM}/hcrypto/sha.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/sha.c +rc4.lo: ${UPSTREAM}/hcrypto/rc4.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rc4.c -sha256.o: ${UPSTREAM}/hcrypto/sha256.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/sha256.c +rijndael-alg-fst.lo: ${UPSTREAM}/hcrypto/rijndael-alg-fst.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rijndael-alg-fst.c -sha512.o: ${UPSTREAM}/hcrypto/sha512.c ${HEADERS} - ${AFS_CCRULE} $(UPSTREAM)/hcrypto/sha512.c +rnd_keys.lo: ${UPSTREAM}/hcrypto/rnd_keys.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/rnd_keys.c -ui.o: ${UPSTREAM}/hcrypto/ui.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/ui.c +sha.lo: ${UPSTREAM}/hcrypto/sha.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/sha.c -validate.o: ${UPSTREAM}/hcrypto/validate.c ${HEADERS} - ${AFS_CCRULE} ${UPSTREAM}/hcrypto/validate.c +sha256.lo: ${UPSTREAM}/hcrypto/sha256.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/sha256.c -test_cipher.o: ${UPSTREAM}/hcrypto/test_cipher.c ${HEADERS} - $(AFS_CCRULE) $(UPSTREAM)/hcrypto/test_cipher.c +sha512.lo: ${UPSTREAM}/hcrypto/sha512.c ${HEADERS} + ${LTLWP_CCRULE} $(UPSTREAM)/hcrypto/sha512.c -# LWP Targets +ui.lo: ${UPSTREAM}/hcrypto/ui.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/ui.c -rand-fortuna_lwp.o: ${UPSTREAM}/hcrypto/rand-fortuna.c ${HEADERS} - $(LWP_CCRULE) $(UPSTREAM)/hcrypto/rand-fortuna.c +validate.lo: ${UPSTREAM}/hcrypto/validate.c ${HEADERS} + ${LTLWP_CCRULE} ${UPSTREAM}/hcrypto/validate.c +test_cipher.lo: ${UPSTREAM}/hcrypto/test_cipher.c ${HEADERS} + $(LTLWP_CCRULE) $(UPSTREAM)/hcrypto/test_cipher.c diff --git a/src/crypto/hcrypto/libafshcrypto.la.sym b/src/crypto/hcrypto/libafshcrypto.la.sym new file mode 100644 index 0000000..96490be --- /dev/null +++ b/src/crypto/hcrypto/libafshcrypto.la.sym @@ -0,0 +1,47 @@ +hc_DES_cbc_cksum +hc_DES_cbc_encrypt +hc_DES_ecb_encrypt +hc_DES_init_random_number_generator +hc_DES_is_weak_key +hc_DES_key_sched +hc_DES_new_random_key +hc_DES_pcbc_encrypt +hc_DES_set_odd_parity +hc_DES_string_to_key +hc_EVP_CIPHER_CTX_block_size +hc_EVP_CIPHER_CTX_cleanup +hc_EVP_CIPHER_CTX_init +hc_EVP_CIPHER_CTX_iv_length +hc_EVP_Cipher +hc_EVP_CipherInit_ex +hc_EVP_Digest +hc_EVP_DigestFinal_ex +hc_EVP_DigestInit_ex +hc_EVP_DigestUpdate +hc_EVP_MD_CTX_create +hc_EVP_MD_CTX_destroy +hc_EVP_aes_128_cbc +hc_EVP_aes_256_cbc +hc_EVP_des_ede3_cbc +hc_EVP_md5 +hc_EVP_rc4 +hc_EVP_sha1 +hc_HMAC +hc_HMAC_CTX_cleanup +hc_HMAC_CTX_init +hc_HMAC_Final +hc_HMAC_Init_ex +hc_HMAC_Update +hc_HMAC_size +hc_MD4_Final +hc_MD4_Init +hc_MD4_Update +hc_MD5_Final +hc_MD5_Init +hc_MD5_Update +hc_RAND_add +hc_RAND_bytes +hc_RAND_file_name +hc_RAND_status +hc_RAND_write_file +hc_UI_UTIL_read_pw_string diff --git a/src/crypto/hcrypto/libafshcrypto.map b/src/crypto/hcrypto/libafshcrypto.map deleted file mode 100644 index edd04cf..0000000 --- a/src/crypto/hcrypto/libafshcrypto.map +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2010 Your File System Inc -# All Rights Reserved -# -# This software has been released under the terms of the BSD License. For -# details, see the LICENSE file in the top level source directory. - -{ - global: - hc_DES_cbc_encrypt; - hc_DES_cbc_cksum; - hc_DES_ecb_encrypt; - hc_DES_init_random_number_generator; - hc_DES_is_weak_key; - hc_DES_key_sched; - hc_DES_new_random_key; - hc_DES_pcbc_encrypt; - hc_DES_set_odd_parity; - hc_DES_string_to_key; - hc_MD4_Final; - hc_MD4_Init; - hc_MD4_Update; - hc_MD5_Final; - hc_MD5_Init; - hc_MD5_Update; - hc_RAND_bytes; - hc_UI_UTIL_read_pw_string; - hc_EVP_CIPHER_CTX_block_size; - hc_EVP_CIPHER_CTX_cleanup; - hc_EVP_CIPHER_CTX_init; - hc_EVP_CIPHER_CTX_iv_length; - hc_EVP_Cipher; - hc_EVP_CipherInit_ex; - hc_EVP_Digest; - hc_EVP_DigestFinal_ex; - hc_EVP_DigestInit_ex; - hc_EVP_DigestUpdate; - hc_EVP_MD_CTX_create; - hc_EVP_MD_CTX_destroy; - hc_EVP_aes_128_cbc; - hc_EVP_aes_256_cbc; - hc_EVP_des_ede3_cbc; - hc_EVP_md5; - hc_EVP_rc4; - hc_EVP_sha1; - hc_RAND_status; - hc_RAND_file_name; - hc_RAND_add; - hc_RAND_write_file; - hc_HMAC; - hc_HMAC_CTX_cleanup; - hc_HMAC_CTX_init; - hc_HMAC_Final; - hc_HMAC_Init_ex; - hc_HMAC_Update; - hc_HMAC_size; - local: - *; -};