Skip to content

Instantly share code, notes, and snippets.

@jflopezfernandez
Last active March 21, 2019 21:32
Show Gist options
  • Save jflopezfernandez/cb7efc0f45a5ef87e778fd6414cf87e0 to your computer and use it in GitHub Desktop.
Save jflopezfernandez/cb7efc0f45a5ef87e778fd6414cf87e0 to your computer and use it in GitHub Desktop.
Makefile template
#==============================================================
#
#
#
# =============================================================
vpath %.cpp src
vpath %.hpp include
.SUFFIXES:
.SUFFIXES: .cpp .hpp
SHELL = /bin/sh
COMPILERWARN = -Wall -Werrors -Wcheck
OPTIMIZATIONS = -falias -fast -m64 -mtune=core-avx2 -fstrict-aliasing -funroll-loops
BUILDFLAGS = $(COMPILERWARN) $(OPTIMIZATIONS)
CC = icc
CXX = icpc
CFLAGS = -std=c11 $(BUILDFLAGS)
CXXFLAGS = -std=c++17 $(BUILDFLAGS)
SOURCES_DIR = src
INCLUDES_DIR = include
MKLHEADERS = -I $(INTELMKLINCLUDEDIR)
INTELINCLUDES = $(MKLHEADERS)
SRC_HEADERS = -I $(INCLUDES_DIR)
INCLUDEDIRS = $(SRC_HEADERS) $(INTELINCLUDES)
INTEL_MKL = -L $(INTELMKLLIBDIR) -lmkl
INTEL_LIBS = $(IPPLIB) $(IPPCPLIB)
BOOSTOPTS = -lboost_program_options
BOOSTLIBS = $(BOOSTOPTS)
REQLIBS = $(INTEL_LIBS)
SRCS = SSearch.cpp
HDRS = $(patsubst %.cpp, %.hpp, $(SRCS))
OBJS = $(patsubst %.cpp, %.o, $(SRCS))
PROGRAM = ssearch
OUTPUT_OPTION = -o $@
TARGET_ARCH =
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDEDIRS) $(TARGET_ARCH) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDEDIRS) $(TARGET_ARCH) $(LDFLAGS)
COMPILE.cpp = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDEDIRS) $(TARGET_ARCH) -c
LINK.o = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDEDIRS) $(TARGET_ARCH) $(LDFLAGS)
all: $(PROGRAM)
$(PROGRAM): $(OBJS)
$(LINK.o) $(OUTPUT_OPTION) $^ $(REQLIBS)
%.o: %.cpp
$(COMPILE.cpp) $(OUTPUT_OPTION) $^
.PHONY: clean
clean:
$(RM) $(OBJS) $(PROGRAM)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment