Merge remote-tracking branch 'github/nasm-2.16.xx'

This commit is contained in:
H. Peter Anvin 2023-02-19 21:29:46 -08:00
commit a916e4127b
8 changed files with 137 additions and 46 deletions

View File

@ -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])])

View File

@ -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])
])

View File

@ -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])])

View File

@ -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)))])

View File

@ -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])])

View File

@ -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])])

View File

@ -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])])])
PA_ADD_CPPFLAGS([-std=c17], [], [],
[PA_ADD_CPPFLAGS([-std=c11], [], [],
[PA_ADD_CPPFLAGS([-std=c99])])])
dnl If the user did not specify a CFLAGS default, change default
dnl to -O0 for debugging
dnl Compile and link with gdb debug extensions
PA_ARG_ENABLED([gdb],
[compile with extra debug information for GDB debugger],
[PA_ADD_CFLAGS([-ggdb3])])
dnl Disable optimization
PA_ARG_DISABLED([optimization],
[compile without optimization (-O0) to help debugging],
[pa_no_optimize=true])
dnl Other programs
pa_no_optimize=false
dnl Compile and link with dwarf debug
PA_ARG_ENABLED([gdb],
[disable optimization and compile with extra debug information for GDB debugger],
[PA_ADD_CFLAGS([-ggdb3])
pa_no_optimize=true])
AS_IF([$pa_no_optimize],
[PA_ADD_CFLAGS([-O0])
PA_ADD_CFLAGS([-fno-omit-frame-pointer])])
[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

View File

@ -7,12 +7,17 @@
The NASM 2 series supports x86-64, and is the production version of NASM
since 2007.
\S{cl-2.17} Version 2.17
\b ... here goes release notes not intended to be included in the
2.16.xx stable series ...
\S{cl-2.16.02} Version 2.16.02
\b Fix building from the source distribution in a separate directory
from the source.
\b Update broken \c{autoconf} macros.
\S{cl-2.16.01} Version 2.16.01