First of all, .../lib/ is hard coded, which forces me to do kludges like
this to get openssl to install correctly:

          sed -e 's@/lib\>@/li...@g' -e 's...@\*/li...@\*/l...@g' < Makefile > 
Makefile.fnord; mv -f Makefile.fnord Makefile; \
          sed -e 's@/lib/@/lib64/@g' < engines/Makefile > Makefile.fnord; mv -f 
Makefile.fnord engines/Makefile; \
          sed -e 's@/lib/@/lib64/@g' < fips/Makefile > Makefile.fnord; mv -f 
Makefile.fnord fips/Makefile; \

This is clearly unacceptable.

Second, $CC is passed incorrectly to sub-makes.  Apart from the inherent
wrongness of doing recursive make (see
http://miller.emu.id.au/pmiller/books/rmch/ and note that the
traditionally cited reason for doing recursive makes, namely being able
to go into apps and doing "make install" to only get the apps content
installed, does not actually work with openssl) the makefiles pass $CC
incorrectly, like this:

        $(MAKE) -f $(TOP)/Makefile.shared -e \
                CC=$${CC} APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
                LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
                link_app.$${shlib_target}

(taken from test/Makefile).  This is wrong because CC might contain
spaces.  I, for example, build openssl using CC="diet -Os gcc
-nostdinc".  Which in your broken Makefiles leads to -Os being passed to
make as an argument.  This is really a very basic beginner's mistake.

Here's my workaround:

        $(MAKE) -f $(TOP)/Makefile.shared -e \
                CC="\"$${CC}\"" APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" 
\
                LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
                link_app.$${shlib_target}

There is other issues, like make install taking FOREVER to install a few
man pages, and this process not getting faster the second time you run
it.  It feels like a few perl interpreters are run for each installed
man page.  WTF?  Installing the man pages takes up 90% of make install!

These issues are broken on all platforms and compiler versions and all
recent versions of openssl.  All the distributions have horrible
workaround of varying ugliness to work around your build system.  Please
fix it.  At this point even GNU autoconf would be an improvement.

Felix

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to