Skip to content

Commit

Permalink
initial work on libs, apps, tools
Browse files Browse the repository at this point in the history
  • Loading branch information
Markus Duft committed Mar 20, 2014
1 parent 42d3356 commit 1c80aae
Show file tree
Hide file tree
Showing 12 changed files with 135 additions and 109 deletions.
1 change: 0 additions & 1 deletion .gitignore
Expand Up @@ -3,6 +3,5 @@
.build
.package
tools/.source
tools/.build
doc
trace-*
104 changes: 22 additions & 82 deletions Makefile
@@ -1,28 +1,34 @@
# Copyright (c) 2011 by Markus Duft <mduft@gentoo.org>
# This file is part of the 'tachyon' operating system.

ARCH := x86_64
VERBOSE := 0
#.----------------------------------.
#| The all target, keep it first! |
#'----------------------------------'

KERNEL_SILENT := 0
all: all-kernel all-tools all-libs all-apps

SHELL := bash
.PHONY: all

SOURCEDIR := $(abspath $(dir $(firstword $(MAKEFILE_LIST))))
BUILDDIR := $(SOURCEDIR)/.build/$(ARCH)
all-tools:

ARCH_MAKEFILE := $(SOURCEDIR)/config/$(ARCH).mk
ARCH_LINKSCRIPT := $(SOURCEDIR)/config/$(ARCH).ld
ARCH_PPLSCRIPT := $(BUILDDIR)/$(ARCH).ld
all-libs:

ENV_MAKEFILE := $(SOURCEDIR)/.package/env.mk
all-apps:

#.----------------------------------.
#| Include the platform config. |
#'----------------------------------'

include $(ENV_MAKEFILE)
include $(ARCH_MAKEFILE)
include config/config.mk

#.----------------------------------.
#| Set kernel specific variables |
#'----------------------------------'

KERNEL_SILENT := 0

ARCH_LINKSCRIPT := $(CONFIGDIR)/$(ARCH).ld
ARCH_PPLSCRIPT := $(BUILDDIR)/$(ARCH).ld

GDB := gdb

Expand All @@ -39,49 +45,18 @@ BASE_LDFLAGS = -T $(ARCH_PPLSCRIPT) -Map=$(KERNEL).map
BASE_QFLAGS := -smp 2 -curses -serial file:$(BUILDDIR)/serial-qemu.log -serial file:$(BUILDDIR)/com2-serial-qemu.log
BASE_GDBFLAGS :=

MAKE := $(MAKE) --no-print-directory

GRUB2_CFG := $(BUILDDIR)/boot/grub/grub.cfg
GRUB2_PXE = $(BUILDDIR)/boot/grub/i386-pc/core.0
GRUB2_ISO = $(BUILDDIR)/$(notdir $(KERNEL))-grub2.iso

#.----------------------------------.
#| The all target, keep it first! |
#'----------------------------------'

all: all-kernel all-tools

.PHONY: all

all-tools:
@$(MAKE) -f $(SOURCEDIR)/tools/apps/Makefile

#.----------------------------------.
#| Build internal/accumulated vars. |
#'----------------------------------'

KERNEL_SOURCES := \
$(wildcard $(SOURCEDIR)/src/*.c) \
$(wildcard $(SOURCEDIR)/src/*.S) \
$(wildcard $(SOURCEDIR)/src/$(ARCH)/*.c) \
$(wildcard $(SOURCEDIR)/src/$(ARCH)/*.S) \
$(wildcard $(SOURCEDIR)/src/contrib/*/*.c) \
$(KERNEL_ADD)

KERNEL_CSOURCES := $(filter %.c,$(KERNEL_SOURCES))
KERNEL_SSOURCES := $(filter %.S,$(KERNEL_SOURCES))

KERNEL_COBJECTS := $(subst $(SOURCEDIR),$(BUILDDIR),$(KERNEL_CSOURCES:.c=.o))
KERNEL_SOBJECTS := $(subst $(SOURCEDIR),$(BUILDDIR),$(KERNEL_SSOURCES:.S=.o))

KERNEL_OBJECTS := $(KERNEL_COBJECTS) $(KERNEL_SOBJECTS)

KCPPFLAGS := $(BASE_CPPFLAGS) $(CPPFLAGS) $(KERNEL_CPPFLAGS)
KCFLAGS := $(BASE_CFLAGS) $(CFLAGS) $(KERNEL_CFLAGS)
KLDFLAGS := $(BASE_LDFLAGS) $(LDFLAGS) $(KERNEL_LDFLAGS)

MAKE_BDIR = test -d "$(dir $@)" || mkdir -p "$(dir $@)"

#.----------------------------------.
#| Specialized Rules |
#'----------------------------------'
Expand All @@ -100,9 +75,9 @@ $(KERNEL): $(KERNEL).sym.o
@if test $(VERBOSE) = 0; then \
echo "[LD ] $(notdir $@)"; \
else \
echo "$(LD) $(KLDFLAGS) -o \"$@\" $(KERNEL_OBJECTS)"; \
echo "$(LD) $(KLDFLAGS) -o \"$@\" $(OBJECTS)"; \
fi
@$(LD) $(KLDFLAGS) -o "$@" $(filter-out %ksym_dummy.o,$(KERNEL_OBJECTS)) $(KERNEL).sym.o
@$(LD) $(KLDFLAGS) -o "$@" $(filter-out %ksym_dummy.o,$(OBJECTS)) $(KERNEL).sym.o

$(KERNEL).dbg: $(KERNEL)
@if test $(VERBOSE) = 0; then \
Expand All @@ -122,17 +97,14 @@ all-kernel: $(KERNEL) $(KERNEL).dbg
@printf "kernel ready: "
@(cd $(dir $(KERNEL)) && ls -hs $(notdir $(KERNEL)))

clean:
@-rm -rf $(SOURCEDIR)/.build

#.----------------------------------.
#| Kernel Symbol Table dumping |
#'----------------------------------'

$(KERNEL).sym.dmp: $(KERNEL_OBJECTS) $(ARCH_PPLSCRIPT)
$(KERNEL).sym.dmp: $(OBJECTS) $(ARCH_PPLSCRIPT)
@-rm -f "$@"
@-rm -f "$@.bin"
@$(LD) $(KLDFLAGS) -o "$@.bin" $(KERNEL_OBJECTS)
@$(LD) $(KLDFLAGS) -o "$@.bin" $(OBJECTS)
@echo "declare -a names" >> "$@"
@echo "declare -a sizes" >> "$@"
@$(NM) -n -S --defined-only "$@.bin" | sed -e 's,\(^[0-9a-fA-F]*[ \t]*\)\([tT].*$$\),\10a \2,g' | grep -E '^[0-9a-fA-F]*[ \t]+[0-9a-fA-F]*[ \t]+[Tt]' | while read addr size type name; do \
Expand Down Expand Up @@ -204,42 +176,10 @@ $(KERNEL).sym.o: $(KERNEL).sym.S
fi
@$(CC) $(KCFLAGS) -D__ASM__ -c -o "$@" "$<"

#.----------------------------------.
#| General Template Rules |
#'----------------------------------'

include $(foreach mf,$(subst .o,.Po,$(KERNEL_OBJECTS)),$(wildcard $(mf)))

$(KERNEL_COBJECTS): $(BUILDDIR)/%.o: $(SOURCEDIR)/%.c
@-$(MAKE_BDIR)
@if test $(VERBOSE) = 0; then \
echo "[CC ] $(subst $(SOURCEDIR)/,,$<)"; \
else \
echo "$(CC) $(KCFLAGS) -c -o \"$@\" \"$<\""; \
fi
@$(CC) -MMD -MF "$(subst .o,.Po,$@)" -dA -dP -save-temps=obj $(KCFLAGS) -c -o "$@" "$<"

$(KERNEL_SOBJECTS): $(BUILDDIR)/%.o: $(SOURCEDIR)/%.S
@-$(MAKE_BDIR)
@if test $(VERBOSE) = 0; then \
echo "[AS ] $(subst $(SOURCEDIR)/,,$<)"; \
else \
echo "$(CC) $(KCFLAGS) -D__ASM__ -c -o \"$@\" \"$<\""; \
fi
@$(CC) -MMD -MF "$(subst .o,.Po,$@)" $(KCFLAGS) -D__ASM__ -c -o "$@" "$<"

#.----------------------------------.
#| Helper rules |
#'----------------------------------'

all-archs:
@for x in $(SOURCEDIR)/config/*.mk; do arch="$${x%.mk}"; arch=$${arch##*/}; echo "building $$arch ..."; \
$(MAKE) -f $(SOURCEDIR)/Makefile ARCH=$${arch} all; done

all-archs-iso:
@for x in $(SOURCEDIR)/config/*.mk; do arch="$${x%.mk}"; arch=$${arch##*/}; echo "building $$arch ..."; \
$(MAKE) -f $(SOURCEDIR)/Makefile ARCH=$${arch} iso; done

#
# qemu direct kernel boot.
#
Expand Down
6 changes: 6 additions & 0 deletions apps/hello/hello.c
@@ -0,0 +1,6 @@
/* Copyright (c) 2011 by Markus Duft <mduft@gentoo.org>
* This file is part of the 'tachyon' operating system. */

int main(void) {
return 123;
}
48 changes: 48 additions & 0 deletions config/compile.mk
@@ -0,0 +1,48 @@
SOURCEDIR := $(abspath $(dir $(firstword $(MAKEFILE_LIST))))
BUILDDIR := $(SOURCEDIR)/.build/$(ARCH)

SOURCES := \
$(wildcard $(SOURCEDIR)/src/*.c) \
$(wildcard $(SOURCEDIR)/src/*.S) \
$(wildcard $(SOURCEDIR)/src/$(ARCH)/*.c) \
$(wildcard $(SOURCEDIR)/src/$(ARCH)/*.S) \
$(wildcard $(SOURCEDIR)/src/contrib/*/*.c) \
$(KERNEL_ADD)

CSOURCES := $(filter %.c,$(SOURCES))
SSOURCES := $(filter %.S,$(SOURCES))

COBJECTS := $(subst $(SOURCEDIR),$(BUILDDIR),$(CSOURCES:.c=.o))
SOBJECTS := $(subst $(SOURCEDIR),$(BUILDDIR),$(SSOURCES:.S=.o))

OBJECTS := $(COBJECTS) $(SOBJECTS)
MAKE_BDIR = test -d "$(dir $@)" || mkdir -p "$(dir $@)"


#.----------------------------------.
#| General Template Rules |
#'----------------------------------'

include $(foreach mf,$(subst .o,.Po,$(OBJECTS)),$(wildcard $(mf)))

$(COBJECTS): $(BUILDDIR)/%.o: $(SOURCEDIR)/%.c
@-$(MAKE_BDIR)
@if test $(VERBOSE) = 0; then \
echo "[CC ] $(subst $(SOURCEDIR)/,,$<)"; \
else \
echo "$(CC) $(KCFLAGS) -c -o \"$@\" \"$<\""; \
fi
@$(CC) -MMD -MF "$(subst .o,.Po,$@)" -dA -dP -save-temps=obj $(KCFLAGS) -c -o "$@" "$<"

$(SOBJECTS): $(BUILDDIR)/%.o: $(SOURCEDIR)/%.S
@-$(MAKE_BDIR)
@if test $(VERBOSE) = 0; then \
echo "[AS ] $(subst $(SOURCEDIR)/,,$<)"; \
else \
echo "$(CC) $(KCFLAGS) -D__ASM__ -c -o \"$@\" \"$<\""; \
fi
@$(CC) -MMD -MF "$(subst .o,.Po,$@)" $(KCFLAGS) -D__ASM__ -c -o "$@" "$<"

clean:
@-rm -rf $(SOURCEDIR)/.build

15 changes: 15 additions & 0 deletions config/config.mk
@@ -0,0 +1,15 @@
# Copyright (c) 2011 by Markus Duft <mduft@gentoo.org>
# This file is part of the 'tachyon' operating system.

ARCH := x86_64
VERBOSE := 0
SHELL := bash
MAKE := $(MAKE) --no-print-directory

CONFIGDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
ARCH_MAKEFILE := $(CONFIGDIR)/$(ARCH).mk
ENV_MAKEFILE := $(CONFIGDIR)/../.package/env.mk

include $(ENV_MAKEFILE)
include $(ARCH_MAKEFILE)
include $(CONFIGDIR)/compile.mk
4 changes: 2 additions & 2 deletions config/x86_64.mk
Expand Up @@ -13,6 +13,6 @@ KERNEL_CFLAGS := -O0 -g -mcmodel=large -mno-red-zone -mno-sse $(KERNEL_CPPFLAGS)
KERNEL_CXXFLAGS := $(KERNEL_CFLAGS)
KERNEL_LDFLAGS := -z max-page-size=0x1000

KERNEL := $(BUILDDIR)/$(ARCH)-tachyon
KERNEL = $(BUILDDIR)/$(ARCH)-tachyon

KERNEL_ADD :=
KERNEL_ADD =
9 changes: 9 additions & 0 deletions libs/libu/libu.h
@@ -0,0 +1,9 @@
/* Copyright (c) 2011 by Markus Duft <mduft@gentoo.org>
* This file is part of the 'tachyon' operating system. */

/**
* Retrieves this processes handle top the usermode API descriptor
*
* @return the handle to the descriptor structure
*/
uapi_desc_t* udesc_get();
21 changes: 21 additions & 0 deletions libs/libu/umain.c
@@ -0,0 +1,21 @@
/* Copyright (c) 2011 by Markus Duft <mduft@gentoo.org>
* This file is part of the 'tachyon' operating system. */

#include <tachyon.h>
#include <uapi.h>
#include <thread.h>

uapi_desc_t* udesc;

extern int main(int argc, char** argv);

void umain(uapi_desc_t* uapi) {
udesc = uapi;

// TODO
main(0, NULL);
}

uapi_desc_t* udesc_get() {
return udesc;
}
1 change: 0 additions & 1 deletion tools/apps/.gitignore

This file was deleted.

22 changes: 0 additions & 22 deletions tools/apps/Makefile

This file was deleted.

11 changes: 11 additions & 0 deletions tools/patches/grub-2.00.patch
@@ -0,0 +1,11 @@
--- grub-2.00.weg/util/grub-mkfont.c 2014-03-20 09:58:50.716920070 +0100
+++ grub-2.00/util/grub-mkfont.c 2014-03-20 09:59:14.081921487 +0100
@@ -39,7 +39,7 @@
#include FT_FREETYPE_H
#include FT_TRUETYPE_TAGS_H
#include FT_TRUETYPE_TABLES_H
-#include <freetype/ftsynth.h>
+#include <ftsynth.h>

#undef __FTERRORS_H__
#define FT_ERROR_START_LIST const char *ft_errmsgs[] = {
2 changes: 1 addition & 1 deletion tools/toolchain.sh
Expand Up @@ -17,7 +17,7 @@ tools=(
"cgdb:0.6.7:--build=\${_tt_host}"
"grub:2.00:--build=\${_tt_host} --disable-werror"
"xorriso:1.3.6:--build=\${_tt_host}"
"qemu:1.3.0:--python=/usr/bin/python2 --disable-user --enable-system --enable-curses --enable-sdl --target-list=i386-softmmu,x86_64-softmmu --enable-debug"
"qemu:2.0.0-rc0:--python=/usr/bin/python2 --disable-user --enable-system --enable-curses --enable-sdl --target-list=i386-softmmu,x86_64-softmmu --enable-debug"
"bochs:2.6.2:--with-x11 --with-x --with-term --disable-docbook --enable-cdrom --enable-pci --enable-usb --enable-usb-ohci --enable-a20-pin --enable-cpu-level=6 --enable-x86-64 --enable-fpu --enable-disasm --enable-idle-hack --enable-all-optimizations --enable-repeat-speedups --enable-plugins --enable-sb16=linux --enable-ne2000 --enable-pcidev --enable-pnic --enable-smp --enable-logging"
)

Expand Down

0 comments on commit 1c80aae

Please sign in to comment.