this complex makefile