Turns out the reason GCC wasn't as smart about startup code for
shared objects as we hoped is because nobody told it to be :D
Change the STARTFILE_SPEC and ENDFILE_SPEC in gcc/config/serenity.h to
skip crt0.o and to link the S variants of crtbegin
and crtend for shared objects.
Because we're using the crtbegin and crtend from libgcc, also tell
libgcc in libgcc/config.host to compile crtbeginS and crtendS from
crtstuff.c.
When running ./package.sh to rebuild an already installed port, we would not
want to spend time re-downlodaing the same tarball again. Ideally, this should
use some sort of hash checking to ensure the file is not truncated or something,
but this is good enough for now.
For python3 cross compilation, a native installation of python3 is
needed. This patch adds a build script for python3 to the toolchain
and informs the user to run that script if the python port is build
and no native python3 with the same major and minor version is
being found.
According to gitignore docs,
> It is not possible to re-include a file if a parent directory of that file is excluded.
So make sure to re-include "*/patches" before trying to re-include "*/patches/*".
This commit also converts the .gitignore file to have Unix line endings.
Previously we were only able to build with --with-features=small.
Thanks to all the compatibility work done in the kernel and LibC over
the last couple of months, we can now build --with-features=normal.
It's not the biggest deal in the world, but it's pretty nice to see
this kind of progress!
This port is experimental and not all pythom modules are working.
But this is an initial shot which can be further worked on, as
SerenityOS gets more mature. :^)
The main limitation is that locales, threading and time related
functions are not working.
Ports/.port_include.sh, Toolchain/BuildIt.sh, Toolchain/UseIt.sh
have been left largely untouched due to use of Bash-exclusive
functions and variables such as $BASH_SOURCE, pushd and popd.
Some systems (e.g. Arch Linux) build their gmake with Guile support and
thus have it installed. This patch disables Guile autodetection in the
configure script. It also updates the version of gmake to 4.2.1.
Fixes#645.
Quake now will build and run on Serenity. There are a few issues,
that'll stop you from playing currently, however, such as SDL
not having any keyboard input, as well as `printf_internal` throwing
an assertion over the `.` format specifier. However, the game launches
perfectly.
Much redundancy is removed from package scripts with this system.
It also supports simple dependency management, uninstalling (through
BSD ports style plist files), cleaning up after itself (with clean,
clean_dist, clean_all commands), etc.