summaryrefslogtreecommitdiff
path: root/common/common.mk
diff options
context:
space:
mode:
Diffstat (limited to 'common/common.mk')
-rw-r--r--common/common.mk379
1 files changed, 0 insertions, 379 deletions
diff --git a/common/common.mk b/common/common.mk
deleted file mode 100644
index 163f535..0000000
--- a/common/common.mk
+++ /dev/null
@@ -1,379 +0,0 @@
-################################################################################
-#
-# Copyright 1993-2006 NVIDIA Corporation. All rights reserved.
-#
-# NOTICE TO USER:
-#
-# This source code is subject to NVIDIA ownership rights under U.S. and
-# international Copyright laws.
-#
-# NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
-# CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
-# IMPLIED WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
-# IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
-# OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
-# OR PERFORMANCE OF THIS SOURCE CODE.
-#
-# U.S. Government End Users. This source code is a "commercial item" as
-# that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of
-# "commercial computer software" and "commercial computer software
-# documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995)
-# and is provided to the U.S. Government only as a commercial end item.
-# Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
-# 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
-# source code with only those rights set forth herein.
-#
-################################################################################
-#
-# Common build script
-#
-################################################################################
-
-.SUFFIXES : .cu .cu_dbg.o .c_dbg.o .cpp_dbg.o .cu_rel.o .c_rel.o .cpp_rel.o .cubin .ptx
-
-# Add new SM Versions here as devices with new Compute Capability are released
-SM_VERSIONS := sm_10 sm_11 sm_12 sm_13
-
-CUDA_INSTALL_PATH ?= /usr/local/cuda
-
-ifdef cuda-install
- CUDA_INSTALL_PATH := $(cuda-install)
-endif
-
-# detect OS
-OSUPPER = $(shell uname -s 2>/dev/null | tr [:lower:] [:upper:])
-OSLOWER = $(shell uname -s 2>/dev/null | tr [:upper:] [:lower:])
-# 'linux' is output for Linux system, 'darwin' for OS X
-DARWIN = $(strip $(findstring DARWIN, $(OSUPPER)))
-
-# detect if 32 bit or 64 bit system
-HP_64 = $(shell uname -m | grep 64)
-
-# Basic directory setup for SDK
-# (override directories only if they are not already defined)
-SRCDIR ?=
-ROOTDIR ?= $(NVIDIA_CUDA_SDK_LOCATION)/C/src
-ROOTBINDIR ?= $(shell pwd)/../bin
-BINDIR ?= $(ROOTBINDIR)/$(OSLOWER)
-ROOTOBJDIR ?= obj
-LIBDIR := $(ROOTDIR)/../lib
-COMMONDIR := $(ROOTDIR)/../common
-
-# Compilers
-ifeq "$(strip $(HP_64))" ""
- NVCC := $(CUDA_INSTALL_PATH)/bin/nvcc
-else
- NVCC := $(CUDA_INSTALL_PATH)/bin/nvcc
-endif
-
-CXX := g++
-CC := gcc
-LINK := g++ -fPIC
-ifdef NEWCPP
- CXX := $(NEWCPP)
-endif
-ifdef NEWCC
- CC := $(NEWCC)
-endif
-ifdef NEWLD
- LINK := $(NEWLD)
-endif
-
-# Includes
-INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include -I$(COMMONDIR)/inc $(INCFLAGEXTRA)
-
-# architecture flag for cubin build
-CUBIN_ARCH_FLAG :=
-
-# Warning flags
-CXXWARN_FLAGS := \
- -W -Wall \
- -Wimplicit \
- -Wswitch \
- -Wformat \
- -Wchar-subscripts \
- -Wparentheses \
- -Wmultichar \
- -Wtrigraphs \
- -Wpointer-arith \
- -Wcast-align \
- -Wreturn-type \
- -Wno-unused-function \
- $(SPACE)
-
-CWARN_FLAGS := $(CXXWARN_FLAGS) \
- -Wstrict-prototypes \
- -Wmissing-prototypes \
- -Wmissing-declarations \
- -Wnested-externs \
- -Wmain \
-
-# Compiler-specific flags
-NVCCFLAGS :=
-CXXFLAGS := $(CXXWARN_FLAGS)
-CFLAGS := $(CWARN_FLAGS)
-
-# Common flags
-COMMONFLAGS += $(INCLUDES) -DUNIX
-
-# Debug/release configuration
-ifeq ($(dbg),1)
- COMMONFLAGS += -g
- NVCCFLAGS += -D_DEBUG
- CXXFLAGS += -D_DEBUG
- CFLAGS += -D_DEBUG
- BINSUBDIR := debug
- LIBSUFFIX := D
-else
- COMMONFLAGS += -g -O2
- BINSUBDIR := release
- LIBSUFFIX :=
- NVCCFLAGS += --compiler-options -fno-strict-aliasing
- CXXFLAGS += -fno-strict-aliasing
- CFLAGS += -fno-strict-aliasing
-endif
-
-# append optional arch/SM version flags (such as -arch sm_11)
-#NVCCFLAGS += $(SMVERSIONFLAGS)
-
-# architecture flag for cubin build
-CUBIN_ARCH_FLAG :=
-
-# OpenGL is used or not (if it is used, then it is necessary to include GLEW)
-ifeq ($(USEGLLIB),1)
-
- ifneq ($(DARWIN),)
- OPENGLLIB := -L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL -lGLU $(COMMONDIR)/lib/$(OSLOWER)/libGLEW.a
- else
- OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu
-
- ifeq "$(strip $(HP_64))" ""
- OPENGLLIB += -lGLEW -L/usr/X11R6/lib
- else
- OPENGLLIB += -lGLEW_x86_64 -L/usr/X11R6/lib64
- endif
- endif
-
- CUBIN_ARCH_FLAG := -m64
-endif
-
-ifeq ($(USEGLUT),1)
- ifneq ($(DARWIN),)
- OPENGLLIB += -framework GLUT
- else
- OPENGLLIB += -lglut
- endif
-endif
-
-ifeq ($(USEPARAMGL),1)
- PARAMGLLIB := -lparamgl$(LIBSUFFIX)
-endif
-
-ifeq ($(USERENDERCHECKGL),1)
- RENDERCHECKGLLIB := -lrendercheckgl$(LIBSUFFIX)
-endif
-
-ifeq ($(USECUDPP), 1)
- ifeq "$(strip $(HP_64))" ""
- CUDPPLIB := -lcudpp
- else
- CUDPPLIB := -lcudpp64
- endif
-
- CUDPPLIB := $(CUDPPLIB)$(LIBSUFFIX)
-
- ifeq ($(emu), 1)
- CUDPPLIB := $(CUDPPLIB)_emu
- endif
-endif
-
-# Libs
-ifeq "$(strip $(HP_64))" ""
- LIB := $(LIBEXTRA) -L$(CUDA_INSTALL_PATH)/lib -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER)
-else
- LIB := $(LIBEXTRA) -L$(CUDA_INSTALL_PATH)/lib64 -L$(LIBDIR) -L$(COMMONDIR)/lib/$(OSLOWER)
-endif
-
-# If dynamically linking to CUDA and CUDART, we exclude the libraries from the LIB
-ifeq ($(USECUDADYNLIB),1)
- LIB += ${OPENGLLIB} $(PARAMGLLIB) $(RENDERCHECKGLLIB) $(CUDPPLIB) ${LIB} -ldl -rdynamic
-else
-# static linking, we will statically link against CUDA and CUDART
- ifeq ($(USEDRVAPI),1)
- LIB += -lcuda ${OPENGLLIB} $(PARAMGLLIB) $(RENDERCHECKGLLIB) $(CUDPPLIB) ${LIB}
- else
- LIB += -lcudart ${OPENGLLIB} $(PARAMGLLIB) $(RENDERCHECKGLLIB) $(CUDPPLIB) ${LIB}
- endif
-endif
-
-ifeq ($(USECUFFT),1)
- ifeq ($(emu),1)
- LIB += -lcufftemu
- else
- LIB += -lcufft
- endif
-endif
-
-ifeq ($(USECUBLAS),1)
- ifeq ($(emu),1)
- LIB += -lcublasemu
- else
- LIB += -lcublas
- endif
-endif
-
-# Lib/exe configuration
-ifneq ($(STATIC_LIB),)
- TARGETDIR := $(LIBDIR)
- TARGET := $(subst .a,$(LIBSUFFIX).a,$(LIBDIR)/$(STATIC_LIB))
- LINKLINE = ar rucv $(TARGET) $(OBJS)
-else
- ifneq ($(OMIT_CUTIL_LIB),1)
- LIB += -lcutil$(LIBSUFFIX)
- endif
- # Device emulation configuration
- ifeq ($(emu), 1)
- NVCCFLAGS += -deviceemu
- CUDACCFLAGS +=
- BINSUBDIR := emu$(BINSUBDIR)
- # consistency, makes developing easier
- CXXFLAGS += -D__DEVICE_EMULATION__
- CFLAGS += -D__DEVICE_EMULATION__
- endif
- TARGETDIR := $(BINDIR)/$(BINSUBDIR)
- TARGET := $(TARGETDIR)/$(EXECUTABLE)
- LINKLINE = $(LINK) -o $(TARGET) $(OBJS) $(LIB)
-endif
-
-# check if verbose
-verbose = 1
-ifeq ($(verbose), 1)
- VERBOSE :=
-else
- VERBOSE := @
-endif
-
-################################################################################
-# Check for input flags and set compiler flags appropriately
-################################################################################
-ifeq ($(fastmath), 1)
- NVCCFLAGS += -use_fast_math
-endif
-
-ifeq ($(keep), 1)
- NVCCFLAGS += -keep
- NVCC_KEEP_CLEAN := *.i* *.cubin *.cu.c *.cudafe* *.fatbin.c *.ptx
-endif
-
-ifdef maxregisters
- NVCCFLAGS += -maxrregcount $(maxregisters)
-endif
-
-# Add cudacc flags
-NVCCFLAGS += $(CUDACCFLAGS)
-
-# Add common flags
-NVCCFLAGS += $(COMMONFLAGS)
-CXXFLAGS += $(COMMONFLAGS)
-CFLAGS += $(COMMONFLAGS)
-
-ifeq ($(nvcc_warn_verbose),1)
- NVCCFLAGS += $(addprefix --compiler-options ,$(CXXWARN_FLAGS))
- NVCCFLAGS += --compiler-options -fno-strict-aliasing
-endif
-
-################################################################################
-# Set up object files
-################################################################################
-OBJDIR := $(ROOTOBJDIR)/$(BINSUBDIR)
-OBJS += $(patsubst %.cpp,$(OBJDIR)/%.cpp.o,$(notdir $(CCFILES)))
-OBJS += $(patsubst %.c,$(OBJDIR)/%.c.o,$(notdir $(CFILES)))
-OBJS += $(patsubst %.cu,$(OBJDIR)/%.cu.o,$(notdir $(CUFILES)))
-
-################################################################################
-# Set up cubin output files
-################################################################################
-CUBINDIR := $(SRCDIR)data
-CUBINS += $(patsubst %.cu,$(CUBINDIR)/%.cubin,$(notdir $(CUBINFILES)))
-
-################################################################################
-# Set up PTX output files
-################################################################################
-PTXDIR := $(SRCDIR)data
-PTXBINS += $(patsubst %.cu,$(PTXDIR)/%.ptx,$(notdir $(PTXFILES)))
-
-################################################################################
-# Rules
-################################################################################
-$(OBJDIR)/%.c.o : $(SRCDIR)%.c $(C_DEPS)
- $(VERBOSE)$(CC) $(CFLAGS) -o $@ -c $<
-
-$(OBJDIR)/%.cpp.o : $(SRCDIR)%.cpp $(C_DEPS)
- $(VERBOSE)$(CXX) $(CXXFLAGS) -o $@ -c $<
-
-$(OBJDIR)/%.cu.o : $(SRCDIR)%.cu $(CU_DEPS)
- $(VERBOSE)$(NVCC) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -c $<
-
-$(CUBINDIR)/%.cubin : $(SRCDIR)%.cu cubindirectory
- $(VERBOSE)$(NVCC) $(CUBIN_ARCH_FLAG) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -cubin $<
-
-$(PTXDIR)/%.ptx : $(SRCDIR)%.cu ptxdirectory
- $(VERBOSE)$(NVCC) $(CUBIN_ARCH_FLAG) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -ptx $<
-
-#
-# The following definition is a template that gets instantiated for each SM
-# version (sm_10, sm_13, etc.) stored in SMVERSIONS. It does 2 things:
-# 1. It adds to OBJS a .cu_sm_XX.o for each .cu file it finds in CUFILES_sm_XX.
-# 2. It generates a rule for building .cu_sm_XX.o files from the corresponding
-# .cu file.
-#
-# The intended use for this is to allow Makefiles that use common.mk to compile
-# files to different Compute Capability targets (aka SM arch version). To do
-# so, in the Makefile, list files for each SM arch separately, like so:
-#
-# CUFILES_sm_10 := mycudakernel_sm10.cu app.cu
-# CUFILES_sm_12 := anothercudakernel_sm12.cu
-#
-define SMVERSION_template
-OBJS += $(patsubst %.cu,$(OBJDIR)/%.cu_$(1).o,$(notdir $(CUFILES_$(1))))
-$(OBJDIR)/%.cu_$(1).o : $(SRCDIR)%.cu $(CU_DEPS)
- $(VERBOSE)$(NVCC) -o $$@ -c $$< $(NVCCFLAGS) -arch $(1)
-endef
-
-# This line invokes the above template for each arch version stored in
-# SM_VERSIONS. The call funtion invokes the template, and the eval
-# function interprets it as make commands.
-$(foreach smver,$(SM_VERSIONS),$(eval $(call SMVERSION_template,$(smver))))
-
-$(TARGET): makedirectories $(OBJS) $(CUBINS) $(PTXBINS) Makefile
- $(VERBOSE)$(LINKLINE)
-
-cubindirectory:
- $(VERBOSE)mkdir -p $(CUBINDIR)
-
-ptxdirectory:
- $(VERBOSE)mkdir -p $(PTXDIR)
-
-makedirectories:
- $(VERBOSE)mkdir -p $(LIBDIR)
- $(VERBOSE)mkdir -p $(OBJDIR)
- $(VERBOSE)mkdir -p $(TARGETDIR)
-
-
-tidy :
- $(VERBOSE)find . | egrep "#" | xargs rm -f
- $(VERBOSE)find . | egrep "\~" | xargs rm -f
-
-clean : tidy
- $(VERBOSE)rm -f $(OBJS)
- $(VERBOSE)rm -f $(CUBINS)
- $(VERBOSE)rm -f $(PTXBINS)
- $(VERBOSE)rm -f $(TARGET)
- $(VERBOSE)rm -f $(NVCC_KEEP_CLEAN)
-
-clobber : clean
- $(VERBOSE)rm -rf $(ROOTOBJDIR)