include Makefile.inc

SUBDIRS = 
HEADERS =
SOURCES = tnl-make-example.cpp
CUDA_SOURCES = tnl-make-example-cuda.cu
TARGETS = tnl-make-example 
CUDA_TARGETS = tnl-make-example-cuda

FILES = Makefile \
        Makefile.inc \
        $(CUDA_SOURCES) \
        $(SOURCES) \
        $(HEADERS)

SUBDIRSCLEAN=$(addsuffix clean,$(SUBDIRS))

all: bin subdirs $(TARGETS) $(CUDA_TARGETS)

.PHONY:	subdirs $(SUBDIRS)
subdirs:    $(SUBDIRS)
$(SUBDIRS):
	$(MAKE) -C $@	

bin:
	mkdir -p bin

install: all
	mkdir -p $(INSTALL_DIR)/bin
	cp bin/* $(INSTALL_DIR)/bin

.PHONY:	clean
clean:	$(SUBDIRSCLEAN) clean_curdir

clean_curdir:
	rm -f *.o
	
%clean:	%
	$(MAKE) -C $< clean

dist: clean
	tar zcvf $(PROJECT_NAME)-src.tgz $(SUBDIRS) $(FILES)

$(TARGETS): % : %.o
	$(CXX) $(LDFLAGS) -o $@ $< $(LDLIBS)

$(CUDA_TARGETS): % : %.cu.o
	$(CUDA_CXX) $(CUDA_LDFLAGS) -o $@ $< $(CUDA_LDLIBS)

$(SOURCES:%.cpp=%.o): %.o: %.cpp
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

$(CUDA_SOURCES:%.cu=%.cu.o): %.cu.o : %.cu
	$(CUDA_CXX) $(CUDA_CPPFLAGS) $(CUDA_CXXFLAGS) -c -o $@ $<