Can OpenSSL 3.1.0 be compiled without atomic.h ?

Dennis Clarke dclarke at blastwave.org
Thu Mar 30 21:50:50 UTC 2023


All :

This is exactly the sort of thing this email list for ordinary users
was intended for. Custom designed for this sort of off the wall crazy
question.  A github bug report would be a vulgar display of stupid.

So I like to compile and test things on strange machines. I have FreeBSD
running neatly on SiFive RISC-V and Gentoo Linux on old sparcv9. I even
have an old SparcStation 20 running Solaris 8 wherein I bootstrapped the
reasonable old GCC 4.5.1 which seems to work there. Really I need to get
something more recent like GCC 7.5.0 but that will take a month.

Since OpenSSL is supposedly portable darn near everywhere why not give
it a whirl? I was just thrilled to see that OpenSSL 3.1.0 can at least
be configured for solaris-sparcv7-gcc thus :

nix$ /opt/bw/bin/perl ./Configure solaris-sparcv7-gcc no-asm 
--prefix=/opt/bw shared no-engine -DPEDANTIC
Configuring OpenSSL version 3.1.0 for target solaris-sparcv7-gcc
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile
Created include/openssl/configuration.h

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************

The perl being used there is very up to date :

nix$
nix$ /opt/bw/bin/perl -V 2>&1 | head
Summary of my perl5 (revision 5 version 36 subversion 0) configuration:

   Platform:
     osname=solaris
     osvers=2.8
     archname=sun4-solaris-64int
     uname='sunos nix 5.8 generic_117350-62 sun4m sparc 
sunw,sparcstation-20 '
     config_args='-Dcc=/opt/csw/gcc4/bin/gcc -Dprefix=/opt/bw 
-Dmksymlinks -Accflags=-m32 -g -O0 -mno-app-regs -mhard-float 
-mno-faster-structs -mstd-struct-return -mcpu=v8 -mno-v8plus -mno-vis 
-L/opt/bw/lib -R/opt/bw/lib -I/opt/bw/include'
     hint=recommended
     useposix=true
nix$

So I was quite happy to see the compile run and crank and churn until :

/opt/csw/gcc4/bin/gcc  -I. -Iinclude -Iproviders/common/include 
-Iproviders/implementations/include  -fPIC -m32 -g -O0 -fno-builtin 
-mno-app-regs -mhard-float -mno-faster-structs -mstd-struct-return 
-mcpu=v8 -mno-v8plus -mno-vis -pthread -I/opt/bw/include 
-D_LARGEFILE64_SOURCE -m32 -g -O0 -fno-builtin -mno-app-regs 
-mhard-float -mno-faster-structs -mstd-struct-return -mcpu=v8 
-mno-v8plus -mno-vis -DFILIO_H -DB_ENDIAN -DBN_DIV2W -DOPENSSL_PIC 
-DOPENSSLDIR="\"/opt/bw/ssl\"" -DENGINESDIR="\"/opt/bw/lib/engines-3\"" 
-DMODULESDIR="\"/opt/bw/lib/ossl-modules\"" -DOPENSSL_BUILDING_OPENSSL 
-DNDEBUG -DPEDANTIC -I/opt/bw/include -D_LARGEFILE64_SOURCE -MMD -MF 
crypto/libcrypto-lib-threads_pthread.d.tmp -MT 
crypto/libcrypto-lib-threads_pthread.o -c -o 
crypto/libcrypto-lib-threads_pthread.o crypto/threads_pthread.c
crypto/threads_pthread.c:17:21: fatal error: atomic.h: No such file or 
directory
compilation terminated.
gmake[1]: *** [Makefile:14613: crypto/libcrypto-lib-threads_pthread.o] 
Error 1
gmake[1]: Leaving directory '/opt/bw/build/openssl-3.1.0_SunOS5.8_sun4m.001'
gmake: *** [Makefile:2406: build_sw] Error 2


Well gee.  That can be annoying.

Any thoughts?

-- 
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
Four decades of geek. Or five?

--------------- the perl configdata.pm --dump  ---------------

nix$ /opt/bw/bin/perl configdata.pm --dump

Command line (with current working directory = .):

     /opt/bw/bin/perl ./Configure solaris-sparcv7-gcc no-asm 
--prefix=/opt/bw shared no-engine -DPEDANTIC

Perl information:

     /opt/bw/bin/perl
     5.36.0 for sun4-solaris-64int

Enabled features:

     aria
     async
     autoalginit
     autoerrinit
     autoload-config
     bf
     blake2
     bulk
     cached-fetch
     camellia
     cast
     chacha
     cmac
     cmp
     cms
     comp
     ct
     deprecated
     des
     dgram
     dh
     dsa
     dso
     dtls
     ec
     ec2m
     ecdh
     ecdsa
     err
     filenames
     gost
     idea
     legacy
     makedepend
     md4
     mdc2
     module
     multiblock
     nextprotoneg
     ocb
     ocsp
     pic
     pinshared
     poly1305
     posix-io
     psk
     rc2
     rc4
     rdrand
     rfc3779
     rmd160
     scrypt
     secure-memory
     seed
     shared
     siphash
     siv
     sm2
     sm3
     sm4
     sock
     srp
     srtp
     sse2
     ssl
     ssl-trace
     static-engine
     stdio
     tests
     threads
     tls
     ts
     ui-console
     whirlpool
     tls1
     tls1-method
     tls1_1
     tls1_1-method
     tls1_2
     tls1_2-method
     tls1_3
     dtls1
     dtls1-method
     dtls1_2
     dtls1_2-method

Disabled features:

     acvp-tests          [cascade]        OPENSSL_NO_ACVP_TESTS
     afalgeng            [cascade]        OPENSSL_NO_AFALGENG
     asan                [default]        OPENSSL_NO_ASAN
     asm                 [no asm_arch]    OPENSSL_NO_ASM
     buildtest-c++       [default]
     capieng             [cascade]        OPENSSL_NO_CAPIENG
     crypto-mdebug       [default]        OPENSSL_NO_CRYPTO_MDEBUG
     devcryptoeng        [default]        OPENSSL_NO_DEVCRYPTOENG
     dynamic-engine      [cascade]
     ec_nistp_64_gcc_128 [default]        OPENSSL_NO_EC_NISTP_64_GCC_128
     egd                 [default]        OPENSSL_NO_EGD
     engine              [option]         OPENSSL_NO_ENGINE (skip 
engines, crypto/engine)
     external-tests      [default]        OPENSSL_NO_EXTERNAL_TESTS
     fips                [default]
     fips-securitychecks [cascade]        OPENSSL_NO_FIPS_SECURITYCHECKS
     fuzz-afl            [default]        OPENSSL_NO_FUZZ_AFL
     fuzz-libfuzzer      [default]        OPENSSL_NO_FUZZ_LIBFUZZER
     ktls                [default]        OPENSSL_NO_KTLS
     loadereng           [cascade]        OPENSSL_NO_LOADERENG
     md2                 [default]        OPENSSL_NO_MD2 (skip crypto/md2)
     msan                [default]        OPENSSL_NO_MSAN
     padlockeng          [cascade]        OPENSSL_NO_PADLOCKENG
     rc5                 [default]        OPENSSL_NO_RC5 (skip crypto/rc5)
     sctp                [default]        OPENSSL_NO_SCTP
     trace               [default]        OPENSSL_NO_TRACE
     ubsan               [default]        OPENSSL_NO_UBSAN
     unit-test           [default]        OPENSSL_NO_UNIT_TEST
     uplink              [no uplink_arch] OPENSSL_NO_UPLINK
     weak-ssl-ciphers    [default]        OPENSSL_NO_WEAK_SSL_CIPHERS
     zlib                [default]
     zlib-dynamic        [default]
     ssl3                [default]        OPENSSL_NO_SSL3
     ssl3-method         [default]        OPENSSL_NO_SSL3_METHOD

Config target attributes:

     AR => "ar",
     ARFLAGS => "qc",
     CC => "gcc",
     CFLAGS => "-O0 -g -O0 -g",
     HASHBANGPERL => "/usr/bin/env perl",
     RANLIB => "ranlib",
     RC => "windres",
     bn_ops => "BN_LLONG RC4_CHAR",
     build_file => "Makefile",
     build_scheme => [ "unified", "unix" ],
     cflags => "-m32 -g -O0 -fno-builtin -mno-app-regs -mhard-float 
-mno-faster-structs -mstd-struct-return -mcpu=v8 -mno-v8plus -mno-vis 
-pthread -I/opt/bw/include -D_LARGEFILE64_SOURCE",
     cppflags => "",
     defines => [ "OPENSSL_BUILDING_OPENSSL" ],
     disable => [  ],
     dso_scheme => "dlfcn",
     enable => [  ],
     ex_libs => "-lsocket -lnsl -ldl -lrt -pthread",
     includes => [  ],
     lflags => "",
     lib_cflags => "",
     lib_cppflags => "-DFILIO_H -DB_ENDIAN -DBN_DIV2W",
     lib_defines => [  ],
     module_cflags => "-fPIC",
     module_cxxflags => undef,
     module_ldflags => "-shared -static-libgcc -Wl,-Bsymbolic",
     perl_platform => "Unix",
     shared_cflag => "-fPIC",
     shared_defflag => "-Wl,-M,",
     shared_defines => [  ],
     shared_ldflag => "-shared -static-libgcc -Wl,-Bsymbolic",
     shared_rcflag => "",
     shared_sonameflag => "-Wl,-h,",
     shared_target => "solaris-gcc-shared",
     thread_defines => [  ],
     thread_scheme => "pthreads",
     unistd => "<unistd.h>",

Recorded environment:

     AR = /opt/bw/bin/gar
     BUILDFILE =
     CC = /opt/csw/gcc4/bin/gcc
     CFLAGS = -m32 -g -O0 -fno-builtin -mno-app-regs -mhard-float 
-mno-faster-structs -mstd-struct-return -mcpu=v8 -mno-v8plus -mno-vis
     CPPFLAGS = -I/opt/bw/include -D_LARGEFILE64_SOURCE
     CROSS_COMPILE =
     CXX = /opt/csw/gcc4/bin/c++
     CXXFLAGS = -m32 -g -O0 -fno-builtin -mno-app-regs -mhard-float 
-mno-faster-structs -mstd-struct-return -mcpu=v8 -mno-v8plus -mno-vis
     HASHBANGPERL =
     LDFLAGS =
     LDLIBS =
     OPENSSL_LOCAL_CONFIG_DIR =
     PERL = /opt/bw/bin/perl
     RANLIB = /opt/bw/bin/granlib
     RC =
     RCFLAGS =
     WINDRES =
     __CNF_CFLAGS =
     __CNF_CPPDEFINES =
     __CNF_CPPFLAGS =
     __CNF_CPPINCLUDES =
     __CNF_CXXFLAGS =
     __CNF_LDFLAGS =
     __CNF_LDLIBS =

Makevars:

     AR              = /opt/bw/bin/gar
     ARFLAGS         = qc
     CC              = /opt/csw/gcc4/bin/gcc
     CFLAGS          = -m32 -g -O0 -fno-builtin -mno-app-regs 
-mhard-float -mno-faster-structs -mstd-struct-return -mcpu=v8 
-mno-v8plus -mno-vis
     CPPDEFINES      = PEDANTIC
     CPPFLAGS        = -I/opt/bw/include -D_LARGEFILE64_SOURCE
     CPPINCLUDES     =
     CXX             = /opt/csw/gcc4/bin/c++
     CXXFLAGS        = -m32 -g -O0 -fno-builtin -mno-app-regs 
-mhard-float -mno-faster-structs -mstd-struct-return -mcpu=v8 
-mno-v8plus -mno-vis
     HASHBANGPERL    = /opt/bw/bin/perl
     LDFLAGS         =
     LDLIBS          =
     PERL            = /opt/bw/bin/perl
     RANLIB          = /opt/bw/bin/granlib
     RC              = windres
     RCFLAGS         =

NOTE: These variables only represent the configuration view.  The build file
template may have processed these variables further, please have a look 
at the
build file for more exact data:
     Makefile

build file:

     Makefile

build file templates:

     Configurations/common0.tmpl
     Configurations/unix-Makefile.tmpl



More information about the openssl-users mailing list