summaryrefslogtreecommitdiff
path: root/Makefile.common
AgeCommit message (Collapse)Author
2020-01-02Build: add support for building on OpenBSDjoshua stein
This requires gcc8 from ports to build the Toolchain.
2020-01-02Build: HOST_CXX -> USE_HOST_CXXjoshua stein
Allow HOST_CXX to be passed to make which will be the actual host C++ compiler used, such as 'make HOST_CXX=clang++'.
2020-01-01Build: show directory during compilation, remove default rulesjoshua stein
When using -j, it can be confusing to see files being compiled out of order, so prefix compilation with the directory it's building for.
2019-12-28Build: wrap make invocations with flock(1)joshua stein
Lock each directory before entering it so when using -j, the same dependency isn't built more than once at a time. This doesn't get full -j parallelism though, since one make child will be sitting idle waiting for flock to receive its lock and continue making (which should then do nothing since it will have been built already). Unfortunately there's not much that can be done to fix that since it can't proceed until its dependency is built by another make process.
2019-12-28Build: Put C and M at the front of $LIB_DEPS to build firstjoshua stein
2019-12-27Build: Disable unknown GCC specific warnings when compiling host tools using ↵Stefano Cristiano
clang
2019-12-27Build: Make sure that RANLIB and AR use cross-compiler provided executablesStefano Cristiano
This is very much needed when compiling host tools on macOS for example
2019-12-25Build: Make sure we build everyone's STATIC_LIB_DEPS firstAndreas Kling
If a program's compilation depends on something generated by a library, we need to make sure that library is built before any of the program's own compilation units.
2019-12-25Build: support library and generator dependenciesjoshua stein
Instead of directly manipulating LDFLAGS, set LIB_DEPS in each subdirectory Makefile listing the libraries needed for building/linking such as "LIB_DEPS = Core GUI Draw IPC Core". This adds each library as an -L and -l argument in LDFLAGS, but also adds the library.a file as a link dependency on the current $(PROGRAM). This causes the given library to be (re)built before linking the current $(PROGRAM), but will also re-link any binaries depending on that library when it is modified, when running make from the root directory. Also turn generator tools like IPCCompiler into dependencies on the files they generate, so they are built on-demand when a particular directory needs them. This all allows the root Makefile to just list directories and not care about the order, as all of the dependency tracking will figure it out.
2019-12-25Build: support compilation of .c filesjoshua stein
2019-12-23Build: Ensure "install" is a phony targetSergey Bugaev
See https://github.com/SerenityOS/serenity/issues/897
2019-12-22Build: Let's say "C++" while building .cpp filesAndreas Kling
2019-12-20Build: only setup git defines for About applicationjoshua stein
2019-12-20Build: Get rid of the USERLAND defineAndreas Kling
Let's simplify things. There is now only KERNEL. To see if you're on Serenity, check if __serenity__ is defined.
2019-12-20Build: Add Libraries/LibPCIDB to library search pathAndreas Kling
2019-12-20Build: Add Libraries/LibPthread to the default includesAndreas Kling
2019-12-20Kernel+LibC: Build with basic -fstack-protector supportAndreas Kling
Use simple stack cookies to try to provoke an assertion failure on stack overflow. This is far from perfect, since we use a constant cookie instead of generating a random one on startup, but it can still help us catch bugs, which is the primary concern right now. :^)
2019-12-20Kernel: Make sure we build with -mno-387, -mno-sse, etc.Andreas Kling
2019-12-20Build: Add PRE_CXX before the host CXX as wellAndreas Kling
This allows the use of ccache for building the host-side tools.
2019-12-20Build: clean up build system, use one shared Makefilejoshua stein
Allow everything to be built from the top level directory with just 'make', cleaned with 'make clean', and installed with 'make install'. Also support these in any particular subdirectory. Specifying 'make VERBOSE=1' will print each ld/g++/etc. command as it runs. Kernel and early host tools (IPCCompiler, etc.) are built as object.host.o so that they don't conflict with other things built with the cross-compiler.
2019-12-19Update toolchain to binutils-2.33.1 gcc-9.2.0Philip Herron
Toolchain build makes git repo out of toolchain to allow patching Fix Makefiles to use new libstdc++ Parameterize BuildIt with default TARGET of i686 but arm is experimental
2019-12-02Build System: Add common definitions for git infoJonathan Archer
Defs for commit, branch, and changes (status)
2019-11-23ProtocolServer+LibProtocol: Introduce a server for handling downloadsAndreas Kling
This patch adds ProtocolServer, a server that handles network requests on behalf of its clients. The first protocol implemented is HTTP. The idea here is to use a plug-in architecture where any number of protocols can be added and implemented without having to mess around with each client program that wants to use the protocol. A simple client API is provided through LibProtocol::Client. :^)
2019-11-16Build: Make sure we look in Libraries/LibPthread for libraries :^)Andreas Kling
2019-11-13LibPthread: Start working on a POSIX threading libraryAndreas Kling
This patch adds pthread_create() and pthread_exit(), which currently simply wrap our existing create_thread() and exit_thread() syscalls. LibThread is also ported to using LibPthread.
2019-10-03Build: Add LibMarkdown to the library search pathSergey Bugaev
2019-09-29Build: Add Libraries/LibHTML/ to the library search pathsAndreas Kling
This makes my hacky incremental rebuild commands work for LibHTML.
2019-09-16Meta: Add a LINK alias to the common makefile for running ld explicitlyConrad Pankoff
2019-08-26LibThread: Introduce a new threading librarySergey Bugaev
This library is meant to provide C++-style wrappers over lower level APIs such as syscalls and pthread_* functions, as well as utilities for easily running pieces of logic on different threads.
2019-08-12LibVT: Factor out terminal emulation from Terminal to make it reusableAndreas Kling
Now that we're bringing back the in-kernel virtual console, we should move towards having a single implementation of terminal emulation. This patch rips out the emulation code from the Terminal application and turns it into the beginnings of LibVT. The basic design idea is that users of VT::Terminal will implement and provide a VT::TerminalClient subclass to handle presentation-specific things. We'll need to iterate on this, but it's a start. :^)
2019-08-03AudioServer: Port to the new generated IPC mechanismAndreas Kling
Fork the IPC Connection classes into Server:: and Client::ConnectionNG. The new IPC messages are serialized very snugly instead of using the same generic data structure for all messages. Remove ASAPI.h since we now generate all of it from AudioServer.ipc :^)
2019-08-03AudioServer: Link against LibIPCAndreas Kling
We're not using any of the functionality yet, but soon...
2019-07-18LibDraw: Introduce (formerly known as SharedGraphics.)Andreas Kling
Instead of LibGUI and WindowServer building their own copies of the drawing and graphics code, let's it in a separate LibDraw library. This avoids building the code twice, and will encourage better separation of concerns. :^)
2019-07-13AudioServer: Assorted infrastructure workRobin Burchell
* Add a LibAudio, and move WAV file parsing there (via AWavFile and AWavLoader) * Add CLocalSocket, and CSocket::connect() variant for local address types. We make some small use of this in WindowServer (as that's where we modelled it from), but don't get too invasive as this PR is already quite large, and the WS I/O is a bit carefully done * Add an AClientConnection which will eventually be used to talk to AudioServer (and make use of it in Piano, though right now it really doesn't do anything except connect, using our new CLocalSocket...)
2019-07-09Build: Prepend $PRE_CXX before the C++ compiler.Andreas Kling
This allows you to set e.g PRE_CXX=ccache in your environment and enjoy cached rebuilds. This makes "./makeall.sh" take 5 seconds instead of 50 seconds on my machine. :^)
2019-07-09AK: Add Platform.h with an ARCH() macro.Andreas Kling
You can currently use this to detect the CPU architecture like so: #if ARCH(I386) ... #elif ARCH(X86_64) ... #else ... #endif This will be helpful for separating out architecture-specific code blocks.
2019-07-04Libraries: Create top level directory for libraries.Andreas Kling
Things were getting a little crowded in the project root, so this patch moves the Lib*/ directories into Libraries/.
2019-06-22Build: Enable the -Werror flag.Andreas Kling
Okay, I've now fixed all the warnings and it was pretty lame. Let's keep the build warning-free from now on.
2019-05-16Only the kernel needs to build with default includes disabled.Andreas Kling
2019-05-04Painter: Re-enable diagonal draw_line().Andreas Kling
This code still needs clipping, but the basic concept works. It was disabled since before the kernel had floating point support.
2019-04-24Build: Let's skip the --gc-sections linker option for now.Andreas Kling
2019-04-23Put assertions behind a DEBUG flag to make it easy to build without them.Andreas Kling
2019-04-23Build: Pass --gc-sections to the linker in all builds.Andreas Kling
This removes unused sections from the output and reduces the binary size of everything we compile.
2019-04-21Add a Makefile.common with stuff shared by all Makefiles.Andreas Kling
Compiler names, CXXFLAGS, and such. I should have done this ages ago.