diff --git a/Makefile b/Makefile
index 662ced7..7ad4161 100644
--- a/Makefile
+++ b/Makefile
@@ -17,35 +17,46 @@ endif
 ifeq ($(MEMCHECK), 1)
 CFLAGS+= -DMEMCHECK
 endif
+CFLAGS+= -pthread
 LDFLAGS=
 
 BASE_SOURCES=utils.c ptest_list.c
-SOURCES=main.c $(BASE_SOURCES)
+BASE_OBJECTS=$(BASE_SOURCES:.c=.o)
+SOURCES=main.c
 OBJECTS=$(SOURCES:.c=.o)
 EXECUTABLE=ptest-runner
 
-TEST_SOURCES=tests/main.c tests/ptest_list.c tests/utils.c $(BASE_SOURCES)
+PKGCONFIG_BIN:=pkg-config
+CHECK_LIB:=check
+TEST_SOURCES=tests/main.c tests/ptest_list.c tests/utils.c
 TEST_OBJECTS=$(TEST_SOURCES:.c=.o)
 TEST_EXECUTABLE=ptest-runner-test
-TEST_CFLAGS=$(shell pkg-config --cflags check)
-TEST_LDFLAGS=$(shell pkg-config --libs check)
+TEST_CFLAGS=$(shell $(PKGCONFIG_BIN) --cflags $(CHECK_LIB) 2>/dev/null)
+TEST_LDFLAGS=$(shell $(PKGCONFIG_BIN) --libs $(CHECK_LIB) 2>/dev/null)
 
 TEST_DATA=$(shell echo `pwd`/tests/data)
 
-all: $(SOURCES) $(EXECUTABLE)
-
-$(EXECUTABLE): $(OBJECTS)
-	$(CC) $(LDFLAGS) $(OBJECTS) -pthread -lutil -o $@
-
-tests: $(TEST_SOURCES) $(TEST_EXECUTABLE)
-
-$(TEST_EXECUTABLE): $(TEST_OBJECTS)
-	$(CC) $(LDFLAGS) $(TEST_OBJECTS) -o $@ $(TEST_CFLAGS) $(TEST_LDFLAGS)
+all: $(EXECUTABLE)
 
 check: $(TEST_EXECUTABLE)
-	PATH=.:$(PATH) ./$(TEST_EXECUTABLE) -d $(TEST_DATA)
+	PATH=".:$(PATH)" $(TEST_EXECUTABLE) -d $(TEST_DATA)
 
 clean:
-	rm -rf $(EXECUTABLE) $(OBJECTS) $(TEST_EXECUTABLE) $(TEST_OBJECTS)
+	rm -rf $(BASE_OBJECTS) $(EXECUTABLE) $(OBJECTS) $(TEST_EXECUTABLE) $(TEST_OBJECTS)
+
+$(EXECUTABLE): $(BASE_OBJECTS) $(OBJECTS)
+	$(CC) $(LDFLAGS) $^ -o $@
+
+$(TEST_EXECUTABLE): $(BASE_OBJECTS) $(TEST_OBJECTS)
+ifeq ($(shell command -v $(PKGCONFIG_BIN)),)
+	$(error Please install `$(PKGCONFIG_BIN)`, use to get compilation flags.)
+endif
+ifeq ($(TEST_LDFLAGS),)
+	$(error Please install `$(CHECK_LIB)`, can't get LDFLAGS via pkg-config.)
+endif
+ifeq ($(TEST_CFLAGS),)
+	$(error Please install `$(CHECK_LIB)`, can't get CFLAGS via pkg-config.)
+endif
+	$(CC) $(TEST_CFLAGS) $^ -o $@ $(LDFLAGS) $(TEST_LDFLAGS)
 
-.PHONY: clean tests
+.PHONY: all check clean
