This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Oct 14th, 2012  |  syntax: Bash  |  size: 12.16 KB  |  views: 8  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ################################################################################
  2. #
  3. # Copyright 1993-2006 NVIDIA Corporation.  All rights reserved.
  4. #
  5. # NOTICE TO USER:  
  6. #
  7. # This source code is subject to NVIDIA ownership rights under U.S. and
  8. # international Copyright laws.  
  9. #
  10. # NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
  11. # CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
  12. # IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
  13. # REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
  14. # MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.  
  15. # IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
  16. # OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  17. # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  18. # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  19. # OR PERFORMANCE OF THIS SOURCE CODE.  
  20. #
  21. # U.S. Government End Users.  This source code is a "commercial item" as
  22. # that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting  of
  23. # "commercial computer software" and "commercial computer software
  24. # documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995)
  25. # and is provided to the U.S. Government only as a commercial end item.  
  26. # Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
  27. # 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
  28. # source code with only those rights set forth herein.
  29. #
  30. ################################################################################
  31. #
  32. # Build script for project
  33. #
  34. ################################################################################
  35.  
  36. # Add source files here
  37. EXECUTABLE      := gpu_md5
  38. # CUDA source files (compiled with cudacc)
  39. CUFILES         := cuda_md5_gpu.cu
  40. # CUDA dependency files
  41. CU_DEPS         := \
  42.  
  43. # C++ source files (compiled with gcc for c++)
  44. CCFILES         := \
  45.         cuda_md5.c\
  46.         cuda_md5_cpu.c\
  47. \
  48.  
  49. ################################################################################
  50. # Rules and targets
  51.  
  52. #include common.mk
  53.  
  54.  
  55.  
  56. ################################################################################
  57. #
  58. # Copyright 1993-2006 NVIDIA Corporation.  All rights reserved.
  59. #
  60. # NOTICE TO USER:  
  61. #
  62. # This source code is subject to NVIDIA ownership rights under U.S. and
  63. # international Copyright laws.  
  64. #
  65. # NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
  66. # CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
  67. # IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
  68. # REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
  69. # MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.  
  70. # IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
  71. # OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  72. # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  73. # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  74. # OR PERFORMANCE OF THIS SOURCE CODE.  
  75. #
  76. # U.S. Government End Users.  This source code is a "commercial item" as
  77. # that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting  of
  78. # "commercial computer software" and "commercial computer software
  79. # documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995)
  80. # and is provided to the U.S. Government only as a commercial end item.  
  81. # Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
  82. # 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
  83. # source code with only those rights set forth herein.
  84. #
  85. ################################################################################
  86. #
  87. # Common build script
  88. #
  89. # Modified by TitanMKD for BackTrack4
  90. #
  91. ################################################################################
  92.  
  93. .SUFFIXES : .cu .cu_dbg.o .c_dbg.o .cpp_dbg.o .cu_rel.o .c_rel.o .cpp_rel.o .cubin
  94.  
  95. # Add new SM Versions here as devices with new Compute Capability are released
  96. SM_VERSIONS := sm_10 sm_11 sm_12 sm_13
  97.  
  98. CUDA_INSTALL_PATH ?= /usr/local/cuda
  99.  
  100. ifdef cuda-install
  101.         CUDA_INSTALL_PATH := $(cuda-install)
  102. endif
  103.  
  104. # detect OS
  105. OSUPPER = $(shell uname -s 2>/dev/null | tr [:lower:] [:upper:])
  106. OSLOWER = $(shell uname -s 2>/dev/null | tr [:upper:] [:lower:])
  107. # 'linux' is output for Linux system, 'darwin' for OS X
  108. DARWIN = $(strip $(findstring DARWIN, $(OSUPPER)))
  109.  
  110. # Basic directory setup for SDK
  111. # (override directories only if they are not already defined)
  112. SRCDIR     ?=
  113. ROOTDIR    ?= ..
  114. ROOTBINDIR ?= bin
  115. BINDIR     ?= $(ROOTBINDIR)/$(OSLOWER)
  116. ROOTOBJDIR ?= obj
  117. LIBDIR     := $(ROOTDIR)/../lib64
  118. COMMONDIR  := $(ROOTDIR)/../common
  119. NVIDIA_SDK_PATH := /opt/cuda/NVIDIA_CUDA_SDK
  120.  
  121. # Compilers
  122. NVCC       := $(CUDA_INSTALL_PATH)/bin/nvcc
  123. CXX        := gcc
  124. CC         := gcc
  125. LINK       := gcc -fPIC
  126.  
  127. # Includes
  128. INCLUDES  += -I. -I$(CUDA_INSTALL_PATH)/include -I$(COMMONDIR)/inc -I$(NVIDIA_SDK_PATH)/common/inc -I$(NVIDIA_SDK_PATH)/common
  129.  
  130. # architecture flag for cubin build
  131. CUBIN_ARCH_FLAG := -m32
  132.  
  133. # Warning flags
  134. CXXWARN_FLAGS := \
  135.         -W \
  136.         -Wimplicit \
  137.         -Wswitch \
  138.         -Wformat \
  139.         -Wchar-subscripts \
  140.         -Wparentheses \
  141.         -Wmultichar \
  142.         -Wtrigraphs \
  143.         -Wpointer-arith \
  144.         -Wcast-align \
  145.         -Wreturn-type \
  146.         -Wno-unused-function \
  147.         $(SPACE)
  148.  
  149. CWARN_FLAGS := $(CXXWARN_FLAGS) \
  150.         -Wstrict-prototypes \
  151.         -Wmissing-prototypes \
  152.         -Wmissing-declarations \
  153.         -Wnested-externs \
  154.         -Wmain \
  155.  
  156. # Compiler-specific flags
  157. NVCCFLAGS :=
  158. CXXFLAGS  := $(CXXWARN_FLAGS)
  159. CFLAGS    := $(CWARN_FLAGS) $(CXXWARN_FLAGS)
  160.  
  161. # Common flags
  162. COMMONFLAGS += $(INCLUDES) -DUNIX
  163.  
  164. # Debug/release configuration
  165. ifeq ($(dbg),1)
  166.         COMMONFLAGS += -g
  167.         NVCCFLAGS   += -D_DEBUG
  168.         BINSUBDIR   := debug
  169.         LIBSUFFIX   := D
  170. else
  171.         COMMONFLAGS += -O3
  172.         BINSUBDIR   := release
  173.         LIBSUFFIX   :=
  174.         NVCCFLAGS   += --compiler-options -fno-strict-aliasing
  175.         CXXFLAGS    += -fno-strict-aliasing
  176.         CFLAGS      += -fno-strict-aliasing
  177. endif
  178.  
  179. # append optional arch/SM version flags (such as -arch sm_11)
  180. #NVCCFLAGS += $(SMVERSIONFLAGS)
  181.  
  182. # architecture flag for cubin build
  183. CUBIN_ARCH_FLAG := -m32
  184.  
  185. # detect if 32 bit or 64 bit system
  186. HP_64 = $(shell uname -m | grep 64)
  187.  
  188. # OpenGL is used or not (if it is used, then it is necessary to include GLEW)
  189. ifeq ($(USEGLLIB),1)
  190.  
  191.         ifneq ($(DARWIN),)
  192.                 OPENGLLIB := -L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL -lGLU $(COMMONDIR)/lib/$(OSLOWER)/libGLEW.a
  193.         else
  194.                 OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu
  195.  
  196.                 ifeq "$(strip $(HP_64))" ""
  197.                         OPENGLLIB += -lGLEW -L/usr/X11R6/lib
  198.                 else
  199.                         OPENGLLIB += -lGLEW_x86_64 -L/usr/X11R6/lib64
  200.                 endif
  201.         endif
  202.  
  203.         CUBIN_ARCH_FLAG := -m64
  204. endif
  205.  
  206. ifeq ($(USEGLUT),1)
  207.         ifneq ($(DARWIN),)
  208.                 OPENGLLIB += -framework GLUT
  209.         else
  210.                 OPENGLLIB += -lglut
  211.         endif
  212. endif
  213.  
  214. ifeq ($(USEPARAMGL),1)
  215.         PARAMGLLIB := -lparamgl$(LIBSUFFIX)
  216. endif
  217.  
  218. ifeq ($(USERENDERCHECKGL),1)
  219.         RENDERCHECKGLLIB := -lrendercheckgl$(LIBSUFFIX)
  220. endif
  221.  
  222. ifeq ($(USECUDPP), 1)
  223.         ifeq "$(strip $(HP_64))" ""
  224.                 CUDPPLIB := -lcudpp
  225.         else
  226.                 CUDPPLIB := -lcudpp64
  227.         endif
  228.  
  229.         CUDPPLIB := $(CUDPPLIB)$(LIBSUFFIX)
  230.  
  231.         ifeq ($(emu), 1)
  232.                 CUDPPLIB := $(CUDPPLIB)_emu
  233.         endif
  234. endif
  235.  
  236. # Libs
  237. LIB       := -L$(CUDA_INSTALL_PATH)/lib64 -L$(LIBDIR) -L$(COMMONDIR)/lib64/$(OSLOWER) -L$(NVIDIA_SDK_PATH)/lib64
  238. ifeq ($(USEDRVAPI),1)
  239.    LIB += -lcuda ${OPENGLLIB} $(PARAMGLLIB) $(RENDERCHECKGLLIB) $(CUDPPLIB) ${LIB}
  240. else
  241.    LIB += -lcudart ${OPENGLLIB} $(PARAMGLLIB) $(RENDERCHECKGLLIB) $(CUDPPLIB) ${LIB}
  242. endif
  243.  
  244. ifeq ($(USECUFFT),1)
  245.   ifeq ($(emu),1)
  246.     LIB += -lcufftemu
  247.   else
  248.     LIB += -lcufft
  249.   endif
  250. endif
  251.  
  252. ifeq ($(USECUBLAS),1)
  253.   ifeq ($(emu),1)
  254.     LIB += -lcublasemu
  255.   else
  256.     LIB += -lcublas
  257.   endif
  258. endif
  259.  
  260. # Lib/exe configuration
  261. ifneq ($(STATIC_LIB),)
  262.         TARGETDIR := $(LIBDIR)
  263.         TARGET   := $(subst .a,$(LIBSUFFIX).a,$(LIBDIR)/$(STATIC_LIB))
  264.         LINKLINE  = ar qv $(TARGET) $(OBJS)
  265. else
  266.         # Device emulation configuration
  267.         ifeq ($(emu), 1)
  268.                 NVCCFLAGS   += -deviceemu
  269.                 CUDACCFLAGS +=
  270.                 BINSUBDIR   := emu$(BINSUBDIR)
  271.                 # consistency, makes developing easier
  272.                 CXXFLAGS                += -D__DEVICE_EMULATION__
  273.                 CFLAGS                  += -D__DEVICE_EMULATION__
  274.         endif
  275.         TARGETDIR := $(BINDIR)/$(BINSUBDIR)
  276.         TARGET    := $(TARGETDIR)/$(EXECUTABLE)
  277.         LINKLINE  = $(LINK) -o $(TARGET) $(OBJS) $(LIB)
  278. endif
  279.  
  280. # check if verbose
  281. ifeq ($(verbose), 1)
  282.         VERBOSE :=
  283. else
  284.         VERBOSE := @
  285. endif
  286.  
  287. ################################################################################
  288. # Check for input flags and set compiler flags appropriately
  289. ################################################################################
  290. ifeq ($(fastmath), 1)
  291.         NVCCFLAGS += -use_fast_math
  292. endif
  293.  
  294. ifeq ($(keep), 1)
  295.         NVCCFLAGS += -keep
  296.         NVCC_KEEP_CLEAN := *.i* *.cubin *.cu.c *.cudafe* *.fatbin.c *.ptx
  297. endif
  298.  
  299. ifdef maxregisters
  300.         NVCCFLAGS += -maxrregcount $(maxregisters)
  301. endif
  302.  
  303. # Add cudacc flags
  304. NVCCFLAGS += $(CUDACCFLAGS)
  305.  
  306. # workaround for mac os x cuda 1.1 compiler issues
  307. ifneq ($(DARWIN),)
  308.         NVCCFLAGS += --host-compilation=C
  309. endif
  310.  
  311. # Add common flags
  312. NVCCFLAGS += $(COMMONFLAGS)
  313. CXXFLAGS  += $(COMMONFLAGS)
  314. CFLAGS    += $(COMMONFLAGS)
  315.  
  316. ifeq ($(nvcc_warn_verbose),1)
  317.         NVCCFLAGS += $(addprefix --compiler-options ,$(CXXWARN_FLAGS))
  318.         NVCCFLAGS += --compiler-options -fno-strict-aliasing
  319. endif
  320.  
  321. ################################################################################
  322. # Set up object files
  323. ################################################################################
  324. OBJDIR := $(ROOTOBJDIR)/$(BINSUBDIR)
  325. OBJS +=  $(patsubst %.cpp,$(OBJDIR)/%.cpp.o,$(notdir $(CCFILES)))
  326. OBJS +=  $(patsubst %.c,$(OBJDIR)/%.c.o,$(notdir $(CFILES)))
  327. OBJS +=  $(patsubst %.cu,$(OBJDIR)/%.cu.o,$(notdir $(CUFILES)))
  328.  
  329. ################################################################################
  330. # Set up cubin files
  331. ################################################################################
  332. CUBINDIR := $(SRCDIR)data
  333. CUBINS +=  $(patsubst %.cu,$(CUBINDIR)/%.cubin,$(notdir $(CUBINFILES)))
  334.  
  335. ################################################################################
  336. # Rules
  337. ################################################################################
  338. $(OBJDIR)/%.c.o : $(SRCDIR)%.c $(C_DEPS)
  339.         $(VERBOSE)$(CC) $(CFLAGS) -o $@ -c $<
  340.  
  341. $(OBJDIR)/%.cpp.o : $(SRCDIR)%.cpp $(C_DEPS)
  342.         $(VERBOSE)$(CXX) $(CXXFLAGS) -o $@ -c $<
  343.  
  344. $(OBJDIR)/%.cu.o : $(SRCDIR)%.cu $(CU_DEPS)
  345.         $(VERBOSE)$(NVCC) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -c $<
  346.  
  347. $(CUBINDIR)/%.cubin : $(SRCDIR)%.cu cubindirectory
  348.         $(VERBOSE)$(NVCC) $(CUBIN_ARCH_FLAG) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -cubin $<
  349.  
  350. #
  351. # The following definition is a template that gets instantiated for each SM
  352. # version (sm_10, sm_13, etc.) stored in SMVERSIONS.  It does 2 things:
  353. # 1. It adds to OBJS a .cu_sm_XX.o for each .cu file it finds in CUFILES_sm_XX.
  354. # 2. It generates a rule for building .cu_sm_XX.o files from the corresponding
  355. #    .cu file.
  356. #
  357. # The intended use for this is to allow Makefiles that use common.mk to compile
  358. # files to different Compute Capability targets (aka SM arch version).  To do
  359. # so, in the Makefile, list files for each SM arch separately, like so:
  360. #
  361. # CUFILES_sm_10 := mycudakernel_sm10.cu app.cu
  362. # CUFILES_sm_12 := anothercudakernel_sm12.cu
  363. #
  364. define SMVERSION_template
  365. OBJS += $(patsubst %.cu,$(OBJDIR)/%.cu_$(1).o,$(notdir $(CUFILES_$(1))))
  366. $(OBJDIR)/%.cu_$(1).o : $(SRCDIR)%.cu $(CU_DEPS)
  367.         $(VERBOSE)$(NVCC) -o $$@ -c $$< $(NVCCFLAGS) -arch $(1)
  368. endef
  369.  
  370. # This line invokes the above template for each arch version stored in
  371. # SM_VERSIONS.  The call funtion invokes the template, and the eval
  372. # function interprets it as make commands.
  373. $(foreach smver,$(SM_VERSIONS),$(eval $(call SMVERSION_template,$(smver))))
  374.  
  375. $(TARGET): makedirectories $(OBJS) $(CUBINS) Makefile
  376.         $(VERBOSE)$(LINKLINE)
  377.  
  378. cubindirectory:
  379.         $(VERBOSE)mkdir -p $(CUBINDIR)
  380.  
  381. makedirectories:
  382.         $(VERBOSE)mkdir -p $(LIBDIR)
  383.         $(VERBOSE)mkdir -p $(OBJDIR)
  384.         $(VERBOSE)mkdir -p $(TARGETDIR)
  385.  
  386.  
  387. tidy :
  388.         $(VERBOSE)find . | egrep "#" | xargs rm -f
  389.         $(VERBOSE)find . | egrep "\~" | xargs rm -f
  390.  
  391. clean : tidy
  392.         $(VERBOSE)rm -f $(OBJS)
  393.         $(VERBOSE)rm -f $(CUBINS)
  394.         $(VERBOSE)rm -f $(TARGET)
  395.         $(VERBOSE)rm -f $(NVCC_KEEP_CLEAN)
  396.  
  397. clobber : clean
  398.         $(VERBOSE)rm -rf $(ROOTOBJDIR)
clone this paste RAW Paste Data