Skip to content
Snippets Groups Projects
Commit b3f771f2 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

merge makefiles and subdir parts

parent 92c324b2
No related branches found
No related tags found
No related merge requests found
......@@ -20,7 +20,39 @@ lib/$(LIBRARY): obj/
 
obj/makefile:
mkdir -p $(dir $@)
cp objMakefile $@
echo "SHELL:=/bin/bash" >> $@
echo "SRCDIR:=" >> $@
echo "DEPTH:=" >> $@
echo "" >> $@
echo "CXXFLAGS:= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -fPIC -I/usr/include/libxml2/" >> $@
echo "" >> $@
echo "SOURCES:= \$$(shell find ../\$$(DEPTH)src/\$$(SRCDIR) -maxdepth 1 -type f -name \"*.cpp\")" >> $@
echo "DEPENDENCIES:= \$$(patsubst ../\$$(DEPTH)src/\$$(SRCDIR)%.cpp, ../\$$(DEPTH)obj/\$$(SRCDIR)%.d, \$$(SOURCES))" >> $@
echo "OBJECTS:= \$$(patsubst %.d, %.o, \$$(DEPENDENCIES))" >> $@
echo "SOURCES_DIRS:= \$$(shell find ../\$$(DEPTH)src/\$$(SRCDIR) -maxdepth 1 -mindepth 1 -type d)" >> $@
echo "OBJECTS_DIRS:= \$$(patsubst ../\$$(DEPTH)src/\$$(SRCDIR)%, %/, \$$(SOURCES_DIRS))" >> $@
echo "OBJECTS_DIRS_MAKEFILES:= \$$(patsubst %, %makefile, \$$(OBJECTS_DIRS))" >> $@
echo "" >> $@
echo ".PHONY: all" >> $@
echo ".PRECIOUS: \$$(DEPENDECIES) \$$(OBJECTS_DIRS_MAKEFILES)" >> $@
echo "" >> $@
echo "all: \$$(OBJECTS_DIRS) \$$(OBJECTS)" >> $@
echo "" >> $@
echo "%.d:" >> $@
echo " @echo \"\$$(shell sha1sum <<< \"\$$@\" | sed \"s/ -//g\") = \\$$\$$(shell \\$$\$$(CXX) -MM \\$$\$$(CXXFLAGS) \$$(patsubst ../\$$(DEPTH)obj/\$$(SRCDIR)%.d,../\$$(DEPTH)src/\$$(SRCDIR)%.cpp, \$$@) | sed \\\"s/.*://g;s/\\\\\\\\\\\\\\\\//g\\\")\" >> \$$@" >> $@
echo " @echo \"\$$(patsubst %.d,%.o, \$$@): \\$$\$$(\$$(shell sha1sum <<< \"\$$@\" | sed \"s/ -//g\"))\" >> \$$@" >> $@
echo " @echo \" \\$$\$$(CXX) \\$$\$$(CXXFLAGS) \\$$\$$< -o \$$(patsubst %.d,%.o, \$$@)\" >> \$$@" >> $@
echo "" >> $@
echo "%/makefile:" >> $@
echo " mkdir -p \$$(dir \$$@)" >> $@
echo " cp makefile \$$@" >> $@
echo "" >> $@
echo "%/: FORCE | %/makefile" >> $@
echo " \$$(MAKE) -C \$$@ SRCDIR=\$$(SRCDIR)\$$(notdir \$$(patsubst %/, %, \$$@))/ DEPTH=\$$(DEPTH)../" >> $@
echo "" >> $@
echo "FORCE:" >> $@
echo "" >> $@
echo "-include \$$(DEPENDENCIES)" >> $@
 
obj/: FORCE | obj/makefile
$(MAKE) -C $@
......@@ -37,7 +69,39 @@ test-bin/$(TESTBIN): test-obj/ lib/$(LIBRARY)
 
test-obj/makefile:
mkdir -p $(dir $@)
cp testMakefile $@
echo "SHELL:=/bin/bash" >> $@
echo "SRCDIR:=" >> $@
echo "DEPTH:=" >> $@
echo "" >> $@
echo "CXXFLAGS:= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -I../\$$(DEPTH)src/ -I/usr/include/libxml2/" >> $@
echo "" >> $@
echo "SOURCES:= \$$(shell find ../\$$(DEPTH)test-src/\$$(SRCDIR) -maxdepth 1 -type f -name \"*.cpp\")" >> $@
echo "DEPENDENCIES:= \$$(patsubst ../\$$(DEPTH)test-src/\$$(SRCDIR)%.cpp, ../\$$(DEPTH)test-obj/\$$(SRCDIR)%.d, \$$(SOURCES))" >> $@
echo "OBJECTS:= \$$(patsubst %.d, %.o, \$$(DEPENDENCIES))" >> $@
echo "SOURCES_DIRS:= \$$(shell find ../\$$(DEPTH)test-src/\$$(SRCDIR) -maxdepth 1 -mindepth 1 -type d)" >> $@
echo "OBJECTS_DIRS:= \$$(patsubst ../\$$(DEPTH)test-src/\$$(SRCDIR)%, %/, \$$(SOURCES_DIRS))" >> $@
echo "OBJECTS_DIRS_MAKEFILES:= \$$(patsubst %, %makefile, \$$(OBJECTS_DIRS))" >> $@
echo "" >> $@
echo ".PHONY: all" >> $@
echo ".PRECIOUS: \$$(DEPENDECIES) \$$(OBJECTS_DIRS_MAKEFILES)" >> $@
echo "" >> $@
echo "all: \$$(OBJECTS_DIRS) \$$(OBJECTS)" >> $@
echo "" >> $@
echo "%.d:" >> $@
echo " @echo \"\$$(shell sha1sum <<< \"\$$@\" | sed \"s/ -//g\") = \\$$\$$(shell \\$$\$$(CXX) -MM \\$$\$$(CXXFLAGS) \$$(patsubst ../\$$(DEPTH)test-obj/\$$(SRCDIR)%.d,../\$$(DEPTH)test-src/\$$(SRCDIR)%.cpp, \$$@) | sed \\\"s/.*://g;s/\\\\\\\\\\\\\\\\//g\\\")\" >> \$$@" >> $@
echo " @echo \"\$$(patsubst %.d,%.o, \$$@): \\$$\$$(\$$(shell sha1sum <<< \"\$$@\" | sed \"s/ -//g\"))\" >> \$$@" >> $@
echo " @echo \" \\$$\$$(CXX) \\$$\$$(CXXFLAGS) \\$$\$$< -o \$$(patsubst %.d,%.o, \$$@)\" >> \$$@" >> $@
echo "" >> $@
echo "%/makefile:" >> $@
echo " mkdir -p \$$(dir \$$@)" >> $@
echo " cp makefile \$$@" >> $@
echo "" >> $@
echo "%/: FORCE | %/makefile" >> $@
echo " \$$(MAKE) -C \$$@ SRCDIR=\$$(SRCDIR)\$$(notdir \$$(patsubst %/, %, \$$@))/ DEPTH=\$$(DEPTH)../" >> $@
echo "" >> $@
echo "FORCE:" >> $@
echo "" >> $@
echo "-include \$$(DEPENDENCIES)" >> $@
 
test-obj/: FORCE | test-obj/makefile
$(MAKE) -C $@
......
SHELL:=/bin/bash
SRCDIR:=
DEPTH:=
CXXFLAGS:= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -fPIC -I/usr/include/libxml2/
SOURCES:= $(shell find ../$(DEPTH)src/$(SRCDIR) -maxdepth 1 -type f -name "*.cpp")
DEPENDENCIES:= $(patsubst ../$(DEPTH)src/$(SRCDIR)%.cpp, ../$(DEPTH)obj/$(SRCDIR)%.d, $(SOURCES))
OBJECTS:= $(patsubst %.d, %.o, $(DEPENDENCIES))
SOURCES_DIRS:= $(shell find ../$(DEPTH)src/$(SRCDIR) -maxdepth 1 -mindepth 1 -type d)
OBJECTS_DIRS:= $(patsubst ../$(DEPTH)src/$(SRCDIR)%, %/, $(SOURCES_DIRS))
OBJECTS_DIRS_MAKEFILES:= $(patsubst %, %makefile, $(OBJECTS_DIRS))
.PHONY: all
.PRECIOUS: $(DEPENDECIES) $(OBJECTS_DIRS_MAKEFILES)
all: $(OBJECTS_DIRS) $(OBJECTS)
%.d:
@echo "$(shell sha1sum <<< "$@" | sed "s/ -//g") = \$$(shell \$$(CXX) -MM \$$(CXXFLAGS) $(patsubst ../$(DEPTH)obj/$(SRCDIR)%.d,../$(DEPTH)src/$(SRCDIR)%.cpp, $@) | sed \"s/.*://g;s/\\\\\\\\//g\")" >> $@
@echo "$(patsubst %.d,%.o, $@): \$$($(shell sha1sum <<< "$@" | sed "s/ -//g"))" >> $@
@echo " \$$(CXX) \$$(CXXFLAGS) \$$< -o $(patsubst %.d,%.o, $@)" >> $@
%/makefile:
mkdir -p $(dir $@)
cp makefile $@
%/: FORCE | %/makefile
$(MAKE) -C $@ SRCDIR=$(SRCDIR)$(notdir $(patsubst %/, %, $@))/ DEPTH=$(DEPTH)../
FORCE:
-include $(DEPENDENCIES)
SHELL:=/bin/bash
SRCDIR:=
DEPTH:=
CXXFLAGS:= -std=c++11 -Og -g -c -Wall -pedantic -Wextra -I../$(DEPTH)src/ -I/usr/include/libxml2/
SOURCES:= $(shell find ../$(DEPTH)test-src/$(SRCDIR) -maxdepth 1 -type f -name "*.cpp")
DEPENDENCIES:= $(patsubst ../$(DEPTH)test-src/$(SRCDIR)%.cpp, ../$(DEPTH)test-obj/$(SRCDIR)%.d, $(SOURCES))
OBJECTS:= $(patsubst %.d, %.o, $(DEPENDENCIES))
SOURCES_DIRS:= $(shell find ../$(DEPTH)test-src/$(SRCDIR) -maxdepth 1 -mindepth 1 -type d)
OBJECTS_DIRS:= $(patsubst ../$(DEPTH)test-src/$(SRCDIR)%, %/, $(SOURCES_DIRS))
OBJECTS_DIRS_MAKEFILES:= $(patsubst %, %makefile, $(OBJECTS_DIRS))
.PHONY: all
.PRECIOUS: $(DEPENDECIES) $(OBJECTS_DIRS_MAKEFILES)
all: $(OBJECTS_DIRS) $(OBJECTS)
%.d: $(OBJECT_DIRS)
@echo "$(shell sha1sum <<< "$@" | sed "s/ -//g") = \$$(shell \$$(CXX) -MM \$$(CXXFLAGS) $(patsubst ../$(DEPTH)test-obj/$(SRCDIR)%.d,../$(DEPTH)test-src/$(SRCDIR)%.cpp, $@) | sed \"s/.*://g;s/\\\\\\\\//g\")" >> $@
@echo "$(patsubst %.d,%.o, $@): \$$($(shell sha1sum <<< "$@" | sed "s/ -//g"))" >> $@
@echo " \$$(CXX) \$$(CXXFLAGS) \$$< -o $(patsubst %.d,%.o, $@)" >> $@
%/makefile:
mkdir -p $(dir $@)
cp makefile $@
%/: FORCE | %/makefile
$(MAKE) -C $@ SRCDIR=$(SRCDIR)$(notdir $(patsubst %/, %, $@))/ DEPTH=$(DEPTH)../
FORCE:
-include $(DEPENDENCIES)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment