X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8efc0cf32160c68772a2ce1887e6a397852d3d96..29891c3ccec4f1d28e0440d87ea2e2708377d2ee:/lunaix-os/usr/makefile diff --git a/lunaix-os/usr/makefile b/lunaix-os/usr/makefile index d0374d6..4dc8d0d 100644 --- a/lunaix-os/usr/makefile +++ b/lunaix-os/usr/makefile @@ -3,10 +3,16 @@ include toolchain.mkinc task := all +# TODO make this use LBuild +CFLAGS += -m32 -ffreestanding -fno-pie +LDFLAGS += -m32 -nostdlib -nolibc -z noexecstack -no-pie -Wl,--build-id=none + sys_include := $(CURDIR)/includes build_dir := $(CURDIR)/build libc_name := liblunac libc_files := $(libc_name).a +libc := $(addprefix $(build_dir)/lib/,$(libc_files)) +ldscript := $(CURDIR)/link-usr.ld common_param := CC AR INCLUDES BUILD_DIR BUILD_NAME CFLAGS LDFLAGS @@ -28,29 +34,38 @@ $(build_dir)/$(libc_name).a: $(build_dir)/bin $(build_dir)/lib $(build_dir)/incl $(call status,TASK,$(BUILD_NAME)) @$(MAKE) $(MKFLAGS) -C libc/ $(task) -app-list := ls -app-list += init -app-list += signal_demo -app-list += sh -app-list += cat -app-list += testp +app-list = $(shell cat apps.list) +exec-list = $(shell cat execs.list) mkapp-list := $(addprefix app-, $(app-list)) +mkexec-list := $(addprefix $(build_dir)/bin/, $(exec-list)) -export LD_SCRIPT := $(CURDIR)/link-usr.ld -export LIBC := $(addprefix $(build_dir)/lib/,$(libc_files)) +export LD_SCRIPT := $(ldscript) +export LIBC := $(libc) app-%: $(call status,TASK,$*) @$(MAKE) $(MKFLAGS) -C $* $(task) BUILD_NAME="$*" +exec_%.o: %.c + $(call status,CC,$<) + @$(CC) $(CFLAGS) $(addprefix -I,$(INCLUDES)) -c $< -o $@ + +$(build_dir)/bin/%: exec_%.o + $(call status,LD,$(@F)) + @$(CC) -T $(ldscript) -o $@ $< $(libc) $(LDFLAGS) + app: task := all app: INCLUDES += $(build_dir)/includes app: $(mkapp-list) +exec: task := all +exec: INCLUDES += $(build_dir)/includes +exec: $(mkexec-list) + clean: task := clean clean: $(mkapp-list) @rm -rf $(build_dir) @$(MAKE) $(MKFLAGS) -C libc/ $(task) all: task := all -all: $(build_dir)/$(libc_name).a app \ No newline at end of file +all: $(build_dir)/$(libc_name).a exec app \ No newline at end of file