ref: abb9afd2d01c17dc1b3b94835a56f3110e1974de
parent: 4e325e6f4763c65d0227cbadd842ca0b8a83b4fd
author: Matthew Flatt <mflatt@racket-lang.org>
date: Sat Jul 23 12:10:58 CDT 2022
Zuo: support cross compilation via `configure` and `CC_FOR_BUILD`
--- a/Makefile.in
+++ b/Makefile.in
@@ -17,6 +17,11 @@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBS_FOR_BUILD = @LIBS_FOR_BUILD@
+
EMBED_LIBS = @EMBED_LIBS@
.PHONY: zuos-to-run-and-install
@@ -24,7 +29,7 @@
./zuo . zuos-to-run-and-install
zuo: $(srcdir)/zuo.c
- $(CC) $(CPPFLAGS) $(CFLAGS) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS) $(LIBS)
+ $(CC_FOR_BUILD) $(FLAGS_FOR_BUILD) -DZUO_LIB_PATH='"'"$(srcdir)/lib"'"' -o zuo $(srcdir)/zuo.c $(LDFLAGS_FOR_BUILD) $(LIBS_FOR_BUILD)
.PHONY: check
check: zuo
--- a/README.md
+++ b/README.md
@@ -87,6 +87,16 @@
embedded in `.c` source.
+Cross Compiling
+---------------
+
+If you use `./configure --host=...` to cross compile, then you will
+also need to add something like `CC_FOR_BUILD=cc` as a `./configure`
+argument to specify the compiler for a `zuo` to use on the build
+machine. If necessary, you can also specify `CFLAGS_FOR_BUILD`,
+`LDFLAGS_FOR_BUILD`, and/or `LIBS_FOR_BUILD`.
+
+
Embedding Zuo in Another Application
------------------------------------
--- a/configure
+++ b/configure
@@ -589,6 +589,10 @@
ac_subst_vars='LTLIBOBJS
LIBOBJS
EMBED_LIBS
+LIBS_FOR_BUILD
+LDFLAGS_FOR_BUILD
+CFLAGS_FOR_BUILD
+CC_FOR_BUILD
OBJEXT
EXEEXT
ac_ct_CC
@@ -2582,6 +2586,17 @@
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+if test "${CC_FOR_BUILD}" = ""; then
+ CC_FOR_BUILD='$(CC) -O2'
+ CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)'
+ LDFLAGS_FOR_BUILD='$(LDFLAGS)'
+ LIBS_FOR_BUILD='$(LIBS)'
+fi
+
+
+
--- a/configure.ac
+++ b/configure.ac
@@ -25,6 +25,17 @@
AC_PROG_MAKE_SET()
AC_PROG_CC
+if test "${CC_FOR_BUILD}" = ""; then
+ CC_FOR_BUILD='$(CC) -O2'
+ CFLAGS_FOR_BUILD='$(CPPFLAGS) $(CFLAGS)'
+ LDFLAGS_FOR_BUILD='$(LDFLAGS)'
+ LIBS_FOR_BUILD='$(LIBS)'
+fi
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(CFLAGS_FOR_BUILD)
+AC_SUBST(LDFLAGS_FOR_BUILD)
+AC_SUBST(LIBS_FOR_BUILD)
+
AC_SUBST(EMBED_LIBS)
AC_MSG_NOTICE([zuo libraries to embed: "${EMBED_LIBS}"])