View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000599 | LDMud 3.3 | Compilation, Installation | public | 2009-01-16 17:31 | 2009-01-16 17:32 |
| Reporter | peng | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | new | Resolution | open | ||
| Product Version | 3.3.718 | ||||
| Summary | 0000599: patch to allow cross-compiling | ||||
| Description | With this patch its possible to cross-compile the driver like in the appended shell-script. | ||||
| Tags | ldmud-extensions | ||||
| Attached Files | cross_compiling.diff (10,643 bytes)
Index: Makefile.in
===================================================================
--- Makefile.in (revision 2485)
+++ Makefile.in (working copy)
@@ -6,6 +6,7 @@
mkinstalldirs=$(SHELL) @top_srcdir@/mkinstalldirs
#
CC=@CC@
+CC_FOR_BUILD=@CC_FOR_BUILD@
#
YACC = @YACC@
YACCTAB = @YACCTAB@
@@ -152,8 +153,8 @@
lint *.c
clean:
- $(RM) $(YACCTAB)h $(YACCTAB)c make_func.c *.o mkfunc@EXEEXT@
- $(RM) dftables@EXEEXT@ pcre/chartables.c
+ $(RM) $(YACCTAB)h $(YACCTAB)c make_func.c *.o mkfunc@EXEEXT_FOR_BUILD@
+ $(RM) dftables@EXEEXT_FOR_BUILD@ pcre/chartables.c
$(RM) stdstrings.c stdstrings.h
$(RM) efun_defs.c instrs.h lang.y lang.h lang.c y.output tags TAGS
$(RM) ldmud@EXEEXT@ core mudlib/core mudlib/debug.log lpmud.log
@@ -180,31 +181,36 @@
@MOVE_YACC_TAB@ make_func.c
@CLEAN_YACC_TAB@
-#mkfunc.o : mkfunc.c make_func.c driver.h config.h machine.h port.h
-# $(CC) $(CFLAGS) -c mkfunc.c
+hash_b.o : hash.h
+ $(CC_FOR_BUILD) $(CFLAGS) -c hash.c -o hash_b.o
-mkfunc@EXEEXT@: mkfunc.o hash.o exec.h
- $(CC) @OPTIMIZE_LINKING@ $(LDFLAGS) mkfunc.o hash.o -o mkfunc@EXEEXT@
+mkfunc.o : make_func.c ../mudlib/sys/driver_hook.h hash.h exec.h \
+ my-alloca.h driver.h bytecode.h typedefs.h port.h config.h hosts/unix.h \
+ hosts/be/be.h machine.h
+ $(CC_FOR_BUILD) $(CFLAGS) -c mkfunc.c
+
+mkfunc@EXEEXT_FOR_BUILD@: mkfunc.o hash_b.o exec.h
+ $(CC_FOR_BUILD) @OPTIMIZE_LINKING@ $(LDFLAGS) mkfunc.o hash_b.o -o mkfunc@EXEEXT_FOR_BUILD@
dftables.o : pcre/dftables.c pcre/maketables.c pcre/config.h
- $(CC) $(CFLAGS) -c pcre/dftables.c -o dftables.o
+ $(CC_FOR_BUILD) $(CFLAGS) -c pcre/dftables.c -o dftables.o
-dftables@EXEEXT@ : dftables.o
- $(CC) @OPTIMIZE_LINKING@ $(LDFLAGS) dftables.o -o dftables@EXEEXT@
+dftables@EXEEXT_FOR_BUILD@ : dftables.o
+ $(CC_FOR_BUILD) @OPTIMIZE_LINKING@ $(LDFLAGS) dftables.o -o dftables@EXEEXT_FOR_BUILD@
-lang.y: mkfunc@EXEEXT@ prolang.y config.h
+lang.y: mkfunc@EXEEXT_FOR_BUILD@ prolang.y config.h
$(RM) lang.y
- ./mkfunc@EXEEXT@ lang
+ ./mkfunc@EXEEXT_FOR_BUILD@ lang
-efun_defs.c instrs.h: func_spec mkfunc@EXEEXT@ config.h machine.h
+efun_defs.c instrs.h: func_spec mkfunc@EXEEXT_FOR_BUILD@ config.h machine.h
$(RM) instrs.h
$(RM) efun_defs.c
- ./mkfunc@EXEEXT@ instrs
+ ./mkfunc@EXEEXT_FOR_BUILD@ instrs
-stdstrings.c stdstrings.h: string_spec mkfunc@EXEEXT@ config.h machine.h
+stdstrings.c stdstrings.h: string_spec mkfunc@EXEEXT_FOR_BUILD@ config.h machine.h
$(RM) stdstrings.c
$(RM) stdstrings.h
- ./mkfunc@EXEEXT@ strings
+ ./mkfunc@EXEEXT_FOR_BUILD@ strings
lang.c lang.h: lang.y
$(YACC) -d -v lang.y
@@ -212,8 +218,8 @@
@CLEAN_YACC_TAB@
$(MV) $(YACCTAB)h lang.h
-pcre/chartables.c : dftables@EXEEXT@
- ./dftables@EXEEXT@ pcre/chartables.c
+pcre/chartables.c : dftables@EXEEXT_FOR_BUILD@
+ ./dftables@EXEEXT_FOR_BUILD@ pcre/chartables.c
random.o : random.c config.h driver.h
$(CC) $(CFLAGS) $(SFMT_FLAGS) -c random.c -o random.o
@@ -391,10 +397,6 @@
simulate.h gcollect.h mempools.h driver.h typedefs.h sent.h bytecode.h \
port.h config.h hosts/unix.h hosts/be/be.h machine.h
-mkfunc.o : make_func.c ../mudlib/sys/driver_hook.h hash.h exec.h \
- my-alloca.h driver.h bytecode.h typedefs.h port.h config.h hosts/unix.h \
- hosts/be/be.h machine.h
-
mregex.o : ../mudlib/sys/regexp.h ../mudlib/sys/driver_hook.h \
../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h simulate.h \
regexp.h pkg-pcre.h mstrings.h main.h interpret.h hash.h gcollect.h \
Index: autoconf/configure.in
===================================================================
--- autoconf/configure.in (revision 2485)
+++ autoconf/configure.in (working copy)
@@ -87,6 +87,39 @@
not_available="[$not_available], $1"
fi])
+dnl Get a default for CC_FOR_BUILD to put into Makefile.
+AC_DEFUN([AC_CC_FOR_BUILD],
+[# Put a plausible default for CC_FOR_BUILD in Makefile.
+if test -z "$CC_FOR_BUILD"; then
+ if test "x$cross_compiling" = "xno"; then
+ CC_FOR_BUILD='$(CC)'
+ else
+ CC_FOR_BUILD=gcc
+ fi
+fi])
+
+dnl Also set EXEEXT_FOR_BUILD.
+AC_DEFUN([AC_CC_EXEEXT_FOR_BUILD],
+[if test "x$cross_compiling" = "xno"; then
+ EXEEXT_FOR_BUILD='$(EXEEXT)'
+else
+ AC_CACHE_CHECK([for build system executable suffix], ac_cv_build_exeext,
+ [rm -f conftest*
+ echo 'int main () { return 0; }' > conftest.c
+ ac_cv_build_exeext=
+ ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5
+ for file in conftest.*; do
+ case $file in
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
+ *) ac_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
+ esac
+ done
+ rm -f conftest*
+ test x"${ac_cv_build_exeext}" = x && ac_cv_build_exeext=no])
+ EXEEXT_FOR_BUILD=""
+ test x"${ac_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${ac_cv_build_exeext}
+fi])
+
dnl
dnl let's start
AC_INIT(prolang.y)
@@ -505,6 +540,8 @@
dnl select a C-Compiler
dnl
AC_PROG_CC
+AC_CC_FOR_BUILD
+AC_CC_EXEEXT_FOR_BUILD
# The newer versions of gcc/egcs running on SunOS fall into catatonia when
# asked to compile this test with any optimisation. To be able to run
@@ -697,7 +734,8 @@
}
],
lp_cv_need_lib_resolv=no,
- lp_cv_need_lib_resolv=yes
+ lp_cv_need_lib_resolv=yes,
+ lp_cv_need_lib_resolv=no
))
if test "$lp_cv_need_lib_resolv" = "yes"; then
AC_CHECK_LIB(resolv,main, LIBS="$LIBS -lresolv")
@@ -815,7 +853,8 @@
}
],
lp_cv_need_lib_inet6=no,
- lp_cv_need_lib_inet6=yes
+ lp_cv_need_lib_inet6=yes,
+ lp_cv_need_lib_inet6=no
))
if test "$lp_cv_need_lib_inet6" = "yes"; then
AC_CHECK_LIB(inet6,main, LIBS="$LIBS -linet6")
@@ -885,6 +925,8 @@
}
],
lp_cv_need_lib_ssl=no,
- lp_cv_need_lib_ssl=yes
+ lp_cv_need_lib_ssl=yes,
+ lp_cv_need_lib_ssl=no
))
if test "$lp_cv_need_lib_ssl" = "yes"; then
@@ -910,6 +951,8 @@
}
],
lp_cv_need_lib_crypto=no,
- lp_cv_need_lib_crypto=yes
+ lp_cv_need_lib_crypto=yes,
+ lp_cv_need_lib_crypto=no
))
if test "$lp_cv_need_lib_crypto" = "yes"; then
@@ -958,6 +1000,8 @@
}
],
lp_cv_need_lib_gnutls=no,
- lp_cv_need_lib_gnutls=yes
+ lp_cv_need_lib_gnutls=yes,
+ lp_cv_need_lib_gnutls=no
))
if test "$lp_cv_need_lib_gnutls" = "yes"; then
@@ -983,7 +1025,8 @@
}
],
lp_cv_has_gnutls_version=8,
- lp_cv_has_gnutls_version=7
+ lp_cv_has_gnutls_version=7,
+ lp_cv_has_gnutls_version=8
))
LIBS="$savelibs"
AC_DEFINE_UNQUOTED(HAS_GNUTLS_VERSION, $lp_cv_has_gnutls_version, [version of GNUTLS library])
@@ -1049,7 +1092,8 @@
}
],
lp_cv_need_lib_pthread=no,
- lp_cv_need_lib_pthread=yes
+ lp_cv_need_lib_pthread=yes,
+ lp_cv_need_lib_pthread=no
))
if test "$lp_cv_need_lib_pthread" = "yes"; then
lp_cv_has_lib_pthread=no
@@ -1076,6 +1120,7 @@
return 0;
}
],lp_cv_has_pthread_atfork=yes,
+ lp_cv_has_pthread_atfork=no,
lp_cv_has_pthread_atfork=no
)
)
@@ -1120,6 +1165,7 @@
}
],
lp_cv_has_pcre=yes,
+ lp_cv_has_pcre=no,
lp_cv_has_pcre=no
))
CFLAGS="$saveflags"
@@ -1234,7 +1280,8 @@
}
],
lp_cv_need_lib_iconv=no,
- lp_cv_need_lib_iconv=yes
+ lp_cv_need_lib_iconv=yes,
+ lp_cv_need_lib_iconv=no
))
if test "$lp_cv_need_lib_iconv" = "yes"; then
# Search the libraries
@@ -1387,7 +1434,8 @@
}
],
lp_cv_need_lib_z=no,
- lp_cv_need_lib_z=yes
+ lp_cv_need_lib_z=yes,
+ lp_cv_need_lib_z=no
))
if test "$lp_cv_need_lib_z" = "yes"; then
AC_CHECK_LIB(z,main, PKGLIBS="$PKGLIBS -lz")
@@ -1408,7 +1456,8 @@
}
],
lp_cv_need_lib_nsl=no,
- lp_cv_need_lib_nsl=yes
+ lp_cv_need_lib_nsl=yes,
+ lp_cv_need_lib_nsl=no
))
if test "$lp_cv_need_lib_nsl" = "yes"; then
AC_CHECK_LIB(nsl,main, PKGLIBS="$PKGLIBS -lnsl")
@@ -1523,6 +1572,7 @@
}
],
lp_cv_need_lib_ssl=no,
+ lp_cv_need_lib_ssl=yes,
lp_cv_need_lib_ssl=yes
))
if test "$lp_cv_need_lib_ssl" = "yes"; then
@@ -1543,7 +1593,8 @@
}
],
lp_cv_need_lib_crypto=no,
- lp_cv_need_lib_crypto=yes
+ lp_cv_need_lib_crypto=yes,
+ lp_cv_need_lib_crypto=no
))
if test "$lp_cv_need_lib_crypto" = "yes"; then
AC_CHECK_LIB(crypto,main, PKGLIBS="$PKGLIBS -lcrypto")
@@ -1775,7 +1826,9 @@
}
],
lp_cv_sys_rename_handles_directories=yes,
-lp_cv_sys_rename_handles_directories=no))
+lp_cv_sys_rename_handles_directories=no,
+lp_cv_sys_rename_handles_directories=yes,
+))
if test $lp_cv_sys_rename_handles_directories = yes; then
AC_DEFINE(RENAME_HANDLES_DIRECTORIES, 1, [Can rename handle directories?])
fi
@@ -1941,7 +1994,9 @@
exit(0);
}
], lp_cv_prop_strtol_broken=no,
-lp_cv_prop_strtol_broken=yes))
+lp_cv_prop_strtol_broken=yes,
+lp_cv_prop_strtol_broken=no
+))
if test $lp_cv_prop_strtol_broken = yes; then
AC_DEFINE(STRTOL_BROKEN, 1, [the atari strtol() used to consider characters '9' < c < 'A' to be numeric])
fi
@@ -2619,7 +2674,9 @@
POINTER p;
{ return 1; }
#endif
-],SBRK_OK=1)
+],SBRK_OK=1,
+ SBRK_OK=0,
+ SBRK_OK=1)
if test -n "${SBRK_OK}"; then
if test -z "${TESTFLAG}"; then
AC_DEFINE(SBRK_OK, 1, [can we define our own malloc() safely?])
@@ -2659,7 +2716,12 @@
#include "${srcdir}/util/overhead.c"
EOF
${CC-cc} -o conftest conftest.c
-lp_cv_sys_malloc_overhead=`./conftest --terse`
+if test "x$cross_compiling" = "xyes"; then
+ lp_cv_sys_malloc_overhead=0
+ AC_MSG_RESULT("cross compiling, please set it by hand")
+else
+ lp_cv_sys_malloc_overhead=`./conftest --terse`
+fi
rm -f conftest*
)
AC_DEFINE_UNQUOTED(EXTERN_MALLOC_OVERHEAD,$lp_cv_sys_malloc_overhead,
@@ -2707,6 +2769,8 @@
AC_SUBST(YACCTAB)
AC_SUBST(CONFIG_SHELL)
AC_SUBST(EXEEXT)
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(EXEEXT_FOR_BUILD)
dnl
dnl additional replacements:
| ||||