refactor config loading
This commit is contained in:
23
Makefile
23
Makefile
@@ -5,8 +5,12 @@ INCLUDES=-Iinc -I.
|
||||
ifeq ($(BUILD_DIR),)
|
||||
BUILD_DIR := out
|
||||
endif
|
||||
ifeq ($(MANIFEST_BUILD_DIR),)
|
||||
MANIFEST_BUILD_DIR := out/manifest
|
||||
endif
|
||||
|
||||
SRC_DIR=src
|
||||
MANIFEST_SRC_DIR=manifest_src
|
||||
INC_DIR=inc
|
||||
CC=gcc
|
||||
OBJDUMP=objdump
|
||||
@@ -19,6 +23,7 @@ TARGET=device
|
||||
DEFINES=-DOPCODE_WORDSIZE=2 -DMEM_CELL_WORDS=1 -DPC_WORDSIZE=3 -DGP_REG_CELL_WORDS=1 -DIO_REG_CELL_WORDS=1 -DARCH=$(ARCH)
|
||||
|
||||
C_SOURCES=$(wildcard $(SRC_DIR)/*.c)
|
||||
MANIFEST_C_SOURCES=$(wildcard $(MANIFEST_SRC_DIR)/*.c)
|
||||
C_HEADERS=$(wildcard $(INC_DIR)/*.h)
|
||||
|
||||
C_INCLUDES=-I$(INC_DIR)/
|
||||
@@ -29,10 +34,12 @@ ANALYZER_FLAGS=-fanalyzer
|
||||
LSECTIONS=-ffunction-sections -fdata-sections -Wl,--gc-sections
|
||||
CFLAGS=$(C_DEFS) -g $(C_INCLUDES) $(DEFINES) $(OPTIMIZE) --std=$(STANDART) $(PEDANTIC_FLAGS) $(ANALYZER_FLAGS) -fPIC
|
||||
LFLAGS=$(OPTIMIZE) -g $(PEDANTIC_FLAGS) $(DEFINES) -flto -fuse-linker-plugin $(LSECTIONS) -lm $(LIBS) -fPIC -shared
|
||||
MANIFEST_LFLAGS=$(OPTIMIZE) -g $(PEDANTIC_FLAGS) $(DEFINES) -flto -fuse-linker-plugin $(LSECTIONS) -lm $(LIBS) -fPIC
|
||||
|
||||
|
||||
|
||||
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
|
||||
MANIFEST_TARGETS = $(addprefix $(MANIFEST_BUILD_DIR)/,$(notdir $(MANIFEST_C_SOURCES:.c=.elf)))
|
||||
vpath %.c $(sort $(dir $(C_SOURCES)))
|
||||
vpath %.h $(sort $(dir $(C_HEADERS)))
|
||||
|
||||
@@ -53,8 +60,24 @@ $(BUILD_DIR)/$(TARGET).so: $(OBJECTS)
|
||||
@echo -e '\033[1;32mELF ('$(ARCH)')\t'$(OBJECTS)'\n\t\t\t->\t'$@'\033[0m'
|
||||
@$(CC) $(LFLAGS) $(OBJECTS) -o $(BUILD_DIR)/$(TARGET).so
|
||||
|
||||
manifest: $(MANIFEST_TARGETS)
|
||||
@for elf in $(MANIFEST_TARGETS); do \
|
||||
echo -e "\033[1;32mRUN\t$$elf\033[0m"; \
|
||||
$$elf $(MANIFEST_BUILD_DIR) || { echo -e "\033[0;31merror running $$elf\033[0m"; exit 1; }; \
|
||||
done
|
||||
|
||||
|
||||
|
||||
$(MANIFEST_BUILD_DIR)/%.elf: $(MANIFEST_SRC_DIR)/%.c Makefile | $(MANIFEST_BUILD_DIR)
|
||||
@echo -e '\033[1;32mELF\t'$(OBJECTS)'\n\t\t\t->\t'$@'\033[0m'
|
||||
@$(CC) $(MANIFEST_LFLAGS) $< $(LDLIBS) -I inc -o $@
|
||||
|
||||
$(BUILD_DIR):
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
|
||||
$(MANIFEST_BUILD_DIR):
|
||||
@mkdir -p $(MANIFEST_BUILD_DIR)
|
||||
|
||||
BuildDir:
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user