feat: add support for aarch64 timer/interrupts, port MontaukOS userspace

This commit is contained in:
daniel committed 2026-10-25 08:27:09 +01:00
1 parent 8b6379fb7e
commit 8c09ccef66
101 files changed
+1720 -629

No files matched your search

+46 -31
View File
@@ -2,20 +2,19 @@
MAKEFLAGS += -rR
.SUFFIXES:
# Target architecture.
ARCH := x86_64
# Target architecture (ARCH=x86_64 or aarch64) and the cross compiler
# from toolchain/local/.
include mk/arch.mk
# Auto-detect cross compiler from toolchain/local/.
TOOLCHAIN_PREFIX := $(shell cd .. && pwd)/toolchain/local/bin/x86_64-montauk-
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CC = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
CC = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
CC := $(TOOLCHAIN_PREFIX)gcc
endif
# Compiler flags. The x86_64-montauk toolchain supplies the target ABI
# Compiler flags. The <arch>-montauk toolchain supplies the target ABI
# (static ET_EXEC, 4 KiB pages, no red zone) and header paths; system
# programs additionally avoid FP/SIMD and their own runtime (-nostdlib).
override CXXFLAGS := \
@@ -30,10 +29,7 @@ override CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
$(ARCH_NOFP_FLAGS) \
-I include
# Linker flags: freestanding static ELF.
@@ -43,7 +39,7 @@ override LDFLAGS := \
-T link.ld
# Output directory.
BINDIR := bin
BINDIR := bin$(ARCH_SUFFIX)
# Discover all programs (each subdirectory under src/ is a program).
PROGRAMS := $(notdir $(wildcard src/*))
@@ -98,18 +94,34 @@ WPDST := $(patsubst $(WPDIR)/%,$(BINDIR)/os/wallpapers/%,$(WPSRC))
.PHONY: all clean 2048 files settings fetch wiki wikipedia weather imageviewer fontpreview spreadsheet wordprocessor pdfviewer disks devexplorer installer audio music video bluetooth network display capabilities keyboard sshserver sshd terminal syslog procmgr powermgr calculator charmap login desktop shell paint tcc lua screenshot texteditor mandelbrot printers timezone printd printctl dialogs icons fonts configs osdata bearssl libc tls libjpeg libjpegwrite install-apps libloader crashpad rtlsdr sdr check-syscalls gen-syscalls rust
all: bearssl libc libjpeg libjpegwrite tls libloader rtlsdr sdr devkit $(TARGETS) files settings fetch wiki wikipedia weather imageviewer fontpreview spreadsheet wordprocessor pdfviewer disks devexplorer installer audio music video bluetooth network display capabilities sshserver terminal syslog procmgr powermgr calculator charmap 2048 paint tcc lua screenshot texteditor mandelbrot printers timezone printd printctl dialogs login desktop shell sshd icons fonts install-apps crashpad rust $(MANDST) $(WWWDST) $(CA_CERTS) $(CONFIGDST) $(OSDATADST) $(FWDST) $(LICDST) $(WPDST)
# The on-OS SDK, tcc (an x86 code generator) and the Rust programs exist
# for x86_64 only.
ifneq ($(ARCH),x86_64)
ARCH_SKIP := devkit tcc rust
endif
ALL_TARGETS := bearssl libc libjpeg libjpegwrite tls libloader rtlsdr sdr devkit $(TARGETS) files settings fetch wiki wikipedia weather imageviewer fontpreview spreadsheet wordprocessor pdfviewer disks devexplorer installer audio music video bluetooth network display capabilities sshserver terminal syslog procmgr powermgr calculator charmap 2048 paint tcc lua screenshot texteditor mandelbrot printers timezone printd printctl dialogs login desktop shell sshd icons fonts install-apps crashpad rust $(MANDST) $(WWWDST) $(CA_CERTS) $(CONFIGDST) $(OSDATADST) $(FWDST) $(LICDST) $(WPDST)
all: $(filter-out $(ARCH_SKIP),$(ALL_TARGETS))
# Build BearSSL static library (cross-compiled for freestanding x86_64).
BEARSSL_INCLUDES := -isystem $(shell cd .. && pwd)/kernel/freestnd-c-hdrs/x86_64/include -isystem $(abspath include/libc)
BEARSSL_INCLUDES := -isystem $(shell cd .. && pwd)/kernel/freestnd-c-hdrs/$(ARCH)/include -isystem $(abspath include/libc)
ifeq ($(ARCH),x86_64)
BEARSSL_ARCH_FLAGS := -m64 -march=x86-64 -mno-80387 -mno-mmx -mno-red-zone -mcmodel=small
else
BEARSSL_ARCH_FLAGS := $(ARCH_CFLAGS)
endif
BEARSSL_LIB := lib/bearssl/build$(ARCH_SUFFIX)/libbearssl.a
lib/bearssl/build/libbearssl.a:
$(BEARSSL_LIB):
$(MAKE) -C lib/bearssl CONF=MontaukOS \
BEARSSL_CC="$(CC)" \
BEARSSL_AR="$(TOOLCHAIN_PREFIX)ar" \
BUILD=build$(ARCH_SUFFIX) \
BEARSSL_ARCH_FLAGS="$(BEARSSL_ARCH_FLAGS)" \
BEARSSL_INCLUDES="$(BEARSSL_INCLUDES)"
bearssl: lib/bearssl/build/libbearssl.a
bearssl: $(BEARSSL_LIB)
# Build shared libc static library.
#
@@ -120,11 +132,12 @@ bearssl: lib/bearssl/build/libbearssl.a
# under -j and silently leaves programs linked against a stale libc.
# Grouped target (&:, GNU make 4.3+): one sub-make produces all of them.
LIBC_DIR := lib/libc
LIBC_LIB := $(LIBC_DIR)/liblibc.a
LIBC_LIB := $(LIBC_DIR)/$(ARCH_OUT)liblibc.a
LIBC_SRCS := $(wildcard $(LIBC_DIR)/*.c $(LIBC_DIR)/*.h $(LIBC_DIR)/*.S \
$(LIBC_DIR)/crt/*.c) $(LIBC_DIR)/Makefile
LIBC_OUTPUTS := $(LIBC_LIB) $(LIBC_DIR)/liblibc-full.a \
$(LIBC_DIR)/crt1.o $(LIBC_DIR)/crti.o $(LIBC_DIR)/crtn.o
LIBC_OUTPUTS := $(LIBC_LIB) $(LIBC_DIR)/$(ARCH_OUT)liblibc-full.a \
$(LIBC_DIR)/$(ARCH_OUT)crt1.o $(LIBC_DIR)/$(ARCH_OUT)crti.o \
$(LIBC_DIR)/$(ARCH_OUT)crtn.o
$(LIBC_OUTPUTS) &: $(LIBC_SRCS)
$(MAKE) -C $(LIBC_DIR)
@@ -282,7 +295,7 @@ login: bearssl libc
$(MAKE) -C src/login
# Build shell via its own Makefile (multi-file build).
shell:
shell: libc
$(MAKE) -C src/shell
# Build desktop via its own Makefile (depends on libc, libjpeg, bearssl for user.h, dialogs, and registry config files).
@@ -291,11 +304,11 @@ desktop: libc libjpeg bearssl libloader dialogs configs
# Copy SVG icons for the desktop into bin/os/icons/.
icons:
../scripts/copy_icons.sh
PROGRAMS_BIN=$(BINDIR) ../scripts/copy_icons.sh
# Copy TTF fonts for the desktop into bin/os/fonts/.
fonts:
../scripts/copy_fonts.sh
PROGRAMS_BIN=$(BINDIR) ../scripts/copy_fonts.sh
# Copy default system config files into bin/config/.
configs: $(CONFIGDST)
@@ -400,7 +413,7 @@ crashpad: libc
# Install app bundles (manifests, icons, data files) into bin/apps/<name>/.
install-apps: 2048 files settings paint spreadsheet wordprocessor weather wikipedia imageviewer fontpreview pdfviewer disks devexplorer installer audio music video bluetooth network display capabilities keyboard sshserver terminal syslog procmgr powermgr calculator charmap screenshot texteditor mandelbrot printers timezone crashpad
../scripts/install_apps.sh
PROGRAMS_BIN=$(BINDIR) ../scripts/install_apps.sh
# Copy man pages into bin/os/man/ so mkramdisk.sh picks them up.
$(BINDIR)/os/man/%: $(MANDIR)/%
@@ -446,14 +459,16 @@ $(BINDIR)/os/wallpapers/%: $(WPDIR)/%
# (montauk/capabilities.h, Api/Syscall.hpp, ...) rebuilds every program that
# uses it. A missing depfile matches the empty rule below, which forces a
# rebuild; that is how programs built before this tracking existed catch up.
$(BINDIR)/os/%.elf: src/%/main.cpp link.ld GNUmakefile $(LIBC_LIB) obj/%/main.elf.d
mkdir -p $(BINDIR)/os obj/$*
$(CXX) $(CXXFLAGS) -MMD -MP -MT $@ -MF obj/$*/main.elf.d -c src/$*/main.cpp -o obj/$*/main.o
$(CXX) $(CXXFLAGS) $(LDFLAGS) obj/$*/main.o $(LIBC_LIB) -o $@
OBJ := obj$(ARCH_SUFFIX)
obj/%/main.elf.d: ;
.PRECIOUS: obj/%/main.elf.d
-include $(wildcard obj/*/main.elf.d)
$(BINDIR)/os/%.elf: src/%/main.cpp link.ld GNUmakefile $(LIBC_LIB) $(OBJ)/%/main.elf.d
mkdir -p $(BINDIR)/os $(OBJ)/$*
$(CXX) $(CXXFLAGS) -MMD -MP -MT $@ -MF $(OBJ)/$*/main.elf.d -c src/$*/main.cpp -o $(OBJ)/$*/main.o
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJ)/$*/main.o $(LIBC_LIB) -o $@
$(OBJ)/%/main.elf.d: ;
.PRECIOUS: $(OBJ)/%/main.elf.d
-include $(wildcard $(OBJ)/*/main.elf.d)
# ============================================================================
# Native development kit (Montauk SDK): binutils built for MontaukOS
@@ -524,7 +539,7 @@ else
endif
clean:
rm -rf $(BINDIR) obj $(RUST_DIR)/target
rm -rf $(BINDIR) $(OBJ) $(RUST_DIR)/target
$(MAKE) -C lib/bearssl clean
$(MAKE) -C lib/libc clean
$(MAKE) -C lib/libjpeg clean
+15 -3
View File
@@ -13,6 +13,18 @@
namespace gui {
// Drain write-combining stores to the scanout buffer before it is flipped
// or composited by someone else.
inline void wc_store_fence() {
#if defined(__x86_64__)
asm volatile("sfence" ::: "memory");
#elif defined(__aarch64__)
asm volatile("dsb st" ::: "memory");
#else
#error "unsupported architecture"
#endif
}
class Framebuffer {
uint32_t* hw_fb;
uint32_t* hw_fb2; // second scanout buffer (page flip), nullptr if unsupported
@@ -322,12 +334,12 @@ public:
montauk::memcpy(mirror, src, row_bytes);
}
}
if (hw_mirror) asm volatile("sfence" ::: "memory");
if (hw_mirror) wc_store_fence();
if (hw_fb2) {
// Wait for the latch (vsync): the buffer we just left becomes
// safe to draw into only once the new one is actually scanning.
asm volatile("sfence" ::: "memory");
wc_store_fence();
int64_t presented = montauk::fb_flip(hw_next, 1);
if (presented == hw_next) {
hw_next ^= 1;
@@ -359,7 +371,7 @@ public:
montauk::memcpy(mirror, src, row_bytes);
}
}
asm volatile("sfence" ::: "memory");
wc_store_fence();
}
}
}
+62
View File
@@ -419,6 +419,8 @@ typedef struct {
Raw syscall wrappers
==================================================================== */
#if defined(__x86_64__)
static inline long _mtk_syscall0(long nr) {
long ret;
__asm__ volatile("syscall" : "=a"(ret) : "a"(nr)
@@ -491,6 +493,66 @@ static inline long _mtk_syscall5(long nr, long a1, long a2, long a3, long a4, lo
return ret;
}
#elif defined(__aarch64__)
// AArch64: number in x8, arguments in x0-x5, `svc #0`; the kernel
// preserves every register except x0, which carries the result.
static inline long _mtk_syscall0(long nr) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0");
__asm__ volatile("svc #0" : "=r"(x0) : "r"(x8) : "memory");
return x0;
}
static inline long _mtk_syscall1(long nr, long a1) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8) : "memory");
return x0;
}
static inline long _mtk_syscall2(long nr, long a1, long a2) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1) : "memory");
return x0;
}
static inline long _mtk_syscall3(long nr, long a1, long a2, long a3) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
register long x2 __asm__("x2") = a3;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2) : "memory");
return x0;
}
static inline long _mtk_syscall4(long nr, long a1, long a2, long a3, long a4) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
register long x2 __asm__("x2") = a3;
register long x3 __asm__("x3") = a4;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2), "r"(x3) : "memory");
return x0;
}
static inline long _mtk_syscall5(long nr, long a1, long a2, long a3, long a4, long a5) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
register long x2 __asm__("x2") = a3;
register long x3 __asm__("x3") = a4;
register long x4 __asm__("x4") = a5;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2), "r"(x3), "r"(x4) : "memory");
return x0;
}
#else
#error "unsupported architecture"
#endif
/* ====================================================================
Process management
==================================================================== */
+5 -1
View File
@@ -7,7 +7,11 @@
extern "C" {
#endif
typedef unsigned long jmp_buf[8];
#if defined(__aarch64__)
typedef unsigned long jmp_buf[21]; /* x19-x30, sp, d8-d15 */
#else
typedef unsigned long jmp_buf[8]; /* rbx, rbp, r12-r15, rsp, rip */
#endif
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val) __attribute__((noreturn));
+76 -1
View File
@@ -1,6 +1,6 @@
/*
* syscall.h
* MontaukOS program-side syscall wrappers using SYSCALL instruction
* MontaukOS program-side syscall wrappers (x86_64 SYSCALL, AArch64 SVC)
* Copyright (c) 2025 Daniel Hammer
*/
@@ -13,6 +13,8 @@ namespace montauk {
// ---- Raw SYSCALL wrappers ----
#if defined(__x86_64__)
// The SYSCALL handler does not restore RDI, RSI, RDX, R10, R8, R9
// (they are skipped on the return path). We move arguments into the
// correct registers inside the asm block and list ALL argument
@@ -108,6 +110,79 @@ namespace montauk {
return ret;
}
#elif defined(__aarch64__)
// AArch64: number in x8, arguments in x0-x5, `svc #0`; the kernel
// preserves every register except x0, which carries the result.
inline int64_t syscall0(uint64_t nr) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0");
asm volatile("svc #0" : "=r"(x0) : "r"(x8) : "memory");
return (int64_t)x0;
}
inline int64_t syscall1(uint64_t nr, uint64_t a1) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0") = a1;
asm volatile("svc #0" : "+r"(x0) : "r"(x8) : "memory");
return (int64_t)x0;
}
inline int64_t syscall2(uint64_t nr, uint64_t a1, uint64_t a2) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0") = a1;
register uint64_t x1 asm("x1") = a2;
asm volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1) : "memory");
return (int64_t)x0;
}
inline int64_t syscall3(uint64_t nr, uint64_t a1, uint64_t a2, uint64_t a3) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0") = a1;
register uint64_t x1 asm("x1") = a2;
register uint64_t x2 asm("x2") = a3;
asm volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2) : "memory");
return (int64_t)x0;
}
inline int64_t syscall4(uint64_t nr, uint64_t a1, uint64_t a2, uint64_t a3, uint64_t a4) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0") = a1;
register uint64_t x1 asm("x1") = a2;
register uint64_t x2 asm("x2") = a3;
register uint64_t x3 asm("x3") = a4;
asm volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2), "r"(x3) : "memory");
return (int64_t)x0;
}
inline int64_t syscall5(uint64_t nr, uint64_t a1, uint64_t a2, uint64_t a3, uint64_t a4, uint64_t a5) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0") = a1;
register uint64_t x1 asm("x1") = a2;
register uint64_t x2 asm("x2") = a3;
register uint64_t x3 asm("x3") = a4;
register uint64_t x4 asm("x4") = a5;
asm volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2), "r"(x3), "r"(x4) : "memory");
return (int64_t)x0;
}
inline int64_t syscall6(uint64_t nr, uint64_t a1, uint64_t a2, uint64_t a3, uint64_t a4, uint64_t a5, uint64_t a6) {
register uint64_t x8 asm("x8") = nr;
register uint64_t x0 asm("x0") = a1;
register uint64_t x1 asm("x1") = a2;
register uint64_t x2 asm("x2") = a3;
register uint64_t x3 asm("x3") = a4;
register uint64_t x4 asm("x4") = a5;
register uint64_t x5 asm("x5") = a6;
asm volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2), "r"(x3), "r"(x4), "r"(x5) : "memory");
return (int64_t)x0;
}
#else
#error "unsupported architecture"
#endif
// ---- Typed wrappers ----
// Process
+17 -18
View File
@@ -6,7 +6,7 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifneq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CC := $(TOOLCHAIN_PREFIX)gcc
AR := $(TOOLCHAIN_PREFIX)ar
@@ -20,7 +20,7 @@ endif
# ---- Paths ----
LIBC_INC := ../../include/libc
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
CRTDIR := crt
ASM_OBJS := $(OBJDIR)/setjmp.o
@@ -38,12 +38,8 @@ CFLAGS := \
-fno-PIC \
-ffunction-sections \
-fdata-sections \
-m64 \
-march=x86-64 \
-msse \
-msse2 \
-mno-red-zone \
-mcmodel=small \
$(ARCH_CFLAGS) \
$(ARCH_FP_FLAGS) \
-isystem $(LIBC_INC) \
-isystem $(shell $(CC) -print-file-name=include)
@@ -55,18 +51,16 @@ CRT_CFLAGS := \
-fno-stack-protector \
-fno-stack-check \
-fno-PIC \
-m64 \
-march=x86-64 \
-mno-red-zone \
$(ARCH_CFLAGS) \
-fno-tree-loop-distribute-patterns \
-isystem $(LIBC_INC) \
-isystem $(shell $(CC) -print-file-name=include)
# ---- Target ----
TARGET := liblibc.a
SDK_TARGET := liblibc-full.a
CRT_OBJS := crt1.o crti.o crtn.o
TARGET := $(ARCH_OUT)liblibc.a
SDK_TARGET := $(ARCH_OUT)liblibc-full.a
CRT_OBJS := $(ARCH_OUT)crt1.o $(ARCH_OUT)crti.o $(ARCH_OUT)crtn.o
.PHONY: all clean
@@ -77,6 +71,7 @@ all: $(TARGET) $(SDK_TARGET) $(CRT_OBJS)
# a float leave the decimal-conversion and pow/exp/log code behind. Programs
# that do need %e/%f/%g must link with -Wl,-u,_pf_putfloat to force it in.
$(TARGET): $(OBJDIR)/libc.o $(OBJDIR)/printf_float.o $(ASM_OBJS)
@mkdir -p $(dir $@)
$(AR) rcs $@ $^
$(OBJDIR)/libc.o: libc.c printf_internal.h Makefile
@@ -87,7 +82,7 @@ $(OBJDIR)/printf_float.o: printf_float.c printf_internal.h Makefile
@mkdir -p $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/setjmp.o: setjmp.S Makefile
$(OBJDIR)/setjmp.o: arch/setjmp-$(ARCH).S Makefile
@mkdir -p $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
@@ -97,18 +92,22 @@ $(OBJDIR)/setjmp.o: setjmp.S Makefile
# compiled ON MontaukOS. Function-level --gc-sections still applies to the
# rest; only the float path is pinned. Image size is not a concern here.
$(SDK_TARGET): $(OBJDIR)/libc-merged.o $(ASM_OBJS)
@mkdir -p $(dir $@)
$(AR) rcs $@ $^
$(OBJDIR)/libc-merged.o: $(OBJDIR)/libc.o $(OBJDIR)/printf_float.o
$(LD) -r -o $@ $(OBJDIR)/libc.o $(OBJDIR)/printf_float.o
crt1.o: $(CRTDIR)/crt1.c Makefile
$(ARCH_OUT)crt1.o: $(CRTDIR)/crt1.c Makefile
@mkdir -p $(dir $@)
$(CC) $(CRT_CFLAGS) -c $< -o $@
crti.o: $(CRTDIR)/crti.c Makefile
$(ARCH_OUT)crti.o: $(CRTDIR)/crti.c Makefile
@mkdir -p $(dir $@)
$(CC) $(CRT_CFLAGS) -c $< -o $@
crtn.o: $(CRTDIR)/crtn.c Makefile
$(ARCH_OUT)crtn.o: $(CRTDIR)/crtn.c Makefile
@mkdir -p $(dir $@)
$(CC) $(CRT_CFLAGS) -c $< -o $@
clean:
+49
View File
@@ -0,0 +1,49 @@
/*
* setjmp-aarch64.S
* setjmp/longjmp for AArch64 MontaukOS userspace
* Copyright (c) 2026 Daniel Hammer
*/
/* jmp_buf: x19-x28, x29 (fp), x30 (lr), sp, d8-d15 -- everything AAPCS64
requires a callee to preserve. */
.text
.global setjmp
.type setjmp, %function
setjmp:
stp x19, x20, [x0, #0]
stp x21, x22, [x0, #16]
stp x23, x24, [x0, #32]
stp x25, x26, [x0, #48]
stp x27, x28, [x0, #64]
stp x29, x30, [x0, #80]
mov x2, sp
str x2, [x0, #96]
stp d8, d9, [x0, #104]
stp d10, d11, [x0, #120]
stp d12, d13, [x0, #136]
stp d14, d15, [x0, #152]
mov w0, #0
ret
.size setjmp, . - setjmp
.global longjmp
.type longjmp, %function
longjmp:
ldp x19, x20, [x0, #0]
ldp x21, x22, [x0, #16]
ldp x23, x24, [x0, #32]
ldp x25, x26, [x0, #48]
ldp x27, x28, [x0, #64]
ldp x29, x30, [x0, #80]
ldr x2, [x0, #96]
mov sp, x2
ldp d8, d9, [x0, #104]
ldp d10, d11, [x0, #120]
ldp d12, d13, [x0, #136]
ldp d14, d15, [x0, #152]
cmp w1, #0
csinc w0, w1, wzr, ne
ret
.size longjmp, . - longjmp
File renamed without changes.
+23
View File
@@ -8,6 +8,8 @@
* calls main(), then exits with main()'s return code.
*/
#if defined(__x86_64__)
static inline long _sys1(long nr, long a1) {
long ret;
__asm__ volatile(
@@ -31,6 +33,27 @@ static inline long _sys2(long nr, long a1, long a2) {
return ret;
}
#elif defined(__aarch64__)
static inline long _sys1(long nr, long a1) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8) : "memory");
return x0;
}
static inline long _sys2(long nr, long a1, long a2) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1) : "memory");
return x0;
}
#else
#error "unsupported architecture"
#endif
#define SYS_EXIT 0
#define SYS_GETARGS 25
#define SYS_GETEXECPATH 151
+51
View File
@@ -32,6 +32,8 @@
Raw syscall wrappers (C versions matching kernel ABI)
======================================================================== */
#if defined(__x86_64__)
static inline long _mtk_syscall0(long nr) {
long ret;
__asm__ volatile("syscall" : "=a"(ret) : "a"(nr)
@@ -89,6 +91,55 @@ static inline long _mtk_syscall4(long nr, long a1, long a2, long a3, long a4) {
return ret;
}
#elif defined(__aarch64__)
// AArch64: number in x8, arguments in x0-x5, `svc #0`; the kernel
// preserves every register except x0, which carries the result.
static inline long _mtk_syscall0(long nr) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0");
__asm__ volatile("svc #0" : "=r"(x0) : "r"(x8) : "memory");
return x0;
}
static inline long _mtk_syscall1(long nr, long a1) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8) : "memory");
return x0;
}
static inline long _mtk_syscall2(long nr, long a1, long a2) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1) : "memory");
return x0;
}
static inline long _mtk_syscall3(long nr, long a1, long a2, long a3) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
register long x2 __asm__("x2") = a3;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2) : "memory");
return x0;
}
static inline long _mtk_syscall4(long nr, long a1, long a2, long a3, long a4) {
register long x8 __asm__("x8") = nr;
register long x0 __asm__("x0") = a1;
register long x1 __asm__("x1") = a2;
register long x2 __asm__("x2") = a3;
register long x3 __asm__("x3") = a4;
__asm__ volatile("svc #0" : "+r"(x0) : "r"(x8), "r"(x1), "r"(x2), "r"(x3) : "memory");
return x0;
}
#else
#error "unsupported architecture"
#endif
/* Syscall numbers */
#define SYS_EXIT 0
#define SYS_YIELD 1
+6 -10
View File
@@ -6,7 +6,7 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifneq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CC := $(TOOLCHAIN_PREFIX)gcc
AR := $(TOOLCHAIN_PREFIX)ar
@@ -19,8 +19,7 @@ endif
LIBC_INC := ../../include/libc
PROG_INC := ../../include
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CFLAGS := \
@@ -36,25 +35,22 @@ CFLAGS := \
-fno-PIC \
-ffunction-sections \
-fdata-sections \
-m64 \
-march=x86-64 \
-msse \
-msse2 \
-mno-red-zone \
-mcmodel=small \
$(ARCH_CFLAGS) \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-isystem $(shell $(CC) -print-file-name=include)
# ---- Target ----
TARGET := libjpeg.a
TARGET := $(ARCH_OUT)libjpeg.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJDIR)/stb_image_impl.o
@mkdir -p $(dir $@)
$(AR) rcs $@ $^
$(OBJDIR)/stb_image_impl.o: stb_image_impl.c Makefile
Binary file not shown.
Binary file not shown.
+6 -10
View File
@@ -6,7 +6,7 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifneq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CC := $(TOOLCHAIN_PREFIX)gcc
AR := $(TOOLCHAIN_PREFIX)ar
@@ -19,8 +19,7 @@ endif
LIBC_INC := ../../include/libc
PROG_INC := ../../include
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CFLAGS := \
@@ -37,25 +36,22 @@ CFLAGS := \
-ffunction-sections \
-fdata-sections \
-fno-tree-loop-distribute-patterns \
-m64 \
-march=x86-64 \
-msse \
-msse2 \
-mno-red-zone \
-mcmodel=small \
$(ARCH_CFLAGS) \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-isystem $(shell $(CC) -print-file-name=include)
# ---- Target ----
TARGET := libjpegwrite.a
TARGET := $(ARCH_OUT)libjpegwrite.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJDIR)/stb_image_write_impl.o
@mkdir -p $(dir $@)
$(AR) rcs $@ $^
$(OBJDIR)/stb_image_write_impl.o: stb_image_write_impl.c Makefile
Binary file not shown.
Binary file not shown.
+8 -14
View File
@@ -6,7 +6,7 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifneq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX := $(TOOLCHAIN_PREFIX)g++
AR := $(TOOLCHAIN_PREFIX)ar
@@ -20,8 +20,7 @@ endif
BEARSSL := ../bearssl
LIBC_INC := ../../include/libc
PROG_INC := ../../include
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -39,29 +38,24 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-m64 \
-march=x86-64 \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
-mno-red-zone \
-mcmodel=small \
$(ARCH_CFLAGS) \
$(ARCH_NOFP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-I $(BEARSSL)/inc \
-isystem ../../../kernel/freestnd-c-hdrs/x86_64/include \
-isystem ../../../kernel/freestnd-cxx-hdrs/x86_64/include
-isystem ../../../kernel/freestnd-c-hdrs/$(ARCH)/include \
-isystem ../../../kernel/freestnd-cxx-hdrs/$(ARCH)/include
# ---- Target ----
TARGET := libtls.a
TARGET := $(ARCH_OUT)libtls.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJDIR)/tls.o
@mkdir -p $(dir $@)
$(AR) rcs $@ $^
$(OBJDIR)/tls.o: tls.cpp Makefile
Binary file not shown.
Binary file not shown.
+2 -3
View File
@@ -3,11 +3,10 @@
* Linker script for MontaukOS userspace programs
* Copyright (c) 2025 Daniel Hammer
*
* Programs are loaded at a standard user-space address.
* Programs are loaded at a standard user-space address. The output
* format is the toolchain's default (x86_64-montauk or aarch64-montauk).
*/
OUTPUT_FORMAT(elf64-x86-64)
ENTRY(_start)
SECTIONS
+43
View File
@@ -0,0 +1,43 @@
# arch.mk - Target architecture settings shared by every userspace Makefile
# Copyright (c) 2026 Daniel Hammer
#
# Included by programs/GNUmakefile and the per-program/per-library
# Makefiles. Pass ARCH=aarch64 (the top-level build does) to build for ARM.
#
# x86_64 keeps the historical layout: objects in obj/, programs in bin/,
# libraries next to their sources. Other architectures build side by side:
# obj-<arch>/, bin-<arch>/ and lib/<name>/build-<arch>/.
ARCH ?= x86_64
ifeq ($(filter $(ARCH),x86_64 aarch64),)
$(error Unsupported ARCH '$(ARCH)' for userspace)
endif
MONTAUK_ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))/../..)
ifeq ($(ARCH),x86_64)
ARCH_SUFFIX :=
ARCH_OUT :=
else
ARCH_SUFFIX := -$(ARCH)
ARCH_OUT := build-$(ARCH)/
endif
TOOLCHAIN_PREFIX := $(MONTAUK_ROOT)/toolchain/local/bin/$(ARCH)-montauk-
TOOLCHAIN_MISSING := $(ARCH)-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh $(ARCH) first
# ARCH_FP_FLAGS: programs that use floating point / SIMD (GUI apps)
# ARCH_NOFP_FLAGS: system programs that must not touch FP/SIMD registers
# ARCH_CFLAGS: code-model flags the libraries pass explicitly
ifeq ($(ARCH),x86_64)
ARCH_FP_FLAGS := -msse -msse2
ARCH_NOFP_FLAGS := -mno-80387 -mno-mmx -mno-sse -mno-sse2
ARCH_CFLAGS := -m64 -march=x86-64 -mno-red-zone -mcmodel=small
ARCH_LD_EMULATION := elf_x86_64
else
ARCH_FP_FLAGS :=
ARCH_NOFP_FLAGS := -mgeneral-regs-only
ARCH_CFLAGS := -mcmodel=small
ARCH_LD_EMULATION := aarch64elf
endif
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -46,8 +45,8 @@ SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/2048/2048.elf
LOADER_LIB := $(LIBDIR)/libloader/liblibloader.a
LIBC_LIB := $(LIBDIR)/libc/liblibc.a
LOADER_LIB := $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a
LIBC_LIB := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/audio/audio.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/audio
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/bluetooth/bluetooth.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/bluetooth
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/calculator/calculator.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/calculator
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+6 -7
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -46,7 +45,7 @@ SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/capabilities/capabilities.elf
LIBS := $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/charmap/charmap.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/charmap
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+6 -7
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
@@ -47,7 +46,7 @@ SRCS := main.cpp stb_truetype_impl.cpp font_data.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/crashpad/crashpad.elf
LIBS := $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+7 -9
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -19,11 +19,10 @@ PROG_INC := ../../include
JPEG_LIB := ../../lib/libjpeg
LIBC_LIB := ../../lib/libc
BEARSSL := ../../lib/bearssl
LOADER_LIB := ../../lib/libloader/liblibloader.a
LOADER_LIB := ../../lib/libloader/$(ARCH_OUT)liblibloader.a
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- C++ compiler flags ----
CXXFLAGS := \
@@ -40,8 +39,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
@@ -71,7 +69,7 @@ all: $(TARGET)
# ---- Libraries ----
LIBS := $(LOADER_LIB) $(JPEG_LIB)/libjpeg.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a
LIBS := $(LOADER_LIB) $(JPEG_LIB)/$(ARCH_OUT)libjpeg.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
$(TARGET): $(OBJS) $(LIBS) $(LINK_LD) Makefile
mkdir -p $(BINDIR)/os
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
-I ../../lib/bearssl/inc
@@ -63,9 +62,9 @@ TARGET := $(BINDIR)/apps/devexplorer/devexplorer.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/devexplorer
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+11 -13
View File
@@ -4,12 +4,12 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CC = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
LD = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
STRIP = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CC = $(error $(TOOLCHAIN_MISSING))
CXX = $(error $(TOOLCHAIN_MISSING))
LD = $(error $(TOOLCHAIN_MISSING))
STRIP = $(error $(TOOLCHAIN_MISSING))
else
CC := $(TOOLCHAIN_PREFIX)gcc
CXX := $(TOOLCHAIN_PREFIX)g++
@@ -18,9 +18,9 @@ else
endif
PROG_INC := ../../include
LIBOUTDIR := ../../bin/os
OBJDIR := obj
LEGACY_APPDIR := ../../bin/apps/dialogs
LIBOUTDIR := ../../bin$(ARCH_SUFFIX)/os
OBJDIR := obj$(ARCH_SUFFIX)
LEGACY_APPDIR := ../../bin$(ARCH_SUFFIX)/apps/dialogs
LIBC_SRC := ../../lib/libc/libc.c
GCC_INCLUDE := $(shell $(CC) -print-file-name=include)
@@ -40,8 +40,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-DGUI_DIALOGS_LIBRARY_BUILD \
-I $(PROG_INC) \
@@ -55,7 +54,7 @@ LDFLAGS := \
--hash-style=sysv \
-u dialogs_run_request \
-u dialogs_message_box \
-m elf_x86_64
-m $(ARCH_LD_EMULATION)
LIBC_CFLAGS := \
-std=gnu11 \
@@ -69,8 +68,7 @@ LIBC_CFLAGS := \
-fvisibility=hidden \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-isystem $(PROG_INC)/libc \
-isystem $(GCC_INCLUDE)
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/disks/disks.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/disks
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+6 -7
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -46,7 +45,7 @@ SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/display/display.elf
LIBS := $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+6 -10
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -21,9 +21,8 @@ LIBC_LIB := ../../lib/libc
LIBC_INC := ../../include/libc
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -39,10 +38,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
$(ARCH_NOFP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-I $(BEARSSL)/inc
@@ -56,7 +52,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(TLS_LIB)/libtls.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a
LIBS := $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Target ----
+6 -7
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
BEARSSL := ../../lib/bearssl
JPEG_LIB := ../../lib/libjpeg
@@ -39,8 +39,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
-I $(BEARSSL)/inc
@@ -65,7 +64,7 @@ TARGET := $(BINDIR)/apps/files/files.elf
all: $(TARGET)
LIBS := $(JPEG_LIB)/libjpeg.a $(BEARSSL)/libbearssl.a $(LIBDIR)/libc/liblibc.a
LIBS := $(JPEG_LIB)/$(ARCH_OUT)libjpeg.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBS)
mkdir -p $(BINDIR)/apps/files
+6 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -18,9 +18,8 @@ endif
LIBC_LIB := ../../lib/libc
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -37,8 +36,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC)
# ---- Linker flags ----
@@ -50,7 +48,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(LIBC_LIB)/liblibc.a
LIBS := $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Source files ----
+6 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -20,9 +20,8 @@ LIBC_LIB := ../../lib/libc
LIBC_INC := ../../include/libc
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -39,8 +38,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC)
@@ -53,7 +51,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(JPEG_LIB)/libjpeg.a $(LIBC_LIB)/liblibc.a
LIBS := $(JPEG_LIB)/$(ARCH_OUT)libjpeg.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Source files ----
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -63,9 +62,9 @@ TARGET := $(BINDIR)/apps/installer/installer.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/installer
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+6 -6
View File
@@ -3,29 +3,29 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -Wno-unused-parameter \
-Wno-unused-function -ffreestanding -fno-stack-protector -fno-stack-check \
-fno-rtti -fno-exceptions -ffunction-sections -fdata-sections -msse -msse2 \
-fno-rtti -fno-exceptions -ffunction-sections -fdata-sections $(ARCH_FP_FLAGS) \
-MMD -MP -I $(PROG_INC) -isystem $(PROG_INC)/libc
LDFLAGS := -nostdlib -Wl,--gc-sections -T $(LINK_LD)
SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/keyboard/keyboard.elf
LIBS := $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
all: $(TARGET)
+8 -13
View File
@@ -1,8 +1,6 @@
# Makefile for libloader
ARCH := x86_64
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
CXX := $(TOOLCHAIN_PREFIX)g++
AR := $(TOOLCHAIN_PREFIX)ar
@@ -18,29 +16,26 @@ override CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
$(ARCH_NOFP_FLAGS) \
-I ../../include \
-isystem ../../include/libc \
-isystem ../../include/montauk
LIBDIR := ../../lib/libloader
LEGACY_BINDIR := ../../bin
LEGACY_BINDIR := ../../bin$(ARCH_SUFFIX)
.PHONY: all clean remove-legacy
all: remove-legacy $(LIBDIR)/liblibloader.a
all: remove-legacy $(LIBDIR)/$(ARCH_OUT)liblibloader.a
remove-legacy:
rm -f $(LEGACY_BINDIR)/liblibloader.a
$(LIBDIR)/liblibloader.a: libloader.cpp
@mkdir -p $(LIBDIR)
$(LIBDIR)/$(ARCH_OUT)liblibloader.a: libloader.cpp
@mkdir -p $(LIBDIR)/$(ARCH_OUT)
$(CXX) $(CXXFLAGS) -c libloader.cpp -o libloader.o
$(AR) rcs $(LIBDIR)/liblibloader.a libloader.o
$(AR) rcs $(LIBDIR)/$(ARCH_OUT)liblibloader.a libloader.o
rm -f libloader.o
clean:
rm -f $(LIBDIR)/liblibloader.a $(LEGACY_BINDIR)/liblibloader.a
rm -f $(LIBDIR)/$(ARCH_OUT)liblibloader.a $(LEGACY_BINDIR)/$(ARCH_OUT)liblibloader.a
+6 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -20,9 +20,8 @@ LIBC_LIB := ../../lib/libc
JPEG_LIB := ../../lib/libjpeg
BEARSSL := ../../lib/bearssl
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -39,8 +38,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
-I $(BEARSSL)/inc
@@ -73,7 +71,7 @@ TARGET := $(BINDIR)/os/login.elf
all: $(TARGET)
LIBS := $(JPEG_LIB)/libjpeg.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a
LIBS := $(JPEG_LIB)/$(ARCH_OUT)libjpeg.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
$(TARGET): $(OBJS) $(LIBS) $(LINK_LD) Makefile
mkdir -p $(BINDIR)/os
+11 -12
View File
@@ -1,20 +1,20 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CC = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
AR = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CC = $(error $(TOOLCHAIN_MISSING))
AR = $(error $(TOOLCHAIN_MISSING))
else
CC := $(TOOLCHAIN_PREFIX)gcc
AR := $(TOOLCHAIN_PREFIX)ar
endif
SRCDIR := src
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
LIBC_DIR := ../../lib/libc
BINDIR := ../../bin/os
LIBDIR := ../../bin/sdk/lua
BINDIR := ../../bin$(ARCH_SUFFIX)/os
LIBDIR := ../../bin$(ARCH_SUFFIX)/sdk/lua
CFLAGS := \
-std=gnu11 \
@@ -31,8 +31,7 @@ CFLAGS := \
-fno-stack-check \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-D__MONTAUKOS__=1 \
-DLUA_COMPAT_5_3 \
-I$(SRCDIR) \
@@ -74,15 +73,15 @@ STAGE_HEADERS := \
all: $(TARGET_LIB) $(TARGET_BIN) $(STAGE_HEADERS)
$(TARGET_LIB): $(BASE_OBJS) $(LIBC_DIR)/liblibc.a
$(TARGET_LIB): $(BASE_OBJS) $(LIBC_DIR)/$(ARCH_OUT)liblibc.a
@mkdir -p $(LIBDIR)
$(AR) rcs $@ $(BASE_OBJS)
$(TARGET_BIN): $(LUA_MAIN) $(TARGET_LIB) $(LIBC_DIR)/liblibc.a $(LIBC_DIR)/crt1.o $(LIBC_DIR)/crti.o $(LIBC_DIR)/crtn.o
$(TARGET_BIN): $(LUA_MAIN) $(TARGET_LIB) $(LIBC_DIR)/$(ARCH_OUT)liblibc.a $(LIBC_DIR)/$(ARCH_OUT)crt1.o $(LIBC_DIR)/$(ARCH_OUT)crti.o $(LIBC_DIR)/$(ARCH_OUT)crtn.o
@mkdir -p $(BINDIR)
$(CC) $(CFLAGS) $(LDFLAGS) \
$(LIBC_DIR)/crt1.o $(LIBC_DIR)/crti.o \
$(LUA_MAIN) $(TARGET_LIB) $(LIBC_DIR)/liblibc.a $(LIBC_DIR)/crtn.o \
$(LIBC_DIR)/$(ARCH_OUT)crt1.o $(LIBC_DIR)/$(ARCH_OUT)crti.o \
$(LUA_MAIN) $(TARGET_LIB) $(LIBC_DIR)/$(ARCH_OUT)liblibc.a $(LIBC_DIR)/$(ARCH_OUT)crtn.o \
-lgcc -o $@
$(LIBDIR)/include/%: $(SRCDIR)/%
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/mandelbrot/mandelbrot.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/mandelbrot
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-I . \
-isystem $(PROG_INC)/libc
@@ -63,9 +62,9 @@ TARGET := $(BINDIR)/apps/music/music.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/music
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+6 -7
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -46,7 +45,7 @@ SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/network/network.elf
LIBS := $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+7 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -62,9 +61,9 @@ TARGET := $(BINDIR)/apps/paint/paint.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/paint
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+9 -10
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,10 +17,10 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
JPEG_LIB := $(LIBDIR)/libjpeg/libjpeg.a
JPEG_LIB := $(LIBDIR)/libjpeg/$(ARCH_OUT)libjpeg.a
# ---- Compiler flags ----
@@ -38,8 +38,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -58,15 +57,15 @@ OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
# ---- Target ----
TARGET := $(BINDIR)/apps/pdfviewer/pdfviewer.elf
LOADER_LIB := $(LIBDIR)/libloader/liblibloader.a
LOADER_LIB := $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LOADER_LIB) $(JPEG_LIB) $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LOADER_LIB) $(JPEG_LIB) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/pdfviewer
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LOADER_LIB) $(JPEG_LIB) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LOADER_LIB) $(JPEG_LIB) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
HEADERS := pdfviewer.h
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -51,9 +50,9 @@ TARGET := $(BINDIR)/apps/powermgr/powermgr.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/powermgr
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+7 -11
View File
@@ -3,9 +3,9 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -15,9 +15,8 @@ LIBC_LIB := ../../lib/libc
BEARSSL := ../../lib/bearssl
TLS_LIB := ../../lib/tls
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
CXXFLAGS := \
-std=gnu++20 \
-g -O2 -pipe \
@@ -31,10 +30,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
$(ARCH_NOFP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
-I $(BEARSSL)/inc
@@ -51,9 +47,9 @@ DEPS := $(OBJDIR)/main.d
all: $(TARGET)
$(TARGET): $(OBJDIR)/main.o $(LINK_LD) Makefile $(LIBC_LIB)/liblibc.a
$(TARGET): $(OBJDIR)/main.o $(LINK_LD) Makefile $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/os
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJDIR)/main.o $(TLS_LIB)/libtls.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJDIR)/main.o $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/main.o: main.cpp Makefile
mkdir -p $(OBJDIR)
+6 -8
View File
@@ -3,9 +3,9 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -16,9 +16,8 @@ TLS_LIB := ../../lib/tls
BEARSSL := ../../lib/bearssl
JPEGWRITE := ../../lib/libjpegwrite
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
CXXFLAGS := \
-std=gnu++20 \
-g -O2 -pipe \
@@ -32,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
-I $(BEARSSL)/inc
@@ -45,7 +43,7 @@ LDFLAGS := \
SRCS := main.cpp test_page_jpeg.cpp font_data.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
LIBS := $(TLS_LIB)/libtls.a $(BEARSSL)/libbearssl.a $(JPEGWRITE)/libjpegwrite.a $(LIBC_LIB)/liblibc.a
LIBS := $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(JPEGWRITE)/$(ARCH_OUT)libjpegwrite.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
TARGET := $(BINDIR)/os/printd.elf
DEPS := $(OBJS:.o=.d)
+6 -7
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
@@ -47,7 +46,7 @@ SRCS := main.cpp stb_truetype_impl.cpp font_data.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/printers/printers.elf
LIBS := $(LIBDIR)/tls/libtls.a $(LIBDIR)/bearssl/libbearssl.a $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/tls/$(ARCH_OUT)libtls.a $(LIBDIR)/bearssl/build$(ARCH_SUFFIX)/libbearssl.a $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -51,9 +50,9 @@ TARGET := $(BINDIR)/apps/procmgr/procmgr.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/procmgr
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+5 -5
View File
@@ -1,18 +1,18 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
CXX := $(TOOLCHAIN_PREFIX)g++
CC := $(TOOLCHAIN_PREFIX)gcc
LD := $(TOOLCHAIN_PREFIX)ld
STRIP := $(TOOLCHAIN_PREFIX)strip
PROG_INC := ../../include
OBJDIR := obj
LIBOUTDIR := ../../bin/os
OBJDIR := obj$(ARCH_SUFFIX)
LIBOUTDIR := ../../bin$(ARCH_SUFFIX)/os
LIBC_SRC := ../../lib/libc/libc.c
GCC_INCLUDE := $(shell $(CC) -print-file-name=include)
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -ffreestanding -fno-stack-protector -fno-stack-check -fPIC -fvisibility=hidden -fno-rtti -fno-exceptions -ffunction-sections -fdata-sections -mno-80387 -mno-mmx -mno-sse -mno-sse2 -MMD -MP -I $(PROG_INC) -isystem $(PROG_INC)/libc
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -ffreestanding -fno-stack-protector -fno-stack-check -fPIC -fvisibility=hidden -fno-rtti -fno-exceptions -ffunction-sections -fdata-sections $(ARCH_NOFP_FLAGS) -MMD -MP -I $(PROG_INC) -isystem $(PROG_INC)/libc
LIBC_CFLAGS := -std=gnu11 -O2 -ffreestanding -fno-stack-protector -fno-stack-check -fPIC -fvisibility=hidden -ffunction-sections -fdata-sections -isystem $(PROG_INC)/libc -isystem $(GCC_INCLUDE)
LDFLAGS := -shared --build-id=none --gc-sections --hash-style=sysv -m elf_x86_64
LDFLAGS := -shared --build-id=none --gc-sections --hash-style=sysv -m $(ARCH_LD_EMULATION)
OBJS := $(OBJDIR)/rtlsdr.o $(OBJDIR)/r820t.o
TARGET := $(LIBOUTDIR)/rtlsdr.lib
.PHONY: all clean
+5 -7
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -23,8 +23,7 @@ LIBC_LIB := $(PROGRAMS)/lib/libc
PROG_INC := $(PROGRAMS)/include
LINK_LD := $(PROGRAMS)/link.ld
BINDIR := $(PROGRAMS)/bin
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -41,8 +40,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -56,7 +54,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(JPEGWRITE_LIB)/libjpegwrite.a $(LOADER_LIB)/liblibloader.a $(LIBC_LIB)/liblibc.a
LIBS := $(JPEGWRITE_LIB)/$(ARCH_OUT)libjpegwrite.a $(LOADER_LIB)/$(ARCH_OUT)liblibloader.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Source files ----
+6 -6
View File
@@ -1,18 +1,18 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
CXX := $(TOOLCHAIN_PREFIX)g++
PROG_INC := ../../include
LINK_LD := ../../link.ld
OBJDIR := obj
TARGET := ../../bin/os/sdr.elf
LIBS := ../../lib/libloader/liblibloader.a ../../lib/libc/liblibc.a
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -ffreestanding -fno-stack-protector -fno-stack-check -fno-rtti -fno-exceptions -ffunction-sections -fdata-sections -mno-80387 -mno-mmx -mno-sse -mno-sse2 -I $(PROG_INC) -isystem $(PROG_INC)/libc
OBJDIR := obj$(ARCH_SUFFIX)
TARGET := ../../bin$(ARCH_SUFFIX)/os/sdr.elf
LIBS := ../../lib/libloader/$(ARCH_OUT)liblibloader.a ../../lib/libc/$(ARCH_OUT)liblibc.a
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -ffreestanding -fno-stack-protector -fno-stack-check -fno-rtti -fno-exceptions -ffunction-sections -fdata-sections $(ARCH_NOFP_FLAGS) -I $(PROG_INC) -isystem $(PROG_INC)/libc
LDFLAGS := -nostdlib -Wl,--gc-sections -T $(LINK_LD)
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJDIR)/main.o $(LIBS) $(LINK_LD) Makefile
mkdir -p ../../bin/os
mkdir -p ../../bin$(ARCH_SUFFIX)/os
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJDIR)/main.o $(LIBS) -o $@
$(OBJDIR)/main.o: main.cpp Makefile
mkdir -p $(OBJDIR)
+6 -6
View File
@@ -3,23 +3,23 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
BEARSSL := ../../lib/bearssl
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -Wno-unused-parameter \
-Wno-unused-function -ffreestanding -fno-stack-protector -fno-stack-check \
-fno-rtti -fno-exceptions -ffunction-sections -fdata-sections -msse -msse2 \
-fno-rtti -fno-exceptions -ffunction-sections -fdata-sections $(ARCH_FP_FLAGS) \
-MMD -MP -I $(PROG_INC) -isystem $(PROG_INC)/libc \
-I $(BEARSSL)/inc
LDFLAGS := -nostdlib -Wl,--gc-sections -T $(LINK_LD)
@@ -28,7 +28,7 @@ SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/settings/settings.elf
# bearssl: montauk/user.h (account records) needs its headers and hashes.
LIBS := $(BEARSSL)/libbearssl.a $(LIBDIR)/libc/liblibc.a
LIBS := $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
all: $(TARGET)
+7 -11
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,10 +17,9 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
BINDIR := ../../bin$(ARCH_SUFFIX)
LIBDIR := ../../lib
OBJDIR := obj
OBJDIR := obj$(ARCH_SUFFIX)
# ---- C++ compiler flags ----
CXXFLAGS := \
@@ -36,10 +35,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
$(ARCH_NOFP_FLAGS) \
-MMD -MP \
-I . \
-I $(PROG_INC)
@@ -64,9 +60,9 @@ TARGET := $(BINDIR)/os/shell.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/os
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp shell.h Makefile
mkdir -p $(OBJDIR)
+8 -9
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -57,15 +56,15 @@ OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
# ---- Target ----
TARGET := $(BINDIR)/apps/spreadsheet/spreadsheet.elf
LOADER_LIB := $(LIBDIR)/libloader/liblibloader.a
LOADER_LIB := $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LOADER_LIB) $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LOADER_LIB) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/spreadsheet
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LOADER_LIB) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LOADER_LIB) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+5 -5
View File
@@ -1,18 +1,18 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
CXX := $(TOOLCHAIN_PREFIX)g++
PROG_INC := ../../include
LIBDIR := ../../lib
LINK_LD := ../../link.ld
OBJDIR := obj
TARGET := ../../bin/os/sshd.elf
OBJDIR := obj$(ARCH_SUFFIX)
TARGET := ../../bin$(ARCH_SUFFIX)/os/sshd.elf
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -ffreestanding \
-fno-stack-protector -fno-stack-check -fno-rtti -fno-exceptions \
-ffunction-sections -fdata-sections -mno-80387 -mno-mmx -mno-sse -mno-sse2 \
-ffunction-sections -fdata-sections $(ARCH_NOFP_FLAGS) \
-MMD -MP -I $(PROG_INC) -I $(LIBDIR)/bearssl/inc -isystem $(PROG_INC)/libc
LDFLAGS := -nostdlib -Wl,--gc-sections -T $(LINK_LD)
LIBS := $(LIBDIR)/bearssl/libbearssl.a $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/bearssl/build$(ARCH_SUFFIX)/libbearssl.a $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJDIR)/main.o $(LIBS) $(LINK_LD) Makefile
+5 -5
View File
@@ -1,21 +1,21 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
CXX := $(TOOLCHAIN_PREFIX)g++
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := -std=gnu++20 -g -O2 -pipe -Wall -Wextra -Wno-unused-parameter \
-ffreestanding -fno-stack-protector -fno-stack-check -fno-rtti -fno-exceptions \
-ffunction-sections -fdata-sections -msse -msse2 -MMD -MP -I $(PROG_INC) \
-ffunction-sections -fdata-sections $(ARCH_FP_FLAGS) -MMD -MP -I $(PROG_INC) \
-I $(LIBDIR)/bearssl/inc -isystem $(PROG_INC)/libc
LDFLAGS := -nostdlib -Wl,--gc-sections -T $(LINK_LD)
SRCS := main.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/sshserver/sshserver.elf
LIBS := $(LIBDIR)/bearssl/libbearssl.a $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/bearssl/build$(ARCH_SUFFIX)/libbearssl.a $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBS)
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -51,9 +50,9 @@ TARGET := $(BINDIR)/apps/syslog/syslog.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a $(LIBDIR)/libloader/liblibloader.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a
mkdir -p $(BINDIR)/apps/syslog
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a $(LIBDIR)/libloader/liblibloader.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+12 -13
View File
@@ -6,11 +6,11 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CC = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
AR = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CC = $(error $(TOOLCHAIN_MISSING))
CXX = $(error $(TOOLCHAIN_MISSING))
AR = $(error $(TOOLCHAIN_MISSING))
else
CC := $(TOOLCHAIN_PREFIX)gcc
CXX := $(TOOLCHAIN_PREFIX)g++
@@ -21,8 +21,8 @@ endif
PROG_INC := ../../include
LIBDIR := ../../lib
OBJDIR := obj
BINDIR := ../../bin/os
OBJDIR := obj$(ARCH_SUFFIX)
BINDIR := ../../bin$(ARCH_SUFFIX)/os
# ---- Compiler flags ----
@@ -42,8 +42,7 @@ CFLAGS := \
-fno-stack-check \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-fno-tree-loop-distribute-patterns \
-D__MONTAUKOS__=1 \
-DONE_SOURCE=0 \
@@ -93,7 +92,7 @@ TARGET := $(BINDIR)/tcc.elf
# ---- CRT objects (staged from shared libc) ----
SHARED_CRT_DIR := $(LIBDIR)/libc
CRT_DIR := ../../bin/sdk/tcc/lib
CRT_DIR := ../../bin$(ARCH_SUFFIX)/sdk/tcc/lib
CRT_OBJS := $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtn.o
# ---- Rules ----
@@ -102,9 +101,9 @@ CRT_OBJS := $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtn.o
all: $(TARGET) $(CRT_OBJS) $(CRT_DIR)/libc.a
$(TARGET): $(ALL_OBJS) $(LIBDIR)/libc/liblibc.a
$(TARGET): $(ALL_OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
@mkdir -p $(BINDIR)
$(CC) $(CFLAGS) $(LDFLAGS) $(ALL_OBJS) $(LIBDIR)/libc/liblibc.a -lgcc -o $@
$(CC) $(CFLAGS) $(LDFLAGS) $(ALL_OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -lgcc -o $@
$(OBJDIR)/%.o: %.c Makefile config.h montauk_compat.h
@mkdir -p $(OBJDIR)
@@ -114,7 +113,7 @@ $(OBJDIR)/%.o: %.S Makefile
@mkdir -p $(OBJDIR)
$(CC) $(CFLAGS) -MMD -MP -c $< -o $@
$(SHARED_CRT_DIR)/liblibc.a $(SHARED_CRT_DIR)/liblibc-full.a $(SHARED_CRT_DIR)/crt1.o $(SHARED_CRT_DIR)/crti.o $(SHARED_CRT_DIR)/crtn.o:
$(SHARED_CRT_DIR)/$(ARCH_OUT)liblibc.a $(SHARED_CRT_DIR)/liblibc-full.a $(SHARED_CRT_DIR)/crt1.o $(SHARED_CRT_DIR)/crti.o $(SHARED_CRT_DIR)/crtn.o:
$(MAKE) -C $(SHARED_CRT_DIR)
$(CRT_DIR)/crt1.o: $(SHARED_CRT_DIR)/crt1.o
@@ -132,7 +131,7 @@ $(CRT_DIR)/crtn.o: $(SHARED_CRT_DIR)/crtn.o
# liblibc-full.a, not liblibc.a: programs compiled on-OS with tcc cannot pass
# -u _pf_putfloat, so this sysroot ships the variant with the printf float path
# already bound in. See lib/libc/Makefile.
$(CRT_DIR)/libc.a: $(LIBDIR)/libc/liblibc-full.a
$(CRT_DIR)/libc.a: $(LIBDIR)/libc/$(ARCH_OUT)liblibc-full.a
@mkdir -p $(CRT_DIR)
cp $< $@
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -51,9 +50,9 @@ TARGET := $(BINDIR)/apps/terminal/terminal.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/terminal
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+8 -9
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -17,8 +17,8 @@ endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
# ---- Compiler flags ----
@@ -37,8 +37,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -57,15 +56,15 @@ OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
# ---- Target ----
TARGET := $(BINDIR)/apps/texteditor/texteditor.elf
LOADER_LIB := $(LIBDIR)/libloader/liblibloader.a
LOADER_LIB := $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LOADER_LIB) $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LOADER_LIB) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/texteditor
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LOADER_LIB) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LOADER_LIB) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
$(OBJDIR)/%.o: %.cpp Makefile
mkdir -p $(OBJDIR)
+6 -7
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-MMD -MP \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc
@@ -46,7 +45,7 @@ SRCS := main.cpp stb_truetype_impl.cpp font_data.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
TARGET := $(BINDIR)/apps/timezone/timezone.elf
LIBS := $(LIBDIR)/libc/liblibc.a
LIBS := $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
.PHONY: all clean
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-I . \
-isystem $(PROG_INC)/libc
@@ -51,9 +50,9 @@ TARGET := $(BINDIR)/apps/video/video.elf
all: $(TARGET)
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/liblibc.a
$(TARGET): $(OBJS) $(LINK_LD) Makefile $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
mkdir -p $(BINDIR)/apps/video
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/liblibc.a -o $@
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a -o $@
HEADERS := avi.hpp
+6 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -21,9 +21,8 @@ LIBC_LIB := ../../lib/libc
LIBC_INC := ../../include/libc
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -40,8 +39,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-I $(BEARSSL)/inc
@@ -55,7 +53,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(TLS_LIB)/libtls.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a
LIBS := $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Source files ----
+6 -10
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -21,9 +21,8 @@ LIBC_LIB := ../../lib/libc
LIBC_INC := ../../include/libc
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -39,10 +38,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mno-80387 \
-mno-mmx \
-mno-sse \
-mno-sse2 \
$(ARCH_NOFP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-I $(BEARSSL)/inc
@@ -56,7 +52,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(TLS_LIB)/libtls.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a
LIBS := $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Target ----
+6 -8
View File
@@ -6,9 +6,9 @@ MAKEFLAGS += -rR
# ---- Toolchain ----
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
@@ -21,9 +21,8 @@ LIBC_LIB := ../../lib/libc
LIBC_INC := ../../include/libc
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
# ---- Compiler flags ----
CXXFLAGS := \
@@ -40,8 +39,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(LIBC_INC) \
-I $(BEARSSL)/inc
@@ -55,7 +53,7 @@ LDFLAGS := \
# ---- Libraries ----
LIBS := $(TLS_LIB)/libtls.a $(BEARSSL)/libbearssl.a $(LIBC_LIB)/liblibc.a
LIBS := $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a
# ---- Source files ----
+7 -8
View File
@@ -4,17 +4,17 @@
MAKEFLAGS += -rR
.SUFFIXES:
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-montauk-
include ../../mk/arch.mk
ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
CXX = $(error x86_64-montauk toolchain not found. Run ./toolchain/build-montauk-toolchain.sh first)
CXX = $(error $(TOOLCHAIN_MISSING))
else
CXX := $(TOOLCHAIN_PREFIX)g++
endif
PROG_INC := ../../include
LINK_LD := ../../link.ld
BINDIR := ../../bin
OBJDIR := obj
BINDIR := ../../bin$(ARCH_SUFFIX)
OBJDIR := obj$(ARCH_SUFFIX)
LIBDIR := ../../lib
CXXFLAGS := \
@@ -31,8 +31,7 @@ CXXFLAGS := \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-msse \
-msse2 \
$(ARCH_FP_FLAGS) \
-I $(PROG_INC) \
-isystem $(PROG_INC)/libc \
-I ../../lib/bearssl/inc
@@ -44,8 +43,8 @@ LDFLAGS := \
SRCS := main.cpp document.cpp render.cpp input.cpp print_export.cpp stb_truetype_impl.cpp
OBJS := $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.o))
LOADER_LIB := $(LIBDIR)/libloader/liblibloader.a
LIBS := $(LOADER_LIB) $(LIBDIR)/tls/libtls.a $(LIBDIR)/bearssl/libbearssl.a $(LIBDIR)/libjpegwrite/libjpegwrite.a $(LIBDIR)/libc/liblibc.a
LOADER_LIB := $(LIBDIR)/libloader/$(ARCH_OUT)liblibloader.a
LIBS := $(LOADER_LIB) $(LIBDIR)/tls/$(ARCH_OUT)libtls.a $(LIBDIR)/bearssl/build$(ARCH_SUFFIX)/libbearssl.a $(LIBDIR)/libjpegwrite/$(ARCH_OUT)libjpegwrite.a $(LIBDIR)/libc/$(ARCH_OUT)liblibc.a
TARGET := $(BINDIR)/apps/wordprocessor/wordprocessor.elf