[openssl-dev] `make depend`, advised by ./config, fails to find stddef.h in system/compiler path. old bug (#3566) says don't bother with `make depend`? true, or another bug?

berryfarm at sent.com berryfarm at sent.com
Wed Apr 29 16:32:35 UTC 2015


Hi all.

As prep to eventually building an Openssl instance with support for a specific hardware engine on linux/64, I'm first building a basic instance.

I start with 

	source ~/.bashrc
	cd /usr/local/src/openssl/openssl-1.0.2a
	make clean

	unset CFLAGS CPPFLAGS CXXFLAGS
	unset SHARED_LDFLAGS LDFLAGS LIBDEPS
	unset ZLIB_INCLUDE C_INCLUDE_PATH

	./config --openssldir=/usr/local/BUILDTEST --libdir=lib64 \
	threads shared enable-ec_nistp_64_gcc_128 no-idea no-ssl2 no-rc5 no-mdc2

This returns

	...
	Since you've disabled or enabled at least one algorithm, you need to do
	the following before building:

	        make depend

	Configured for linux-x86_64.

So I exec

	make depend

And that generates a *lot* of this noise about cannot find include file "stddef.h"

	making depend in crypto...
	make[1]: Entering directory '/usr/local/src/openssl/openssl-1.0.2a/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
	makedepend: warning:  cryptlib.c (reading /usr/include/alloca.h, line 24): 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:  cryptlib.c (reading /usr/include/string.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:  cryptlib.c (reading /usr/include/unistd.h, line 226): 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
	...

On my system

	locate stddef.h
		/usr/include/linux/stddef.h
		/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h
		/usr/lib64/gcc/x86_64-suse-linux/5/include/stddef.h

and gcc's cpp search path is

	cpp -v
		Using built-in specs.
		COLLECT_GCC=cpp
		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=c++98 --enable-version-specific-runtime-libs --enable-linker-build-id --enable-linux-futex --program-suffix=-5 --without-system-libunwind --enable-multilib --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux
		Thread model: posix
		gcc version 5.1.1 (SUSE Linux) 
		COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
		 /usr/lib64/gcc/x86_64-suse-linux/5/cc1 -E -quiet -v - -mtune=generic -march=x86-64
		#include "..." search starts here:
		#include <...> search starts here:
>>>		 /usr/lib64/gcc/x86_64-suse-linux/5/include
		 /usr/local/include
		 /usr/lib64/gcc/x86_64-suse-linux/5/include-fixed
		 /usr/lib64/gcc/x86_64-suse-linux/5/../../../../x86_64-suse-linux/include
		 /usr/include
		End of search list.

Not that it's authoritative, but Wikipedia suggests (https://en.wikipedia.org/wiki/Makedepend) that 'makedepend' has

	"become superseded by the dependency generation facilities of various compilers, and is now used primarily as a worst-case fallback, e.g. by depcomp and GNU Automake"

Also at this bug for an older version of openssl Dr. Stephen Henson had said

	"#3566: make depend failes"
	 https://rt.openssl.org/Ticket/Display.html?id=3566#txn-49052  openssl-1.0.1j

		Obviously this needs fixing but as a workaround: if you're building from scratch (or after "make clean") it should compile fine with without doing "make depend".

(1) Is the problem with my build because this bug hasn't been fixed yet in 1.0.2a?
(2) Is `makedepend` the problem, and should something else be used?
(3) Is that advice to not exec "make depend" correct, even though the output of the configure step says specifically to exec it?

Thanks,

Barry


More information about the openssl-dev mailing list