mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
5b60e5a37d
The termios::c_cc field turned out to be incorrectly defined on Linux due to some confusion between the glibc and kernel definitions. We'll be using the kernel definition, since it has the strongest consensus. Fields have been have been added to struct stat for BSD compatibility such as st_birthtim, plus the GLIBC compatibility of isystem/sys/stat has been improved.
124 lines
3.7 KiB
Makefile
124 lines
3.7 KiB
Makefile
#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
|
|
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
|
|
#
|
|
# SYNOPSIS
|
|
#
|
|
# System Call Compatibility Layer
|
|
#
|
|
# DESCRIPTION
|
|
#
|
|
# This package exports a familiar system call interface that works
|
|
# across platforms.
|
|
|
|
PKGS += LIBC_CALLS
|
|
|
|
LIBC_CALLS_ARTIFACTS += LIBC_CALLS_A
|
|
LIBC_CALLS = $(LIBC_CALLS_A_DEPS) $(LIBC_CALLS_A)
|
|
LIBC_CALLS_A = o/$(MODE)/libc/calls/syscalls.a
|
|
LIBC_CALLS_A_FILES := \
|
|
$(wildcard libc/calls/typedef/*) \
|
|
$(wildcard libc/calls/struct/*) \
|
|
$(wildcard libc/calls/*)
|
|
LIBC_CALLS_A_HDRS = $(filter %.h,$(LIBC_CALLS_A_FILES))
|
|
LIBC_CALLS_A_INCS = $(filter %.inc,$(LIBC_CALLS_A_FILES))
|
|
LIBC_CALLS_A_SRCS_S = $(filter %.S,$(LIBC_CALLS_A_FILES))
|
|
LIBC_CALLS_A_SRCS_C = $(filter %.c,$(LIBC_CALLS_A_FILES))
|
|
|
|
LIBC_CALLS_A_SRCS = \
|
|
$(LIBC_CALLS_A_SRCS_S) \
|
|
$(LIBC_CALLS_A_SRCS_C)
|
|
|
|
LIBC_CALLS_A_OBJS = \
|
|
$(LIBC_CALLS_A_SRCS_S:%.S=o/$(MODE)/%.o) \
|
|
$(LIBC_CALLS_A_SRCS_C:%.c=o/$(MODE)/%.o)
|
|
|
|
LIBC_CALLS_A_CHECKS = \
|
|
$(LIBC_CALLS_A).pkg \
|
|
$(LIBC_CALLS_A_HDRS:%=o/$(MODE)/%.ok)
|
|
|
|
LIBC_CALLS_A_DIRECTDEPS = \
|
|
LIBC_FMT \
|
|
LIBC_INTRIN \
|
|
LIBC_NEXGEN32E \
|
|
LIBC_NT_ADVAPI32 \
|
|
LIBC_NT_IPHLPAPI \
|
|
LIBC_NT_KERNEL32 \
|
|
LIBC_NT_NTDLL \
|
|
LIBC_NT_POWERPROF \
|
|
LIBC_NT_WS2_32 \
|
|
LIBC_STR \
|
|
LIBC_STUBS \
|
|
LIBC_SYSV_CALLS \
|
|
LIBC_SYSV
|
|
|
|
LIBC_CALLS_A_DEPS := \
|
|
$(call uniq,$(foreach x,$(LIBC_CALLS_A_DIRECTDEPS),$($(x))))
|
|
|
|
$(LIBC_CALLS_A): \
|
|
libc/calls/ \
|
|
$(LIBC_CALLS_A).pkg \
|
|
$(LIBC_CALLS_A_OBJS)
|
|
|
|
$(LIBC_CALLS_A).pkg: \
|
|
$(LIBC_CALLS_A_OBJS) \
|
|
$(foreach x,$(LIBC_CALLS_A_DIRECTDEPS),$($(x)_A).pkg)
|
|
|
|
o/$(MODE)/libc/calls/raise.o: \
|
|
OVERRIDE_COPTS += \
|
|
$(NO_MAGIC)
|
|
|
|
o/$(MODE)/libc/calls/termios2linux.o \
|
|
o/$(MODE)/libc/calls/termios2host.o \
|
|
o/$(MODE)/libc/calls/sigenter-freebsd.o \
|
|
o/$(MODE)/libc/calls/sigenter-netbsd.o \
|
|
o/$(MODE)/libc/calls/sigenter-openbsd.o \
|
|
o/$(MODE)/libc/calls/sigenter-xnu.o \
|
|
o/$(MODE)/libc/calls/ntcontext2linux.o: \
|
|
OVERRIDE_COPTS += \
|
|
-O3
|
|
|
|
# TODO(jart): make va_arg optimize well in default mode
|
|
o//libc/calls/ioctl.o \
|
|
o//libc/calls/ioctl_default.o \
|
|
o//libc/calls/ioctl_fioclex-nt.o \
|
|
o//libc/calls/ioctl_fioclex.o \
|
|
o//libc/calls/ioctl_siocgifconf-nt.o \
|
|
o//libc/calls/ioctl_siocgifconf.o \
|
|
o//libc/calls/ioctl_tcgets-nt.o \
|
|
o//libc/calls/ioctl_tcgets.o \
|
|
o//libc/calls/ioctl_tcsets-nt.o \
|
|
o//libc/calls/ioctl_tcsets.o \
|
|
o//libc/calls/ioctl_tiocgwinsz-nt.o \
|
|
o//libc/calls/ioctl_tiocgwinsz.o \
|
|
o//libc/calls/ioctl_tiocswinsz-nt.o \
|
|
o//libc/calls/ioctl_tiocswinsz.o \
|
|
o//libc/calls/fcntl.o: \
|
|
OVERRIDE_CFLAGS += \
|
|
-Os
|
|
|
|
o/$(MODE)/libc/calls/execl.o \
|
|
o/$(MODE)/libc/calls/execle.o \
|
|
o/$(MODE)/libc/calls/execlp.o \
|
|
o/$(MODE)/libc/calls/execve-nt.o \
|
|
o/$(MODE)/libc/calls/execve-sysv.o \
|
|
o/$(MODE)/libc/calls/mkntenvblock.o: \
|
|
OVERRIDE_CPPFLAGS += \
|
|
-DSTACK_FRAME_UNLIMITED
|
|
|
|
o/$(MODE)/libc/calls/ioctl-siocgifconf.o \
|
|
o/$(MODE)/libc/calls/ioctl-siocgifconf-nt.o: \
|
|
OVERRIDE_COPTS += \
|
|
-ffunction-sections \
|
|
-fdata-sections
|
|
|
|
LIBC_CALLS_LIBS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)))
|
|
LIBC_CALLS_SRCS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_SRCS))
|
|
LIBC_CALLS_HDRS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_HDRS))
|
|
LIBC_CALLS_INCS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_INCS))
|
|
LIBC_CALLS_BINS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_BINS))
|
|
LIBC_CALLS_CHECKS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_CHECKS))
|
|
LIBC_CALLS_OBJS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_OBJS))
|
|
LIBC_CALLS_TESTS = $(foreach x,$(LIBC_CALLS_ARTIFACTS),$($(x)_TESTS))
|
|
|
|
.PHONY: o/$(MODE)/libc/calls
|
|
o/$(MODE)/libc/calls: $(LIBC_CALLS_CHECKS)
|