git: c1d2da5c0be7 - main - x11-toolkits/open-motif*: revise AM_FUNC_VOID_SPRINTF
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 05 Dec 2023 00:09:26 UTC
The branch main has been updated by cy:
URL: https://cgit.FreeBSD.org/ports/commit/?id=c1d2da5c0be7b60cf8d4b39bb615bfab7399abce
commit c1d2da5c0be7b60cf8d4b39bb615bfab7399abce
Author: Cy Schubert <cy@FreeBSD.org>
AuthorDate: 2023-12-04 23:49:53 +0000
Commit: Cy Schubert <cy@FreeBSD.org>
CommitDate: 2023-12-05 00:02:05 +0000
x11-toolkits/open-motif*: revise AM_FUNC_VOID_SPRINTF
The check for whether sprintf() returns void would fail to detect
sprintf() returning int under recent Clang.
Presumably the check meant to see if an error like
"passing 'void' to parameter of incompatible type 'int'"
is generated, but Clang would always generate other errors
having to do with calling sprintf() with too few arguments
and attempting to redeclare sprintf() when it is a builtin macro.
And even if the test program compiles, such as with GCC,
it crashes during the sprintf(".") call.
Revise the test program to not redeclare sprintf(), to call sprintf()
with valid arguments, and to not implicitly declare exit() due to
stdlib.h not being included (which Apple Xcode Clang 12 and later
consider an error rather than a warning).
If sprintf() returns void, then a compiler error similar to
"initializing 'int' with an expression of incompatible type 'void'"
or "void value not ignored as it ought to be" should be generated.
Otherwise if sprintf() returns int, then the test program should
compile and exit with code 0, and the check should properly report
that sprintf() does not return void.
Obtained from: https://sourceforge.net/p/motif/code/merge-requests/3/
---
x11-toolkits/open-motif-devel/Makefile | 2 +-
x11-toolkits/open-motif-devel/files/patch-acinclude.m4 | 16 ++++++++++++++++
x11-toolkits/open-motif/Makefile | 2 +-
x11-toolkits/open-motif/files/patch-acinclude.m4 | 16 ++++++++++++++++
4 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/x11-toolkits/open-motif-devel/Makefile b/x11-toolkits/open-motif-devel/Makefile
index 298f7c6f06f1..36f53474ca9d 100644
--- a/x11-toolkits/open-motif-devel/Makefile
+++ b/x11-toolkits/open-motif-devel/Makefile
@@ -1,6 +1,6 @@
PORTNAME= open-motif
PORTVERSION= ${COMMIT_DATE}
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= x11-toolkits
PKGNAMESUFFIX= -devel
diff --git a/x11-toolkits/open-motif-devel/files/patch-acinclude.m4 b/x11-toolkits/open-motif-devel/files/patch-acinclude.m4
new file mode 100644
index 000000000000..10b61badcffc
--- /dev/null
+++ b/x11-toolkits/open-motif-devel/files/patch-acinclude.m4
@@ -0,0 +1,16 @@
+--- acinclude.m4.orig 2023-02-15 16:42:34.000000000 -0800
++++ acinclude.m4 2023-12-04 15:48:14.815249000 -0800
+@@ -50,7 +50,12 @@
+ AC_DEFUN([AM_FUNC_VOID_SPRINTF],
+ [AC_CACHE_CHECK(whether sprintf returns void, ac_cv_func_void_sprintf,
+ [AC_TRY_RUN([#include <stdio.h>
+-int sprintf(); main() { exit(sprintf(".")); }],
++int main() {
++ char buf[1];
++ int i = sprintf(buf, "");
++ return 0;
++}
++],
+ ac_cv_func_void_sprintf=no, ac_cv_func_void_sprintf=yes, ac_cv_func_void_sprintf=yes)])
+ if test $ac_cv_func_void_sprintf = no; then
+ AC_DEFINE(VOID_SPRINTF,1,
diff --git a/x11-toolkits/open-motif/Makefile b/x11-toolkits/open-motif/Makefile
index e90595a26679..99fa75185d19 100644
--- a/x11-toolkits/open-motif/Makefile
+++ b/x11-toolkits/open-motif/Makefile
@@ -1,6 +1,6 @@
PORTNAME= open-motif
PORTVERSION= 2.3.8
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= x11-toolkits
# MASTER_SITES= SF/${PORTNAME}/Motif%202.3.4%20Source%20Code/
MASTER_SITES= SF/motif/Motif%20${PORTVERSION}%20Source%20Code/
diff --git a/x11-toolkits/open-motif/files/patch-acinclude.m4 b/x11-toolkits/open-motif/files/patch-acinclude.m4
new file mode 100644
index 000000000000..0b2e3c8d1a8f
--- /dev/null
+++ b/x11-toolkits/open-motif/files/patch-acinclude.m4
@@ -0,0 +1,16 @@
+--- acinclude.m4.orig 2017-08-27 19:29:50.000000000 -0700
++++ acinclude.m4 2023-12-04 15:48:12.951361000 -0800
+@@ -50,7 +50,12 @@
+ AC_DEFUN([AM_FUNC_VOID_SPRINTF],
+ [AC_CACHE_CHECK(whether sprintf returns void, ac_cv_func_void_sprintf,
+ [AC_TRY_RUN([#include <stdio.h>
+-int sprintf(); main() { exit(sprintf(".")); }],
++int main() {
++ char buf[1];
++ int i = sprintf(buf, "");
++ return 0;
++}
++],
+ ac_cv_func_void_sprintf=no, ac_cv_func_void_sprintf=yes, ac_cv_func_void_sprintf=yes)])
+ if test $ac_cv_func_void_sprintf = no; then
+ AC_DEFINE(VOID_SPRINTF,1,