From ff1a6f89d83ec258b7fc7e8a6ea288205c5951b3 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Tue, 29 Nov 2022 01:48:14 +0400 Subject: [PATCH] Improve build system --- Makefile | 15 ++++++++++----- build_config.rb | 25 +++++++++++-------------- src/Makefile | 6 ++---- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index 7e4551a..6966873 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,12 @@ LIBKERNAUX_ARGS = \ --with-drivers \ --with-libc -MRUBY_NAME = mrubyvisor +MRUBY_FLAGS = \ + -DMRB_NO_BOXING \ + -DMRB_NO_FLOAT \ + -DMRB_NO_STDIO + +MRUBY_BUILD_NAME = mrubyvisor .PHONY: $(IMAGE) $(MRUBYVISOR) @@ -59,7 +64,7 @@ $(IMAGE): $(GRUBCFG) $(MRUBYVISOR) grub-mkrescue $(ROOTFS) -o $@ $(MRUBYVISOR): $(LIBKERNAUX) $(LIBMRUBY) - $(MAKE) -C $(SRC) mrubyvisor.multiboot2 CCPREFIX='$(CCPREFIX)' DEST='$(ABS_REPO)/$(DEST)' + $(MAKE) -C $(SRC) mrubyvisor.multiboot2 CCPREFIX='$(CCPREFIX)' DEST='$(ABS_REPO)/$(DEST)' MRUBY_FLAGS='$(MRUBY_FLAGS)' cp $(SRC)/mrubyvisor.multiboot2 $@ $(LIBKERNAUX): @@ -70,8 +75,8 @@ $(LIBKERNAUX): $(LIBMRUBY): $(LIBKERNAUX) $(MRUBY_CONF) $(MAKE) clean-mruby - cd vendor/mruby && $(RAKE) MRUBY_CONFIG='$(ABS_REPO)/$(MRUBY_CONF)' CROSS_AR='$(AR)' CROSS_CC='$(CC)' CROSS_LD='$(LD)' + cd vendor/mruby && $(RAKE) MRUBY_CONFIG='$(ABS_REPO)/$(MRUBY_CONF)' CROSS_AR='$(AR)' CROSS_CC='$(CC)' CROSS_LD='$(LD)' FLAGS='$(MRUBY_FLAGS)' BUILD_NAME='$(MRUBY_BUILD_NAME)' INCLUDE_DIR='$(ABS_REPO)/$(DEST)/include' LIB_DIR='$(ABS_REPO)/$(DEST)/lib' mkdir -p $(DEST)/include $(DEST)/lib - cp vendor/mruby/build/$(MRUBY_NAME)/lib/libmruby.a $(DEST)/lib + cp vendor/mruby/build/$(MRUBY_BUILD_NAME)/lib/libmruby.a $(DEST)/lib cp -r vendor/mruby/include/* $(DEST)/include - cp -r vendor/mruby/build/$(MRUBY_NAME)/include/* $(DEST)/include + cp -r vendor/mruby/build/$(MRUBY_BUILD_NAME)/include/* $(DEST)/include diff --git a/build_config.rb b/build_config.rb index a16d6c0..d379c7c 100644 --- a/build_config.rb +++ b/build_config.rb @@ -1,16 +1,8 @@ -ROOT_DIR = File.expand_path(__dir__).freeze -DEST_DIR = File.join(ROOT_DIR, 'dest').freeze - -MRuby::CrossBuild.new 'mrubyvisor' do |conf| +MRuby::CrossBuild.new ENV.fetch 'BUILD_NAME' do |conf| conf.toolchain :gcc conf.gem core: 'mruby-compiler' - conf.cc.defines << - 'MRB_NO_BOXING' << - 'MRB_NO_FLOAT' << - 'MRB_NO_STDIO' - conf.cc.flags << '-Wall' << '-Wextra' << @@ -19,10 +11,15 @@ MRuby::CrossBuild.new 'mrubyvisor' do |conf| '-fno-pic' << '-fno-stack-protector' - conf.cc.include_paths << File.join(DEST_DIR, 'include') - conf.linker.library_paths << File.join(DEST_DIR, 'lib') + ENV.fetch('FLAGS').split.map do |flag| + m = /\A-D(MRB_.*)\z/.match flag + conf.cc.defines << m[1] if m + end - conf.archiver.command = ENV['CROSS_AR'] - conf.cc.command = ENV['CROSS_CC'] - conf.linker.command = ENV['CROSS_LD'] + conf.cc.include_paths << ENV.fetch('INCLUDE_DIR') + conf.linker.library_paths << ENV.fetch('LIB_DIR') + + conf.archiver.command = ENV.fetch 'CROSS_AR' + conf.cc.command = ENV.fetch 'CROSS_CC' + conf.linker.command = ENV.fetch 'CROSS_LD' end diff --git a/src/Makefile b/src/Makefile index f966673..add3c00 100644 --- a/src/Makefile +++ b/src/Makefile @@ -16,11 +16,9 @@ CFLAGS = \ -fno-stack-protector \ -I$(DEST)/include -CPPFLAGS = \ +CPPFLAGS = \ + $(MRUBY_FLAGS) \ -DKERNAUX_DEBUG \ - -DMRB_NO_BOXING \ - -DMRB_NO_FLOAT \ - -DMRB_NO_STDIO OBJS = start.S.o main.c.o