Skip to content
The Lord of Flies - A hobby operating system
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
acpica
apps
beelzebub
image
jegudiel
kmods/test
libs
scripts
sysheaders
toolchain
.gitattributes
.gitignore
.stignore
.travis.yml
Beelzebub.mk
Beelzebub.sublime-project
Files.mk
JEGUDIEL_SPECIFICATION.md
LICENSE.md
MAKEFILES.md
Makefile
README.md
Sources.mk
Toolchain.mk
util.lua
vmakefile.lua

README.md

Beelzebub Build Status IRC Channel

Building

Currently, Beelzebub requires the following to be built:

  1. GNU Make or vMake
  2. genisoimage (aka mkisofs)
  3. GCC targetting Beelzebub
  4. GNU Binutils targetting Beelzebub
  5. gzip and tar utilities.

Make or vMake are required for the whole process.
genisoimage is required for constructing an ISO file. You can skip this if you really want, but should you?
GCC is the only compiler supported right now. This will likely change in the future.
GNU Binutils is required (used indirectly through GCC) for binary linkage, binary stripping, and by accompanying utilitary scripts.

Use the links above to acquire the cross-compiler required to build Beelzebub. Don't forget to place the tools where they need to be.
The compiler paths are partially hardcoded into the makefiles, for now. Sorry.
You may use the grab_xcs_linux-amd64.sh file for more specific instructions.

Also, your output file of interest is /build/beelzebub.amd64.x86.iso when using GNU Make, or .vmake\amd64.debug\beelzebub.amd64.debug.iso when using vMake.

vMake

I have written my own build system to tackle the complex task of assembling, compiling, linking, archiving, compressing, copying, and all the miscellaneous operations involved in building the OS, as well as configuring the build.

As of right now, the build system is stable and usable, supports all the features of GNU Make that Beelzebub's makefiles use, and provides the same options which the makefiles emulated through targets.

It requires Lua 5.1 or 5.2 installed, and can benefit greatly from having LFS (LuaFileSystem) available. In absence of LFS, it will simply use the find tool for every filesystem operation unavailable in ANSI C (and, thus, Lua).
Besides this, it only requires the tools that the makefiles use.

A simple way to build Beelzebub is to run ./vmakefile.lua. Providing the --help argument will show all the available options.
An example of a more complex invocation is ./vmakefile.lua -t all --mtune=corei7-avx -j 8, which includes all tests, tunes the output code for a specific CPU feature set and runs the build in parallel.

vMake is the preferred tool to build Beelzebub.

Makefiles

These are documented in MAKEFILES.md. These will be deprecated soon in favor of vMake.

Utility scripts

I have included some Bash scripts for grabbing the build tools, mainly for Travis.
For usage, check .travis.yml.

The cross-compiler and genisoimage are guarenteed to work on Ubuntu 12.04 and 14.04. It is very likely that it will work on all versions in-between, and other distros as well.

grab_xcs_linux-amd64.sh

This one obtains my pre-built cross-compilers for 64-bit Linux hosts. Feel free to use if you trust me and the security of my webserver.

grab_genisoimage.sh

This one grabs genisoimage. The binary comes from Ubuntu Server 14.04's package.

License

Mostly University of Illinois - NCSA Open Source License, text and exceptions explained in LICENSE.md.
TLDRLegal summary for those who seek legal advice on the internet.

Miscellaneous

The Travis bot notifies of build statuses on ##beelzebub at Freenode. You should be able to find me there all the time.

You can’t perform that action at this time.