home: hub: zuo

Download patch

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}"])