summaryrefslogtreecommitdiff
path: root/dev-lang/nasm/files/nasm-2.16-autoconf-macro-fixes.patch
blob: c2efc5b2e2f65a0f2cb04f82f4976229ffa499bf (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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
From 5a2d629501d57301fe1d85fe6b2576e318f523d1 Mon Sep 17 00:00:00 2001
From: "H. Peter Anvin" <hpa@zytor.com>
Date: Sun, 19 Feb 2023 21:26:15 -0800
Subject: [PATCH] autoconf: a much of macro fixes... not sure how this ever
 worked?

Exposed a bunch of problems with the autoconf m4 macro
library. Hopefulyy fix it, and tidy it up in the process.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
--- /dev/null
+++ b/autoconf/m4/pa_add_cppflags.m4
@@ -0,0 +1,9 @@
+dnl --------------------------------------------------------------------------
+dnl PA_ADD_CPPFLAGS(variable, flag [,actual_flag [,success [,failure]]]])
+dnl
+dnl Attempt to add the given option to xFLAGS, if it doesn't break
+dnl compilation.  If the option to be tested is different than the
+dnl option that should actually be added, add the option to be
+dnl actually added as a second argument.
+dnl --------------------------------------------------------------------------
+AC_DEFUN([PA_ADD_CPPFLAGS], [PA_ADD_FLAGS(CPPFLAGS, [$1], [$2], [$3], [$4])])
--- a/autoconf/m4/pa_add_flags.m4
+++ b/autoconf/m4/pa_add_flags.m4
@@ -1,23 +1,39 @@
 dnl --------------------------------------------------------------------------
-dnl PA_ADD_FLAGS(variable, flag [,actual_flag [,success [,failure]]])
+dnl PA_ADD_FLAGS(flagvar, flags)
 dnl
-dnl Attempt to add the given option to CPPFLAGS, if it doesn't break
-dnl compilation.  If the option to be tested is different than the
-dnl option that should actually be added, add the option to be
-dnl actually added as a second argument.
+dnl  Add [flags] to the variable [flagvar] if and only if it is accepted
+dnl  by all languages affected by [flagvar], if those languages have
+dnl  been previously seen in the script.
 dnl --------------------------------------------------------------------------
 AC_DEFUN([PA_ADD_FLAGS],
-[AC_MSG_CHECKING([if $CC accepts $2])
- pa_add_flags__old_flags="$$1"
- $1="$$1 $2"
- AC_LINK_IFELSE(
-  [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
-   [printf("Hello, World!\n");])],
-  [AC_MSG_RESULT([yes])
-   $1="$pa_add_flags__old_flags ifelse([$3],[],[$2],[$3])"
-   AC_DEFINE(PA_SYM([$1_],[$2]), 1,
-    [Define to 1 if compiled with the `$2' compiler flag])
+[
+  AS_VAR_PUSHDEF([old], [_$0_$1_orig])
+  AS_VAR_PUSHDEF([ok], [_$0_$1_ok])
+  AS_VAR_PUSHDEF([flags], [$1])
+
+  AS_VAR_COPY([old], [flags])
+  AS_VAR_SET([flags], ["$flags $2"])
+  AS_VAR_SET([ok], [yes])
+
+  PA_LANG_FOREACH(PA_FLAGS_LANGLIST($1),
+    [AS_VAR_IF([ok], [yes],
+     [AC_MSG_CHECKING([if $]_AC_CC[ accepts $2])
+      PA_BUILD_IFELSE([],
+      [AC_MSG_RESULT([yes])],
+      [AC_MSG_RESULT([no])
+       AS_VAR_SET([ok], [no])])])
+     ])
+
+ AS_VAR_IF([ok], [yes],
+  [m4_ifnblank([$3],[AS_VAR_SET([flags], ["$old $3"])])
+   m4_foreach_w([_pa_add_flags_flag], [m4_ifblank([$3],[$2],[$3])],
+   [AC_DEFINE(PA_SYM([$1_]_pa_add_flags_flag), 1,
+    [Define to 1 if compiled with the ]_pa_add_flags_flag[ compiler flag])])
    $4],
-  [AC_MSG_RESULT([no])
-   $1="$pa_add_flags__old_flags"
-   $5])])
+  [AS_VAR_SET([flags], ["$old"])
+   $5])
+
+  AS_VAR_POPDEF([flags])
+  AS_VAR_POPDEF([ok])
+  AS_VAR_POPDEF([old])
+])
--- /dev/null
+++ b/autoconf/m4/pa_build_ifelse.m4
@@ -0,0 +1,16 @@
+dnl --------------------------------------------------------------------------
+dnl PA_BUILD_IFELSE(input [,success [,failure]])
+dnl
+dnl  Same as AC_LINK_IFELSE for languages where linking is applicable,
+dnl  otherwise AC_COMPILE_IFELSE.
+dnl
+dnl If the first argument is empty, use _AC_LANG_IO_PROGRAM.
+dnl --------------------------------------------------------------------------
+m4_defun([_PA_BUILD_IFELSE],
+[m4_case(_AC_LANG,
+ [Erlang], [AC_COMPILE_IFELSE($@)],
+ [AC_LINK_IFELSE($@)])])
+
+AC_DEFUN([PA_BUILD_IFELSE],
+[_PA_BUILD_IFELSE([m4_ifblank([$1],[AC_LANG_SOURCE(_AC_LANG_IO_PROGRAM)],
+ [$1])],[$2],[$3])])
--- /dev/null
+++ b/autoconf/m4/pa_flags_langlist.m4
@@ -0,0 +1,19 @@
+dnl --------------------------------------------------------------------------
+dnl PA_FLAGS_LANGLIST(flagvar)
+dnl
+dnl  Return a list of languages affected by the variable flagvar.
+dnl  If flagvar is unknown, assume it affects the current language.
+dnl --------------------------------------------------------------------------
+AC_DEFUN([PA_FLAGS_LANGLIST],
+[m4_dquote(m4_case([$1],
+	[CPPFLAGS], [[C],[C++],[Objective C],[Objective C++]],
+	[CFLAGS], [[C]],
+	[CXXFLAGS], [[C++]],
+	[FFLAGS], [[Fortran 77]],
+	[FCFLAGS], [[Fortran]],
+	[ERLCFLAGS], [[Erlang]],
+	[OBJCFLAGS], [[Objective C]],
+	[OBJCXXFLAGS], [[Objective C++]],
+	[GOFLAGS], [[Go]],
+	[LDFLAGS], [[C],[C++],[Fortran 77],[Fortran],[Objective C],[Objective C++],[Go]],
+	m4_dquote(_AC_LANG)))])
--- /dev/null
+++ b/autoconf/m4/pa_lang_foreach.m4
@@ -0,0 +1,15 @@
+dnl --------------------------------------------------------------------------
+dnl PA_LANG_FOREACH(subset, body)
+dnl
+dnl  Expand [body] for each language encountered in the configure script also
+dnl  present in [subset], or all if [subset] is empty
+dnl --------------------------------------------------------------------------
+AC_DEFUN([_PA_LANG_DO],dnl
+[AC_LANG([$2])dnl
+$1])
+
+AC_DEFUN([PA_LANG_FOREACH],dnl
+[m4_pushdef([_pa_lang_foreach_current],[_AC_LANG])dnl
+m4_map_args([m4_curry([_PA_LANG_DO],[$2])],m4_unquote(PA_LANG_SEEN_LIST($1)))dnl
+AC_LANG(_pa_lang_foreach_current)dnl
+m4_popdef([_pa_lang_foreach_current])])
--- /dev/null
+++ b/autoconf/m4/pa_lang_seen_list.m4
@@ -0,0 +1,20 @@
+dnl --------------------------------------------------------------------------
+dnl PA_LANG_SEEN_LIST(subset)
+dnl
+dnl  List of the language lang has been used in the configuration
+dnl  script so far, possibly subset by [subset].
+dnl
+dnl This relies on overriding _AC_LANG_SET(from, to),
+dnl the internal implementation of _AC_LANG.
+dnl --------------------------------------------------------------------------
+m4_ifndef([_PA_LANG_SET],
+[m4_rename([_AC_LANG_SET], [_PA_LANG_SET])dnl
+m4_defun([_AC_LANG_SET], [m4_set_add([_PA_LANG_SEEN_SET],[$2])dnl
+_PA_LANG_SET($@)])])
+
+AC_DEFUN([PA_LANG_SEEN_LIST],
+[m4_set_delete([_pa_lang_seen_subset])dnl
+m4_pushdef([_pa_lang_seen_subset_list],m4_ifnblank([$1],[$1],m4_dquote(m4_set_list([_PA_LANG_SEEN_SET]))))dnl
+m4_set_add_all([_pa_lang_seen_subset],_pa_lang_seen_subset_list)dnl
+m4_cdr(m4_set_intersection([_pa_lang_seen_subset],[_PA_LANG_SEEN_SET]))dnl
+m4_popdef([_pa_lang_seen_subset_list])])
--- a/configure.ac
+++ b/configure.ac
@@ -12,9 +12,6 @@ dnl start; this is used to generate config/unconfig.h.
 AH_BOTTOM([
 /* Begin unconfig.h */])
 
-dnl Save initial CFLAGS, to see if -g -O2 came from configure or not
-pa_init_cflags="$CFLAGS"
-
 dnl This prevents us from running Wine and thinking we are not
 dnl cross-compiling when in fact we are; running Wine here is at
 dnl the best very slow and doesn't buy us a single thing at all.
@@ -27,35 +24,29 @@ AC_CANONICAL_HOST
 dnl Enable any available C extensions
 AC_PROG_CC
 AC_USE_SYSTEM_EXTENSIONS
-AC_SYS_LARGEFILE
-PA_ADD_CFLAGS([-std=c17], [], [],
-[PA_ADD_CFLAGS([-std=c11], [], [],
- [PA_ADD_CFLAGS([-std=c99])])])
-
-dnl If the user did not specify a CFLAGS default, change default
-dnl to -O0 for debugging
-PA_ARG_DISABLED([optimization],
- [compile without optimization (-O0) to help debugging],
- [pa_no_optimize=true])
+PA_ADD_CPPFLAGS([-std=c17], [], [],
+[PA_ADD_CPPFLAGS([-std=c11], [], [],
+ [PA_ADD_CPPFLAGS([-std=c99])])])
 
-dnl Other programs
-pa_no_optimize=false
-
-dnl Compile and link with dwarf debug
+dnl Compile and link with gdb debug extensions
 PA_ARG_ENABLED([gdb],
- [disable optimization and compile with extra debug information for GDB debugger],
- [PA_ADD_CFLAGS([-ggdb3])
-  pa_no_optimize=true])
+ [compile with extra debug information for GDB debugger],
+ [PA_ADD_CFLAGS([-ggdb3])])
 
-AS_IF([$pa_no_optimize],
-      [PA_ADD_CFLAGS([-O0])
-       PA_ADD_CFLAGS([-fno-omit-frame-pointer])])
+dnl Disable optimization
+PA_ARG_DISABLED([optimization],
+ [compile without optimization (-O0) to help debugging],
+ [PA_ADD_CFLAGS([-O0])
+  PA_ADD_CFLAGS([-fno-omit-frame-pointer])])
 
 dnl Profiling
 PA_ARG_ENABLED([profiling],
  [compile with profiling (-pg option)],
  [PA_ADD_CFLAGS([-pg])])
 
+dnl Large files
+AC_SYS_LARGEFILE
+
 dnl Abort on panic
 PA_ARG_ENABLED([panic-abort],
  [call abort() on panic to trap in the debugger],
@@ -104,10 +95,10 @@ AC_PROG_MAKE_SET
 AC_PROG_INSTALL
 AC_PROG_MKDIR_P
 
-AC_CHECK_PROGS(NROFF,    nroff,    false)
-AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
-AC_CHECK_PROGS(XMLTO,    xmlto,    false)
-AC_CHECK_PROGS(XZ,       xz,       false)
+AC_CHECK_PROGS([NROFF],    nroff,    false)
+AC_CHECK_PROGS([ASCIIDOC], asciidoc, false)
+AC_CHECK_PROGS([XMLTO],    xmlto,    false)
+AC_CHECK_PROGS([XZ],       xz,       false)
 
 dnl Check for progs needed for manpage generation
 MANPAGES=manpages