aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.builds/netbsd.diff72
-rw-r--r--.builds/netbsd.yml15
-rwxr-xr-xconfigure6
3 files changed, 93 insertions, 0 deletions
diff --git a/.builds/netbsd.diff b/.builds/netbsd.diff
new file mode 100644
index 0000000..14ca9af
--- /dev/null
+++ b/.builds/netbsd.diff
@@ -0,0 +1,72 @@
+diff --git a/stdlib.h b/stdlib.h
+index 51dbb0c70836..f47d0b9467ee 100644
+--- a/stdlib.h
++++ b/stdlib.h
+@@ -186,12 +186,8 @@ void srandom(unsigned int) __RENAME(__srandom60);
+ #endif
+ #ifdef _NETBSD_SOURCE
+ #define RANDOM_MAX 0x7fffffff /* (((long)1 << 31) - 1) */
+-int mkostemp(char *, int);
+-int mkostemps(char *, int, int);
+ #endif
+
+-char *mkdtemp(char *);
+-int mkstemp(char *);
+ char *mktemp(char *)
+ #ifdef __MKTEMP_OK__
+ __RENAME(_mktemp)
+@@ -206,8 +202,6 @@ int ttyslot(void);
+
+ void *valloc(size_t); /* obsoleted by malloc() */
+
+-int getsubopt(char **, char * const *, char **);
+-
+ int grantpt(int);
+ int unlockpt(int);
+ char *ptsname(int);
+@@ -255,6 +249,24 @@ int posix_openpt(int);
+ int posix_memalign(void **, size_t, size_t);
+ #endif
+
++/*
++ * The Open Group Base Specifications, Issue 7; IEEE Std 1003.1-2008 (POSIX)
++ * or
++ * X/Open Portability Guide >= Issue 4 Version 2
++ */
++#if (_POSIX_C_SOURCE - 0) >= 200809L || \
++ (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
++ (_XOPEN_SOURCE - 0) >= 500 || defined(_NETBSD_SOURCE)
++char *mkdtemp(char *);
++int mkstemp(char *);
++#ifdef _NETBSD_SOURCE
++int mkostemp(char *, int);
++int mkostemps(char *, int, int);
++#endif
++
++int getsubopt(char **, char * const *, char **);
++#endif
++
+ /*
+ * Implementation-defined extensions
+ */
+diff --git a/sys/cdefs.h b/sys/cdefs.h
+index ac8f1e3b9faf..7370015eb513 100644
+--- a/sys/cdefs.h
++++ b/sys/cdefs.h
+@@ -499,13 +499,11 @@
+ #endif
+
+ #if !defined(_STANDALONE) && !defined(_KERNEL)
+-#if defined(__GNUC__) || defined(__PCC__)
+-#define __RENAME(x) ___RENAME(x)
+-#elif defined(__lint__)
++#if defined(__lint__)
+ #define __RENAME(x) __symbolrename(x)
+ #else
+-#error "No function renaming possible"
+-#endif /* __GNUC__ */
++#define __RENAME(x) ___RENAME(x)
++#endif /* __lint__ */
+ #else /* _STANDALONE || _KERNEL */
+ #define __RENAME(x) no renaming in kernel/standalone environment
+ #endif
diff --git a/.builds/netbsd.yml b/.builds/netbsd.yml
new file mode 100644
index 0000000..bb9c20b
--- /dev/null
+++ b/.builds/netbsd.yml
@@ -0,0 +1,15 @@
+image: netbsd/latest
+sources:
+- https://git.sr.ht/~mcf/cproc
+- git://c9x.me/qbe.git
+packages:
+- gmake
+tasks:
+- setup: |
+ sudo patch -p1 -d /usr/include < cproc/.builds/netbsd.diff
+- build: |
+ PATH=$HOME/qbe/obj:$PATH
+ gmake -C qbe
+ cd cproc
+ ./configure
+ make all check bootstrap
diff --git a/configure b/configure
index 526da31..1d8a0f2 100755
--- a/configure
+++ b/configure
@@ -116,6 +116,12 @@ case "$target" in
"-D", "__aligned(x)=",
'
;;
+*-*netbsd*)
+ : ${DEFAULT_DYNAMIC_LINKER:=/usr/libexec/ld.elf_so}
+ startfiles='"-l", ":crt0.o", "-l", ":crti.o"'
+ endfiles='"-l", "c", "-l", ":crtn.o"'
+ defines='"-D", "__builtin_stdarg_start(ap, last)=__builtin_va_start(ap, last)"'
+ ;;
*)
fail "unknown target '$target', please create config.h manually"
esac