From 8196257f00a03d342be9a8713a7610be7c7a1d85 Mon Sep 17 00:00:00 2001
From: "Dr. Stephen Henson" <steve@openssl.org>
Date: Thu, 15 Oct 2009 14:14:35 +0000
Subject: [PATCH] Cross compilation updates.

---
 Makefile.org      | 14 ++++++++------
 apps/Makefile     |  8 +++++---
 fips/Makefile     |  8 ++++++--
 fips/fipsld       | 12 ++++++++++--
 fips/sha/Makefile |  6 +++++-
 5 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/Makefile.org b/Makefile.org
index 2c70800982..e7897814ae 100644
--- a/Makefile.org
+++ b/Makefile.org
@@ -519,12 +519,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)" ]; then \
+		(OPENSSL="`pwd`/util/opensslwrap.sh"; \
+		OPENSSL_DEBUG_MEMORY=on; \
+		export OPENSSL OPENSSL_DEBUG_MEMORY; \
+		$(PERL) tools/c_rehash certs) && \
+		touch rehash.time; \
+	fi
 
 test:   tests
 
diff --git a/apps/Makefile b/apps/Makefile
index 49f04d6b34..a54881542f 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -161,9 +161,11 @@ $(EXE): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
 		CC="$${CC}" 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)
+	@if [ -z "$(CROSS_COMPILE)" ]; then \
+		(cd ..; \
+	  	OPENSSL="`pwd`/util/opensslwrap.sh"; export OPENSSL; \
+	  	$(PERL) tools/c_rehash certs) \
+	fi
 
 progs.h: progs.pl
 	$(PERL) progs.pl $(E_EXE) >progs.h
diff --git a/fips/Makefile b/fips/Makefile
index 6e7d56945a..720a883a69 100644
--- a/fips/Makefile
+++ b/fips/Makefile
@@ -63,7 +63,7 @@ testapps:
 all:
 	@if [ -z "$(FIPSLIBDIR)" ]; then \
 		$(MAKE) -e subdirs lib fips_premain_dso$(EXE_EXT); \
-	else \
+	else  \
 		$(MAKE) -e lib fips_premain_dso$(EXE_EXT) fips_standalone_sha1$(EXE_EXT); \
 	fi
 
@@ -123,7 +123,11 @@ fips_premain_dso$(EXE_EXT): fips_premain.c
 		$(FIPSLIBDIR)fipscanister.o ../libcrypto.a $(EX_LIBS)
 # this is executed only when linking with external fipscanister.o
 fips_standalone_sha1$(EXE_EXT):	sha/fips_standalone_sha1.c
-	$(CC) $(CFLAGS) -DFIPSCANISTER_O -o $@ sha/fips_standalone_sha1.c $(FIPSLIBDIR)fipscanister.o $(EX_LIBS)
+	if [ -z $(HOSTCC) ] ; then \
+		$(CC) $(CFLAGS) -DFIPSCANISTER_O -o $@ sha/fips_standalone_sha1.c $(FIPSLIBDIR)fipscanister.o $(EX_LIBS) ; \
+	else \
+		$(HOSTCC) $(HOSTCFLAGS) -o $ $@ -I../include -I../crypto sha/fips_standalone_sha1.c ../crypto/sha/sha1dgst.c ; \
+	fi
 
 subdirs:
 	@target=all; $(RECURSIVE_MAKE)
diff --git a/fips/fipsld b/fips/fipsld
index c71d4d95a5..8c26c8596d 100755
--- a/fips/fipsld
+++ b/fips/fipsld
@@ -117,7 +117,11 @@ lib*|*.dll)	# must be linking a shared lib...
 		${_WL_PREMAIN} "$@"
 
 	# generate signature...
-	SIG=`"${THERE}/fips/fips_premain_dso" "${TARGET}"`
+	if [ -z "${FIPS_SIG}" ]; then
+		SIG=`"${THERE}/fips/fips_premain_dso" "${TARGET}"`
+	else
+		SIG=`"${FIPS_SIG}" -dso "${TARGET}"`
+	fi
 	/bin/rm -f "${TARGET}"
 	if [ -z "${SIG}" ]; then
 	   echo "unable to collect signature"; exit 1
@@ -156,7 +160,11 @@ lib*|*.dll)	# must be linking a shared lib...
 		${_WL_PREMAIN} "$@"
 
 	# generate signature...
-	SIG=`"${TARGET}"`
+	if [ -z "${FIPS_SIG}" ]; then
+		SIG=`"${TARGET}"`
+	else
+		SIG=`"${FIPS_SIG}" -exe "${TARGET}"`
+	fi
 	/bin/rm -f "${TARGET}"
 	if [ -z "${SIG}" ]; then
 	   echo "unable to collect signature"; exit 1
diff --git a/fips/sha/Makefile b/fips/sha/Makefile
index a661640bc6..0f8cca975a 100644
--- a/fips/sha/Makefile
+++ b/fips/sha/Makefile
@@ -46,8 +46,12 @@ lib:	$(LIBOBJ)
 	@echo $(LIBOBJ) > lib
 
 ../fips_standalone_sha1$(EXE_EXT): fips_standalone_sha1.o
+	if [ -z "$(HOSTCC)" ] ; then \
 	FIPS_SHA_ASM=""; for i in $(SHA1_ASM_OBJ) sha1dgst.o ; do FIPS_SHA_ASM="$$FIPS_SHA_ASM ../../crypto/sha/$$i" ; done; \
-	$(CC) -o $@ $(CFLAGS) fips_standalone_sha1.o $$FIPS_SHA_ASM
+	$(CC) -o $@ $(CFLAGS) fips_standalone_sha1.o $$FIPS_SHA_ASM ; \
+	else \
+		$(HOSTCC) $(HOSTCFLAGS) -o $ $@ -I../../include -I../../crypto fips_standalone_sha1.c ../../crypto/sha/sha1dgst.c ; \
+	fi
 
 files:
 	$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
-- 
2.25.1