From 292b2386d766826b15f5ca084d37aa2c485fdda6 Mon Sep 17 00:00:00 2001
From: dzwdz
Date: Thu, 17 Aug 2023 00:36:04 +0200
Subject: build: rework how sysroots work

/usr/include is now built on the fly, letting me merge include files from
multiple modules, which should be a win for organization later on.

binutils & gcc need to be recompiled.

limits.h shamelessly stolen from heat on #osdev, as gcc stopped providing me
with its own header. which was a hack in the first place
---
 src/libc/include/limits.h        |  6 ------
 src/libc/include/locale.h        |  1 +
 src/libk/include/bits/limits.h   | 45 ++++++++++++++++++++++++++++++++++++++++
 src/libk/include/camellia/path.h |  3 +--
 src/libk/include/limits.h        |  5 +++++
 5 files changed, 52 insertions(+), 8 deletions(-)
 delete mode 100644 src/libc/include/limits.h
 create mode 100644 src/libk/include/bits/limits.h
 create mode 100644 src/libk/include/limits.h

(limited to 'src')

diff --git a/src/libc/include/limits.h b/src/libc/include/limits.h
deleted file mode 100644
index 972553f..0000000
--- a/src/libc/include/limits.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma once
-#include <camellia/path.h> // just for PATH_MAX
-// #include_next <limits.h>
-
-#define _POSIX2_RE_DUP_MAX 255
-#define NAME_MAX 255
diff --git a/src/libc/include/locale.h b/src/libc/include/locale.h
index 1221375..0ea16a6 100644
--- a/src/libc/include/locale.h
+++ b/src/libc/include/locale.h
@@ -1,5 +1,6 @@
 #pragma once
 #include <limits.h>
+#include <stddef.h>
 
 #define LC_ALL 0
 #define LC_COLLATE 1
diff --git a/src/libk/include/bits/limits.h b/src/libk/include/bits/limits.h
new file mode 100644
index 0000000..a64302e
--- /dev/null
+++ b/src/libk/include/bits/limits.h
@@ -0,0 +1,45 @@
+/** Adapted from code (c) 2023 Pedro Falcato, with permission.
+ * Originally licensed under BSD-2-Clause-Patent.
+ */
+
+#if defined (__LP64__)
+#define __LIMITS_64BIT
+#endif
+
+#define CHAR_BIT 8
+
+#define SCHAR_MIN -128
+#define SCHAR_MAX 127
+#define UCHAR_MAX 255
+
+#if '\xff' < 0
+/* char is signed */
+#  define CHAR_MIN  SCHAR_MIN
+#  define CHAR_MAX  SCHAR_MAX
+#else
+/* char is unsigned */
+#  define CHAR_MIN  0
+#  define CHAR_MAX  UCHAR_MAX
+#endif
+
+#define SHRT_MIN   (-1 - 0x7fff)
+#define SHRT_MAX   0x7fff
+#define USHRT_MAX  0xffff
+
+#define INT_MIN   (-1 - 0x7fffffff)
+#define INT_MAX   0x7fffffff
+#define UINT_MAX  0xffffffffU
+
+#ifdef __LIMITS_64BIT
+#  define LONG_MAX   0x7fffffffffffffffL
+#  define LONG_MIN   (-1 - 0x7fffffffffffffffL)
+#  define ULONG_MAX  0xffffffffffffffffUL
+#else
+#  define LONG_MAX   0x7fffffffL
+#  define LONG_MIN   (-1 - 0x7fffffffL)
+#  define ULONG_MAX  0xffffffffUL
+#endif
+
+#define LLONG_MIN   (-1 - 0x7fffffffffffffffLL)
+#define LLONG_MAX   0x7fffffffffffffffLL
+#define ULLONG_MAX  0xffffffffffffffffULL
diff --git a/src/libk/include/camellia/path.h b/src/libk/include/camellia/path.h
index b268595..ee66f7b 100644
--- a/src/libk/include/camellia/path.h
+++ b/src/libk/include/camellia/path.h
@@ -1,8 +1,7 @@
 #pragma once
+#include <limits.h> /* for PATH_MAX */
 #include <stddef.h>
 
-#define PATH_MAX 512
-
 /** Reduce a path to its simplest form.
  * Kinds of invalid paths:
  *  - relative - "" "a" "./a"
diff --git a/src/libk/include/limits.h b/src/libk/include/limits.h
new file mode 100644
index 0000000..4cb972d
--- /dev/null
+++ b/src/libk/include/limits.h
@@ -0,0 +1,5 @@
+#include <bits/limits.h>
+
+#define NAME_MAX 255
+#define PATH_MAX 512
+#define _POSIX2_RE_DUP_MAX 255
-- 
cgit v1.2.3