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

make follow source dependencies

parent 033aaa08
No related branches found
No related tags found
No related merge requests found
CC=g++
LIBRARY=libalib2.so
TESTBIN=alib2test
CCFLAGS= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -fPIC -I/usr/include/libxml2/
LDFLAGS= -shared -lxml2
TEST_CCFLAGS= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -I../alib2/src -I/usr/include/libxml2/
TEST_LDFLAGS= -L../alib2/lib -lxml2 -lalib2 -lcppunit -Wl,-rpath,.
SHELL:=/bin/bash
LIBRARY:=libalib2.so
TESTBIN:=alib2test
CXXFLAGS:= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -fPIC -I/usr/include/libxml2/
LDFLAGS:= -shared -lxml2
TEST_CXXFLAGS:= -std=c++11 -O2 -g -c -Wall -pedantic -Wextra -I../alib2/src -I/usr/include/libxml2/
TEST_LDFLAGS:= -L../alib2/lib -lxml2 -lalib2 -lcppunit -Wl,-rpath,.
 
SOURCES=$(shell find src/ -name *cpp)
OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
SOURCES:=$(shell find src/ -name *cpp)
OBJECTS:=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
DEPENDENCIES:=$(patsubst src/%.cpp, obj/%.d, $(SOURCES))
 
TEST_SOURCES=$(shell find test-src/ -name *cpp)
TEST_OBJECTS=$(patsubst test-src/%.cpp, test-obj/%.o, $(TEST_SOURCES))
TEST_SOURCES:=$(shell find test-src/ -name *cpp)
TEST_OBJECTS:=$(patsubst test-src/%.cpp, test-obj/%.o, $(TEST_SOURCES))
TEST_DEPENDENCIES:=$(patsubst test-src/%.cpp, test-obj/%.d, $(TEST_SOURCES))
 
.PHONY: all
.PHONY: test
.PHONY: all build test clean
.PRECIOUS: $(DEPENDENCIES) $(TEST_DEPENDENCIES)
 
all: build test
 
lib/$(LIBRARY): $(OBJECTS)
mkdir -p lib
$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
mkdir -p lib;
$(CXX) $(OBJECTS) -o $@ $(LDFLAGS);
 
obj/%.o: src/%.cpp
obj/%.d:
mkdir -p $(dir $@)
$(CC) $(CCFLAGS) $< -o $@
echo "$(shell sha1sum <<< "$@" | sed "s/ -//g") = \$$(shell \$$(CXX) -MM \$$(CXXFLAGS) $(patsubst obj/%.d,src/%.cpp, $@) | sed \"s/.*://g\" | sed \"s/\\\\\\\\//g\")" >> $@
echo "$(patsubst %.d,%.o, $@): \$$($(shell sha1sum <<< "$@" | sed "s/ -//g"))" >> $@
echo " \$$(CXX) \$$(CXXFLAGS) \$$< -o $(patsubst %.d,%.o, $@)" >> $@
 
build: lib/$(LIBRARY)
 
test-bin/$(TESTBIN): $(TEST_OBJECTS) lib/$(LIBRARY)
mkdir -p test-bin
$(CC) $(TEST_OBJECTS) -o $@ $(TEST_LDFLAGS)
mkdir -p test-bin; \
$(CXX) $(TEST_OBJECTS) -o $@ $(TEST_LDFLAGS); \
 
test-obj/%.o: test-src/%.cpp
test-obj/%.d:
mkdir -p $(dir $@)
$(CC) $(TEST_CCFLAGS) $< -o $@
echo "$(shell sha1sum <<< "$@" | sed "s/ -//g") = \$$(shell \$$(CXX) -MM \$$(TEST_CXXFLAGS) $(patsubst test-obj/%.d,test-src/%.cpp, $@) | sed \"s/.*://g\" | sed \"s/\\\\\\\\//g\")" >> $@
echo "$(patsubst %.d,%.o, $@): \$$($(shell sha1sum <<< "$@" | sed "s/ -//g"))" >> $@
echo " \$$(CXX) \$$(TEST_CXXFLAGS) \$$< -o $(patsubst %.d,%.o, $@)" >> $@
 
test: test-bin/$(TESTBIN)
LD_LIBRARY_PATH=lib test-bin/$(TESTBIN)
 
clean:
$(RM) -r *.o *.d lib obj test-bin test-obj
-include $(DEPENDENCIES)
-include $(TEST_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