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; +}