Hi,

To be compatible with the way IBM distributes openssl in /usr/lib/libssl.a and /usr/lib/libcrypto.a I would like to make the .so "archives" as well.

Actually, these are archives in the 'ar' command sense, but become members of the archive.

I have been trying to understand how Makefile.shared works, and under the target
syslink.aix I have not been able to establish what

SYMLINK_SOD=    \
        if [ -n "$$INHIBIT_SYMLINKS" ]; then (print true) ; else \
                print $$SHLIB - $$SHLIB_SOVER - $$SHLIB_SUFFIX; \
                print   " - " "$$SHLIB_COMPAT"; \
        (print false); fi;

SYMLINK_SO=     \
        if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
                prev=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
                if [ -n "$$SHLIB_COMPAT" ]; then \
                        for x in $$SHLIB_COMPAT; do \
( $(SET_X); rm -f $$SHLIB$$x$$SHLIB_SUFFIX; \ ln -s $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
                                prev=$$SHLIB$$x$$SHLIB_SUFFIX; \
                        done; \
                fi; \
                if [ -n "$$SHLIB_SOVER" ]; then \
                        ( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
                          ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
                fi; \
        fi

# Targets to build symbolic links when needed
symlink.gnu symlink.solaris symlink.svr3 symlink.svr5 symlink.irix \
symlink.aix symlink.reliantunix:
        $(CALC_VERSIONS); \
        SHLIB=lib$(LIBNAME).so; \
        $(SYMLINK_SOD)
        $(SYMLINK_SO)

# (the SYMLINK_SOD is my way to print the variables used by SYSLINK_SO)

Make with debug info

michael@x071:[/data/prj/openssl/openssl-1.0.2]make --debug=bj link-shared
GNU Make 3.82
Built for powerpc-ibm-aix5.3.0.0
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
 File `link-shared' does not exist.
Must remake target `link-shared'.
Invoking recipe from Makefile:338 to update target `link-shared'.
GNU Make 3.82
Built for powerpc-ibm-aix5.3.0.0
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
 File `symlink.aix-shared' does not exist.
   File `symlink.aix' does not exist.
  Must remake target `symlink.aix'.
Invoking recipe from Makefile.shared:588 to update target `symlink.aix'.
make[1]: Entering directory `/data/prj/openssl/openssl-1.0.2'
SHLIB_COMPAT=; SHLIB_SOVER=; if [ -n "1.0.0;" ]; then prev=""; for v in `echo "1.0.0 ;" | cut -d';' -f1`; do SHLIB_SOVER_NODOT=$v; SHLIB_SOVER=.$v; if [ -n "$prev" ]; then SHLIB_COMPAT="$SHLIB_COMPAT .$prev"; fi; prev=$v; done; fi; \
SHLIB=libcrypto.so; \
if [ -n "$INHIBIT_SYMLINKS" ]; then (print true) ; else print $SHLIB - $SHLIB_SOVER - $SHLIB_SUFFIX; print " - " "$SHLIB_COMPAT"; (print false); fi;
libcrypto.so - .1.0.0 -
 -
false

Any help with understanding how to create a libcrypto.so and libssl.so (similiar to what libz does! is appreciated)

Info: libz does this

xlc -G -O -qmaxmem=8192 -D_LARGEFILE64_SOURCE=1 -o libz.so.1.2.8 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo -lc

I am puzzled that it is not made because openssl Makefile knows about the -G argument, but does not apply it to create a 'member' with the combined .o files.

I am hoping that someone is willing to think about an elegant solution - compared to any (unstable) hack I might come up with.

I have tried, with no success, to just make libssl.so, libssl.so.1.0.2

However, when I tried to make libssl.so.1.0.0 I did get a lot of 'activity' (called AIX cc/xlc with no arguments and I get the man page ... this prefixes it

michael@x071:[/data/prj/openssl/openssl-1.0.2]make libssl.so.1.0.0
[ -z "" ] || cc -DOPENSSL_THREADS -qthreaded -D_THREAD_SAFE -DDSO_DLFCN -DHAVE_DLFCN_H -q64 -O2 -DB_ENDIAN -qmaxmem=16384 -qro -qroconst -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DVPAES_ASM -Iinclude \
        -DFINGERPRINT_PREMAIN_DSO_LOAD -o fips_premain_dso  \
        fips_premain.c fipscanister.o \
        libcrypto.a
make[1]: Entering directory `/data/prj/openssl/openssl-1.0.2'
make[2]: Entering directory `/data/prj/openssl/openssl-1.0.2'
SHLIB_COMPAT=; SHLIB_SOVER=; if [ -n "1.0.0;" ]; then prev=""; for v in `echo "1.0.0 ;" | cut -d';' -f1`; do SHLIB_SOVER_NODOT=$v; SHLIB_SOVER=.$v; if [ -n "$prev" ]; then SHLIB_COMPAT="$SHLIB_COMPAT .$prev"; fi; prev=$v; done; fi; \
OBJECT_MODE=`expr "x-q64 -G" : 'x\-[a-z]*\(64\)'` || : ; \
OBJECT_MODE=${OBJECT_MODE:-32}; export OBJECT_MODE; \
SHLIB=libcrypto.so; \
SHLIB_SUFFIX=; \
ALLSYMSFLAGS='-bnogc'; \
NOALLSYMSFLAGS=''; \
SHAREDFLAGS='-DOPENSSL_THREADS -qthreaded -D_THREAD_SAFE -DDSO_DLFCN -DHAVE_DLFCN_H -q64 -O2 -DB_ENDIAN -qmaxmem=16384 -qro -qroconst -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DVPAES_ASM -q64 -G -Wl,-bexpall,-bnolibpath,-bM:SRE'; \ echo SHOBJECTS=libcrypto.o; ALL=$ALLSYMSFLAGS; ALLSYMSFLAGS=; NOALLSYMSFLAGS=; ( :; ld -r -o libcrypto.o $ALL libcrypto.a ); ( :; LIBDEPS="${LIBDEPS:--L. }"; SHAREDCMD="${SHAREDCMD:-cc}"; SHAREDFLAGS="${SHAREDFLAGS:--DOPENSSL_THREADS -qthreaded -D_THREAD_SAFE -DDSO_DLFCN -DHAVE_DLFCN_H -q64 -O2 -DB_ENDIAN -qmaxmem=16384 -qro -qroconst -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DVPAES_ASM -q64 -G}"; LIBPATH=`for x in $LIBDEPS; do echo $x; done | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${SHAREDCMD} ${SHAREDFLAGS} -o $SHLIB$SHLIB_SOVER$SHLIB_SUFFIX $ALLSYMSFLAGS $SHOBJECTS $NOALLSYMSFLAGS $LIBDEPS ) && if [ -n "$INHIBIT_SYMLINKS" ]; then :; else prev=$SHLIB$SHLIB_SOVER$SHLIB_SUFFIX; if [ -n "$SHLIB_COMPAT" ]; then for x in $SHLIB_COMPAT; do ( :; rm -f $SHLIB$x$SHLIB_SUFFIX; ln -s $prev $SHLIB$x$SHLIB_SUFFIX ); prev=$SHLIB$x$SHLIB_SUFFIX; done; fi; if [ -n "$SHLIB_SOVER" ]; then ( :; rm -f $SHLIB$SHLIB_SUFFIX; ln -s $prev $SHLIB$SHLIB_SUFFIX ); fi; fi && rm -f libcrypto.o
SHOBJECTS=libcrypto.o



  xlc(1)                     IBM (2010)                      xlc(1)
...

Signed (Sincerely Lost :p),
Michael

_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to