summaryrefslogtreecommitdiff
path: root/package/libcodec2/0001-Use-the-native-compiler-to-build-generate_cookbook.patch
blob: ede31dbc2abae7ac1e2a9d464121e500fe5c6a09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
From c7c769990bca3049bc389dcbd9985adaec134946 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 29 Aug 2015 11:59:18 +0200
Subject: [PATCH] Use the native compiler to build generate_cookbook

The generate_cookbook binary needs to be executed at build time. When
cross-compiling, this means that it should be built with the native
compiler rather than the cross-compiler.

To achieve this, this commit imports the AX_CC_FOR_BUILD autoconf
macro from the GNU Autoconf Archive project, and adjusts
src/Makefile.am to use CC_FOR_BUILD to build generate_cookbook.

Based on initial work by Bernd Kuhls.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile.am           |  1 +
 configure.ac          |  2 ++
 m4/ax_cc_for_build.m4 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++
 src/Makefile.am       |  3 ++
 4 files changed, 83 insertions(+)
 create mode 100644 m4/ax_cc_for_build.m4

diff --git a/Makefile.am b/Makefile.am
index 4468bca..bd3ce01 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,6 +2,7 @@ AM_CFLAGS = -Isrc -fPIC -Wall -O3 -lm
 AUTOMAKE_OPTIONS = gnu 
 NAME = codec2
 AM_CPPFLAGS = $(AM_CFLAGS)
+ACLOCAL_AMFLAGS = -I m4
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = codec2.pc
diff --git a/configure.ac b/configure.ac
index 493c517..7520af6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,10 +4,12 @@
 AC_PREREQ([2.59])
 AC_INIT(codec2, 0.2, david@rowetel.com)
 AM_INIT_AUTOMAKE
+AC_CONFIG_MACRO_DIR([m4])
 
 # Checks for programs.
 AC_PROG_CC
 AC_PROG_LIBTOOL
+AX_CC_FOR_BUILD
 
 # Checks for libraries.
 # FIXME: Replace `main' with a function in `-lm':
diff --git a/m4/ax_cc_for_build.m4 b/m4/ax_cc_for_build.m4
new file mode 100644
index 0000000..c880fd0
--- /dev/null
+++ b/m4/ax_cc_for_build.m4
@@ -0,0 +1,77 @@
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_cc_for_build.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CC_FOR_BUILD
+#
+# DESCRIPTION
+#
+#   Find a build-time compiler. Sets CC_FOR_BUILD and EXEEXT_FOR_BUILD.
+#
+# LICENSE
+#
+#   Copyright (c) 2010 Reuben Thomas <rrt@sc3d.org>
+#   Copyright (c) 1999 Richard Henderson <rth@redhat.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 2
+
+dnl Get a default for CC_FOR_BUILD to put into Makefile.
+AC_DEFUN([AX_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
+AC_SUBST(CC_FOR_BUILD)
+# Also set EXEEXT_FOR_BUILD.
+if test "x$cross_compiling" = "xno"; then
+  EXEEXT_FOR_BUILD='$(EXEEXT)'
+else
+  AC_CACHE_CHECK([for build system executable suffix], bfd_cv_build_exeext,
+    [rm -f conftest*
+     echo 'int main () { return 0; }' > conftest.c
+     bfd_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) ;;
+       *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
+       esac
+     done
+     rm -f conftest*
+     test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no])
+  EXEEXT_FOR_BUILD=""
+  test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
+fi
+AC_SUBST(EXEEXT_FOR_BUILD)])dnl
diff --git a/src/Makefile.am b/src/Makefile.am
index 1153b3c..719088d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -77,6 +77,9 @@ CODEBOOKSGE= \
 
 noinst_PROGRAMS = generate_codebook genlspdtcb
 
+generate_codebook$(EXEEXT_FOR_BUILD): generate_codebook.c
+	$(CC_FOR_BUILD) -o $@ generate_codebook.c -lm
+
 codebook.$(OBJEXT): codebook.c
 codebookd.$(OBJEXT): codebookd.c
 codebookdt.$(OBJEXT): codebookdt.c
-- 
2.5.0