215 lines
6.7 KiB
Diff
215 lines
6.7 KiB
Diff
Add this patch from https://github.com/westes/flex/pull/153 with minor changes
|
|
to fix cross compilation.
|
|
|
|
Upstream-Status: Submitted
|
|
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
|
|
From 52d4a3ca249be984614d9204dcc7b957bc04b2ac Mon Sep 17 00:00:00 2001
|
|
From: Alastair Hughes <hobbitalastair@gmail.com>
|
|
Date: Fri, 6 Jan 2017 19:06:03 +1300
|
|
Subject: [PATCH] build: support cross compiling
|
|
|
|
Check for cross compiling. If cross compiling, build stage1flex using a
|
|
custom link command.
|
|
We also override LDADD since that adds the replacement implementations
|
|
that are cross compiled, and instead always use the replacement library
|
|
implementations.
|
|
|
|
We don't use BUILD_OBJEXT and BUILD_EXEEXT since it seems that automake
|
|
does not support these.
|
|
|
|
Fixes #78.
|
|
|
|
Signed-off-by: Alastair Hughes <hobbitalastair@gmail.com>
|
|
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
---
|
|
configure.ac | 3 ++
|
|
m4/ax_prog_cc_for_build.m4 | 125 +++++++++++++++++++++++++++++++++++++++++++++
|
|
src/Makefile.am | 17 ++++++
|
|
3 files changed, 145 insertions(+)
|
|
create mode 100644 m4/ax_prog_cc_for_build.m4
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 901339f..2a7dce2 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -42,6 +42,7 @@ AM_GNU_GETTEXT_VERSION([0.19])
|
|
AC_PROG_YACC
|
|
AM_PROG_LEX
|
|
AC_PROG_CC
|
|
+AX_PROG_CC_FOR_BUILD
|
|
AC_PROG_CXX
|
|
AM_PROG_CC_C_O
|
|
AC_PROG_LN_S
|
|
@@ -75,6 +76,8 @@ AC_ARG_ENABLE([bootstrap],
|
|
[], [enable_bootstrap=yes])
|
|
AM_CONDITIONAL([ENABLE_BOOTSTRAP], [test "x$enable_bootstrap" = xyes])
|
|
|
|
+AM_CONDITIONAL([CROSS], [test "x$cross_compiling" = xyes])
|
|
+
|
|
AC_PATH_PROG([BISON], bison, no)
|
|
AS_IF([test "$BISON" != no],[],
|
|
[ AC_SUBST([BISON], [\${top_srcdir}/build-aux/missing bison])
|
|
diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
|
|
new file mode 100644
|
|
index 0000000..77fd346
|
|
--- /dev/null
|
|
+++ b/m4/ax_prog_cc_for_build.m4
|
|
@@ -0,0 +1,125 @@
|
|
+# ===========================================================================
|
|
+# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
|
|
+# ===========================================================================
|
|
+#
|
|
+# SYNOPSIS
|
|
+#
|
|
+# AX_PROG_CC_FOR_BUILD
|
|
+#
|
|
+# DESCRIPTION
|
|
+#
|
|
+# This macro searches for a C compiler that generates native executables,
|
|
+# that is a C compiler that surely is not a cross-compiler. This can be
|
|
+# useful if you have to generate source code at compile-time like for
|
|
+# example GCC does.
|
|
+#
|
|
+# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything
|
|
+# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).
|
|
+# The value of these variables can be overridden by the user by specifying
|
|
+# a compiler with an environment variable (like you do for standard CC).
|
|
+#
|
|
+# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object
|
|
+# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if
|
|
+# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are
|
|
+# substituted in the Makefile.
|
|
+#
|
|
+# LICENSE
|
|
+#
|
|
+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
|
|
+#
|
|
+# Copying and distribution of this file, with or without modification, are
|
|
+# permitted in any medium without royalty provided the copyright notice
|
|
+# and this notice are preserved. This file is offered as-is, without any
|
|
+# warranty.
|
|
+
|
|
+#serial 8
|
|
+
|
|
+AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
|
|
+AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
|
|
+AC_REQUIRE([AC_PROG_CC])dnl
|
|
+AC_REQUIRE([AC_PROG_CPP])dnl
|
|
+AC_REQUIRE([AC_EXEEXT])dnl
|
|
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
+
|
|
+dnl Use the standard macros, but make them use other variable names
|
|
+dnl
|
|
+pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
|
|
+pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
|
|
+pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
|
|
+pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
|
|
+pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
|
|
+pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
|
|
+pushdef([ac_cv_objext], ac_cv_build_objext)dnl
|
|
+pushdef([ac_exeext], ac_build_exeext)dnl
|
|
+pushdef([ac_objext], ac_build_objext)dnl
|
|
+pushdef([CC], CC_FOR_BUILD)dnl
|
|
+pushdef([CPP], CPP_FOR_BUILD)dnl
|
|
+pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
|
|
+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
|
|
+pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
|
|
+pushdef([host], build)dnl
|
|
+pushdef([host_alias], build_alias)dnl
|
|
+pushdef([host_cpu], build_cpu)dnl
|
|
+pushdef([host_vendor], build_vendor)dnl
|
|
+pushdef([host_os], build_os)dnl
|
|
+pushdef([ac_cv_host], ac_cv_build)dnl
|
|
+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
|
|
+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
|
|
+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
|
|
+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
|
|
+pushdef([ac_cpp], ac_build_cpp)dnl
|
|
+pushdef([ac_compile], ac_build_compile)dnl
|
|
+pushdef([ac_link], ac_build_link)dnl
|
|
+
|
|
+save_cross_compiling=$cross_compiling
|
|
+save_ac_tool_prefix=$ac_tool_prefix
|
|
+cross_compiling=no
|
|
+ac_tool_prefix=
|
|
+
|
|
+AC_PROG_CC
|
|
+AC_PROG_CPP
|
|
+AC_EXEEXT
|
|
+
|
|
+ac_tool_prefix=$save_ac_tool_prefix
|
|
+cross_compiling=$save_cross_compiling
|
|
+
|
|
+dnl Restore the old definitions
|
|
+dnl
|
|
+popdef([ac_link])dnl
|
|
+popdef([ac_compile])dnl
|
|
+popdef([ac_cpp])dnl
|
|
+popdef([ac_cv_host_os])dnl
|
|
+popdef([ac_cv_host_vendor])dnl
|
|
+popdef([ac_cv_host_cpu])dnl
|
|
+popdef([ac_cv_host_alias])dnl
|
|
+popdef([ac_cv_host])dnl
|
|
+popdef([host_os])dnl
|
|
+popdef([host_vendor])dnl
|
|
+popdef([host_cpu])dnl
|
|
+popdef([host_alias])dnl
|
|
+popdef([host])dnl
|
|
+popdef([LDFLAGS])dnl
|
|
+popdef([CPPFLAGS])dnl
|
|
+popdef([CFLAGS])dnl
|
|
+popdef([CPP])dnl
|
|
+popdef([CC])dnl
|
|
+popdef([ac_objext])dnl
|
|
+popdef([ac_exeext])dnl
|
|
+popdef([ac_cv_objext])dnl
|
|
+popdef([ac_cv_exeext])dnl
|
|
+popdef([ac_cv_prog_cc_g])dnl
|
|
+popdef([ac_cv_prog_cc_cross])dnl
|
|
+popdef([ac_cv_prog_cc_works])dnl
|
|
+popdef([ac_cv_prog_gcc])dnl
|
|
+popdef([ac_cv_prog_CPP])dnl
|
|
+
|
|
+dnl Finally, set Makefile variables
|
|
+dnl
|
|
+BUILD_EXEEXT=$ac_build_exeext
|
|
+BUILD_OBJEXT=$ac_build_objext
|
|
+AC_SUBST(BUILD_EXEEXT)dnl
|
|
+AC_SUBST(BUILD_OBJEXT)dnl
|
|
+AC_SUBST([CFLAGS_FOR_BUILD])dnl
|
|
+AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
|
|
+AC_SUBST([LDFLAGS_FOR_BUILD])dnl
|
|
+])
|
|
diff --git a/src/Makefile.am b/src/Makefile.am
|
|
index 3b5e362..05fe8d3 100644
|
|
--- a/src/Makefile.am
|
|
+++ b/src/Makefile.am
|
|
@@ -22,7 +22,24 @@ stage1flex_SOURCES = \
|
|
scan.l \
|
|
$(COMMON_SOURCES)
|
|
|
|
+if CROSS
|
|
+stage1flex_LDADD =
|
|
+stage1flex_SOURCES += \
|
|
+ ../lib/malloc.c \
|
|
+ ../lib/realloc.c \
|
|
+ ../lib/reallocarray.c
|
|
+stage1flex_LINK = $(LIBTOOL) --tag=CC --mode=link $(CC_FOR_BUILD) \
|
|
+ $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@
|
|
+
|
|
+$(stage1flex_OBJECTS): CC=$(CC_FOR_BUILD)
|
|
+$(stage1flex_OBJECTS): CFLAGS=$(CFLAGS_FOR_BUILD)
|
|
+$(stage1flex_OBJECTS): CPP=$(CPP_FOR_BUILD)
|
|
+$(stage1flex_OBJECTS): CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
|
|
+$(stage1flex_OBJECTS): LDFLAGS=$(LDFLAGS_FOR_BUILD)
|
|
+else
|
|
stage1flex_CFLAGS = $(AM_CFLAGS)
|
|
+stage1flex_LINK = $(LINK)
|
|
+endif
|
|
|
|
flex_SOURCES = \
|
|
$(COMMON_SOURCES)
|
|
--
|
|
2.8.1
|