summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVAN BOSSUYT Nicolas <nicolas.van.bossuyt@gmail.com>2022-04-18 22:30:01 +0200
committerVAN BOSSUYT Nicolas <nicolas.van.bossuyt@gmail.com>2022-04-18 22:30:01 +0200
commit963f2d0d981d7df9f47094721d89ff0886a1bab7 (patch)
treeb149412f84679b6ae10ce7a85f75bc13a4353ba6
parentd2327ef8a5e6899ede5dbaed64691934cb3a7770 (diff)
-rw-r--r--makefile4
-rw-r--r--makefile.next137
-rw-r--r--sources/apps/about/build.mk4
-rw-r--r--sources/apps/about/manifest.json5
-rw-r--r--sources/apps/demo/build.mk3
-rw-r--r--sources/apps/demo/manifest.json5
-rw-r--r--sources/apps/files/build.mk4
-rw-r--r--sources/apps/files/manifest.json5
-rw-r--r--sources/apps/panel/build.mk3
-rw-r--r--sources/apps/panel/manifest.json5
-rw-r--r--sources/build/host/build.mk17
-rw-r--r--sources/build/target/build.mk45
-rw-r--r--sources/srvs/acpi/build.mk3
-rw-r--r--sources/srvs/acpi/manifest.json5
-rw-r--r--sources/srvs/ahci/build.mk3
-rw-r--r--sources/srvs/ahci/manifest.json5
-rw-r--r--sources/srvs/pci/build.mk3
-rw-r--r--sources/srvs/pci/manifest.json5
-rw-r--r--sources/srvs/ps2/build.mk3
-rw-r--r--sources/srvs/ps2/manifest.json5
-rw-r--r--sources/srvs/ps2/ps2.h1
-rw-r--r--sources/srvs/storage/manifest.json3
-rw-r--r--sources/srvs/system/build.mk3
-rw-r--r--sources/srvs/system/manifest.json5
-rw-r--r--sources/srvs/window/build.mk3
-rw-r--r--sources/srvs/window/manifest.json5
-rw-r--r--sources/utils/bvm/build.mk3
-rw-r--r--sources/utils/bvm/manifest.json0
-rw-r--r--sources/utils/cc/build.mk3
-rw-r--r--sources/utils/cc/manifest.json0
-rw-r--r--sources/utils/fontinfo/build.mk3
-rw-r--r--sources/utils/fontinfo/manifest.json1
-rw-r--r--sources/utils/fstools/build.mk3
-rw-r--r--sources/utils/fstools/manifest.json0
-rw-r--r--sources/utils/gunzip/build.mk3
-rw-r--r--sources/utils/gunzip/manifest.json1
-rw-r--r--sources/utils/gzip/build.mk3
-rw-r--r--sources/utils/gzip/manifest.json1
-rw-r--r--sources/utils/hello/build.mk3
-rw-r--r--sources/utils/idgen/build.mk3
-rw-r--r--sources/utils/idl/build.mk3
-rw-r--r--sources/utils/idl/manifest.json0
-rw-r--r--sources/utils/test/build.mk3
-rw-r--r--sources/utils/test/manifest.json0
-rw-r--r--src/about/main.c (renamed from sources/apps/about/main.c)1
-rw-r--r--src/about/manifest.json16
-rw-r--r--src/acpi/main.c (renamed from sources/srvs/acpi/main.c)0
-rw-r--r--src/acpi/manifest.json17
-rw-r--r--src/ahci/main.c (renamed from sources/srvs/ahci/main.c)0
-rw-r--r--src/ahci/manifest.json17
-rwxr-xr-xsrc/build/dir2h.py (renamed from sources/build/scripts/header-builder.py)9
-rwxr-xr-xsrc/build/meta2mk.py49
-rw-r--r--src/bvm/main.c (renamed from sources/utils/bvm/main.c)0
-rw-r--r--src/bvm/manifest.json8
-rw-r--r--src/cc/main.c (renamed from sources/utils/cc/main.c)0
-rw-r--r--src/cc/manifest.json8
-rw-r--r--src/demo/main.c (renamed from sources/apps/demo/main.c)0
-rw-r--r--src/demo/manifest.json19
-rw-r--r--src/device/device.h (renamed from sources/srvs/device/device.h)0
-rw-r--r--src/device/main.c (renamed from sources/srvs/device/main.c)0
-rw-r--r--src/device/manifest.json (renamed from sources/srvs/device/manifest.json)7
-rw-r--r--src/files/main.c (renamed from sources/apps/files/main.c)0
-rw-r--r--src/files/manifest.json16
-rw-r--r--src/fontinfo/main.c (renamed from sources/utils/fontinfo/main.c)0
-rw-r--r--src/fontinfo/manifest.json8
-rw-r--r--src/fstools/main.c (renamed from sources/utils/fstools/main.c)0
-rw-r--r--src/fstools/manifest.json8
-rw-r--r--src/gunzip/main.c (renamed from sources/utils/gunzip/main.c)0
-rw-r--r--src/gunzip/manifest.json8
-rw-r--r--src/gzip/main.c (renamed from sources/utils/gzip/main.c)0
-rw-r--r--src/gzip/manifest.json8
-rw-r--r--src/hello/main.c (renamed from sources/utils/hello/main.c)0
-rw-r--r--src/hello/manifest.json8
-rw-r--r--src/idgen/main.c (renamed from sources/utils/idgen/main.c)0
-rw-r--r--src/idgen/manifest.json8
-rw-r--r--src/idl/main.c (renamed from sources/utils/idl/main.c)0
-rw-r--r--src/idl/manifest.json8
-rw-r--r--src/panel/main.c (renamed from sources/apps/panel/main.c)0
-rw-r--r--src/panel/manifest.json16
-rw-r--r--src/pci/main.c (renamed from sources/srvs/pci/main.c)0
-rw-r--r--src/pci/manifest.json17
-rw-r--r--src/ps2/main.c (renamed from sources/srvs/ps2/main.c)0
-rw-r--r--src/ps2/manifest.json17
-rw-r--r--src/storage/main.c6
-rw-r--r--src/storage/manifest.json8
-rw-r--r--src/system/bus.c (renamed from sources/srvs/system/bus.c)0
-rw-r--r--src/system/bus.h (renamed from sources/srvs/system/bus.h)0
-rw-r--r--src/system/main.c (renamed from sources/srvs/system/main.c)0
-rw-r--r--src/system/manifest.json16
-rw-r--r--src/system/unit.c (renamed from sources/srvs/system/unit.c)0
-rw-r--r--src/system/unit.h (renamed from sources/srvs/system/unit.h)0
-rw-r--r--src/test/brutal/alloc/heap.c (renamed from sources/utils/test/brutal/alloc/heap.c)0
-rw-r--r--src/test/brutal/base/endian.c (renamed from sources/utils/test/brutal/base/endian.c)0
-rw-r--r--src/test/brutal/codec/deflate.c (renamed from sources/utils/test/brutal/codec/deflate.c)0
-rw-r--r--src/test/brutal/codec/gzip.c (renamed from sources/utils/test/brutal/codec/gzip.c)0
-rw-r--r--src/test/brutal/codec/inflate.c (renamed from sources/utils/test/brutal/codec/inflate.c)0
-rw-r--r--src/test/brutal/codec/zlib.c (renamed from sources/utils/test/brutal/codec/zlib.c)0
-rw-r--r--src/test/brutal/ds/map.c (renamed from sources/utils/test/brutal/ds/map.c)0
-rw-r--r--src/test/brutal/ds/range.c (renamed from sources/utils/test/brutal/ds/range.c)0
-rw-r--r--src/test/brutal/ds/slot.c (renamed from sources/utils/test/brutal/ds/slot.c)0
-rw-r--r--src/test/brutal/ds/vec.c (renamed from sources/utils/test/brutal/ds/vec.c)0
-rw-r--r--src/test/brutal/fmt/case.c (renamed from sources/utils/test/brutal/fmt/case.c)0
-rw-r--r--src/test/brutal/fmt/format.c (renamed from sources/utils/test/brutal/fmt/format.c)0
-rw-r--r--src/test/brutal/fmt/printf.c (renamed from sources/utils/test/brutal/fmt/printf.c)0
-rw-r--r--src/test/brutal/gfx/path.c (renamed from sources/utils/test/brutal/gfx/path.c)0
-rw-r--r--src/test/brutal/gfx/rect.c (renamed from sources/utils/test/brutal/gfx/rect.c)0
-rw-r--r--src/test/brutal/gfx/text.c (renamed from sources/utils/test/brutal/gfx/text.c)0
-rw-r--r--src/test/brutal/glob/glob.c (renamed from sources/utils/test/brutal/glob/glob.c)0
-rw-r--r--src/test/brutal/io/bit_write.c (renamed from sources/utils/test/brutal/io/bit_write.c)0
-rw-r--r--src/test/brutal/tests/expect.c (renamed from sources/utils/test/brutal/tests/expect.c)0
-rw-r--r--src/test/brutal/tests/test.c (renamed from sources/utils/test/brutal/tests/test.c)0
-rw-r--r--src/test/brutal/ui/parser.c (renamed from sources/utils/test/brutal/ui/parser.c)0
-rw-r--r--src/test/cc/cc.h (renamed from sources/utils/test/cc/cc.h)0
-rw-r--r--src/test/cc/pproc.c (renamed from sources/utils/test/cc/pproc.c)0
-rw-r--r--src/test/json/json.c (renamed from sources/utils/test/json/json.c)0
-rw-r--r--src/test/main.c (renamed from sources/utils/test/main.c)0
-rw-r--r--src/test/manifest.json8
-rw-r--r--src/window/client.c (renamed from sources/srvs/window/client.c)0
-rw-r--r--src/window/client.h (renamed from sources/srvs/window/client.h)0
-rw-r--r--src/window/display.c (renamed from sources/srvs/window/display.c)0
-rw-r--r--src/window/display.h (renamed from sources/srvs/window/display.h)0
-rw-r--r--src/window/main.c (renamed from sources/srvs/window/main.c)0
-rw-r--r--src/window/manifest.json15
-rw-r--r--src/window/server.c (renamed from sources/srvs/window/server.c)0
-rw-r--r--src/window/server.h (renamed from sources/srvs/window/server.h)0
125 files changed, 475 insertions, 173 deletions
diff --git a/makefile b/makefile
index bee12cf0..5c9e9ce1 100644
--- a/makefile
+++ b/makefile
@@ -44,7 +44,7 @@ USER_CFLAGS_INC := \
CACHEDIR=.cache/
GENDIR=bin/generated
BINDIR_LOADER=bin/$(CONFIG)/$(ARCH)-loader-$(TOOLCHAIN)
-BINDIR_USER=bin/$(CONFIG)/$(ARCH)-brutal-$(TOOLCHAIN)
+BINDIR_TARGET=bin/$(CONFIG)/$(ARCH)-brutal-$(TOOLCHAIN)
BINDIR_KERNEL=bin/$(CONFIG)/$(ARCH)-kernel-$(TOOLCHAIN)
BINDIR_HOST=bin/$(CONFIG)/$(HOST_ARCH)-host-$(TOOLCHAIN)
@@ -71,7 +71,7 @@ all: $(ALL)
.PHONY: clean
clean:
rm -rf $(BINDIR_LOADER)
- rm -rf $(BINDIR_USER)
+ rm -rf $(BINDIR_TARGET)
rm -rf $(BINDIR_KERNEL)
rm -rf $(BINDIR_HOST)
diff --git a/makefile.next b/makefile.next
new file mode 100644
index 00000000..74fe3203
--- /dev/null
+++ b/makefile.next
@@ -0,0 +1,137 @@
+# = Context ================================================================== #
+
+.SUFFIXES:
+.DELETE_ON_ERROR:
+.DEFAULT_GOAL:=all
+SHELL:=/bin/bash
+
+# - Utilities ---------------------------------------------------------------- #
+
+MKCWD=@mkdir -p $(@D)
+DIR2H:=src/build/dir2h.py
+META2MK:=src/build/meta2mk.py
+
+# - Directories -------------------------------------------------------------- #
+
+SRCDIR:=src
+BINDIR:=bin
+HNDDIR:=$(BINDIR)/__headers__
+
+# - Toolchains --------------------------------------------------------------- #
+
+CFLAGS:= \
+ -std=gnu2x \
+ -Wall \
+ -Wextra \
+ -Werror \
+ -I$(SRCDIR) \
+ -I$(HNDDIR)
+
+# = Packages ================================================================= #
+
+PACKAGES:=$(shell ls $(SRCDIR))
+
+# - Manifests ---------------------------------------------------------------- #
+
+MANIFESTS:=$(patsubst $(SRCDIR)/%/manifest.json,$(BINDIR)/%/manifest.json,$(wildcard $(SRCDIR)/*/manifest.json))
+
+.SECONDARY: $(MANIFESTS)
+$(BINDIR)/%/manifest.json: $(SRCDIR)/%/manifest.json
+ $(MKCWD)
+ cat $^ > $@
+
+
+$(BINDIR)/%/build.mk: $(SRCDIR)/%/manifest.json
+ $(MKCWD)
+ $(META2MK) -m $^ > $@
+
+include $(patsubst $(BINDIR)/%/manifest.json,$(BINDIR)/%/build.mk,$(MANIFESTS))
+
+# - Headers ------------------------------------------------------------------ #
+
+HEADERS:=$(patsubst %,$(HNDDIR)/%,$(PACKAGES))
+
+.SECONDARY: $(HEADERS)
+$(HNDDIR)/%: $(SRCDIR)/%
+ $(MKCWD)
+ $(DIR2H) -d $< --prefix $(shell basename $<) > $@
+
+define PACKAGES_TEMPLATE
+
+# - Kernel Rules ------------------------------------------------------------- #
+
+$(BINDIR)/$($(1)_NAME)/kernel/%.c.o:
+ $(MKCWD)
+ $(KERNEL_CC) -c -o $@ $< $(KERNEL_CFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/kernel/%.s.o:
+ $(MKCWD)
+ $(KERNEL_AS) -o $@ $< $(KERNEL_ASFLAGS)
+
+
+$(BINDIR)/$($(1)_NAME)/kernel/$($(1)_NAME):
+ $(MKCWD)
+ $(KERNEL_LD) -o $@ $^ $(KERNEL_LDFLAGS)
+
+# - Loader Rules ------------------------------------------------------------- #
+
+$(BINDIR)/$($(1)_NAME)/loader/%.c.o:
+ $(MKCWD)
+ $(LOADER_CC) -c -o $@ $< $(LOADER_CFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/loader/%.s.o:
+ $(MKCWD)
+ $(LOADER_AS) -o $@ $< $(LOADER_ASFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/loader/$($(1)_NAME):
+ $(MKCWD)
+ $(LOADER_LD) -o $@ $^ $(LOADER_LDFLAGS)
+
+# - Host Rules --------------------------------------------------------------- #
+
+$(BINDIR)/$($(1)_NAME)/host/%.c.o:
+ $(MKCWD)
+ $(HOST_CC) -c -o $@ $< $(HOST_CFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/host/%.s.o:
+ $(MKCWD)
+ $(HOST_AS) -o $@ $< $(HOST_ASFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/host/$($(1)_NAME):
+ $(MKCWD)
+ $(HOST_LD) -o $@ $^ $(HOST_LDFLAGS)
+
+
+# - Target Rules ------------------------------------------------------------- #
+
+$(BINDIR)/$($(1)_NAME)/target/%.c.o:
+ $(MKCWD)
+ $(TARGET_CC) -c -o $@ $< $(TARGET_CFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/target/%.s.o:
+ $(MKCWD)
+ $(TARGET_AS) -o $@ $< $(TARGET_ASFLAGS)
+
+$(BINDIR)/$($(1)_NAME)/target/$($(1)_NAME):
+ $(MKCWD)
+ $(TARGET_LD) -o $@ $^ $(TARGET_LDFLAGS)
+
+endef
+
+$(foreach pkg,$(ALL_PKGS),$(info $(call PACKAGES_TEMPLATE,$(pkg))))
+
+# = Phony Rules ============================================================== #
+
+.PHONY: all
+all: $(HEADERS)
+
+.PHONY: clean
+clean:
+ rm -rf $(BINDIR)
+
+.PHONY: dump
+dump:
+ @echo CFLAGS: $(CFLAGS)
+ @echo MANIFESTS: $(MANIFESTS)
+ @echo HEADERS: $(HEADERS)
+
diff --git a/sources/apps/about/build.mk b/sources/apps/about/build.mk
deleted file mode 100644
index 966fbd36..00000000
--- a/sources/apps/about/build.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-PKG_ABOUT_PATH=apps/about
-
-APPS+=ABOUT
-
diff --git a/sources/apps/about/manifest.json b/sources/apps/about/manifest.json
deleted file mode 100644
index a771b5ca..00000000
--- a/sources/apps/about/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "about",
- "consume": ["system.Server", "window.Server"],
- "rights": ["log"]
-}
diff --git a/sources/apps/demo/build.mk b/sources/apps/demo/build.mk
deleted file mode 100644
index 44eb59fd..00000000
--- a/sources/apps/demo/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_DEMO_PATH=apps/demo
-
-APPS+=DEMO
diff --git a/sources/apps/demo/manifest.json b/sources/apps/demo/manifest.json
deleted file mode 100644
index 77a5ddb0..00000000
--- a/sources/apps/demo/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "demo",
- "consume": ["system.Server", "window.Server"],
- "rights": ["log"]
-}
diff --git a/sources/apps/files/build.mk b/sources/apps/files/build.mk
deleted file mode 100644
index a89816f2..00000000
--- a/sources/apps/files/build.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-PKG_FILES_PATH=apps/files
-
-APPS+=FILES
-
diff --git a/sources/apps/files/manifest.json b/sources/apps/files/manifest.json
deleted file mode 100644
index bd585911..00000000
--- a/sources/apps/files/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "files",
- "consume": ["system.Server", "window.Server"],
- "rights": ["log"]
-}
diff --git a/sources/apps/panel/build.mk b/sources/apps/panel/build.mk
deleted file mode 100644
index f895d53c..00000000
--- a/sources/apps/panel/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_PANEL_PATH=apps/panel
-
-APPS+=PANEL
diff --git a/sources/apps/panel/manifest.json b/sources/apps/panel/manifest.json
deleted file mode 100644
index 4f804517..00000000
--- a/sources/apps/panel/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "panel",
- "consume": ["system.Server", "window.Server"],
- "rights": ["log"]
-}
diff --git a/sources/build/host/build.mk b/sources/build/host/build.mk
index 7913786f..3005de1d 100644
--- a/sources/build/host/build.mk
+++ b/sources/build/host/build.mk
@@ -41,16 +41,10 @@ DEPENDENCIES += $(LIBS_HOST_OBJ:.o=.d)
define HOST_TEMPLATE
-$(1)_NAME = $$(shell echo $(1) | tr A-Z a-z)
-
-$(1)_HOST_SRC = \
- $$(wildcard sources/$$(PKG_$(1)_PATH)/*.c) \
- $$(wildcard sources/$$(PKG_$(1)_PATH)/*/*.c) \
- $$(wildcard sources/$$(PKG_$(1)_PATH)/*/*/*.c)
-
+$(1)_HOST_SRC = $$(wildcard sources/$$($(1)_PATH)/*.c)
$(1)_HOST_OBJ = $$(patsubst sources/%,$(BINDIR_HOST)/%.o, $$($(1)_HOST_SRC))
-
$(1)_HOST_BIN = $(BINDIR_HOST)/$$($(1)_NAME)
+
ALL+=$$($(1)_HOST_BIN)
HOST_NAMES+=$$($(1)_NAME)
@@ -60,15 +54,8 @@ $$($(1)_HOST_BIN): $$($(1)_HOST_OBJ) $(LIBS_HOST_BIN)
@$$(MKCWD)
$(HOST_CC) -o $$@ $$^ $(HOST_LDFLAGS) $(HOST_CFLAGS)
-host-$$($(1)_NAME)-dump:
- @echo "$$($(1)_HOST_BIN)"
- @echo "$$($(1)_HOST_OBJ)"
- @echo "$$($(1)_HOST_SRC)"
-
endef
-HOST_PKGS=$(APPS) $(UTILS)
-
list-host:
@echo $(HOST_NAMES)
diff --git a/sources/build/target/build.mk b/sources/build/target/build.mk
index 7b625c70..0650297c 100644
--- a/sources/build/target/build.mk
+++ b/sources/build/target/build.mk
@@ -25,23 +25,23 @@ LIBS_SRC = \
$(wildcard sources/libs/ubsan/*.c)
LIBS_OBJ = \
- $(patsubst sources/%, $(BINDIR_USER)/%.o, $(LIBS_SRC)) \
- $(patsubst $(GENDIR)/%, $(BINDIR_USER)/%.o, $(GENERATED_SRC))
+ $(patsubst sources/%, $(BINDIR_TARGET)/%.o, $(LIBS_SRC)) \
+ $(patsubst $(GENDIR)/%, $(BINDIR_TARGET)/%.o, $(GENERATED_SRC))
-LIBS_BIN=$(BINDIR_USER)/libbrutal.a
+LIBS_BIN=$(BINDIR_TARGET)/libbrutal.a
DEPENDENCIES += $(LIBS_OBJ:.o=.d)
-$(BINDIR_USER)/%.c.o: $(GENDIR)/%.c | $(GENERATED_HDR) $(GENERATED_MOD)
+$(BINDIR_TARGET)/%.c.o: $(GENDIR)/%.c | $(GENERATED_HDR) $(GENERATED_MOD)
@$(MKCWD)
$(USER_CC) -c -o $@ $< $(USER_UCFLAGS)
-$(BINDIR_USER)/%.c.o: sources/%.c | $(GENERATED_HDR) $(GENERATED_MOD)
+$(BINDIR_TARGET)/%.c.o: sources/%.c | $(GENERATED_HDR) $(GENERATED_MOD)
@$(MKCWD)
$(USER_CC) -c -o $@ $< $(USER_UCFLAGS)
-$(BINDIR_USER)/%.s.o: sources/%.s
+$(BINDIR_TARGET)/%.s.o: sources/%.s
@$(MKCWD)
$(USER_AS) -o $@ $< $(USER_ASFLAGS)
@@ -51,26 +51,19 @@ $(LIBS_BIN): $(LIBS_OBJ)
define BIN_TEMPLATE
-$(1)_NAME = $$(shell echo $(1) | tr A-Z a-z)
+$(1)_SRC = $$(wildcard $$($(1)_PATH)/*.c)
+$(1)_OBJ = $$(patsubst sources/%,$(BINDIR_TARGET)/%.o, $$($(1)_SRC))
+$(1)_BIN = $(BINDIR_TARGET)/$$($(1)_NAME)/$$($(1)_NAME)
-$(1)_PKG = sources/$$(PKG_$(1)_PATH)
+$(1)_JSON = $(BINDIR_TARGET)/$$($(1)_NAME).json
-$(1)_SRC = $$(wildcard $$($(1)_PKG)/*.c)
-
-$(1)_OBJ = $$(patsubst sources/%,$(BINDIR_USER)/%.o, $$($(1)_SRC))
-
-$(1)_BIN = $(BINDIR_USER)/$$($(1)_NAME)
-
-$(1)_JSON = $(BINDIR_USER)/$$($(1)_NAME).json
+ALL+=$$($(1)_BIN)
DEPENDENCIES += $$($(1)_OBJ:.o=.d)
-PKGS+=$$($(1)_BIN)
-ALL+=$$($(1)_BIN)
-
-$$($(1)_JSON): $$($(1)_PKG)/manifest.json $$(IDL_HOST_BIN) ./sources/build/scripts/manifest-builder.py
+$$($(1)_JSON): $$($(1)_PATH)/manifest.json $$(IDL_HOST_BIN) ./sources/build/scripts/manifest-builder.py
@$$(MKCWD)
- ./sources/build/scripts/manifest-builder.py $$($(1)_PKG)/manifest.json > $$@
+ ./sources/build/scripts/manifest-builder.py $$($(1)_PATH)/manifest.json > $$@
$$($(1)_BIN): $$($(1)_OBJ) $(LIBS_BIN) $$($(1)_JSON)
@$$(MKCWD)
@@ -80,17 +73,9 @@ $$($(1)_BIN): $$($(1)_OBJ) $(LIBS_BIN) $$($(1)_JSON)
--set-section-flags .brutal.manifest=readonly,contents \
$$@
-
-target-$$($(1)_NAME)-dump:
- @echo "$$($(1)_BIN)"
- @echo "$$($(1)_SRC)"
- @echo "$$($(1)_OBJ)"
-
endef
-USER_PKGS:=$(APPS) $(SRVS)
-
list-user:
- @echo $(USER_PKGS)
+ @echo $(TARGET_PKGS)
-$(foreach bin, $(USER_PKGS), $(eval $(call BIN_TEMPLATE,$(bin))))
+$(foreach bin, $(TARGET_PKGS), $(eval $(call BIN_TEMPLATE,$(bin))))
diff --git a/sources/srvs/acpi/build.mk b/sources/srvs/acpi/build.mk
deleted file mode 100644
index 900e9846..00000000
--- a/sources/srvs/acpi/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_ACPI_PATH=srvs/acpi
-
-SRVS+=ACPI
diff --git a/sources/srvs/acpi/manifest.json b/sources/srvs/acpi/manifest.json
deleted file mode 100644
index 09efdeed..00000000
--- a/sources/srvs/acpi/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "acpi",
- "consume": ["system.Server", "boot.Info"],
- "rights": ["irq", "dma", "log"]
-}
diff --git a/sources/srvs/ahci/build.mk b/sources/srvs/ahci/build.mk
deleted file mode 100644
index a04f17ea..00000000
--- a/sources/srvs/ahci/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_AHCI_PATH=srvs/ahci
-
-SRVS+=AHCI
diff --git a/sources/srvs/ahci/manifest.json b/sources/srvs/ahci/manifest.json
deleted file mode 100644
index a9730079..00000000
--- a/sources/srvs/ahci/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "ahci",
- "consume": ["system.Server", "pci.Bus"],
- "rights": ["irq", "dma", "log"]
-}
diff --git a/sources/srvs/pci/build.mk b/sources/srvs/pci/build.mk
deleted file mode 100644
index 02dfd75c..00000000
--- a/sources/srvs/pci/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_PCI_PATH=srvs/pci
-
-SRVS+=PCI
diff --git a/sources/srvs/pci/manifest.json b/sources/srvs/pci/manifest.json
deleted file mode 100644
index 7f13645a..00000000
--- a/sources/srvs/pci/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "pci",
- "consume": ["system.Server", "boot.Info"],
- "rights": ["irq", "dma", "log"]
-}
diff --git a/sources/srvs/ps2/build.mk b/sources/srvs/ps2/build.mk
deleted file mode 100644
index eb9c2afe..00000000
--- a/sources/srvs/ps2/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_PS2_PATH=srvs/ps2
-
-SRVS+=PS2
diff --git a/sources/srvs/ps2/manifest.json b/sources/srvs/ps2/manifest.json
deleted file mode 100644
index faa50f63..00000000
--- a/sources/srvs/ps2/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "ps2",
- "consume": ["system.Server", "event.Sink"],
- "rights": ["irq", "pio", "log"]
-}
diff --git a/sources/srvs/ps2/ps2.h b/sources/srvs/ps2/ps2.h
deleted file mode 100644
index 6f70f09b..00000000
--- a/sources/srvs/ps2/ps2.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/sources/srvs/storage/manifest.json b/sources/srvs/storage/manifest.json
deleted file mode 100644
index cfec4b3d..00000000
--- a/sources/srvs/storage/manifest.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "name": "storage"
-}
diff --git a/sources/srvs/system/build.mk b/sources/srvs/system/build.mk
deleted file mode 100644
index 1e3a60de..00000000
--- a/sources/srvs/system/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_SYSTEM_PATH=srvs/system
-
-SRVS+=SYSTEM
diff --git a/sources/srvs/system/manifest.json b/sources/srvs/system/manifest.json
deleted file mode 100644
index beefee65..00000000
--- a/sources/srvs/system/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "system",
- "bootstrap": true,
- "rights": ["irq", "dma", "pio", "log", "task"]
-}
diff --git a/sources/srvs/window/build.mk b/sources/srvs/window/build.mk
deleted file mode 100644
index 95c4011d..00000000
--- a/sources/srvs/window/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_WINDOW_PATH=srvs/window
-
-SRVS+=WINDOW
diff --git a/sources/srvs/window/manifest.json b/sources/srvs/window/manifest.json
deleted file mode 100644
index a04ee5c5..00000000
--- a/sources/srvs/window/manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "window",
- "consume": ["system.Server", "hw.Display"],
- "rights": ["log"]
-}
diff --git a/sources/utils/bvm/build.mk b/sources/utils/bvm/build.mk
deleted file mode 100644
index a9c59bca..00000000
--- a/sources/utils/bvm/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_BVM_PATH=utils/bvm
-
-UTILS+=BVM
diff --git a/sources/utils/bvm/manifest.json b/sources/utils/bvm/manifest.json
deleted file mode 100644
index e69de29b..00000000
--- a/sources/utils/bvm/manifest.json
+++ /dev/null
diff --git a/sources/utils/cc/build.mk b/sources/utils/cc/build.mk
deleted file mode 100644
index add11ecd..00000000
--- a/sources/utils/cc/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_CC_PATH=utils/cc
-
-UTILS+=CC
diff --git a/sources/utils/cc/manifest.json b/sources/utils/cc/manifest.json
deleted file mode 100644
index e69de29b..00000000
--- a/sources/utils/cc/manifest.json
+++ /dev/null
diff --git a/sources/utils/fontinfo/build.mk b/sources/utils/fontinfo/build.mk
deleted file mode 100644
index ae7fb4ee..00000000
--- a/sources/utils/fontinfo/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_FONTINFO_PATH=utils/fontinfo
-
-UTILS+=FONTINFO
diff --git a/sources/utils/fontinfo/manifest.json b/sources/utils/fontinfo/manifest.json
deleted file mode 100644
index 0967ef42..00000000
--- a/sources/utils/fontinfo/manifest.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/sources/utils/fstools/build.mk b/sources/utils/fstools/build.mk
deleted file mode 100644
index d8f67865..00000000
--- a/sources/utils/fstools/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_FSTOOLS_PATH=utils/fstools
-
-UTILS+=FSTOOLS
diff --git a/sources/utils/fstools/manifest.json b/sources/utils/fstools/manifest.json
deleted file mode 100644
index e69de29b..00000000
--- a/sources/utils/fstools/manifest.json
+++ /dev/null
diff --git a/sources/utils/gunzip/build.mk b/sources/utils/gunzip/build.mk
deleted file mode 100644
index d31416e4..00000000
--- a/sources/utils/gunzip/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_GUNZIP_PATH=utils/gunzip
-
-UTILS+=GUNZIP
diff --git a/sources/utils/gunzip/manifest.json b/sources/utils/gunzip/manifest.json
deleted file mode 100644
index 0967ef42..00000000
--- a/sources/utils/gunzip/manifest.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/sources/utils/gzip/build.mk b/sources/utils/gzip/build.mk
deleted file mode 100644
index c6756d44..00000000
--- a/sources/utils/gzip/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_GZIP_PATH=utils/gzip
-
-UTILS+=GZIP
diff --git a/sources/utils/gzip/manifest.json b/sources/utils/gzip/manifest.json
deleted file mode 100644
index 0967ef42..00000000
--- a/sources/utils/gzip/manifest.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/sources/utils/hello/build.mk b/sources/utils/hello/build.mk
deleted file mode 100644
index 891b4a42..00000000
--- a/sources/utils/hello/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_HELLO_PATH=utils/hello
-
-UTILS+=HELLO
diff --git a/sources/utils/idgen/build.mk b/sources/utils/idgen/build.mk
deleted file mode 100644
index a2a80db5..00000000
--- a/sources/utils/idgen/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_IDGEN_PATH=utils/idgen
-
-UTILS+=IDGEN
diff --git a/sources/utils/idl/build.mk b/sources/utils/idl/build.mk
deleted file mode 100644
index 1133d4e3..00000000
--- a/sources/utils/idl/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_IDL_PATH=utils/idl
-
-UTILS+=IDL
diff --git a/sources/utils/idl/manifest.json b/sources/utils/idl/manifest.json
deleted file mode 100644
index e69de29b..00000000
--- a/sources/utils/idl/manifest.json
+++ /dev/null
diff --git a/sources/utils/test/build.mk b/sources/utils/test/build.mk
deleted file mode 100644
index 911fcdaf..00000000
--- a/sources/utils/test/build.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_TEST_PATH=utils/test
-
-UTILS+=TEST
diff --git a/sources/utils/test/manifest.json b/sources/utils/test/manifest.json
deleted file mode 100644
index e69de29b..00000000
--- a/sources/utils/test/manifest.json
+++ /dev/null
diff --git a/sources/apps/about/main.c b/src/about/main.c
index 0352086b..8116717e 100644
--- a/sources/apps/about/main.c
+++ b/src/about/main.c
@@ -1,4 +1,3 @@
-#include <brutal-io>
#include <brutal-ui>
UiView *about_informations(void)
diff --git a/src/about/manifest.json b/src/about/manifest.json
new file mode 100644
index 00000000..0e7b7bec
--- /dev/null
+++ b/src/about/manifest.json
@@ -0,0 +1,16 @@
+{
+ "type": "component",
+ "id": "about",
+ "version": "main",
+ "available": [
+ "host",
+ "target"
+ ],
+ "consumes": [
+ "system.Server",
+ "window.Server"
+ ],
+ "rights": [
+ "log"
+ ]
+}
diff --git a/sources/srvs/acpi/main.c b/src/acpi/main.c
index bf29af91..bf29af91 100644
--- a/sources/srvs/acpi/main.c
+++ b/src/acpi/main.c
diff --git a/src/acpi/manifest.json b/src/acpi/manifest.json
new file mode 100644
index 00000000..6fa9d94e
--- /dev/null
+++ b/src/acpi/manifest.json
@@ -0,0 +1,17 @@
+{
+ "type": "component",
+ "id": "acpi",
+ "version": "main",
+ "available": [
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "boot.Info"
+ ],
+ "rights": [
+ "irq",
+ "dma",
+ "log"
+ ]
+}
diff --git a/sources/srvs/ahci/main.c b/src/ahci/main.c
index d8b73f10..d8b73f10 100644
--- a/sources/srvs/ahci/main.c
+++ b/src/ahci/main.c
diff --git a/src/ahci/manifest.json b/src/ahci/manifest.json
new file mode 100644
index 00000000..fb320c80
--- /dev/null
+++ b/src/ahci/manifest.json
@@ -0,0 +1,17 @@
+{
+ "type": "component",
+ "id": "ahci",
+ "version": "main",
+ "available": [
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "pci.Bus"
+ ],
+ "rights": [
+ "irq",
+ "dma",
+ "log"
+ ]
+}
diff --git a/sources/build/scripts/header-builder.py b/src/build/dir2h.py
index c7588c3d..f19c6d81 100755
--- a/sources/build/scripts/header-builder.py
+++ b/src/build/dir2h.py
@@ -3,7 +3,6 @@
# Create a new header file including all the .h file in a directory
import os
-from sys import stdout
import argparse
if __name__ == "__main__":
@@ -20,8 +19,8 @@ if __name__ == "__main__":
h_files.append(os.path.join(args.prefix, file))
# Create the header file
- stdout.write("#pragma once\n")
- stdout.write("\n")
+ print("#pragma once")
+ print("")
for h_file in h_files:
- stdout.write("#include <{}>\n".format(h_file))
- stdout.write("\n")
+ print("#include <{}>".format(h_file))
+ print("")
diff --git a/src/build/meta2mk.py b/src/build/meta2mk.py
new file mode 100755
index 00000000..c7bbe816
--- /dev/null
+++ b/src/build/meta2mk.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+# Convert a manifest.json to a makefile
+
+import os
+import json
+import argparse
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description="Convert a manifest.json to a makefile")
+ parser.add_argument("-m", "--manifest",
+ help="manifest.json", required=True)
+
+ args = parser.parse_args()
+
+ manifest = json.load(open(args.manifest))
+
+ dirname = os.path.dirname(args.manifest)
+ keyprefix = "PKG_" + manifest["id"].upper()
+
+ print("{}_NAME={}".format(keyprefix, manifest["id"]))
+ print("{}_PATH={}".format(keyprefix, dirname))
+ print("{}_TYPE={}".format(keyprefix, manifest["type"]))
+ print("{}_MANIFEST={}".format(keyprefix, args.manifest))
+
+ pkg_sources = []
+ pkg_headers = []
+ for root, dirs, files in os.walk(dirname):
+ for f in files:
+ if f.endswith(".c"):
+ pkg_sources.append(os.path.join(root, f))
+
+ if f.endswith(".h"):
+ pkg_headers.append(os.path.join(root, f))
+
+ print("{}_SOURCES={}".format(keyprefix, " ".join(pkg_sources)))
+ print("{}_HEADERS={}".format(keyprefix, " ".join(pkg_headers)))
+
+ print("")
+
+ print("ALL_PKGS+={}".format(keyprefix))
+
+ if "target" in manifest["available"]:
+ print("TARGET_PKGS+={}".format(keyprefix))
+
+ if "host" in manifest["available"]:
+ print("HOST_PKGS+={}".format(keyprefix))
+
+ print("")
diff --git a/sources/utils/bvm/main.c b/src/bvm/main.c
index 65f77d7a..65f77d7a 100644
--- a/sources/utils/bvm/main.c
+++ b/src/bvm/main.c
diff --git a/src/bvm/manifest.json b/src/bvm/manifest.json
new file mode 100644
index 00000000..108ca4cd
--- /dev/null
+++ b/src/bvm/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "bvm",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/cc/main.c b/src/cc/main.c
index e75e3dcc..e75e3dcc 100644
--- a/sources/utils/cc/main.c
+++ b/src/cc/main.c
diff --git a/src/cc/manifest.json b/src/cc/manifest.json
new file mode 100644
index 00000000..f2b5d1b6
--- /dev/null
+++ b/src/cc/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "cc",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/apps/demo/main.c b/src/demo/main.c
index 33ecdcd1..33ecdcd1 100644
--- a/sources/apps/demo/main.c
+++ b/src/demo/main.c
diff --git a/src/demo/manifest.json b/src/demo/manifest.json
new file mode 100644
index 00000000..fc358eff
--- /dev/null
+++ b/src/demo/manifest.json
@@ -0,0 +1,19 @@
+{
+ "type": "component",
+ "id": "demo",
+ "version": "main",
+ "available": [
+ "host",
+ "target"
+ ],
+ "import": {
+ "brutal-ui": "main"
+ },
+ "consume": [
+ "system.Server",
+ "window.Server"
+ ],
+ "rights": [
+ "log"
+ ]
+}
diff --git a/sources/srvs/device/device.h b/src/device/device.h
index 4fd018d9..4fd018d9 100644
--- a/sources/srvs/device/device.h
+++ b/src/device/device.h
diff --git a/sources/srvs/device/main.c b/src/device/main.c
index 52aafa3a..52aafa3a 100644
--- a/sources/srvs/device/main.c
+++ b/src/device/main.c
diff --git a/sources/srvs/device/manifest.json b/src/device/manifest.json
index 8a0463b8..553a1da2 100644
--- a/sources/srvs/device/manifest.json
+++ b/src/device/manifest.json
@@ -1,5 +1,10 @@
{
- "name": "device",
+ "type": "component",
+ "id": "device",
+ "version": "main",
+ "available": [
+ "target"
+ ],
"consume": [
"system.Server"
],
diff --git a/sources/apps/files/main.c b/src/files/main.c
index d58027cf..d58027cf 100644
--- a/sources/apps/files/main.c
+++ b/src/files/main.c
diff --git a/src/files/manifest.json b/src/files/manifest.json
new file mode 100644
index 00000000..beffc27e
--- /dev/null
+++ b/src/files/manifest.json
@@ -0,0 +1,16 @@
+{
+ "type": "component",
+ "id": "files",
+ "version": "main",
+ "available": [
+ "host",
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "window.Server"
+ ],
+ "rights": [
+ "log"
+ ]
+}
diff --git a/sources/utils/fontinfo/main.c b/src/fontinfo/main.c
index f462ad71..f462ad71 100644
--- a/sources/utils/fontinfo/main.c
+++ b/src/fontinfo/main.c
diff --git a/src/fontinfo/manifest.json b/src/fontinfo/manifest.json
new file mode 100644
index 00000000..0d502dd9
--- /dev/null
+++ b/src/fontinfo/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "fontinfo",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/fstools/main.c b/src/fstools/main.c
index 0b2c55bd..0b2c55bd 100644
--- a/sources/utils/fstools/main.c
+++ b/src/fstools/main.c
diff --git a/src/fstools/manifest.json b/src/fstools/manifest.json
new file mode 100644
index 00000000..8bc62e1b
--- /dev/null
+++ b/src/fstools/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "fstools",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/gunzip/main.c b/src/gunzip/main.c
index 826dcc68..826dcc68 100644
--- a/sources/utils/gunzip/main.c
+++ b/src/gunzip/main.c
diff --git a/src/gunzip/manifest.json b/src/gunzip/manifest.json
new file mode 100644
index 00000000..f3dd201e
--- /dev/null
+++ b/src/gunzip/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "gunzip",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/gzip/main.c b/src/gzip/main.c
index 632c7476..632c7476 100644
--- a/sources/utils/gzip/main.c
+++ b/src/gzip/main.c
diff --git a/src/gzip/manifest.json b/src/gzip/manifest.json
new file mode 100644
index 00000000..49dc0e06
--- /dev/null
+++ b/src/gzip/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "gzip",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/hello/main.c b/src/hello/main.c
index 6ecb31d2..6ecb31d2 100644
--- a/sources/utils/hello/main.c
+++ b/src/hello/main.c
diff --git a/src/hello/manifest.json b/src/hello/manifest.json
new file mode 100644
index 00000000..6a769f02
--- /dev/null
+++ b/src/hello/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "hello",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/idgen/main.c b/src/idgen/main.c
index bfd86807..bfd86807 100644
--- a/sources/utils/idgen/main.c
+++ b/src/idgen/main.c
diff --git a/src/idgen/manifest.json b/src/idgen/manifest.json
new file mode 100644
index 00000000..7f9f763d
--- /dev/null
+++ b/src/idgen/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "idgen",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/utils/idl/main.c b/src/idl/main.c
index 5ebcdb2a..5ebcdb2a 100644
--- a/sources/utils/idl/main.c
+++ b/src/idl/main.c
diff --git a/src/idl/manifest.json b/src/idl/manifest.json
new file mode 100644
index 00000000..b8fb91b7
--- /dev/null
+++ b/src/idl/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "idl",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/apps/panel/main.c b/src/panel/main.c
index f94999c5..f94999c5 100644
--- a/sources/apps/panel/main.c
+++ b/src/panel/main.c
diff --git a/src/panel/manifest.json b/src/panel/manifest.json
new file mode 100644
index 00000000..fdb31128
--- /dev/null
+++ b/src/panel/manifest.json
@@ -0,0 +1,16 @@
+{
+ "type": "component",
+ "id": "panel",
+ "version": "main",
+ "available": [
+ "host",
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "window.Server"
+ ],
+ "rights": [
+ "log"
+ ]
+}
diff --git a/sources/srvs/pci/main.c b/src/pci/main.c
index cf667122..cf667122 100644
--- a/sources/srvs/pci/main.c
+++ b/src/pci/main.c
diff --git a/src/pci/manifest.json b/src/pci/manifest.json
new file mode 100644
index 00000000..c15f4fdc
--- /dev/null
+++ b/src/pci/manifest.json
@@ -0,0 +1,17 @@
+{
+ "type": "component",
+ "id": "pci",
+ "version": "main",
+ "available": [
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "boot.Info"
+ ],
+ "rights": [
+ "irq",
+ "dma",
+ "log"
+ ]
+}
diff --git a/sources/srvs/ps2/main.c b/src/ps2/main.c
index 1c10e82d..1c10e82d 100644
--- a/sources/srvs/ps2/main.c
+++ b/src/ps2/main.c
diff --git a/src/ps2/manifest.json b/src/ps2/manifest.json
new file mode 100644
index 00000000..2a7789d9
--- /dev/null
+++ b/src/ps2/manifest.json
@@ -0,0 +1,17 @@
+{
+ "type": "component",
+ "id": "ps2",
+ "version": "main",
+ "available": [
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "event.Sink"
+ ],
+ "rights": [
+ "irq",
+ "pio",
+ "log"
+ ]
+}
diff --git a/src/storage/main.c b/src/storage/main.c
new file mode 100644
index 00000000..52aafa3a
--- /dev/null
+++ b/src/storage/main.c
@@ -0,0 +1,6 @@
+#include <ipc/ipc.h>
+
+int ipc_component_main(IpcComponent *self)
+{
+ return ipc_component_run(self);
+}
diff --git a/src/storage/manifest.json b/src/storage/manifest.json
new file mode 100644
index 00000000..36e2c75f
--- /dev/null
+++ b/src/storage/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "storage",
+ "version": "main",
+ "available": [
+ "target"
+ ]
+}
diff --git a/sources/srvs/system/bus.c b/src/system/bus.c
index 617d3638..617d3638 100644
--- a/sources/srvs/system/bus.c
+++ b/src/system/bus.c
diff --git a/sources/srvs/system/bus.h b/src/system/bus.h
index bca0697e..bca0697e 100644
--- a/sources/srvs/system/bus.h
+++ b/src/system/bus.h
diff --git a/sources/srvs/system/main.c b/src/system/main.c
index 4538d61c..4538d61c 100644
--- a/sources/srvs/system/main.c
+++ b/src/system/main.c
diff --git a/src/system/manifest.json b/src/system/manifest.json
new file mode 100644
index 00000000..e9e19057
--- /dev/null
+++ b/src/system/manifest.json
@@ -0,0 +1,16 @@
+{
+ "type": "component",
+ "id": "system",
+ "version": "main",
+ "available": [
+ "target"
+ ],
+ "bootstrap": true,
+ "rights": [
+ "irq",
+ "dma",
+ "pio",
+ "log",
+ "task"
+ ]
+}
diff --git a/sources/srvs/system/unit.c b/src/system/unit.c
index 11c9e893..11c9e893 100644
--- a/sources/srvs/system/unit.c
+++ b/src/system/unit.c
diff --git a/sources/srvs/system/unit.h b/src/system/unit.h
index 029b0c4a..029b0c4a 100644
--- a/sources/srvs/system/unit.h
+++ b/src/system/unit.h
diff --git a/sources/utils/test/brutal/alloc/heap.c b/src/test/brutal/alloc/heap.c
index c334037a..c334037a 100644
--- a/sources/utils/test/brutal/alloc/heap.c
+++ b/src/test/brutal/alloc/heap.c
diff --git a/sources/utils/test/brutal/base/endian.c b/src/test/brutal/base/endian.c
index 856faf8e..856faf8e 100644
--- a/sources/utils/test/brutal/base/endian.c
+++ b/src/test/brutal/base/endian.c
diff --git a/sources/utils/test/brutal/codec/deflate.c b/src/test/brutal/codec/deflate.c
index 33623ffe..33623ffe 100644
--- a/sources/utils/test/brutal/codec/deflate.c
+++ b/src/test/brutal/codec/deflate.c
diff --git a/sources/utils/test/brutal/codec/gzip.c b/src/test/brutal/codec/gzip.c
index 50efeb29..50efeb29 100644
--- a/sources/utils/test/brutal/codec/gzip.c
+++ b/src/test/brutal/codec/gzip.c
diff --git a/sources/utils/test/brutal/codec/inflate.c b/src/test/brutal/codec/inflate.c
index 949e56b0..949e56b0 100644
--- a/sources/utils/test/brutal/codec/inflate.c
+++ b/src/test/brutal/codec/inflate.c
diff --git a/sources/utils/test/brutal/codec/zlib.c b/src/test/brutal/codec/zlib.c
index 71df1708..71df1708 100644
--- a/sources/utils/test/brutal/codec/zlib.c
+++ b/src/test/brutal/codec/zlib.c
diff --git a/sources/utils/test/brutal/ds/map.c b/src/test/brutal/ds/map.c
index cc0f0805..cc0f0805 100644
--- a/sources/utils/test/brutal/ds/map.c
+++ b/src/test/brutal/ds/map.c
diff --git a/sources/utils/test/brutal/ds/range.c b/src/test/brutal/ds/range.c
index 37f40417..37f40417 100644
--- a/sources/utils/test/brutal/ds/range.c
+++ b/src/test/brutal/ds/range.c
diff --git a/sources/utils/test/brutal/ds/slot.c b/src/test/brutal/ds/slot.c
index 006b3fe8..006b3fe8 100644
--- a/sources/utils/test/brutal/ds/slot.c
+++ b/src/test/brutal/ds/slot.c
diff --git a/sources/utils/test/brutal/ds/vec.c b/src/test/brutal/ds/vec.c
index ce83b614..ce83b614 100644
--- a/sources/utils/test/brutal/ds/vec.c
+++ b/src/test/brutal/ds/vec.c
diff --git a/sources/utils/test/brutal/fmt/case.c b/src/test/brutal/fmt/case.c
index 44570f25..44570f25 100644
--- a/sources/utils/test/brutal/fmt/case.c
+++ b/src/test/brutal/fmt/case.c
diff --git a/sources/utils/test/brutal/fmt/format.c b/src/test/brutal/fmt/format.c
index e305fdf4..e305fdf4 100644
--- a/sources/utils/test/brutal/fmt/format.c
+++ b/src/test/brutal/fmt/format.c
diff --git a/sources/utils/test/brutal/fmt/printf.c b/src/test/brutal/fmt/printf.c
index 0689e312..0689e312 100644
--- a/sources/utils/test/brutal/fmt/printf.c
+++ b/src/test/brutal/fmt/printf.c
diff --git a/sources/utils/test/brutal/gfx/path.c b/src/test/brutal/gfx/path.c
index 8ff7c7a4..8ff7c7a4 100644
--- a/sources/utils/test/brutal/gfx/path.c
+++ b/src/test/brutal/gfx/path.c
diff --git a/sources/utils/test/brutal/gfx/rect.c b/src/test/brutal/gfx/rect.c
index 813f09c5..813f09c5 100644
--- a/sources/utils/test/brutal/gfx/rect.c
+++ b/src/test/brutal/gfx/rect.c
diff --git a/sources/utils/test/brutal/gfx/text.c b/src/test/brutal/gfx/text.c
index 53e0cc52..53e0cc52 100644
--- a/sources/utils/test/brutal/gfx/text.c
+++ b/src/test/brutal/gfx/text.c
diff --git a/sources/utils/test/brutal/glob/glob.c b/src/test/brutal/glob/glob.c
index 98b7c281..98b7c281 100644
--- a/sources/utils/test/brutal/glob/glob.c
+++ b/src/test/brutal/glob/glob.c
diff --git a/sources/utils/test/brutal/io/bit_write.c b/src/test/brutal/io/bit_write.c
index 52198dc1..52198dc1 100644
--- a/sources/utils/test/brutal/io/bit_write.c
+++ b/src/test/brutal/io/bit_write.c
diff --git a/sources/utils/test/brutal/tests/expect.c b/src/test/brutal/tests/expect.c
index e0b6365e..e0b6365e 100644
--- a/sources/utils/test/brutal/tests/expect.c
+++ b/src/test/brutal/tests/expect.c
diff --git a/sources/utils/test/brutal/tests/test.c b/src/test/brutal/tests/test.c
index 4ab4cae0..4ab4cae0 100644
--- a/sources/utils/test/brutal/tests/test.c
+++ b/src/test/brutal/tests/test.c
diff --git a/sources/utils/test/brutal/ui/parser.c b/src/test/brutal/ui/parser.c
index ccd300de..ccd300de 100644
--- a/sources/utils/test/brutal/ui/parser.c
+++ b/src/test/brutal/ui/parser.c
diff --git a/sources/utils/test/cc/cc.h b/src/test/cc/cc.h
index a26d2b27..a26d2b27 100644
--- a/sources/utils/test/cc/cc.h
+++ b/src/test/cc/cc.h
diff --git a/sources/utils/test/cc/pproc.c b/src/test/cc/pproc.c
index e2b134ed..e2b134ed 100644
--- a/sources/utils/test/cc/pproc.c
+++ b/src/test/cc/pproc.c
diff --git a/sources/utils/test/json/json.c b/src/test/json/json.c
index a701539d..a701539d 100644
--- a/sources/utils/test/json/json.c
+++ b/src/test/json/json.c
diff --git a/sources/utils/test/main.c b/src/test/main.c
index f9dfcf90..f9dfcf90 100644
--- a/sources/utils/test/main.c
+++ b/src/test/main.c
diff --git a/src/test/manifest.json b/src/test/manifest.json
new file mode 100644
index 00000000..9a33a2b4
--- /dev/null
+++ b/src/test/manifest.json
@@ -0,0 +1,8 @@
+{
+ "type": "component",
+ "id": "test",
+ "version": "main",
+ "available": [
+ "host"
+ ]
+}
diff --git a/sources/srvs/window/client.c b/src/window/client.c
index a4de11e3..a4de11e3 100644
--- a/sources/srvs/window/client.c
+++ b/src/window/client.c
diff --git a/sources/srvs/window/client.h b/src/window/client.h
index 928e9af0..928e9af0 100644
--- a/sources/srvs/window/client.h
+++ b/src/window/client.h
diff --git a/sources/srvs/window/display.c b/src/window/display.c
index e36b1523..e36b1523 100644
--- a/sources/srvs/window/display.c
+++ b/src/window/display.c
diff --git a/sources/srvs/window/display.h b/src/window/display.h
index 7306e3bf..7306e3bf 100644
--- a/sources/srvs/window/display.h
+++ b/src/window/display.h
diff --git a/sources/srvs/window/main.c b/src/window/main.c
index d55271fe..d55271fe 100644
--- a/sources/srvs/window/main.c
+++ b/src/window/main.c
diff --git a/src/window/manifest.json b/src/window/manifest.json
new file mode 100644
index 00000000..4803c7e1
--- /dev/null
+++ b/src/window/manifest.json
@@ -0,0 +1,15 @@
+{
+ "type": "component",
+ "id": "window",
+ "version": "main",
+ "available": [
+ "target"
+ ],
+ "consume": [
+ "system.Server",
+ "hw.Display"
+ ],
+ "rights": [
+ "log"
+ ]
+}
diff --git a/sources/srvs/window/server.c b/src/window/server.c
index 83105be0..83105be0 100644
--- a/sources/srvs/window/server.c
+++ b/src/window/server.c
diff --git a/sources/srvs/window/server.h b/src/window/server.h
index e8412453..e8412453 100644
--- a/sources/srvs/window/server.h
+++ b/src/window/server.h