Rudimentary support for cross-compiling.
authorAndy Polyakov <appro@openssl.org>
Sat, 21 Oct 2006 13:38:16 +0000 (13:38 +0000)
committerAndy Polyakov <appro@openssl.org>
Sat, 21 Oct 2006 13:38:16 +0000 (13:38 +0000)
Configure
Makefile.org
Makefile.shared
apps/Makefile

index 80cc58a..726c896 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -38,6 +38,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 # --test-sanity Make a number of sanity checks on the data in this file.
 #               This is a debugging tool for OpenSSL developers.
 #
+# --cross-compile-prefix Add specified prefix to binutils components.
+#
 # no-hw-xxx     do not compile support for specific crypto hardware.
 #               Generic OpenSSL-style methods relating to this support
 #               are always compiled but return NULL if the hardware
@@ -571,6 +573,7 @@ my $prefix="";
 my $openssldir="";
 my $exe_ext="";
 my $install_prefix="";
+my $cross_compile_prefix="";
 my $no_threads=0;
 my $threads=0;
 my $no_shared=0; # but "no-shared" is default
@@ -764,6 +767,10 @@ PROCESS_ARGS:
                                {
                                $withargs{"zlib-include"}="-I$1";
                                }
+                       elsif (/^--cross-compile-prefix=(.*)$/)
+                               {
+                               $cross_compile_prefix=$1;
+                               }
                        else
                                {
                                print STDERR $usage;
@@ -1310,7 +1317,17 @@ while (<IN>)
        s/^PLATFORM=.*$/PLATFORM=$target/;
        s/^OPTIONS=.*$/OPTIONS=$options/;
        s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
-       s/^CC=.*$/CC= $cc/;
+       if ($cross_compile_prefix)
+               {
+               s/^CC=.*$/CROSS_COMPILE_PREFIX= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE_PREFIX\)$cc/;
+               s/^AR=\s*/AR= \$\(CROSS_COMPILE_PREFIX\)/;
+               s/^NM=\s*/NM= \$\(CROSS_COMPILE_PREFIX\)/;
+               s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE_PREFIX\)/;
+               }
+       else    {
+               s/^CC=.*$/CC= $cc/;
+               s/^RANLIB=.*/RANLIB= $ranlib/;
+               }
        s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
        s/^CFLAG=.*$/CFLAG= $cflags/;
        s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
@@ -1329,7 +1346,6 @@ while (<IN>)
        s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
        s/^WP_ASM_OBJ=.*$/WP_ASM_OBJ= $wp_obj/;
        s/^PROCESSOR=.*/PROCESSOR= $processor/;
-       s/^RANLIB=.*/RANLIB= $ranlib/;
        s/^ARFLAGS=.*/ARFLAGS= $arflags/;
        s/^PERL=.*/PERL= $perl/;
        s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
index b55b6ba..805ab6f 100644 (file)
@@ -66,6 +66,7 @@ EXE_EXT=
 ARFLAGS=
 AR=ar $(ARFLAGS) r
 RANLIB= ranlib
+NM= nm
 PERL= perl
 TAR= tar
 TARFLAGS= --no-recursion
@@ -174,7 +175,8 @@ CLEARENV=   TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS}     \
 BUILDENV=      PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
                CC='${CC}' CFLAG='${CFLAG}'                     \
                AS='${CC}' ASFLAG='${CFLAG} -c'                 \
-               AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}'    \
+               AR='${AR}' NM='${NM}' RANLIB='${RANLIB}'        \
+               PERL='${PERL}'                                  \
                SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib'   \
                INSTALL_PREFIX='${INSTALL_PREFIX}'              \
                INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}'   \
@@ -383,12 +385,14 @@ dclean:
        @set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
 
 rehash: rehash.time
-rehash.time: certs
-       @(OPENSSL="`pwd`/util/opensslwrap.sh"; \
-         OPENSSL_DEBUG_MEMORY=on; \
-         export OPENSSL OPENSSL_DEBUG_MEMORY; \
-         $(PERL) tools/c_rehash certs)
-       touch rehash.time
+rehash.time: certs apps
+       @if [ -z "$(CROSS_COMPILE_PREFIX)" ]; then \
+               (OPENSSL="`pwd`/util/opensslwrap.sh"; \
+               OPENSSL_DEBUG_MEMORY=on; \
+               export OPENSSL OPENSSL_DEBUG_MEMORY; \
+               $(PERL) tools/c_rehash certs) && \
+               touch rehash.time; \
+       else :; fi
 
 test:   tests
 
index 465c258..92d50e0 100644 (file)
@@ -14,6 +14,8 @@ CFLAGS=$(CFLAG)
 LDFLAGS=
 SHARED_LDFLAGS=
 
+NM=nm
+
 # LIBNAME contains just the name of the library, without prefix ("lib"
 # on Unix, "cyg" for certain forms under Cygwin...) or suffix (.a, .so,
 # .dll, ...).  This one MUST have a value when using this makefile to
@@ -101,7 +103,7 @@ LINK_SO=    \
     LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
     SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
     SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
-    nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
+    $(NM) -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
     LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
     LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
     LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
index 90d4517..2094de1 100644 (file)
@@ -163,9 +163,7 @@ $(EXE): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
                APPNAME=$(EXE) OBJECTS="$(PROGRAM).o $(E_OBJ)" \
                LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
                link_app.$${shlib_target}
-       -(cd ..; \
-         OPENSSL="`pwd`/util/opensslwrap.sh"; export OPENSSL; \
-         $(PERL) tools/c_rehash certs)
+       @(cd ..; $(MAKE) rehash)
 
 progs.h: progs.pl
        $(PERL) progs.pl $(E_EXE) >progs.h