* mandoc: Autodetect whether _GNU_SOURCE or _OPENBSD_SOURCE are needed;
@ 2018-08-15 2:16 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2018-08-15 2:16 UTC (permalink / raw)
To: source
Log Message:
-----------
Autodetect whether _GNU_SOURCE or _OPENBSD_SOURCE are needed; the
latter is a NetBSD idiosyncrasy reported by wiz@. Also take into
account that NetBSD declares getsubopt(3) in the wrong header.
Modified Files:
--------------
mandoc:
configure
test-getsubopt.c
test-strcasestr.c
test-strptime.c
test-vasprintf.c
test-wchar.c
Revision Data
-------------
Index: test-strptime.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/test-strptime.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -Ltest-strptime.c -Ltest-strptime.c -u -p -r1.3 -r1.4
--- test-strptime.c
+++ test-strptime.c
@@ -1,7 +1,3 @@
-#if defined(__linux__) || defined(__MINT__)
-# define _GNU_SOURCE /* strptime() */
-#endif
-
#include <time.h>
int
Index: test-strcasestr.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/test-strcasestr.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -Ltest-strcasestr.c -Ltest-strcasestr.c -u -p -r1.3 -r1.4
--- test-strcasestr.c
+++ test-strcasestr.c
@@ -1,7 +1,3 @@
-#if defined(__linux__) || defined(__MINT__)
-# define _GNU_SOURCE /* strcasestr() */
-#endif
-
#include <string.h>
int
Index: test-wchar.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/test-wchar.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -Ltest-wchar.c -Ltest-wchar.c -u -p -r1.4 -r1.5
--- test-wchar.c
+++ test-wchar.c
@@ -15,10 +15,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#if defined(__linux__) || defined(__MINT__)
-#define _GNU_SOURCE /* wcwidth() */
-#endif
-
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
Index: test-getsubopt.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/test-getsubopt.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -Ltest-getsubopt.c -Ltest-getsubopt.c -u -p -r1.4 -r1.5
--- test-getsubopt.c
+++ test-getsubopt.c
@@ -15,11 +15,14 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#if defined(__linux__) || defined(__MINT__)
-#define _GNU_SOURCE /* getsubopt() */
-#endif
-
#include <stdlib.h>
+
+/*
+ * NetBSD declares this function in the wrong header.
+ * No harm is done by allowing that, too:
+ * The only file using it, main.c, also includes unistd.h, anyway.
+ */
+#include <unistd.h>
int
main(void)
Index: test-vasprintf.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/test-vasprintf.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -Ltest-vasprintf.c -Ltest-vasprintf.c -u -p -r1.4 -r1.5
--- test-vasprintf.c
+++ test-vasprintf.c
@@ -15,10 +15,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#if defined(__linux__) || defined(__MINT__)
-#define _GNU_SOURCE /* vasprintf() */
-#endif
-
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
Index: configure
===================================================================
RCS file: /home/cvs/mandoc/mandoc/configure,v
retrieving revision 1.66
retrieving revision 1.67
diff -Lconfigure -Lconfigure -u -p -r1.66 -r1.67
--- configure
+++ configure
@@ -90,6 +90,9 @@ HAVE_SYS_ENDIAN=
HAVE_VASPRINTF=
HAVE_WCHAR=
+NEED_GNU_SOURCE=0
+NEED_OPENBSD_SOURCE=0
+
PREFIX="/usr/local"
BINDIR=
SBINDIR=
@@ -154,31 +157,34 @@ ismanual() {
# In case of failure, do not decide anything yet.
# Arguments: test file name, test var name, additional CFLAGS
singletest() {
+ n=${1}${3}${4}
cat 1>&3 << __HEREDOC__
-testing ${1}${3} ...
-${COMP} -o test-${1} test-${1}.c ${3}
+testing ${n} ...
+${COMP} -o test-${1} test-${1}.c ${3} ${4}
__HEREDOC__
- if ${COMP} -o "test-${1}" "${SOURCEDIR}/test-${1}.c" ${3} 1>&3 2>&3
+ if ${COMP} -o "test-${1}" "${SOURCEDIR}/test-${1}.c" ${3} ${4} 1>&3 2>&3
then
- echo "partial result of ${1}${3}: ${CC} succeeded" 1>&3
+ echo "partial result of ${n}: ${CC} succeeded" 1>&3
else
- echo "result of ${1}${3}: ${CC} failed with exit status $?" 1>&3
- echo "result of compiling ${1}${3}: no" 1>&3
+ echo "result of ${n}: ${CC} failed with exit status $?" 1>&3
+ echo "result of compiling ${n}: no" 1>&3
echo 1>&3
return 1
fi
if ./test-${1} 1>&3 2>&3; then
- echo "tested ${1}${3}: yes" 1>&2
- echo "result of running ${1}${3}: yes" 1>&3
+ echo "tested ${n}: yes" 1>&2
+ echo "result of running ${n}: yes" 1>&3
echo 1>&3
eval HAVE_${2}=1
+ [ "X$3" = "X-D_GNU_SOURCE" ] && NEED_GNU_SOURCE=1
+ [ "X$3" = "X-D_OPENBSD_SOURCE" ] && NEED_OPENBSD_SOURCE=1
rm "test-${1}"
return 0
else
- echo "result of ${1}${3}: execution failed with exit status $?" 1>&3
- echo "result of running ${1}${3}: no" 1>&3
+ echo "result of ${n}: execution failed with exit status $?" 1>&3
+ echo "result of running ${n}: no" 1>&3
echo 1>&3
rm "test-${1}"
return 1
@@ -191,8 +197,8 @@ __HEREDOC__
runtest() {
eval _manual=\${HAVE_${2}}
ismanual "${1}" "${2}" "${_manual}" && return 0
- singletest "${1}" "${2}" "${3}" && return 0
- echo "tested ${1}${3}: no" 1>&2
+ singletest "${1}" "${2}" "${3}" "${4}" && return 0
+ echo "tested ${1}${3}${4}: no" 1>&2
eval HAVE_${2}=0
return 1
}
@@ -215,26 +221,30 @@ get_locale() {
# --- compiler options -------------------------------------------------
+DEFCFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter"
+
if [ -n "${CFLAGS}" ]; then
- COMP="${CC} ${CFLAGS}"
- echo "selected CFLAGS=\"${CFLAGS}\" (manual)" 1>&2
- echo "selected CFLAGS=\"${CFLAGS}\" (manual)" 1>&3
- echo 1>&3
-else
- CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes"
- CFLAGS="${CFLAGS} -Wwrite-strings -Wno-unused-parameter"
COMP="${CC} ${CFLAGS} -Wno-unused -Werror"
- echo -n "tested ${CC} -W: " 1>&2
- echo -n "testing ${CC} -W: " 1>&3
- runtest noop WFLAG || true
- if [ "${HAVE_WFLAG}" -eq 0 ]; then
- CFLAGS="-g"
- COMP="${CC} ${CFLAGS}"
- fi
- echo "selected CFLAGS=\"${CFLAGS}\"" 1>&2
- echo "selected CFLAGS=\"${CFLAGS}\"" 1>&3
- echo 1>&3
+else
+ COMP="${CC} ${DEFCFLAGS} -Wno-unused -Werror"
+fi
+echo -n "tested ${CC} -W: " 1>&2
+echo -n "testing ${CC} -W: " 1>&3
+runtest noop WFLAG || true
+
+if [ -n "${CFLAGS}" ]; then
+ echo "CFLAGS specified manually:" 1>&3
+elif [ ${HAVE_WFLAG} -eq 0 ]; then
+ CFLAGS="-g"
+else
+ CFLAGS="${DEFCFLAGS}"
fi
+echo "selected CFLAGS=\"${CFLAGS}\"" 1>&2
+echo "selected CFLAGS=\"${CFLAGS}\"" 1>&3
+echo 1>&3
+
+COMP="${CC} ${CFLAGS}"
+[ ${HAVE_WFLAG} -eq 0 ] || COMP="${COMP} -Wno-unused -Werror"
if [ -n "${STATIC}" ]; then
echo "selected STATIC=\"${STATIC}\" (manual)" 1>&2
@@ -257,7 +267,8 @@ runtest be32toh SYS_ENDIAN -DSYS_ENDIAN
runtest EFTYPE EFTYPE || true
runtest err ERR || true
runtest getline GETLINE || true
-runtest getsubopt GETSUBOPT || true
+singletest getsubopt GETSUBOPT || \
+ runtest getsubopt GETSUBOPT -D_GNU_SOURCE || true
runtest isblank ISBLANK || true
runtest mkdtemp MKDTEMP || true
runtest ntohl NTOHL || true
@@ -266,19 +277,25 @@ runtest PATH_MAX PATH_MAX || true
runtest pledge PLEDGE || true
runtest sandbox_init SANDBOX_INIT || true
runtest progname PROGNAME || true
-runtest reallocarray REALLOCARRAY || true
-runtest recallocarray RECALLOCARRAY || true
+singletest reallocarray REALLOCARRAY || \
+ runtest reallocarray REALLOCARRAY -D_OPENBSD_SOURCE || true
+singletest recallocarray RECALLOCARRAY || \
+ runtest recallocarray RECALLOCARRAY -D_OPENBSD_SOURCE || true
runtest rewb-bsd REWB_BSD || true
runtest rewb-sysv REWB_SYSV || true
-runtest strcasestr STRCASESTR || true
+singletest strcasestr STRCASESTR || \
+ runtest strcasestr STRCASESTR -D_GNU_SOURCE || true
runtest stringlist STRINGLIST || true
runtest strlcat STRLCAT || true
runtest strlcpy STRLCPY || true
runtest strndup STRNDUP || true
-runtest strptime STRPTIME || true
+singletest strptime STRPTIME || \
+ runtest strptime STRPTIME -D_GNU_SOURCE || true
runtest strsep STRSEP || true
-runtest strtonum STRTONUM || true
-runtest vasprintf VASPRINTF || true
+singletest strtonum STRTONUM || \
+ runtest strtonum STRTONUM -D_OPENBSD_SOURCE || true
+singletest vasprintf VASPRINTF || \
+ runtest vasprintf VASPRINTF -D_GNU_SOURCE || true
if [ ${HAVE_ENDIAN} -eq 0 -a \
${HAVE_SYS_ENDIAN} -eq 0 -a \
@@ -298,7 +315,9 @@ fi
# --- wide character and locale support ---
if get_locale; then
- runtest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true
+ singletest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || \
+ runtest wchar WCHAR -D_GNU_SOURCE \
+ -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true
else
HAVE_WCHAR=0
echo "tested wchar: no (no UTF8_LOCALE)" 1>&2
@@ -383,11 +402,10 @@ cat << __HEREDOC__
#define __attribute__(x)
#endif
-#if defined(__linux__) || defined(__MINT__)
-#define _GNU_SOURCE /* See test-*.c what needs this. */
-#endif
-
__HEREDOC__
+
+[ ${NEED_GNU_SOURCE} -eq 0 ] || echo "#define _GNU_SOURCE"
+[ ${NEED_OPENBSD_SOURCE} -eq 0 ] || echo "#define _OPENBSD_SOURCE"
[ ${HAVE_GETLINE} -eq 0 -o \
${HAVE_REALLOCARRAY} -eq 0 -o ${HAVE_RECALLOCARRAY} -eq 0 -o \
--
To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-08-15 2:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-15 2:16 mandoc: Autodetect whether _GNU_SOURCE or _OPENBSD_SOURCE are needed; schwarze
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).