ruby/tool/m4/ruby_decl_attribute.m4
Nobuyoshi Nakada 29bbad9399
Fix 2.7 build (#4359)
* merge revision(s) fcc88da5eb162043adcba552646677d2ab5adf55:

	configure.ac: fix for upcoming autoconf-2.70

	The failure initially noticed on `autoconf-2.69d` (soon to become 2.70):

	```
	$ ./configure
	./configure: line 8720: syntax error near unexpected token `fi'
	./configure: line 8720: `fi'
	```

	Before the change generated `./configure ` snippet looked like:

	```
	    if ! $CC -E -xc - <<SRC >/dev/null
	then :

		#if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
		#error premature clang
		#endif
	SRC
		as_fn_error $? "clang version 3.0 or later is required" "$LINENO" 5
	fi
	```

	Note the newline that breaks here-document syntax.

	After the change the snippet does not use here-document.

	Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
	---
	 configure.ac | 15 ++++++++-------
	 1 file changed, 8 insertions(+), 7 deletions(-)

* merge revision(s) 0df67a469561fab80b78478b99703ed893c4db07:

	Signal handler type should be void

	---
	 configure.ac                          |  1 -
	 include/ruby/internal/intern/signal.h |  3 +--
	 signal.c                              | 14 +++++++-------
	 vm_core.h                             |  2 +-
	 win32/Makefile.sub                    |  1 -
	 5 files changed, 9 insertions(+), 12 deletions(-)

* merge revision(s) 4d2ad8d737c55c3efd4c75131687dd1c8db7441b:

	Removed obsolete autoconf checks

	Use regular `AC_CHECK_MEMBERS` instead of:
	* `AC_STRUCT_ST_BLKSIZE`
	* `AC_STRUCT_ST_BLOCKS`
	* `AC_STRUCT_ST_RDEV`
	---
	 configure.ac         | 6 +++---
	 missing/fileblocks.c | 1 -
	 win32/Makefile.sub   | 1 -
	 3 files changed, 3 insertions(+), 5 deletions(-)
	 delete mode 100644 missing/fileblocks.c

* merge revision(s) 3b7c05ef8dc15371316e5254d33af12928183971:

	Fixed RUBY_RM_RECURSIVE when autoconf met the required version

	Before 9189cf5793cd527a86b711d15d5fd0633ec082e1 the result of
	`m4_version_compare` was compared to -1, however the `$2` of
	`m4_version_prereq` has different meaning and is expanded when
	the required version met.
	---
	 tool/m4/ruby_rm_recursive.m4 | 4 ++--
	 1 file changed, 2 insertions(+), 2 deletions(-)

* merge revision(s) c32375883a696fcf8e9e99875f1339ee5474a255,48bb0329eb325bc5b77c222f45b8dc97a208d986:

	Update for autoconf 2.70

	---
	 configure.ac                         | 232 +++++++++++++++++------------------
	 tool/m4/ruby_check_builtin_setjmp.m4 |   8 +-
	 tool/m4/ruby_check_printf_prefix.m4  |   9 +-
	 tool/m4/ruby_check_setjmp.m4         |   6 +-
	 tool/m4/ruby_check_sysconf.m4        |   6 +-
	 tool/m4/ruby_cppoutfile.m4           |   4 +-
	 tool/m4/ruby_decl_attribute.m4       |   4 +-
	 tool/m4/ruby_dtrace_available.m4     |   2 +-
	 tool/m4/ruby_dtrace_postprocess.m4   |   2 +-
	 tool/m4/ruby_mingw32.m4              |   4 +-
	 tool/m4/ruby_stack_grow_direction.m4 |   4 +-
	 tool/m4/ruby_try_cflags.m4           |   2 +-
	 tool/m4/ruby_try_cxxflags.m4         |   2 +-
	 tool/m4/ruby_try_ldflags.m4          |   2 +-
	 14 files changed, 143 insertions(+), 144 deletions(-)

	Revert AC_PROG_CC_C99 for -std=gnu99 option to gcc 4.8

	---
	 configure.ac | 5 ++++-
	 1 file changed, 4 insertions(+), 1 deletion(-)

Co-authored-by: Sergei Trofimovich <slyfox@gentoo.org>
2021-05-31 23:04:44 +09:00

46 lines
1.6 KiB
Plaintext

# -*- Autoconf -*-
dnl RUBY_DECL_ATTRIBUTE(attrib, macroname, cachevar, condition, type, code)
AC_DEFUN([RUBY_DECL_ATTRIBUTE], [dnl
m4_ifval([$2], dnl
[AS_VAR_PUSHDEF([attrib], m4_bpatsubst([$2], [(.*)], []))], dnl
[AS_VAR_PUSHDEF([attrib], m4_toupper(m4_format(%.4s, [$5]))[_]AS_TR_CPP($1))] dnl
)dnl
m4_ifval([$3], dnl
[AS_VAR_PUSHDEF([rbcv],[$3])], dnl
[AS_VAR_PUSHDEF([rbcv],[rb_cv_]m4_format(%.4s, [$5])[_][$1])]dnl
)dnl
m4_pushdef([attrib_code],[m4_bpatsubst([$1],["],[\\"])])dnl
m4_pushdef([attrib_params],[m4_bpatsubst([$2(x)],[^[^()]*(\([^()]*\)).*],[\1])])dnl
m4_ifval([$4], [rbcv_cond=["$4"]; test "$rbcv_cond" || unset rbcv_cond])
AC_CACHE_CHECK(for m4_ifval([$2],[m4_bpatsubst([$2], [(.*)], [])],[$1]) [$5] attribute, rbcv, dnl
[rbcv=x
RUBY_WERROR_FLAG([
for mac in \
"__attribute__ ((attrib_code)) x" \
"x __attribute__ ((attrib_code))" \
"__declspec(attrib_code) x" \
x; do
m4_ifval([$4],mac="$mac"${rbcv_cond+" /* only if $rbcv_cond */"})
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
m4_ifval([$4],${rbcv_cond+[@%:@if ]$rbcv_cond})
[@%:@define ]attrib[](attrib_params)[ $mac]
m4_ifval([$4],${rbcv_cond+[@%:@else]}
${rbcv_cond+[@%:@define ]attrib[](attrib_params)[ x]}
${rbcv_cond+[@%:@endif]})
$6
@%:@define mesg ("")
@%:@define san "address"
attrib[](attrib_params)[;]], [[]])],
[rbcv="$mac"; break])
done
])])
AS_IF([test "$rbcv" != x], [
RUBY_DEFINE_IF(m4_ifval([$4],[${rbcv_cond}]), attrib[](attrib_params)[], $rbcv)
])
m4_ifval([$4], [unset rbcv_cond]) dnl
m4_popdef([attrib_params])dnl
m4_popdef([attrib_code])dnl
AS_VAR_POPDEF([attrib])dnl
AS_VAR_POPDEF([rbcv])dnl
])dnl