diff --git a/Userspace/libs/Makefile b/Userspace/libs/Makefile
index 5232914e..76d29cc7 100644
--- a/Userspace/libs/Makefile
+++ b/Userspace/libs/Makefile
@@ -1,6 +1,8 @@
build:
cp -a $(CURDIR)/include/. $(WORKSPACE_DIR)/out/include
make -C libgcc build
+ make -C libdemo build
clean:
make -C libgcc clean
+ make -C libdemo clean
diff --git a/Userspace/libs/libdemo/Makefile b/Userspace/libs/libdemo/Makefile
new file mode 100644
index 00000000..eddae0a7
--- /dev/null
+++ b/Userspace/libs/libdemo/Makefile
@@ -0,0 +1,48 @@
+default:
+ $(error Do not run this Makefile directly!)
+
+DYNAMIC_NAME := $(notdir $(shell pwd)).so
+STATIC_NAME := $(notdir $(shell pwd)).a
+
+OUTPUT_DIR=$(WORKSPACE_DIR)/out/lib/
+SYSROOT = --sysroot=$(WORKSPACE_DIR)/out/
+
+S_SOURCES = $(shell find ./ -type f -name '*.S')
+C_SOURCES = $(shell find ./ -type f -name '*.c')
+CXX_SOURCES = $(shell find ./ -type f -name '*.cpp')
+OBJ = ${S_SOURCES:.S=.o} ${C_SOURCES:.c=.o} ${CXX_SOURCES:.cpp=.o}
+
+CFLAGS := -fvisibility=hidden -fPIC -I../include -I$(WORKSPACE_DIR)/out/include -DLIBC_GIT_COMMIT='"$(shell git rev-parse HEAD)"'
+
+ifeq ($(DEBUG), 1)
+ CFLAGS += -DDEBUG -ggdb3 -O0 -fdiagnostics-color=always
+endif
+
+build: $(DYNAMIC_NAME) $(STATIC_NAME)
+
+.PHONY: $(DYNAMIC_NAME) $(STATIC_NAME)
+
+$(DYNAMIC_NAME): $(OBJ)
+ $(info Linking $@)
+ $(CC) -nostdlib -shared -fPIC -fPIE -Wl,-soname,$(DYNAMIC_NAME) $(SYSROOT) $(OBJ) -o $(DYNAMIC_NAME)
+ cp $(DYNAMIC_NAME) $(OUTPUT_DIR)$(DYNAMIC_NAME)
+
+$(STATIC_NAME): $(OBJ)
+ $(info Linking $@)
+ $(AR) -rcs $(STATIC_NAME) $(OBJ)
+ cp $(STATIC_NAME) $(OUTPUT_DIR)$(STATIC_NAME)
+
+%.o: %.c
+ $(info Compiling $<)
+ $(CC) $(CFLAGS) -std=c17 -c $< -o $@
+
+%.o: %.cpp
+ $(info Compiling $<)
+ $(CC) $(CFLAGS) -std=c++20 -c $< -o $@
+
+%.o: %.S
+ $(info Compiling $<)
+ $(AS) -c $< -o $@
+
+clean:
+ rm -f $(OBJ) $(DYNAMIC_NAME) $(STATIC_NAME)
diff --git a/Userspace/libs/libdemo/demo.c b/Userspace/libs/libdemo/demo.c
new file mode 100644
index 00000000..f1a40ac7
--- /dev/null
+++ b/Userspace/libs/libdemo/demo.c
@@ -0,0 +1,23 @@
+/*
+ This file is part of Fennix Userspace.
+
+ Fennix Userspace is free software: you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version.
+
+ Fennix Userspace is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fennix Userspace. If not, see .
+*/
+
+#include
+
+export int foo()
+{
+ return 0;
+}