Blame c++/contourgl/Makefile

Ivan Mahonin 383633
# config
Ivan Mahonin 383633
Ivan Mahonin 383633
# just comment following line to disable CUDA
Ivan Mahonin 383633
CUDA = cuda-9.2
Ivan Mahonin 383633
CUDA_PATH := /opt/$(CUDA)
Ivan Mahonin 383633
CUDA_BIN := $(CUDA_PATH)/bin
Ivan Mahonin 383633
CUDA_PKGCONFIG := $(CUDA_PATH)/pkgconfig
Ivan Mahonin 383633
Ivan Mahonin c76ce8
DEPLIBS = gl x11 OpenCL
Ivan Mahonin f2b8c4
Ivan Mahonin 383633
Ivan Mahonin 383633
# compute build options
Ivan Mahonin 383633
Ivan Mahonin 383633
CXXFLAGS := $(CXXFLAGS) -O3 -Wall -fmessage-length=0 -DGL_GLEXT_PROTOTYPES
Ivan Mahonin 383633
CXXFLAGS := $(CXXFLAGS) $(shell pkg-config --cflags $(DEPLIBS))
Ivan Mahonin 383633
LIBS := $(LIBS) $(shell pkg-config --libs $(DEPLIBS))
Ivan Mahonin 383633
Ivan Mahonin 383633
ifdef CUDA
Ivan Mahonin 383633
	CXXFLAGS := $(CXXFLAGS) -DCUDA $(shell PKG_CONFIG_PATH=$(CUDA_PKGCONFIG) pkg-config --cflags $(CUDA))
Ivan Mahonin 383633
	LIBS := $(LIBS) $(shell PKG_CONFIG_PATH=$(CUDA_PKGCONFIG) pkg-config --libs $(CUDA))
Ivan Mahonin 383633
endif
Ivan Mahonin 383633
Ivan Mahonin 383633
Ivan Mahonin 383633
# files lists
Ivan Mahonin 383633
Ivan Mahonin 383633
TARGET = contourgl
Ivan Mahonin 49e693
Ivan Mahonin 49e693
SOURCES = \
Ivan Mahonin 49e693
	contourgl.cpp \
Ivan Mahonin 49e693
	clcontext.cpp \
Ivan Mahonin 572d9c
	clrender.cpp \
Ivan Mahonin 49e693
	contour.cpp \
Ivan Mahonin 49e693
	contourbuilder.cpp \
Ivan Mahonin 49e693
	environment.cpp \
Ivan Mahonin 49e693
	geometry.cpp \
Ivan Mahonin 49e693
	glcontext.cpp \
Ivan Mahonin 49e693
	measure.cpp \
Ivan Mahonin 49e693
	polyspan.cpp \
Ivan Mahonin 49e693
	shaders.cpp \
Ivan Mahonin 572d9c
	swrender.cpp \
Ivan Mahonin 49e693
	test.cpp \
Ivan Mahonin 49e693
	triangulator.cpp \
Ivan Mahonin 49e693
	utils.cpp
Ivan Mahonin 49e693
Ivan Mahonin 383633
ifdef CUDA
Ivan Mahonin 383633
	SOURCES += cudacontext.cpp
Ivan Mahonin 383633
	CUDA_SOURCES = \
Ivan Mahonin 383633
		cuda/contour.cu \
Ivan Mahonin 383633
		cuda/hello.cu
Ivan Mahonin 383633
endif
Ivan Mahonin f2b8c4
Ivan Mahonin 383633
Ivan Mahonin 383633
# files lists postprocessing 
Ivan Mahonin 383633
Ivan Mahonin 383633
OBJS = $(SOURCES:.cpp=.o)
Ivan Mahonin 383633
DEPS = $(SOURCES:.cpp=.d)
Ivan Mahonin 383633
PTXS = $(CUDA_SOURCES:.cu=.ptx)
Ivan Mahonin 383633
Ivan Mahonin 383633
# internal targets
Ivan Mahonin 383633
Ivan Mahonin 383633
%.ptx: %.cu
Ivan Mahonin 383633
	$(CUDA_PATH)/bin/nvcc -ptx $< -o $@
Ivan Mahonin 383633
Ivan Mahonin 383633
# rule for make *.d files with include (.h) dependencies
Ivan Mahonin 383633
%.d: %.cpp
Ivan Mahonin 383633
	@set -e; rm -f $@; \
Ivan Mahonin 383633
	 $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
Ivan Mahonin 383633
	 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
Ivan Mahonin 383633
	 rm -f $@.$$$$
Ivan Mahonin 383633
Ivan Mahonin 383633
$(TARGET): $(PTXS) $(DEPS) $(OBJS)
Ivan Mahonin f2b8c4
	$(CXX) -o $(TARGET) $(OBJS) $(LIBS)
Ivan Mahonin f2b8c4
Ivan Mahonin 383633
# include rules with include (.h) dependencies
Ivan Mahonin 383633
-include $(DEPS)
Ivan Mahonin 383633
Ivan Mahonin 383633
# actual targets
Ivan Mahonin 383633
Ivan Mahonin 383633
# declare that 'all', 'cuda' and 'clean' are cannot be a filenames 
Ivan Mahonin 383633
.PHONY: all clean
Ivan Mahonin 383633
Ivan Mahonin 383633
all: $(TARGET)
Ivan Mahonin f2b8c4
Ivan Mahonin f2b8c4
clean:
Ivan Mahonin 383633
	rm -f $(PTXS) $(OBJS) $(DEPS) $(TARGET)