Make improvements

- You can now run `make -j8 toolchain` on Windows
- You can now run `make -j` on MacOS ARM64 and BSD OSes
- You can now use our Emacs dev environment on MacOS/Windows
- Fix bug where the x16 register was being corrupted by --ftrace
- The programs under build/bootstrap/ are updated as fat binaries
- The Makefile now explains how to download cosmocc-0.0.12 toolchain
- The build scripts under bin/ now support "cosmo" branded toolchains
- stat() now goes faster on Windows (shaves 100ms off `make` latency)
- Code cleanup and added review on the Windows signal checking code
- posix_spawnattr_setrlimit() now works around MacOS ARM64 bugs
- Landlock Make now favors posix_spawn() on non-Linux/OpenBSD
- posix_spawn() now has better --strace logging on Windows
- fstatat() can now avoid EACCES in more cases on Windows
- fchmod() can now change the readonly bit on Windows
This commit is contained in:
Justine Tunney 2023-10-14 20:57:15 -07:00
parent 06c6baaf50
commit c9fecf3a55
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
109 changed files with 1188 additions and 454 deletions

View file

@ -25,8 +25,23 @@
(require 'ld-script)
(require 'make-mode)
(setq cosmo-dbg-mode "dbg")
(setq cosmo-default-mode "")
(setq cosmo-arch
(let ((arch (string-trim-right
(shell-command-to-string
"uname -m"))))
(cond ((string= arch "amd64") "x86_64")
((string= arch "arm64") "aarch64")
(t arch))))
(setq cosmo-default-mode
(cond ((string= cosmo-arch "aarch64") "aarch64")
(t "")))
;; TODO(jart): How do we get GCC to do only dead code elimination?
(setq cosmo-dbg-mode
(cond ((string= cosmo-arch "aarch64") "aarch64")
(t "dbg")))
(setq c-doc-comment-style 'javadown)
(add-to-list 'auto-mode-alist '("\\.x$" . c-mode)) ;; -aux-info
@ -161,14 +176,23 @@
(cosmo-startswith "test/" pkg))))
(defun cosmo--make-mode (arg &optional default)
(cond ((eq arg 1) "tiny")
(cond ((eq arg 1)
(cond ((string= cosmo-arch "aarch64") "aarch64-tiny")
(t "tiny")))
((eq arg 2) "opt")
((eq arg 3) "rel")
((eq arg 4) cosmo-dbg-mode)
((eq arg 5) "")
((eq arg 4)
cosmo-dbg-mode)
((eq arg 5)
(cond ((string= cosmo-arch "aarch64") "aarch64")
(t cosmo-default-mode)))
((eq arg 6) "llvm")
((eq arg 7) "aarch64")
((eq arg 8) "aarch64-tiny")
((eq arg 7)
(cond ((string= cosmo-arch "aarch64") "x86_64")
(t "aarch64")))
((eq arg 8)
(cond ((string= cosmo-arch "aarch64") "tiny")
(t "aarch64-tiny")))
(default default)
((cosmo-intest) cosmo-dbg-mode)
(t cosmo-default-mode)))