From ea28f93a26e5d4f314f45f0ca33c03deebb34f9d Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 8 Nov 2023 19:06:35 -0800 Subject: [PATCH] Support includes in monorepo --- build/bootstrap/mkdeps.com | Bin 218833 -> 235854 bytes build/definitions.mk | 3 +- examples/examples.mk | 2 - examples/greenbean.c | 39 +----- libc/isystem/sys/procfs.h | 1 + libc/libc.mk | 261 ++++++++++++++++++++++++++++++++++++- libc/stdio/stdio.mk | 2 +- tool/build/mkdeps.c | 41 ++++-- 8 files changed, 298 insertions(+), 51 deletions(-) diff --git a/build/bootstrap/mkdeps.com b/build/bootstrap/mkdeps.com index c406e127187bfc0d79f2eb9a56d7fad9c7c4f7c7..e850c2ae161b8a41ae933bce8f51332ac4ffc21e 100755 GIT binary patch delta 54898 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 #include #include @@ -22,42 +23,6 @@ #include #include #include -#else -#include "libc/assert.h" -#include "libc/atomic.h" -#include "libc/calls/calls.h" -#include "libc/calls/pledge.h" -#include "libc/calls/struct/sigaction.h" -#include "libc/calls/struct/timespec.h" -#include "libc/calls/struct/timeval.h" -#include "libc/dce.h" -#include "libc/errno.h" -#include "libc/fmt/conv.h" -#include "libc/fmt/itoa.h" -#include "libc/intrin/kprintf.h" -#include "libc/log/log.h" -#include "libc/macros.internal.h" -#include "libc/mem/gc.h" -#include "libc/mem/mem.h" -#include "libc/runtime/runtime.h" -#include "libc/sock/sock.h" -#include "libc/sock/struct/sockaddr.h" -#include "libc/stdio/stdio.h" -#include "libc/str/str.h" -#include "libc/sysv/consts/af.h" -#include "libc/sysv/consts/auxv.h" -#include "libc/sysv/consts/clock.h" -#include "libc/sysv/consts/limits.h" -#include "libc/sysv/consts/sig.h" -#include "libc/sysv/consts/so.h" -#include "libc/sysv/consts/sock.h" -#include "libc/sysv/consts/sol.h" -#include "libc/sysv/consts/tcp.h" -#include "libc/sysv/consts/timer.h" -#include "libc/thread/thread.h" -#include "libc/thread/thread2.h" -#include "net/http/http.h" -#endif /** * @fileoverview greenbean lightweight threaded web server diff --git a/libc/isystem/sys/procfs.h b/libc/isystem/sys/procfs.h index 11b6ad0d478..7c60ec3c0bc 100644 --- a/libc/isystem/sys/procfs.h +++ b/libc/isystem/sys/procfs.h @@ -1,6 +1,7 @@ #ifndef _SYS_PROCFS_H #define _SYS_PROCFS_H #include +#include "libc/calls/weirdtypes.h" #ifdef __cplusplus extern "C" { #endif diff --git a/libc/libc.mk b/libc/libc.mk index c8e8df3e978..e65221c9cdd 100644 --- a/libc/libc.mk +++ b/libc/libc.mk @@ -3,12 +3,269 @@ PKGS += LIBC -LIBC_HDRS = $(filter %.h,$(LIBC_FILES)) +LIBC_ISYSTEM = \ +libc/isystem/algorithm \ +libc/isystem/alloca.h \ +libc/isystem/ammintrin.h \ +libc/isystem/any \ +libc/isystem/ar.h \ +libc/isystem/arm_acle.h \ +libc/isystem/arm_bf16.h \ +libc/isystem/arm_fp16.h \ +libc/isystem/arm_neon.h \ +libc/isystem/arpa/inet.h \ +libc/isystem/array \ +libc/isystem/assert.h \ +libc/isystem/atomic \ +libc/isystem/bit \ +libc/isystem/bitset \ +libc/isystem/byteswap.h \ +libc/isystem/cassert \ +libc/isystem/ccomplex \ +libc/isystem/cctype \ +libc/isystem/cerrno \ +libc/isystem/cfenv \ +libc/isystem/cfloat \ +libc/isystem/charconv \ +libc/isystem/chrono \ +libc/isystem/cinttypes \ +libc/isystem/ciso646 \ +libc/isystem/climits \ +libc/isystem/clocale \ +libc/isystem/clzerointrin.h \ +libc/isystem/cmath \ +libc/isystem/codecvt \ +libc/isystem/compare \ +libc/isystem/complex \ +libc/isystem/complex.h \ +libc/isystem/condition_variable \ +libc/isystem/cosmo.h \ +libc/isystem/cpio.h \ +libc/isystem/cpuid.h \ +libc/isystem/crypt.h \ +libc/isystem/csetjmp \ +libc/isystem/csignal \ +libc/isystem/cstdarg \ +libc/isystem/cstdbool \ +libc/isystem/cstddef \ +libc/isystem/cstdint \ +libc/isystem/cstdio \ +libc/isystem/cstdlib \ +libc/isystem/cstring \ +libc/isystem/ctgmath \ +libc/isystem/ctime \ +libc/isystem/ctype.h \ +libc/isystem/cwchar \ +libc/isystem/cwctype \ +libc/isystem/deque \ +libc/isystem/dirent.h \ +libc/isystem/dlfcn.h \ +libc/isystem/elf.h \ +libc/isystem/emmintrin.h \ +libc/isystem/endian.h \ +libc/isystem/err.h \ +libc/isystem/errno.h \ +libc/isystem/exception \ +libc/isystem/execution \ +libc/isystem/fcntl.h \ +libc/isystem/features.h \ +libc/isystem/fenv.h \ +libc/isystem/filesystem \ +libc/isystem/float.h \ +libc/isystem/fnmatch.h \ +libc/isystem/forward_list \ +libc/isystem/fstream \ +libc/isystem/ftw.h \ +libc/isystem/functional \ +libc/isystem/getopt.h \ +libc/isystem/glob.h \ +libc/isystem/grp.h \ +libc/isystem/iconv.h \ +libc/isystem/ifaddrs.h \ +libc/isystem/immintrin.h \ +libc/isystem/initializer_list \ +libc/isystem/inttypes.h \ +libc/isystem/iomanip \ +libc/isystem/ios \ +libc/isystem/iosfwd \ +libc/isystem/iostream \ +libc/isystem/iso646.h \ +libc/isystem/istream \ +libc/isystem/iterator \ +libc/isystem/langinfo.h \ +libc/isystem/libgen.h \ +libc/isystem/limits \ +libc/isystem/limits.h \ +libc/isystem/linux/futex.h \ +libc/isystem/linux/limits.h \ +libc/isystem/linux/param.h \ +libc/isystem/linux/types.h \ +libc/isystem/list \ +libc/isystem/locale \ +libc/isystem/locale.h \ +libc/isystem/malloc.h \ +libc/isystem/map \ +libc/isystem/math.h \ +libc/isystem/memory \ +libc/isystem/memory.h \ +libc/isystem/mm3dnow.h \ +libc/isystem/mm_malloc.h \ +libc/isystem/mmintrin.h \ +libc/isystem/mntent.h \ +libc/isystem/monetary.h \ +libc/isystem/mutex \ +libc/isystem/mwaitxintrin.h \ +libc/isystem/net/ethernet.h \ +libc/isystem/net/if.h \ +libc/isystem/net/if_arp.h \ +libc/isystem/netdb.h \ +libc/isystem/netinet/in.h \ +libc/isystem/netinet/ip.h \ +libc/isystem/netinet/tcp.h \ +libc/isystem/netinet/udp.h \ +libc/isystem/new \ +libc/isystem/nl_types.h \ +libc/isystem/nmmintrin.h \ +libc/isystem/nsync.h \ +libc/isystem/nsync_atomic.h \ +libc/isystem/nsync_counter.h \ +libc/isystem/nsync_cv.h \ +libc/isystem/nsync_debug.h \ +libc/isystem/nsync_mu.h \ +libc/isystem/nsync_mu_wait.h \ +libc/isystem/nsync_note.h \ +libc/isystem/nsync_once.h \ +libc/isystem/nsync_time.h \ +libc/isystem/nsync_waiter.h \ +libc/isystem/numeric \ +libc/isystem/optional \ +libc/isystem/ostream \ +libc/isystem/paths.h \ +libc/isystem/pmmintrin.h \ +libc/isystem/poll.h \ +libc/isystem/popcntintrin.h \ +libc/isystem/pthread.h \ +libc/isystem/pwd.h \ +libc/isystem/queue \ +libc/isystem/random \ +libc/isystem/ratio \ +libc/isystem/regex \ +libc/isystem/regex.h \ +libc/isystem/sched.h \ +libc/isystem/scoped_allocator \ +libc/isystem/search.h \ +libc/isystem/semaphore.h \ +libc/isystem/set \ +libc/isystem/setjmp.h \ +libc/isystem/sgxintrin.h \ +libc/isystem/shared_mutex \ +libc/isystem/signal.h \ +libc/isystem/smmintrin.h \ +libc/isystem/span \ +libc/isystem/spawn.h \ +libc/isystem/sstream \ +libc/isystem/stack \ +libc/isystem/stdalign.h \ +libc/isystem/stdarg.h \ +libc/isystem/stdatomic.h \ +libc/isystem/stdbool.h \ +libc/isystem/stdc-predef.h \ +libc/isystem/stdckdint.h \ +libc/isystem/stddef.h \ +libc/isystem/stdexcept \ +libc/isystem/stdint.h \ +libc/isystem/stdio.h \ +libc/isystem/stdio_ext.h \ +libc/isystem/stdlib.h \ +libc/isystem/stdnoreturn.h \ +libc/isystem/streambuf \ +libc/isystem/string \ +libc/isystem/string.h \ +libc/isystem/string_view \ +libc/isystem/strings.h \ +libc/isystem/strstream \ +libc/isystem/sys/auxv.h \ +libc/isystem/sys/cdefs.h \ +libc/isystem/sys/dir.h \ +libc/isystem/sys/errno.h \ +libc/isystem/sys/event.h \ +libc/isystem/sys/fcntl.h \ +libc/isystem/sys/file.h \ +libc/isystem/sys/ioctl.h \ +libc/isystem/sys/ipc.h \ +libc/isystem/sys/mman.h \ +libc/isystem/sys/mount.h \ +libc/isystem/sys/msg.h \ +libc/isystem/sys/param.h \ +libc/isystem/sys/poll.h \ +libc/isystem/sys/prctl.h \ +libc/isystem/sys/procfs.h \ +libc/isystem/sys/ptrace.h \ +libc/isystem/sys/random.h \ +libc/isystem/sys/reboot.h \ +libc/isystem/sys/resource.h \ +libc/isystem/sys/select.h \ +libc/isystem/sys/sendfile.h \ +libc/isystem/sys/signal.h \ +libc/isystem/sys/socket.h \ +libc/isystem/sys/stat.h \ +libc/isystem/sys/statfs.h \ +libc/isystem/sys/statvfs.h \ +libc/isystem/sys/syscall.h \ +libc/isystem/sys/sysinfo.h \ +libc/isystem/sys/sysmacros.h \ +libc/isystem/sys/termios.h \ +libc/isystem/sys/time.h \ +libc/isystem/sys/times.h \ +libc/isystem/sys/ttydefaults.h \ +libc/isystem/sys/types.h \ +libc/isystem/sys/ucontext.h \ +libc/isystem/sys/uio.h \ +libc/isystem/sys/un.h \ +libc/isystem/sys/user.h \ +libc/isystem/sys/utsname.h \ +libc/isystem/sys/vfs.h \ +libc/isystem/sys/wait.h \ +libc/isystem/sysexits.h \ +libc/isystem/syslog.h \ +libc/isystem/system_error \ +libc/isystem/termios.h \ +libc/isystem/tgmath.h \ +libc/isystem/thread \ +libc/isystem/time.h \ +libc/isystem/tmmintrin.h \ +libc/isystem/tuple \ +libc/isystem/type_traits \ +libc/isystem/typeindex \ +libc/isystem/typeinfo \ +libc/isystem/uchar.h \ +libc/isystem/ucontext.h \ +libc/isystem/uio.h \ +libc/isystem/unistd.h \ +libc/isystem/unordered_map \ +libc/isystem/unordered_set \ +libc/isystem/utility \ +libc/isystem/utime.h \ +libc/isystem/utmp.h \ +libc/isystem/utmpx.h \ +libc/isystem/valarray \ +libc/isystem/variant \ +libc/isystem/vector \ +libc/isystem/version \ +libc/isystem/wait.h \ +libc/isystem/wchar.h \ +libc/isystem/wctype.h \ +libc/isystem/winternl.h \ +libc/isystem/wmmintrin.h \ +libc/isystem/x86intrin.h \ +libc/isystem/xmmintrin.h + +LIBC_HDRS = $(filter %.h,$(LIBC_FILES)) $(LIBC_ISYSTEM) LIBC_INCS = $(filter %.inc,$(LIBC_FILES)) LIBC_CHECKS = $(LIBC_HDRS:%=o/$(MODE)/%.ok) ifneq ($(MODE), llvm) -LIBC_FILES := $(wildcard libc/*) $(wildcard libc/isystem/*) +LIBC_FILES := $(wildcard libc/*) else LIBC_FILES := $(wildcard libc/*) endif diff --git a/libc/stdio/stdio.mk b/libc/stdio/stdio.mk index 53037f7f518..fb67da93650 100644 --- a/libc/stdio/stdio.mk +++ b/libc/stdio/stdio.mk @@ -6,7 +6,7 @@ PKGS += LIBC_STDIO LIBC_STDIO_ARTIFACTS += LIBC_STDIO_A LIBC_STDIO = $(LIBC_STDIO_A_DEPS) $(LIBC_STDIO_A) LIBC_STDIO_A = o/$(MODE)/libc/stdio/stdio.a -LIBC_STDIO_A_FILES := $(wildcard libc/stdio/*) $(wildcard libc/stdio/unlocked/*) +LIBC_STDIO_A_FILES := $(wildcard libc/stdio/*) LIBC_STDIO_A_HDRS = $(filter %.h,$(LIBC_STDIO_A_FILES)) LIBC_STDIO_A_SRCS_S = $(filter %.S,$(LIBC_STDIO_A_FILES)) LIBC_STDIO_A_SRCS_C = $(filter %.c,$(LIBC_STDIO_A_FILES)) diff --git a/tool/build/mkdeps.c b/tool/build/mkdeps.c index a95189ba848..3af37a3aae5 100644 --- a/tool/build/mkdeps.c +++ b/tool/build/mkdeps.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" #include "libc/errno.h" +#include "libc/fmt/libgen.h" #include "libc/fmt/magnumstrs.internal.h" #include "libc/intrin/bits.h" #include "libc/limits.h" @@ -81,7 +82,8 @@ " INPUT should be source or @args.txt\n" \ "\n" -#define kIncludePrefix "include \"" +#define kIncludePrefix "include " +#define kSystemIncludes "libc/isystem/" struct Source { unsigned hash; @@ -267,14 +269,17 @@ static void LoadRelationships(int argc, char *argv[]) { char *map; ssize_t rc; struct GetArgs ga; + char srcdirbuf[256]; size_t n, size, inclen; unsigned srcid, dependency; - const char *p, *pe, *src, *path, *pathend; + const char *p, *pe, *src, *path, *pathend, *srcdir; getargs_init(&ga, argv + optind); inclen = strlen(kIncludePrefix); while ((src = getargs_next(&ga))) { n = strlen(src); srcid = GetSourceId(src, n); + strlcpy(srcdirbuf, src, sizeof(srcdirbuf)); + srcdir = dirname(srcdirbuf); if ((fd = open(src, O_RDONLY)) == -1) { if (errno == ENOENT && ga.path) { // This code helps GNU Make automatically fix itself when we @@ -296,13 +301,33 @@ static void LoadRelationships(int argc, char *argv[]) { DieSys(src); } for (p = map + 1, pe = map + size; p < pe; ++p) { + int right; + char juf[256], *jb; + char buf[256], *bp = buf; if (!(p = memmem(p, pe - p, kIncludePrefix, inclen))) break; - path = p + inclen; - pathend = memchr(path, '"', pe - path); - if (pathend && // - (p[-1] == '#' || p[-1] == '.') && // - (p - map == 1 || p[-2] == '\n')) { // - dependency = GetSourceId(path, pathend - path); + path = p + inclen + 1; + if (path[-1] == '"') { + right = '"'; + } else if (path[-1] == '<') { + bp = mempcpy(bp, kSystemIncludes, strlen(kSystemIncludes)); + right = '>'; + } else { + continue; + } + pathend = memchr(path, right, pe - path); + if (pathend && pathend - path > 0 && // + (p[-1] == '#' || p[-1] == '.') && // + (p - map == 1 || p[-2] == '\n') && // + (bp - buf) + (pathend - path) < sizeof(buf)) { // + *(bp = mempcpy(bp, path, pathend - path)) = 0; + if (right == '>' && !isregularfile(buf)) continue; + if (!strchr(buf, '/') && !isregularfile(buf)) { + if (!(jb = __join_paths(juf, sizeof(juf), srcdir, buf))) continue; + if (!isregularfile(jb)) continue; + dependency = GetSourceId(jb, strlen(jb)); + } else { + dependency = GetSourceId(buf, bp - buf); + } AppendEdge(&edges, dependency, srcid); p = pathend; }