mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-09 19:30:29 +00:00
Build on macOS/Darwin
This commit is contained in:
parent
f6b6204b9e
commit
3e4f8b0b58
8 changed files with 73 additions and 21 deletions
1
Makefile
1
Makefile
|
@ -85,6 +85,7 @@ PKGS =
|
||||||
|
|
||||||
-include ~/.cosmo.mk
|
-include ~/.cosmo.mk
|
||||||
include build/functions.mk #─┐
|
include build/functions.mk #─┐
|
||||||
|
include build/compiler.mk #─┐
|
||||||
include build/definitions.mk # ├──META
|
include build/definitions.mk # ├──META
|
||||||
include build/config.mk # │ You can build
|
include build/config.mk # │ You can build
|
||||||
include build/rules.mk # │ You can topologically order
|
include build/rules.mk # │ You can topologically order
|
||||||
|
|
43
build/compiler.mk
Normal file
43
build/compiler.mk
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#-*-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
|
||||||
|
#
|
||||||
|
# Cosmopolitan Compiler and Toold Definitions
|
||||||
|
#
|
||||||
|
|
||||||
|
# see build/compile, etc. which run third_party/gcc/unbundle.sh
|
||||||
|
AR = build/bootstrap/ar.com
|
||||||
|
PKG = build/bootstrap/package.com
|
||||||
|
MKDEPS = build/bootstrap/mkdeps.com
|
||||||
|
ZIPOBJ = build/bootstrap/zipobj.com
|
||||||
|
|
||||||
|
ifeq ($(MODE), darwin)
|
||||||
|
TOOLPREFIX=/usr/local/bin/x86_64-linux-musl-
|
||||||
|
AS = $(TOOLPREFIX)as
|
||||||
|
CC = $(TOOLPREFIX)gcc
|
||||||
|
CXX = $(TOOLPREFIX)g++
|
||||||
|
CXXFILT = $(TOOLPREFIX)c++filt
|
||||||
|
LD = $(TOOLPREFIX)ld.bfd
|
||||||
|
NM = $(TOOLPREFIX)nm
|
||||||
|
GCC = $(TOOLPREFIX)gcc
|
||||||
|
STRIP = $(TOOLPREFIX)strip
|
||||||
|
OBJCOPY = $(TOOLPREFIX)objcopy
|
||||||
|
OBJDUMP = $(TOOLPREFIX)ojbdump
|
||||||
|
ADDRLINE = $(TOOLPREFIX)addr2line
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
AS = o/third_party/gcc/bin/x86_64-linux-musl-as
|
||||||
|
CC = o/third_party/gcc/bin/x86_64-linux-musl-gcc
|
||||||
|
CXX = o/third_party/gcc/bin/x86_64-linux-musl-g++
|
||||||
|
CXXFILT = o/third_party/gcc/bin/x86_64-linux-musl-c++filt
|
||||||
|
LD = o/third_party/gcc/bin/x86_64-linux-musl-ld.bfd
|
||||||
|
NM = o/third_party/gcc/bin/x86_64-linux-musl-nm
|
||||||
|
GCC = o/third_party/gcc/bin/x86_64-linux-musl-gcc
|
||||||
|
STRIP = o/third_party/gcc/bin/x86_64-linux-musl-strip
|
||||||
|
OBJCOPY = o/third_party/gcc/bin/x86_64-linux-musl-objcopy
|
||||||
|
OBJDUMP = o/third_party/gcc/bin/x86_64-linux-musl-objdump
|
||||||
|
ADDR2LINE = $(shell pwd)/o/third_party/gcc/bin/x86_64-linux-musl-addr2line
|
||||||
|
|
||||||
|
endif
|
|
@ -308,6 +308,23 @@ OBJDUMP = llvm-objdump
|
||||||
ADDR2LINE = llvm-addr2line
|
ADDR2LINE = llvm-addr2line
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# macOS using gcc - options copied from Tiny Metallic Unix Mode
|
||||||
|
ifeq ($(MODE), darwin)
|
||||||
|
CONFIG_CPPFLAGS += \
|
||||||
|
-DTINY \
|
||||||
|
-DNDEBUG \
|
||||||
|
-DTRUSTWORTHY \
|
||||||
|
-DSUPPORT_VECTOR=251
|
||||||
|
CONFIG_CCFLAGS += \
|
||||||
|
-Os \
|
||||||
|
-fno-align-functions \
|
||||||
|
-fno-align-jumps \
|
||||||
|
-fno-align-labels \
|
||||||
|
-fno-align-loops
|
||||||
|
TARGET_ARCH ?= \
|
||||||
|
-msse3
|
||||||
|
endif
|
||||||
|
|
||||||
# ANSI Mode
|
# ANSI Mode
|
||||||
#
|
#
|
||||||
# These flags cause GCC to predefine __STRICT_ANSI__. Please be warned
|
# These flags cause GCC to predefine __STRICT_ANSI__. Please be warned
|
||||||
|
|
|
@ -54,23 +54,6 @@ GZ ?= gzip
|
||||||
CLANG = clang
|
CLANG = clang
|
||||||
FC = gfortran #/opt/cross9f/bin/x86_64-linux-musl-gfortran
|
FC = gfortran #/opt/cross9f/bin/x86_64-linux-musl-gfortran
|
||||||
|
|
||||||
# see build/compile, etc. which run third_party/gcc/unbundle.sh
|
|
||||||
AR = build/bootstrap/ar.com
|
|
||||||
PKG = build/bootstrap/package.com
|
|
||||||
MKDEPS = build/bootstrap/mkdeps.com
|
|
||||||
ZIPOBJ = build/bootstrap/zipobj.com
|
|
||||||
AS = o/third_party/gcc/bin/x86_64-linux-musl-as
|
|
||||||
CC = o/third_party/gcc/bin/x86_64-linux-musl-gcc
|
|
||||||
CXX = o/third_party/gcc/bin/x86_64-linux-musl-g++
|
|
||||||
CXXFILT = o/third_party/gcc/bin/x86_64-linux-musl-c++filt
|
|
||||||
LD = o/third_party/gcc/bin/x86_64-linux-musl-ld.bfd
|
|
||||||
NM = o/third_party/gcc/bin/x86_64-linux-musl-nm
|
|
||||||
GCC = o/third_party/gcc/bin/x86_64-linux-musl-gcc
|
|
||||||
STRIP = o/third_party/gcc/bin/x86_64-linux-musl-strip
|
|
||||||
OBJCOPY = o/third_party/gcc/bin/x86_64-linux-musl-objcopy
|
|
||||||
OBJDUMP = o/third_party/gcc/bin/x86_64-linux-musl-objdump
|
|
||||||
ADDR2LINE = $(shell pwd)/o/third_party/gcc/bin/x86_64-linux-musl-addr2line
|
|
||||||
|
|
||||||
COMMA := ,
|
COMMA := ,
|
||||||
PWD := $(shell pwd)
|
PWD := $(shell pwd)
|
||||||
IMAGE_BASE_VIRTUAL ?= 0x400000
|
IMAGE_BASE_VIRTUAL ?= 0x400000
|
||||||
|
|
|
@ -18,8 +18,10 @@
|
||||||
# links GCC runtimes when using later versions, so some concerns might
|
# links GCC runtimes when using later versions, so some concerns might
|
||||||
# not apply.
|
# not apply.
|
||||||
|
|
||||||
if [ ! -d o/third_party/gcc ]; then
|
if [ x`uname -s` != xDarwin ]; then
|
||||||
third_party/gcc/unbundle.sh
|
if [ ! -d o/third_party/gcc ]; then
|
||||||
|
third_party/gcc/unbundle.sh
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
# This script is launched at the start of Makefile to detect if
|
# This script is launched at the start of Makefile to detect if
|
||||||
# binfmt_misc was tuned to launch 'MZ' shell scripts under WINE
|
# binfmt_misc was tuned to launch 'MZ' shell scripts under WINE
|
||||||
|
|
||||||
if [ x`uname -s` != xLinux ]; then
|
if [ x`uname -s` != xLinux -a x`uname -s` != xDarwin ]; then
|
||||||
cat <<'EOF' >&2
|
cat <<'EOF' >&2
|
||||||
|
|
||||||
ERROR
|
ERROR
|
||||||
|
|
|
@ -8,6 +8,10 @@ if [ "$MODE" = opt ] || [ "$MODE" = optlinux ]; then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$MODE" = darwin ]; then
|
||||||
|
exit # TODO
|
||||||
|
fi
|
||||||
|
|
||||||
# smoke test userspace binary emulation
|
# smoke test userspace binary emulation
|
||||||
CMD="o/$MODE/tool/build/blinkenlights.com.dbg o/$MODE/examples/hello.com"
|
CMD="o/$MODE/tool/build/blinkenlights.com.dbg o/$MODE/examples/hello.com"
|
||||||
if OUTPUT="$($CMD)"; then
|
if OUTPUT="$($CMD)"; then
|
||||||
|
|
|
@ -946,7 +946,9 @@ int main(int argc, char *argv[]) {
|
||||||
AddArg("-Wno-unused-command-line-argument");
|
AddArg("-Wno-unused-command-line-argument");
|
||||||
AddArg("-Wno-incompatible-pointer-types-discards-qualifiers");
|
AddArg("-Wno-incompatible-pointer-types-discards-qualifiers");
|
||||||
}
|
}
|
||||||
AddArg("-no-canonical-prefixes");
|
if (!IsXnu()) {
|
||||||
|
AddArg("-no-canonical-prefixes");
|
||||||
|
}
|
||||||
if (!__nocolor) {
|
if (!__nocolor) {
|
||||||
AddArg(firstnonnull(colorflag, "-fdiagnostics-color=always"));
|
AddArg(firstnonnull(colorflag, "-fdiagnostics-color=always"));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue