From 89ba57e18d8a1135af31610bbbfeb6a80d4f5f83 Mon Sep 17 00:00:00 2001 From: John Schneiderman Date: Wed, 7 Aug 2024 19:43:27 +0200 Subject: [PATCH] Adds disclean and prep targets for building. --- make/makefile | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/make/makefile b/make/makefile index 6a75329..4853f51 100644 --- a/make/makefile +++ b/make/makefile @@ -6,8 +6,8 @@ srcdir := $(if $(srcdir),$(srcdir),$(project_dir)/build) CXX = c++ CPPFLAGS = -g -O2 -std=c++11 -Wno-switch SED = /usr/bin/sed +REMOVE_FORCE_ALL = $(RM) --recursive --dir - $(shell mkdir -p $(project_dir)/bin) ifdef WINDIR linklibs = -lpthread @@ -24,21 +24,29 @@ else #linklibs = -lversion -lpthread endif endif - + + +all: --prep-build-dir compiler + + %.o: $(project_dir)/oscar64/%.cpp @echo "Compiling compiler file" $@ "..." @$(CXX) -c $(CPPFLAGS) $< -o $(srcdir)/$@ + %.d: $(project_dir)/oscar64/%.cpp @echo "Transforming file" $@ "..." - @set -e; $(RM) $(srcdir)/$@; \ + @set -e; \ + $(RM) $(srcdir)/$@; \ $(CC) -MM $(CPPFLAGS) $< > $(srcdir)/$@.$$$$; \ $(SED) 's,\($*\)\.o[ :]*,\1.o $(srcdir)/$@ : ,g' < $(srcdir)/$@.$$$$ > $(srcdir)/$@; \ $(RM) $(srcdir)/$@.$$$$ -$(project_dir)/bin/oscar64 : $(objects) - @echo "Linking compiler" $@ "..." - @$(CXX) $(CPPFLAGS) $(objects) $(linklibs) -o $(project_dir)/bin/oscar64 + +compiler: $(objects) + @echo "Linking compiler..." + $(CXX) $(CPPFLAGS) $(objects) $(linklibs) -o $(project_dir)/bin/oscar64 + .PHONY : clean clean : @@ -46,10 +54,22 @@ clean : @$(RM) $(srcdir)/*.d @$(RM) $(project_dir)/bin/oscar64 + +.PHONY : distclean +distclean : + @$(REMOVE_FORCE_ALL) $(srcdir) + @$(REMOVE_FORCE_ALL) $(project_dir)/bin + + ifeq ($(UNAME_S), Darwin) else -include $(objects:.o=.d) +include $($(srcdir)/objects:.o=.d) endif + + +--prep-build-dir: + @if [[ ! -d $(srcdir) ]]; then mkdir --parents $(srcdir); fi + @if [[ ! -d $(project_dir)/bin ]]; then mkdir --parents $(project_dir)/bin; fi