cross compilation?

Bryan Chua chua at ayrnetworks.com
Wed Apr 3 10:47:36 EST 2002


../openssh-3.1p1/configure --host=mips-linux --build=i686-linux --with-pam
    does not work.

It selects the correct toolchain prefix, but the configure script bails
on cross-compilation.

Attached is a patch that *might* make the right paranoid assumptions,
but I am not positive.

-- bryan

--- configure.ac.orig	Tue Feb 26 22:12:35 2002
+++ configure.ac	Wed Mar 27 14:28:02 2002
@@ -437,20 +437,6 @@
            ]
    )

-AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
-AC_TRY_RUN(
-
[
-#include <sys/types.h>
-#include <dirent.h>
-int main(void){struct dirent d;return(sizeof(d.d_name)<=sizeof(char));}
-
],
-
[AC_MSG_RESULT(yes)],
-
[
-
	AC_MSG_RESULT(no)
-
	AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
-
]
-)
-
    # Check whether user wants S/Key support
    SKEY_MSG="no"
    AC_ARG_WITH(skey,
@@ -469,11 +455,13 @@
    	
	SKEY_MSG="yes"
    	
    	
	AC_MSG_CHECKING([for s/key support])
-
		AC_TRY_RUN(
+
		AC_TRY_LINK(
    	
		[
-#include <stdio.h>
-#include <skey.h>
-int main() { char *ff = skey_keyinfo(""); ff=""; return 0; }
+
			#include <stdio.h>
+
			#include <skey.h>
+
			],
+
			[
+
			char *ff = skey_keyinfo(""); ff="";
    	
		],
    	
		[AC_MSG_RESULT(yes)],
    	
		[
@@ -625,6 +613,10 @@
    	
	AC_MSG_RESULT(no)
    	
	AC_DEFINE(BROKEN_SNPRINTF)
    	
	AC_MSG_WARN([****** Your snprintf() function is broken, complain to your
vendor])
+
	],
+
	[
+
		AC_MSG_RESULT(assuming no)
+
		AC_DEFINE(BROKEN_SNPRINTF)
    		]
    	)
    fi
@@ -729,22 +721,21 @@

    		# Basic test to check for compatible version and correct linking
    		# *does not* test for RSA - that comes later.
-
	AC_TRY_RUN(
+
	AC_TRY_LINK(
    	
	[
-#include <string.h>
-#include <openssl/rand.h>
-int main(void)
-{
-
char a[2048];
-
memset(a, 0, sizeof(a));
-
RAND_add(a, sizeof(a), sizeof(a));
-
return(RAND_status() <= 0);
-}
+
		#include <string.h>
+
		#include <openssl/rand.h>
+
		],
+
		[
+
		char a[2048];
+
		memset(a, 0, sizeof(a));
+
		RAND_add(a, sizeof(a), sizeof(a));
+
		return(RAND_status() <= 0);
    	
	],
    	
	[
    	
		found_crypto=1
    	
		break;
-
		], []
+
		], [ ]
    		)

    		if test ! -z "$found_crypto" ; then
@@ -800,26 +791,26 @@
    	else
    		LIBS="$saved_LIBS -lRSAglue -lrsaref"
    	fi
-
AC_TRY_RUN([
-#include <string.h>
-#include <openssl/rand.h>
-#include <openssl/rsa.h>
-#include <openssl/bn.h>
-#include <openssl/sha.h>
-int main(void)
-{
-
int num; RSA *key; static unsigned char p_in[] = "blahblah";
-
unsigned char c[256], p[256];
-
memset(c, 0, sizeof(c)); RAND_add(c, sizeof(c), sizeof(c));
-
if ((key=RSA_generate_key(512, 3, NULL, NULL))==NULL) return(1);
-
num = RSA_public_encrypt(sizeof(p_in) - 1, p_in, c, key, RSA_PKCS1_PADDING);
-
return(-1 == RSA_private_decrypt(num, c, p, key, RSA_PKCS1_PADDING));
-}
-
],
-
[
+
AC_TRY_LINK(
+
	[
+
	#include <string.h>
+
	#include <openssl/rand.h>
+
	#include <openssl/rsa.h>
+
	#include <openssl/bn.h>
+
	#include <openssl/sha.h>
+
	],
+
	[
+
	int num; RSA *key; static unsigned char p_in[] = "blahblah";
+
	unsigned char c[256], p[256];
+
	memset(c, 0, sizeof(c)); RAND_add(c, sizeof(c), sizeof(c));
+
	if ((key=RSA_generate_key(512, 3, NULL, NULL))==NULL) return(1);
+
	num = RSA_public_encrypt(sizeof(p_in) - 1, p_in, c, key, RSA_PKCS1_PADDING);
+
	return(-1 == RSA_private_decrypt(num, c, p, key, RSA_PKCS1_PADDING));
+
	],
+
	[
    		rsa_works=1
    		break;
-
], [])
+
	], [])
    done
    LIBS="$saved_LIBS"

@@ -856,6 +847,9 @@
    	[
    		AC_MSG_RESULT(no)
    		AC_MSG_ERROR(Your OpenSSL headers do not match your library)
+
],
+
[
+
	AC_MSG_RESULT(hoping so)
    	]
    )

@@ -885,6 +879,12 @@
    		# Default to use of the rand helper if OpenSSL doesn't
    		# seed itself
    		USE_RAND_HELPER=yes
+
],
+
[
+
	AC_MSG_RESULT(not sure)
+
	# Default to use of the rand helper if OpenSSL doesn't
+
	# seed itself
+
	USE_RAND_HELPER=yes
    	]
    )

@@ -1457,7 +1457,10 @@
    #else
    main() { exit(0); }
    #endif
-
	], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ]
+
	],
+
	[ true ],
+
	[ AC_DEFINE(BROKEN_SNPRINTF) ],
+
	[ AC_DEFINE(BROKEN_SNPRINTF) ]
    	)
    fi
    AC_SUBST(NO_SFTP)
@@ -1776,12 +1779,11 @@
    		]
    	)
    fi
-AC_CHECK_FILE("/dev/ptc",
-
[
-
	AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
-
	have_dev_ptc=1
-
]
-)
+
+if test -f "/dev/ptc" ; then
+
AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
+
have_dev_ptc=1
+fi

    # Options from here on. Some of these are preset by platform above
    AC_ARG_WITH(mantype,
--- sftp-glob.c.orig	Tue Feb 12 19:10:33 2002
+++ sftp-glob.c	Wed Mar 27 14:27:30 2002
@@ -78,12 +78,9 @@
    	 * Solaris defines dirent->d_name as a one byte array and expects
    	 * you to hack around it.
    	 */
-#ifdef BROKEN_ONE_BYTE_DIRENT_D_NAME
-
strlcpy(ret->d_name, od->dir[od->offset++]->filename, MAXPATHLEN);
-#else
    	strlcpy(ret->d_name, od->dir[od->offset++]->filename,
-
       sizeof(ret->d_name));
-#endif
+
	(sizeof(ret->d_name) <= sizeof(char))?
+
	MAXPATHLEN: sizeof(ret->d_name));
    #ifdef __GNU_LIBRARY__
    	/*
    	 * Idiot glibc uses extensions to struct dirent for readdir with







More information about the openssh-unix-dev mailing list