From 7d9a113d53bd929e7b882c0573f5abb074a8a095 Mon Sep 17 00:00:00 2001 From: Mihai-Drosi Caju Date: Sun, 10 Sep 2023 10:22:52 +0300 Subject: [PATCH] build: Added a make target for installing Unikraft headers Add the headers_install top-level make target in order to export them when building external projects such as glibc. Signed-off-by: Mihai-Drosi Caju --- Makefile | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f33bd74d1..65a0244a8 100644 --- a/Makefile +++ b/Makefile @@ -760,7 +760,7 @@ endif # include Makefile for platform linking (`Linker.uk`) $(foreach plat,$(UK_PLATS),$(eval $(call _import_linker,$(plat)))) -.PHONY: prepare preprocess image libs objs clean +.PHONY: prepare preprocess headers_install image libs objs clean fetch: $(UK_FETCH) $(UK_FETCH-y) @@ -775,6 +775,25 @@ prepare: $(UK_FIXDEP) | fetch preprocess: $(UK_PREPROCESS) $(UK_PREPROCESS-y) | prepare +headers_install: preprocess + @mkdir -p $(INSTALL_HDR_PATH)/include/uk; \ + mkdir -p $(INSTALL_HDR_PATH)/include/uk/nolibc; \ + for hdr_dir in $$(echo $(HDR_DIRS) | tr ' ' '\n' | sort -u); do \ + if [ ! -d "$$hdr_dir" ]; then \ + continue; \ + fi; \ + for hdr_dir2 in $$hdr_dir/*; do \ + bname=$$(basename $$hdr_dir2); \ + if [ "$$bname" == uk ]; then \ + cp -r $$hdr_dir2 $(INSTALL_HDR_PATH)/include/; \ + elif [ -n "$$(echo $$hdr_dir2 | grep nolibc)" ]; then \ + cp -r $$hdr_dir2 $(INSTALL_HDR_PATH)/include/uk/nolibc; \ + else \ + cp -r $$hdr_dir2 $(INSTALL_HDR_PATH)/include/uk/; \ + fi; \ + done; \ + done + objs: $(UK_OBJS) $(UK_OBJS-y) libs: $(UK_ALIBS) $(UK_ALIBS-y) $(UK_OLIBS) $(UK_OLIBS-y) @@ -1136,6 +1155,10 @@ sub-make: $(BUILD_DIR)/Makefile endif +INCLUDES = $(ASINCLUDES) $(ASINCLUDES-y) $(CINCLUDES) $(CINCLUDES-y) $(CXXINCLUDES) $(CXXINCLUDES-y) $(GOCINCLUDES) $(GOCINCLUDES-y) +HDR_DIRS = $(patsubst -I%,%,$(INCLUDES)) +INSTALL_HDR_PATH ?= /usr/local + help: @echo 'Cleaning:' @echo ' clean-[LIBNAME] - delete all files created by build for a single library' -- 2.39.5