Some enhancements for a conditional makefile

This commit is contained in:
Adrien Bourmault 2019-06-13 17:51:49 +02:00
parent 037f0b34c0
commit df77629e85
No known key found for this signature in database
GPG Key ID: A5DDB5F18A6654E6
3 changed files with 37 additions and 14 deletions

2
.gitignore vendored
View File

@ -2,6 +2,7 @@
*.out
*.bin
*.o
*.d
arch_i.h
*.dis
instrs.lst
@ -9,4 +10,3 @@ instrs.lst
stdout.txt
stderr.txt
stdin.txt

View File

@ -5,7 +5,7 @@ all: kas
kpc:
@rm -f vm/a.out
@cd vm && make --no-print-directory
@cd vm && make --no-print-directory verbose=no
kas: kpc as/k-as.py as/regs.lst
@cp vm/in/instrs.lst as

View File

@ -1,36 +1,59 @@
# The OS/K Team licenses this file to you under the MIT license.
# See the LICENSE file in the project root for more information.
all: k.exe
.PHONY: clean
.INTERMEDIATE: %.o
verbose ?= yes
OBJDIR = ob
FLAGS=-O2 -g -Wall -fno-builtin-log -I.
dv_src = $(shell ls dv/*.c)
in_src = $(shell ls in/*.c)
pc_src = $(shell ls pc/*.c)
#obj = pc/disd.o
obj = $(patsubst %.c,%.o,$(dv_src))
obj += $(patsubst %.c,%.o,$(in_src))
obj += $(patsubst %.c,%.o,$(pc_src))
obj = $(patsubst %.c,$(OBJDIR)/%.o,$(dv_src))
obj += $(patsubst %.c,$(OBJDIR)/%.o,$(in_src))
obj += $(patsubst %.c,$(OBJDIR)/%.o,$(pc_src))
FLAGS=-O2 -g -Wall -fno-builtin-log -I.
dep = $(patsubst %.c,$(OBJDIR)/%.d,$(dv_src))
dep += $(patsubst %.c,$(OBJDIR)/%.d,$(in_src))
dep += $(patsubst %.c,$(OBJDIR)/%.d,$(pc_src))
# Color codes
CL='\033[0;32m'
CL2='\033[1;36m'
CL3='\033[0m'
NC='\033[1;37m'
all: k.exe
#pc/disd.o: in/i_arch.h */*.h pc/decd.c
# @cc $(FLAGS) -D_NEED_DISASM -c pc/decd.c -o $@
%.o: %.c in/i_arch.h */*.h $(src)
-include $(dep)
$(OBJDIR)/%.o: %.c
@mkdir -p $(shell dirname $@)
@cc $(FLAGS) -c $< -o $@
@if [ $(verbose) = "yes" ]; then \
echo ${CL2}[$@] ${CL}dependencies generated.${CL3};\
fi
$(OBJDIR)/%.d: %.c
@mkdir -p $(shell dirname $@)
@cc -I. -MM -MT $(@:%.d=%.o) -MF $@ $<
@if [ $(verbose) = "yes" ]; then \
echo ${CL2}[$@] ${CL}dependencies generated.${CL3};\
fi
in/i_arch.h: in/INSTRS in/arch_i.py
@cd in && python3 arch_i.py
clean:
@rm -f */*.o in/arch_i.h
@rm -f $(OBJDIR)/*/*.o in/arch_i.h
@rm -f $(OBJDIR)/*/*.d
k.exe: in/i_arch.h $(obj)
@gcc -O2 -Wall $(obj) -o k.exe
@rm in/arch_i.h
@rm -f */*.o
@echo ${CL2}[$@] ${CL}made successfully.${CL3}