first try
[jacinto-ai/caffe-jacinto.git] / Makefile
1 #
2 # The following defines a variable named "NAME" with a value of "myprogram". By convention,
3 # a lowercase prefix (in this case "program") and an uppercased suffix (in this case "NAME"), separated
4 # by an underscore is used to name attributes for a common element. Think of this like
5 # using program.NAME, program.C_SRCS, etc. There are no structs in Make, so we use this convention
6 # to keep track of attributes that all belong to the same target or program.  
7 #
8 NAME := caffeine.so
9 C_SRCS := $(wildcard src/caffeine/*.c)
10 CXX_SRCS := $(wildcard src/caffeine/*.cpp)
11 C_OBJS := ${C_SRCS:.c=.o}
12 CXX_OBJS := ${CXX_SRCS:.cpp=.o}
13 OBJS := $(C_OBJS) $(CXX_OBJS)
15 CUDA_DIR = /usr/local/cuda
16 CUDA_INCLUDE_DIR = $(CUDA_DIR)/include
17 CUDA_LIB_DIR = $(CUDA_DIR)/lib
19 INCLUDE_DIRS := $(CUDA_INCLUDE_DIR) src/
20 LIBRARY_DIRS := $(CUDA_LIB_DIR)
21 LIBRARIES := cudart cublas
22 WARNINGS := -Wall
24 CPPFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
25 LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir))
26 LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library)) -shared
28 LINK = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(WARNINGS)
30 .PHONY: all clean distclean
32 all: $(NAME)
34 $(NAME): $(OBJS)
35         $(LINK) $(OBJS) -o $(NAME)
37 clean:
38         @- $(RM) $(NAME)
39         @- $(RM) $(OBJS)
41 distclean: clean