[openssl-dev] [openssl.org #4169] openssl-1.0.2e build still recommends deprecated (unnecessary?) `make depend`, returns numerous warnings abt not finding stddef.h

Richard Levitte via RT rt at openssl.org
Mon Mar 14 21:13:22 UTC 2016


I'll answer to the original report... there's a lot of confusion going on

Vid Sun, 06 Dec 2015 kl. 22.48.57, skrev pgnet.dev at gmail.com:
> Building openssl-1.0.2e from src
> wget http://www.openssl.org/source/openssl-1.0.2e.tar.gz
> tar zxvf openssl-1.0.2e.tar.gz
> cd openssl-1.0.2e
> on
> lsb_release -rd
> Description: openSUSE Leap 42.1 (x86_64)
> Release: 42.1
> gcc -v
> Using built-in specs.
> COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/5/lto-
> wrapper
> Target: x86_64-suse-linux
> Configured with: ../configure --prefix=/usr
> --infodir=/usr/share/info
> --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
> --enable-languages=c,c++,objc,fortran,obj-c++,java,ada,go
> --enable-checking=release --with-gxx-include-dir=/usr/include/c++/5
> --enable-ssp --disable-libssp --disable-libvtv --enable-libmpx
> --disable-plugin --with-bugurl=http://bugs.opensuse.org/
> --with-pkgversion='SUSE Linux' --disable-libgcj --with-slibdir=/lib64
> --with-system-zlib --enable-__cxa_atexit
> --enable-libstdcxx-allocator=new --disable-libstdcxx-pch
> --with-default-libstdcxx-abi=gcc4-compatible
> --enable-version-specific-runtime-libs --enable-linker-build-id
> --enable-linux-futex --program-suffix=-5 --without-system-libunwind
> --enable-multilib --with-arch-32=x86-64 --with-tune=generic
> --build=x86_64-suse-linux --host=x86_64-suse-linux
> Thread model: posix
> gcc version 5.2.1 20151130 [gcc-5-branch revision 231058]
> (SUSE Linux)
> gcc -print-search-dirs
> install: /usr/lib64/gcc/x86_64-suse-linux/5/
> programs:
> =/usr/lib64/gcc/x86_64-suse-linux/5/:/usr/lib64/gcc/x86_64-suse-
> linux/5/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-
> linux/5/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-
> linux/5/../../../../x86_64-suse-linux/bin/x86_64-suse-
> linux/5/:/usr/lib64/gcc/x86_64-suse-linux/5/../../../../x86_64-suse-
> linux/bin/
> libraries:
> =/usr/lib64/gcc/x86_64-suse-linux/5/:/usr/lib64/gcc/x86_64-suse-
> linux/5/../../../../x86_64-suse-linux/lib/x86_64-suse-
> linux/5/:/usr/lib64/gcc/x86_64-suse-linux/5/../../../../x86_64-suse-
> linux/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-
> linux/5/../../../x86_64-suse-linux/5/:/usr/lib64/gcc/x86_64-suse-
> linux/5/../../../../lib64/:/lib/x86_64-suse-
> linux/5/:/lib/../lib64/:/usr/lib/x86_64-suse-
> linux/5/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-
> linux/5/../../../../x86_64-suse-linux/lib/:/usr/lib64/gcc/x86_64-suse-
> linux/5/../../../:/lib/:/usr/lib/
> with following config
> ./config ... \
> enable-ec_nistp_64_gcc_128 \
> enable-rfc3779 \
> enable-ecdsa \
> no-idea \
> no-ssl2 \
> no-rc5 \
> no-rc2 \
> no-mdc2
> invokes need for subsequent `make depend`
> ...
> Since you've disabled or enabled at least one algorithm, you need to
> do
> the following before building:
> make depend

This is correct, 'make depend' *is* needed here. It is for all disabled
features that have a corresponding directory in crypto/. The reason is that the
default dependencies in the various Makefile are made for a default
configuration, and header files from each crypto/ subdirectory are symlinked
into include/openssl/, only for those directories that haven't been disabled.
So, for example, because of 'no-idea', crypto/idea/idea.h wouldn't get
symlinked into include/openssl/, and if there's *any* target in *any* Makefile
that has include/openssl/idea.h as a dependency, make will fail since it wants
to try to rebuild it.

That's why there are cases when 'make depend' is mandatory, to correct the
faulty dependencies

However, there are also options that do not affect what is being built, or
symlinked for that matter, and in those cases, configuration might tell you to
'make depend' although it might sometimes not be necessary.

I'm sorry, all this was not explained too well before, and considering there's
also and entirely different building scheme with upcoming 1.1 where 'make
depend' truly isn't necessary, it's no wonder if things are a bit confusing for

> Configured for linux-x86_64.
> which completes, but reports many instances of 'stddef.h' not found,
> make depend
> making depend in crypto...
> make[1]: Entering directory
> '/usr/local/src/openssl-TEST/openssl-1.0.2e/crypto'
> makedepend: warning: cryptlib.c (reading
> /usr/include/stdlib.h, line
> 32): cannot find include file "stddef.h"
> not in ./stddef.h
> not in ../stddef.h
> not in ../include/stddef.h
> not in /usr/include/stddef.h
> makedepend: warning: /usr/include/time.h includes
> /usr/include/bits/types.h more than once!
> Already have
> /usr/include/bits/types.h
> makedepend: warning: /usr/include/time.h includes
> /usr/include/bits/types.h more than once!
> Already have
> /usr/include/bits/types.h
> makedepend: warning: /usr/include/time.h includes
> /usr/include/bits/types.h more than once!
> Already have
> /usr/include/bits/types.h
> makedepend: warning: cryptlib.c (reading
> /usr/include/sys/types.h,
> line 146): cannot find include file "stddef.h"
> not in ./stddef.h
> not in ../stddef.h
> not in ../include/stddef.h
> not in /usr/include/stddef.h
> ...

This is makedepend (the program, thus no space) not being quite in tune with
the system, so it seems to be missing the presence of stdddef.h in the place
you find it in. However, that isn't a problem per se, as this is system
headers, and there's no need for them whatsoever in the dependencies of the
various OpenSSL Makefiles. makedepend will still keep searching for all header
files, and it will find those that belong to the OpenSSL source, which are the
only ones important to build OpenSSL. That's why can be safely ignored, even
though the thousands of warning lines are annoying indeed.


Richard Levitte
levitte at openssl.org

Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4169
Please log in as guest with password guest if prompted

More information about the openssl-dev mailing list