-
-
Notifications
You must be signed in to change notification settings - Fork 654
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Introduce cosmocc and cosmoc++ toolchain commands
- Loading branch information
Showing
4 changed files
with
141 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
.include "o/libc/sysv/consts/syscon.internal.inc" | ||
.syscon tcp,TCP_CORK,3,4,4,16,0,0 | ||
.syscon tcp,TCP_CORK,3,4,4,16,4,0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
#!/bin/sh | ||
# replacement for c++ command | ||
# | ||
# we assume you run the following beforehand | ||
# | ||
# sudo chmod 1777 /opt | ||
# cd /opt | ||
# git clone https://github.com/jart/cosmopolitan cosmo | ||
# cd cosmo | ||
# make -j | ||
# | ||
# you can then use it to build open source projects, e.g. | ||
# | ||
# export CC=cosmocc | ||
# export CXX=cosmoc++ | ||
# export LD=cosmoc++ | ||
# ./configure --prefix=/opt/cosmos | ||
# make -j | ||
# make install | ||
# | ||
|
||
if [ "$1" = "--version" ]; then | ||
cat <<'EOF' | ||
x86_64-unknown-cosmo-g++ (GCC) 9.2.0 | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This is free software; see the source for copying conditions. There is NO | ||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
EOF | ||
exit 0 | ||
fi | ||
|
||
CXX="/opt/cosmo/o/third_party/gcc/bin/x86_64-linux-musl-g++" | ||
CCFLAGS="-O2 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -fno-pie -pg -mnop-mcount -mno-tls-direct-seg-refs" | ||
CXXFLAGS="-fno-exceptions -fuse-cxa-atexit -fno-threadsafe-statics" | ||
CPPFLAGS="-DNDEBUG -nostdinc -iquote /opt/cosmo -isystem /opt/cosmos/include -isystem /opt/cosmo/libc/isystem -include libc/integral/normalize.inc" | ||
LDFLAGS="-static -no-pie -nostdlib -fuse-ld=bfd -Wl,-melf_x86_64 -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 -L/opt/cosmos/lib -Wl,-T,/opt/cosmo/o/ape/public/ape.lds /opt/cosmo/o/ape/ape-no-modify-self.o /opt/cosmo/o/libc/crt/crt.o" | ||
LDLIBS="/opt/cosmo/o/third_party/libcxx/libcxx.a /opt/cosmo/o/cosmopolitan.a" | ||
|
||
HAS_C=0 | ||
HAS_O=0 | ||
HAS_E=0 | ||
FIRST=1 | ||
for x; do | ||
if [ $FIRST -eq 1 ]; then | ||
set -- | ||
FIRST=0 | ||
fi | ||
if [ "$x" = "-c" ]; then | ||
HAS_C=1 | ||
fi | ||
if [ "$x" = "-E" ]; then | ||
HAS_E=1 | ||
fi | ||
if [ "$x" = "-o" ] || [ "${x#-o}" != "$x" ]; then | ||
HAS_O=1 | ||
fi | ||
set -- "$@" "$x" | ||
done | ||
|
||
if [ "$HAS_E" = "1" ]; then | ||
set -- $CPPFLAGS "$@" | ||
elif [ "$HAS_C" = "1" ]; then | ||
set -- $CCFLAGS $CXXFLAGS $CPPFLAGS "$@" | ||
else | ||
set -- $LDFLAGS $CPPFLAGS "$@" $LDLIBS | ||
fi | ||
|
||
set -- "$CXX" "$@" | ||
printf '(cd %s; %s)\n' "$PWD" "$*" >>/tmp/build.log | ||
exec "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/sh | ||
# replacement for cc command | ||
# | ||
# we assume you run the following beforehand | ||
# | ||
# sudo chmod 1777 /opt | ||
# cd /opt | ||
# git clone https://github.com/jart/cosmopolitan cosmo | ||
# cd cosmo | ||
# make -j | ||
# | ||
# you can then use it to build open source projects, e.g. | ||
# | ||
# export CC=cosmocc | ||
# export CXX=cosmoc++ | ||
# export LD=cosmoc++ | ||
# ./configure --prefix=/opt/cosmos | ||
# make -j | ||
# make install | ||
# | ||
|
||
if [ "$1" = "--version" ]; then | ||
cat <<'EOF' | ||
x86_64-unknown-cosmo-gcc (GCC) 9.2.0 | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This is free software; see the source for copying conditions. There is NO | ||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
EOF | ||
exit 0 | ||
fi | ||
|
||
CC="/opt/cosmo/o/third_party/gcc/bin/x86_64-linux-musl-gcc" | ||
CFLAGS="-g -O2 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -fno-pie -pg -mnop-mcount -mno-tls-direct-seg-refs" | ||
CPPFLAGS="-DNDEBUG -nostdinc -iquote /opt/cosmo -isystem /opt/cosmos/include -isystem /opt/cosmo/libc/isystem -include libc/integral/normalize.inc" | ||
LDFLAGS="-static -no-pie -nostdlib -fuse-ld=bfd -Wl,-melf_x86_64 -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 -L/opt/cosmos/lib -Wl,-T,/opt/cosmo/o/ape/public/ape.lds /opt/cosmo/o/ape/ape-no-modify-self.o /opt/cosmo/o/libc/crt/crt.o" | ||
LDLIBS="/opt/cosmo/o/cosmopolitan.a" | ||
|
||
HAS_C=0 | ||
HAS_O=0 | ||
HAS_E=0 | ||
FIRST=1 | ||
for x; do | ||
if [ $FIRST -eq 1 ]; then | ||
set -- | ||
FIRST=0 | ||
fi | ||
if [ "$x" = "-c" ]; then | ||
HAS_C=1 | ||
fi | ||
if [ "$x" = "-E" ]; then | ||
HAS_E=1 | ||
fi | ||
if [ "$x" = "-o" ] || [ "${x#-o}" != "$x" ]; then | ||
HAS_O=1 | ||
fi | ||
set -- "$@" "$x" | ||
done | ||
|
||
if [ "$HAS_E" = "1" ]; then | ||
set -- $CPPFLAGS "$@" | ||
elif [ "$HAS_C" = "1" ]; then | ||
set -- $CFLAGS $CPPFLAGS "$@" | ||
else | ||
set -- $LDFLAGS $CPPFLAGS "$@" $LDLIBS | ||
fi | ||
|
||
set -- "$CC" "$@" | ||
printf '(cd %s; %s)\n' "$PWD" "$*" >>/tmp/build.log | ||
exec "$@" |