Skip to content

Commit

Permalink
Merge remote-tracking branch 'github/nasm-2.16.xx'
Browse files Browse the repository at this point in the history
  • Loading branch information
H. Peter Anvin committed Feb 20, 2023
2 parents cb29058 + 8ce37da commit a916e41
Show file tree
Hide file tree
Showing 8 changed files with 137 additions and 46 deletions.
9 changes: 9 additions & 0 deletions autoconf/m4/pa_add_cppflags.m4
Original file line number Diff line number Diff line change
@@ -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])])
52 changes: 34 additions & 18 deletions autoconf/m4/pa_add_flags.m4
Original file line number Diff line number Diff line change
@@ -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])
])
16 changes: 16 additions & 0 deletions autoconf/m4/pa_build_ifelse.m4
Original file line number Diff line number Diff line change
@@ -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])])
19 changes: 19 additions & 0 deletions autoconf/m4/pa_flags_langlist.m4
Original file line number Diff line number Diff line change
@@ -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)))])
15 changes: 15 additions & 0 deletions autoconf/m4/pa_lang_foreach.m4
Original file line number Diff line number Diff line change
@@ -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])])
20 changes: 20 additions & 0 deletions autoconf/m4/pa_lang_seen_list.m4
Original file line number Diff line number Diff line change
@@ -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])])
45 changes: 18 additions & 27 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand 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],
Expand Down Expand Up @@ -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
Expand Down
7 changes: 6 additions & 1 deletion doc/changes.src
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit a916e41

Please sign in to comment.