@ -1,132 +1,156 @@
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# F o r m o r e i n f o r m a t i o n , p l e a s e s e e : h t t p : / / s o f t w a r e . s c i . u t a h . e d u
# - T o o l s f o r b u i l d i n g C U D A C f i l e s : l i b r a r i e s a n d b u i l d d e p e n d e n c i e s .
# T h i s s c r i p t l o c a t e s t h e N V I D I A C U D A C t o o l s . I t s h o u l d w o r k o n l i n u x , w i n d o w s ,
# a n d m a c a n d s h o u l d b e r e a s o n a b l y u p t o d a t e w i t h C U D A C r e l e a s e s .
#
# T h e M I T L i c e n s e
# T h i s s c r i p t m a k e s u s e o f t h e s t a n d a r d f i n d _ p a c k a g e a r g u m e n t s o f < V E R S I O N > ,
# R E Q U I R E D a n d Q U I E T . C U D A _ F O U N D w i l l r e p o r t i f a n a c c e p t a b l e v e r s i o n o f C U D A
# w a s f o u n d .
#
# Copyright ( c ) 2 0 0 8 - 2 0 0 9
# N V I D I A C o r p .
# T h e s c r i p t w i l l p r o m p t t h e u s e r t o s p e c i f y C U D A _ T O O L K I T _ R O O T _ D I R i f t h e p r e f i x
# c a n n o t b e d e t e r m i n e d b y t h e l o c a t i o n o f n v c c i n t h e s y s t e m p a t h a n d R E Q U I R E D
# i s s p e c i f i e d t o find_package ( ) . T o u s e a d i f f e r e n t i n s t a l l e d v e r s i o n o f t h e
# t o o l k i t s e t t h e e n v i r o n m e n t v a r i a b l e C U D A _ B I N _ P A T H b e f o r e r u n n i n g c m a k e
# ( e . g . C U D A _ B I N _ P A T H = / u s r / l o c a l / c u d a 1 . 0 i n s t e a d o f t h e d e f a u l t / u s r / l o c a l / c u d a )
# o r s e t C U D A _ T O O L K I T _ R O O T _ D I R a f t e r c o n f i g u r i n g . I f y o u c h a n g e t h e v a l u e o f
# C U D A _ T O O L K I T _ R O O T _ D I R , v a r i o u s c o m p o n e n t s t h a t d e p e n d o n t h e p a t h w i l l b e
# r e l o c a t e d .
#
# Copyright ( c ) 2 0 0 7 - 2 0 0 9
# S c i e n t i f i c C o m p u t i n g a n d I m a g i n g I n s t i t u t e , U n i v e r s i t y o f U t a h
# I t m i g h t b e n e c e s s a r y t o s e t C U D A _ T O O L K I T _ R O O T _ D I R m a n u a l l y o n c e r t a i n
# p l a t f o r m s , o r t o u s e a c u d a r u n t i m e n o t i n s t a l l e d i n t h e d e f a u l t l o c a t i o n . I n
# n e w e r v e r s i o n s o f t h e t o o l k i t t h e c u d a l i b r a r y i s i n c l u d e d w i t h t h e g r a p h i c s
# d r i v e r - b e s u r e t h a t t h e d r i v e r v e r s i o n m a t c h e s w h a t i s n e e d e d b y t h e c u d a
# r u n t i m e v e r s i o n .
#
# L i c e n s e f o r t h e s p e c i f i c l a n g u a g e g o v e r n i n g r i g h t s a n d l i m i t a t i o n s u n d e r
# P e r m i s s i o n i s h e r e b y g r a n t e d , f r e e o f c h a r g e , t o a n y p e r s o n o b t a i n i n g a
# c o p y o f t h i s s o f t w a r e a n d a s s o c i a t e d d o c u m e n t a t i o n files ( the "Software" ) ,
# t o d e a l i n t h e S o f t w a r e w i t h o u t r e s t r i c t i o n , i n c l u d i n g w i t h o u t l i m i t a t i o n
# t h e r i g h t s t o u s e , c o p y , m o d i f y , m e r g e , p u b l i s h , d i s t r i b u t e , s u b l i c e n s e ,
# a n d / o r s e l l c o p i e s o f t h e S o f t w a r e , a n d t o p e r m i t p e r s o n s t o w h o m t h e
# S o f t w a r e i s f u r n i s h e d t o d o s o , s u b j e c t t o t h e f o l l o w i n g c o n d i t i o n s :
# T h e f o l l o w i n g v a r i a b l e s a f f e c t t h e b e h a v i o r o f t h e m a c r o s i n t h e script ( in
# a l p h e b e t i c a l o r d e r ) . N o t e t h a t a n y o f t h e s e f l a g s c a n b e c h a n g e d m u l t i p l e
# t i m e s i n t h e s a m e d i r e c t o r y b e f o r e c a l l i n g C U D A _ A D D _ E X E C U T A B L E ,
# C U D A _ A D D _ L I B R A R Y , C U D A _ C O M P I L E , C U D A _ C O M P I L E _ P T X o r C U D A _ W R A P _ S R C S .
#
# T h e a b o v e c o p y r i g h t n o t i c e a n d t h i s p e r m i s s i o n n o t i c e s h a l l b e i n c l u d e d
# i n a l l c o p i e s o r s u b s t a n t i a l p o r t i o n s o f t h e S o f t w a r e .
# CUDA_64_BIT_DEVICE_CODE ( Default matches host bit size )
# - - S e t t o O N t o c o m p i l e f o r 6 4 b i t d e v i c e c o d e , O F F f o r 3 2 b i t d e v i c e c o d e .
# N o t e t h a t m a k i n g t h i s d i f f e r e n t f r o m t h e h o s t c o d e w h e n g e n e r a t i n g o b j e c t
# o r C f i l e s f r o m C U D A c o d e j u s t w o n ' t w o r k , b e c a u s e s i z e _ t g e t s d e f i n e d b y
# n v c c i n t h e g e n e r a t e d s o u r c e . I f y o u c o m p i l e t o P T X a n d t h e n l o a d t h e
# f i l e y o u r s e l f , y o u c a n m i x b i t s i z e s b e t w e e n d e v i c e a n d h o s t .
#
# T H E S O F T W A R E I S P R O V I D E D " A S I S " , W I T H O U T W A R R A N T Y O F A N Y K I N D , E X P R E S S
# O R I M P L I E D , I N C L U D I N G B U T N O T L I M I T E D T O T H E W A R R A N T I E S O F M E R C H A N T A B I L I T Y ,
# F I T N E S S F O R A P A R T I C U L A R P U R P O S E A N D N O N I N F R I N G E M E N T . I N N O E V E N T S H A L L
# T H E A U T H O R S O R C O P Y R I G H T H O L D E R S B E L I A B L E F O R A N Y C L A I M , D A M A G E S O R O T H E R
# L I A B I L I T Y , W H E T H E R I N A N A C T I O N O F C O N T R A C T , T O R T O R O T H E R W I S E , A R I S I N G
# F R O M , O U T O F O R I N C O N N E C T I O N W I T H T H E S O F T W A R E O R T H E U S E O R O T H E R
# D E A L I N G S I N T H E S O F T W A R E .
# CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE ( Default ON )
# - - S e t t o O N i f y o u w a n t t h e c u s t o m b u i l d r u l e t o b e a t t a c h e d t o t h e s o u r c e
# f i l e i n V i s u a l S t u d i o . T u r n O F F i f y o u a d d t h e s a m e c u d a f i l e t o m u l t i p l e
# t a r g e t s .
#
# T h i s s c r i p t l o c a t e s t h e N v i d i a C o m p u t e U n i f i e d D r i v e r Architecture ( CUDA )
# t o o l s . I t s h o u l d w o r k o n l i n u x , w i n d o w s , a n d m a c a n d s h o u l d b e r e a s o n a b l y
# u p t o d a t e w i t h c u d a r e l e a s e s .
# T h i s a l l o w s t h e u s e r t o b u i l d t h e t a r g e t f r o m t h e C U D A f i l e ; h o w e v e r , b a d
# t h i n g s c a n h a p p e n i f t h e C U D A s o u r c e f i l e i s a d d e d t o m u l t i p l e t a r g e t s .
# W h e n p e r f o r m i n g p a r a l l e l b u i l d s i t i s p o s s i b l e f o r t h e c u s t o m b u i l d
# c o m m a n d t o b e r u n m o r e t h a n o n c e a n d i n p a r a l l e l c a u s i n g c r y p t i c b u i l d
# e r r o r s . V S r u n s t h e r u l e s f o r e v e r y s o u r c e f i l e i n t h e t a r g e t , a n d a
# s o u r c e c a n h a v e o n l y o n e r u l e n o m a t t e r h o w m a n y p r o j e c t s i t i s a d d e d t o .
# W h e n t h e r u l e i s r u n f r o m m u l t i p l e t a r g e t s r a c e c o n d i t i o n s c a n o c c u r o n
# t h e g e n e r a t e d f i l e . E v e n t u a l l y e v e r y t h i n g w i l l g e t b u i l t , b u t i f t h e u s e r
# i s u n a w a r e o f t h i s b e h a v i o r , t h e r e m a y b e c o n f u s i o n . I t w o u l d b e n i c e i f
# t h i s s c r i p t c o u l d d e t e c t t h e r e u s e o f s o u r c e f i l e s a c r o s s m u l t i p l e t a r g e t s
# a n d t u r n t h e o p t i o n o f f f o r t h e u s e r , b u t n o g o o d s o l u t i o n c o u l d b e f o u n d .
#
# T h i s s c r i p t m a k e s u s e o f t h e s t a n d a r d f i n d _ p a c k a g e a r g u m e n t s o f < V E R S I O N > ,
# R E Q U I R E D a n d Q U I E T . C U D A _ F O U N D w i l l r e p o r t i f a n a c c e p t a b l e v e r s i o n o f C U D A
# w a s f o u n d .
# CUDA_BUILD_CUBIN ( Default OFF )
# - - S e t t o O N t o e n a b l e a n d e x t r a c o m p i l a t i o n p a s s w i t h t h e - c u b i n o p t i o n i n
# D e v i c e m o d e . T h e o u t p u t i s p a r s e d a n d r e g i s t e r , s h a r e d m e m o r y u s a g e i s
# p r i n t e d d u r i n g b u i l d .
#
# T h e s c r i p t w i l l p r o m p t t h e u s e r t o s p e c i f y C U D A _ T O O L K I T _ R O O T _ D I R i f t h e
# p r e f i x c a n n o t b e d e t e r m i n e d b y t h e l o c a t i o n o f n v c c i n t h e s y s t e m p a t h . T o
# u s e a d i f f e r e n t i n s t a l l e d v e r s i o n o f t h e t o o l k i t s e t t h e e n v i r o n m e n t v a r i a b l e
# C U D A _ B I N _ P A T H b e f o r e r u n n i n g cmake ( e.g. CUDA_BIN_PATH=/usr/local/cuda1.0
# i n s t e a d o f t h e d e f a u l t / u s r / l o c a l / c u d a ) .
# CUDA_BUILD_EMULATION ( Default OFF for device mode )
# - - S e t t o O N f o r E m u l a t i o n m o d e . - D _ D E V I C E E M U i s d e f i n e d f o r C U D A C f i l e s
# w h e n C U D A _ B U I L D _ E M U L A T I O N i s T R U E .
#
# S e t C U D A _ B U I L D _ E M U L A T I O N t o O N f o r E m u l a t i o n m o d e . D e f a u l t s t o OFF ( device
# m o d e ) .
# _ D E V I C E E M U i s d e f i n e d w h e n C U D A _ B U I L D _ E M U L A T I O N i s T R U E .
# CUDA_GENERATED_OUTPUT_DIR ( Default CMAKE_CURRENT_BINARY_DIR )
# - - S e t t o t h e p a t h y o u w i s h t o h a v e t h e g e n e r a t e d f i l e s p l a c e d . I f i t i s
# b l a n k o u t p u t f i l e s w i l l b e p l a c e d i n C M A K E _ C U R R E N T _ B I N A R Y _ D I R .
# I n t e r m e d i a t e f i l e s w i l l a l w a y s b e p l a c e d i n
# C M A K E _ C U R R E N T _ B I N A R Y _ D I R / C M a k e F i l e s .
#
# S e t C U D A _ H O S T _ C O M P I L A T I O N _ C P P t o O F F f o r C c o m p i l a t i o n o f h o s t c o d e .
# D e f a u l t T R U E .
# CUDA_HOST_COMPILATION_CPP ( Default ON )
# - - S e t t o O F F f o r C c o m p i l a t i o n o f h o s t c o d e .
#
# S e t C U D A _ B U I L D _ C U B I N t o " O N " o r " O F F " t o e n a b l e a n d e x t r a c o m p i l a t i o n p a s s
# w i t h t h e - c u b i n o p t i o n i n D e v i c e m o d e . T h e o u t p u t i s p a r s e d a n d r e g i s t e r ,
# s h a r e d m e m o r y u s a g e i s p r i n t e d d u r i n g b u i l d . D e f a u l t O N .
# C U D A _ N V C C _ F L A G S
# C U D A _ N V C C _ F L A G S _ < C O N F I G >
# - - A d d i t i o n a l N V C C c o m m a n d l i n e a r g u m e n t s . N O T E : m u l t i p l e a r g u m e n t s m u s t b e
# s e m i - c o l o n delimited ( e.g. --compiler-options;-Wall )
#
# S e t C U D A _ A T T A C H _ V S _ B U I L D _ R U L E _ T O _ C U D A _ F I L E t o O N i f y o u w a n t t h e c u s t o m b u i l d
# r u l e t o b e a t t a c h e d t o t h e s o u r c e f i l e i n V i s u a l S t u d i o . D e f a u l t s t o O N .
# T u r n O F F i f y o u a d d t h e s a m e c u d a f i l e t o m u l t i p l e t a r g e t s .
# CUDA_PROPAGATE_HOST_FLAGS ( Default ON )
# - - S e t t o O N t o p r o p a g a t e C M A K E _ { C , C X X } _ F L A G S a n d t h e i r c o n f i g u r a t i o n
# d e p e n d e n t counterparts ( e.g. CMAKE_C_FLAGS_DEBUG ) a u t o m a t i c a l l y t o t h e
# h o s t c o m p i l e r t h r o u g h n v c c ' s - X c o m p i l e r f l a g . T h i s h e l p s m a k e t h e
# g e n e r a t e d h o s t c o d e m a t c h t h e r e s t o f t h e s y s t e m b e t t e r . S o m e t i m e s
# c e r t a i n f l a g s g i v e n v c c p r o b l e m s , a n d t h i s w i l l h e l p y o u t u r n t h e f l a g
# p r o p a g a t i o n o f f . T h i s d o e s n o t a f f e c t t h e f l a g s s u p p l i e d d i r e c t l y t o n v c c
# v i a C U D A _ N V C C _ F L A G S o r t h r o u g h t h e O P T I O N f l a g s s p e c i f i e d t h r o u g h
# C U D A _ A D D _ L I B R A R Y , C U D A _ A D D _ E X E C U T A B L E , o r C U D A _ W R A P _ S R C S . F l a g s u s e d f o r
# s h a r e d l i b r a r y c o m p i l a t i o n a r e n o t a f f e c t e d b y t h i s f l a g .
#
# T h i s a l l o w s t h e u s e r t o b u i l d t h e t a r g e t f r o m t h e C U D A f i l e , h o w e v e r b a d
# t h i n g s c a n h a p p e n i f t h e C U D A s o u r c e f i l e i s a d d e d t o m u l t i p l e t a r g e t s . W h e n
# p e r f o r m i n g p a r a l l e l b u i l d s i t i s p o s s i b l e f o r t h e c u s t o m b u i l d c o m m a n d t o b e
# r u n m o r e t h a n o n c e a n d i n p a r a l l e l c a u s i n g c r y p t i c b u i l d e r r o r s . T h i s i s
# b e c a u s e V S r u n s t h e r u l e s f o r e v e r y s o u r c e f i l e i n t h e t a r g e t , a n d a s o u r c e
# c a n h a v e o n l y o n e r u l e n o m a t t e r h o w m a n y p r o j e c t s i t i s a d d e d t o . T h e r e f o r e ,
# t h e r u l e a s s i g n e d t o t h e s o u r c e f i l e r e a l l y o n l y a p p l i e s t o o n e t a r g e t y o u g e t
# c l a s h e s w h e n i t i s r u n f r o m m u l t i p l e t a r g e t s . E v e n t u a l l y e v e r y t h i n g w i l l g e t
# b u i l t , b u t i f t h e u s e r i s u n a w a r e o f t h i s b e h a v i o r , t h e r e m a y b e c o n f u s i o n .
# I t w o u l d b e n i c e i f w e c o u l d d e t e c t t h e r e u s e o f s o u r c e f i l e s a c r o s s m u l t i p l e
# t a r g e t s a n d t u r n t h e o p t i o n o f f f o r t h e u s e r , b u t n o g o o d s o l u t i o n c o u l d b e
# f o u n d .
# CUDA_VERBOSE_BUILD ( Default OFF )
# - - S e t t o O N t o s e e a l l t h e c o m m a n d s u s e d w h e n b u i l d i n g t h e C U D A f i l e . W h e n
# u s i n g a M a k e f i l e g e n e r a t o r t h e v a l u e d e f a u l t s t o VERBOSE ( run make
# V E R B O S E = 1 t o s e e o u t p u t ) , a l t h o u g h s e t t i n g C U D A _ V E R B O S E _ B U I L D t o O N w i l l
# a l w a y s p r i n t t h e o u t p u t .
#
# S e t C U D A _ 6 4 _ B I T _ D E V I C E _ C O D E t o O N t o c o m p i l e f o r 6 4 b i t d e v i c e s . D e f a u l t s t o
# m a t c h h o s t b i t s i z e . N o t e t h a t m a k i n g t h i s d i f f e r e n t t h a n t h e h o s t c o d e w h e n
# g e n e r a t i n g C f i l e s f r o m C U D A c o d e j u s t w o n ' t w o r k , b e c a u s e s i z e _ t g e t s d e f i n e d
# b y n v c c i n t h e g e n e r a t e d s o u r c e . I f y o u c o m p i l e t o P T X a n d t h e n l o a d t h e f i l e
# y o u r s e l f , y o u c a n m i x b i t s i z e s b e t w e e n d e v i c e a n d h o s t .
# T h e s c r i p t c r e a t e s t h e f o l l o w i n g macros ( in alphebetical order ) :
#
# S e t C U D A _ V E R B O S E _ B U I L D t o O N t o s e e a l l t h e c o m m a n d s u s e d w h e n b u i l d i n g t h e
# C U D A f i l e . W h e n u s i n g a M a k e f i l e g e n e r a t o r t h e v a l u e d e f a u l t s t o VERBOSE ( run
# m a k e V E R B O S E = 1 t o s e e o u t p u t ) . Y o u c a n o v e r r i d e t h i s b y s e t t i n g
# C U D A _ V E R B O S E _ B U I L D t o O N .
# CUDA_ADD_CUFFT_TO_TARGET ( cuda_target )
# - - A d d s t h e c u f f t l i b r a r y t o t h e target ( can be any target ) . H a n d l e s w h e t h e r
# y o u a r e i n e m u l a t i o n m o d e o r n o t .
#
# S e t C U D A _ G E N E R A T E D _ O U T P U T _ D I R t o t h e p a t h y o u w i s h t o h a v e t h e g e n e r a t e d f i l e s
# p l a c e d . I f i t i s b l a n k o u t p u t f i l e s w i l l b e p l a c e d i n
# C M A K E _ C U R R E N T _ B I N A R Y _ D I R . I n t e r m e d i a t e f i l e s w i l l a l w a y s b e p l a c e d i n
# C M A K E _ C U R R E N T _ B I N A R Y _ D I R .
# CUDA_ADD_CUBLAS_TO_TARGET ( cuda_target )
# - - A d d s t h e c u b l a s l i b r a r y t o t h e target ( can be any target ) . H a n d l e s
# w h e t h e r y o u a r e i n e m u l a t i o n m o d e o r n o t .
#
# T h e s c r i p t c r e a t e s t h e f o l l o w i n g m a c r o s :
# CUDA_INCLUDE_DIRECTORIES ( path0 path1 ... )
# - - S e t s t h e d i r e c t o r i e s t h a t s h o u l d b e p a s s e d t o n v c c
# ( e . g . n v c c - I p a t h 0 - I p a t h 1 . . . ) . T h e s e p a t h s u s u a l l y c o n t a i n o t h e r . c u
# f i l e s .
# CUDA_ADD_EXECUTABLE ( cuda_target file0 file1 ...
# [ WIN32 ] [ M A C O S X _ B U N D L E ] [ E X C L U D E _ F R O M _ A L L ] [ O P T I O N S . . . ] )
# - - C r e a t e s a n e x e c u t a b l e " c u d a _ t a r g e t " w h i c h i s m a d e u p o f t h e f i l e s
# s p e c i f i e d . A l l o f t h e n o n C U D A C f i l e s a r e c o m p i l e d u s i n g t h e s t a n d a r d
# b u i l d r u l e s s p e c i f i e d b y C M A K E a n d t h e c u d a f i l e s a r e c o m p i l e d t o o b j e c t
# f i l e s u s i n g n v c c a n d t h e h o s t c o m p i l e r . I n a d d i t i o n C U D A _ I N C L U D E _ D I R S i s
# a d d e d a u t o m a t i c a l l y t o include_directories ( ) . S o m e s t a n d a r d C M a k e t a r g e t
# c a l l s c a n b e u s e d o n t h e t a r g e t a f t e r c a l l i n g t h i s m a c r o
# ( e . g . s e t _ t a r g e t _ p r o p e r t i e s a n d t a r g e t _ l i n k _ l i b r a r i e s ) , b u t s e t t i n g
# p r o p e r t i e s t h a t a d j u s t c o m p i l a t i o n f l a g s w i l l n o t a f f e c t c o d e c o m p i l e d b y
# n v c c . S u c h f l a g s s h o u l d b e m o d i f i e d b e f o r e c a l l i n g C U D A _ A D D _ E X E C U T A B L E ,
# C U D A _ A D D _ L I B R A R Y o r C U D A _ W R A P _ S R C S .
#
# CUDA_ADD_LIBRARY ( cuda_target file0 file1 ... [OPTIONS ...] )
# - - C r e a t e s a s h a r e d l i b r a r y " c u d a _ t a r g e t " w h i c h c o n t a i n s a l l o f t h e s o u r c e
# ( * . c , * . c c , e t c . ) s p e c i f i e d a n d a l l o f t h e n v c c ' e d . c u f i l e s s p e c i f i e d .
# A l l o f t h e s p e c i f i e d s o u r c e f i l e s a n d g e n e r a t e d . c p p f i l e s a r e c o m p i l e d
# u s i n g t h e s t a n d a r d C M a k e c o m p i l e r , s o t h e n o r m a l I N C L U D E _ D I R E C T O R I E S ,
# L I N K _ D I R E C T O R I E S , a n d T A R G E T _ L I N K _ L I B R A R I E S c a n b e u s e d t o a f f e c t t h e i r
# b u i l d a n d l i n k . I n a d d i t i o n C U D A _ I N C L U D E _ D I R S i s a d d e d a u t o m a t i c a l l y a d d e d
# t o include_directories ( ) .
# CUDA_ADD_LIBRARY ( cuda_target file0 file1 ...
# [ S T A T I C | S H A R E D | M O D U L E ] [ E X C L U D E _ F R O M _ A L L ] [ O P T I O N S . . . ] )
# - - S a m e a s C U D A _ A D D _ E X E C U T A B L E e x c e p t t h a t a l i b r a r y i s c r e a t e d .
#
# CUDA_ADD_EXECUTABLE ( cuda_target file0 file1 ... [OPTIONS ...] )
# - - S a m e a s C U D A _ A D D _ L I B R A R Y e x c e p t t h a t a n e x e c t u a b l e i s c r e a t e d .
# CUDA_BUILD_CLEAN_TARGET ( )
# - - C r e a t e s a c o n v i e n c e t a r g e t t h a t d e l e t e s a l l t h e d e p e n d e n c y f i l e s
# g e n e r a t e d . Y o u s h o u l d m a k e c l e a n a f t e r r u n n i n g t h i s t a r g e t t o e n s u r e t h e
# d e p e n d e n c y f i l e s g e t r e g e n e r a t e d .
#
# CUDA_COMPILE ( generated_files file0 file1 ... [OPTIONS ...] )
# CUDA_COMPILE ( generated_files file0 file1 ... [STATIC | SHARED | MODULE]
# [ O P T I O N S . . . ] )
# - - R e t u r n s a l i s t o f g e n e r a t e d f i l e s f r o m t h e i n p u t s o u r c e f i l e s t o b e u s e d
# w i t h A D D _ L I B R A R Y o r A D D _ E X E C U T A B L E .
#
# CUDA_COMPILE_PTX ( generated_files file0 file1 ... [OPTIONS ...] )
# - - R e t u r n s a l i s t o f P T X f i l e s g e n e r a t e d f r o m t h e i n p u t s o u r c e f i l e s .
#
# CUDA_INCLUDE_DIRECTORIES ( path0 path1 ... )
# - - S e t s t h e d i r e c t o r i e s t h a t s h o u l d b e p a s s e d t o n v c c
# ( e . g . n v c c - I p a t h 0 - I p a t h 1 . . . ) . T h e s e p a t h s u s u a l l y c o n t a i n o t h e r . c u
# f i l e s .
#
# CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ...
# [ O P T I O N S . . . ] )
# [ S T A T I C | S H A R E D | M O D U L E ] [ O P T I O N S . . . ] )
# - - T h i s i s w h e r e a l l t h e m a g i c h a p p e n s . C U D A _ A D D _ E X E C U T A B L E ,
# C U D A _ A D D _ L I B R A R Y , C U D A _ C O M P I L E , a n d C U D A _ C O M P I L E _ P T X a l l c a l l t h i s f u n c t i o n
# u n d e r t h e h o o d .
# C U D A _ A D D _ L I B R A R Y , C U D A _ C O M P I L E , a n d C U D A _ C O M P I L E _ P T X a l l c a l l t h i s
# f u n c t i o n u n d e r t h e h o o d .
#
# G i v e n t h e l i s t o f files ( file0 file1 ... fileN ) t h i s m a c r o g e n e r a t e s c u s t o m
# c o m m a n d s t h a t g e n e r a t e e i t h e r P T X o r l i n k a b l e objects ( use "PTX" or "OBJ"
# f o r t h e f o r m a t a r g u m e n t t o s w i t c h . F i l e s t h a t d o n ' t e n d w i t h . c u o r h a v e
# t h e H E A D E R _ F I L E _ O N L Y p r o p e r t y a r e i g n o r e d .
# G i v e n t h e l i s t o f files ( file0 file1 ... fileN ) t h i s m a c r o g e n e r a t e s
# c u s t o m c o m m a n d s t h a t g e n e r a t e e i t h e r P T X o r l i n k a b l e objects ( use "PTX" or
# " O B J " f o r t h e f o r m a t a r g u m e n t t o s w i t c h ) . F i l e s t h a t d o n ' t e n d w i t h . c u
# o r h a v e t h e H E A D E R _ F I L E _ O N L Y p r o p e r t y a r e i g n o r e d .
#
# T h e a r g u m e n t s p a s s e d i n a f t e r O P T I O N S a r e e x t r a c o m m a n d l i n e o p t i o n s t o
# g i v e t o NV C C . Y o u c a n a l s o s p e c i f y p e r c o n f i g u r a t i o n o p t i o n s b y s p e c i f y i n g
# t h e n a m e o f t h e c o n f i g u r a t i o n f o l l o w e d b y t h e o p t i o n s . G e n e r a l o p t i o n s
# m u s t p r e c e e d c o n f i g u r a t i o n s p e c i f i c o p t i o n s . N o t a l l c o n f i g u r a t i o n s n e e d
# t o b e s p e c i f i e d , o n l y t h e o n e s p r o v i d e d w i l l b e u s e d .
# g i v e t o nv c c . Y o u c a n a l s o s p e c i f y p e r c o n f i g u r a t i o n o p t i o n s b y
# s p e c i f y i n g t h e n a m e o f t h e c o n f i g u r a t i o n f o l l o w e d b y t h e o p t i o n s . G e n e r a l
# o p t i o n s m u s t p r e c e e d c o n f i g u r a t i o n s p e c i f i c o p t i o n s . N o t a l l
# c o n f i g u r a t i o n s n e e d t o b e s p e c i f i e d , o n l y t h e o n e s p r o v i d e d w i l l b e u s e d .
#
# O P T I O N S - D F L A G = 2 " - D F L A G _ O T H E R = s p a c e i n f l a g "
# D E B U G - g
@ -136,59 +160,56 @@
#
# F o r c e r t a i n configurations ( namely VS generating object files with
# C U D A _ A T T A C H _ V S _ B U I L D _ R U L E _ T O _ C U D A _ F I L E s e t t o O N ) , n o g e n e r a t e d f i l e w i l l
# b e p r o d u c e d f o r t h e g i v e n c u d a f i l e . T h i s i s b e c a u s e w h e n y o u a d d t h e c u d a
# f i l e t o V i s u a l S t u d i o i t k n o w s t h a t t h i s f i l e p r o d u c e s a n d w i l l l i n k i n t h e
# r e s u l t i n g o b j e c t f i l e a u t o m a t i c a l l y .
# b e p r o d u c e d f o r t h e g i v e n c u d a f i l e . T h i s i s b e c a u s e w h e n y o u a d d t h e
# c u d a f i l e t o V i s u a l S t u d i o i t k n o w s t h a t t h i s f i l e p r o d u c e s a n o b j e c t f i l e
# a n d w i l l l i n k i n t h e r e s u l t i n g o b j e c t f i l e a u t o m a t i c a l l y .
#
# T h i s s c r i p t w i l l a l s o g e n e r a t e a s e p a r a t e c m a k e s c r i p t t h a t i s u s e d a t
# b u i l d t i m e t o i n v o k e n v c c . T h i s i s f o r s e r v e r a l r e a s o n s .
#
# 1 . n v c c c a n r e t u r n n e g a t i v e n u m b e r s a s r e t u r n v a l u e s w h i c h c o n f u s e s
# V i s u a l S t u d i o i n t o t h i n k i n g t h a t t h e c o m m a n d s u c c e e d e d . T h e s c r i p t n o w
# c h e c k s t h e e r r o r c o d e s a n d p r o d u c e s e r r o r s w h e n t h e r e w a s a p r o b l e m
# c h e c k s t h e e r r o r c o d e s a n d p r o d u c e s e r r o r s w h e n t h e r e w a s a p r o b l e m .
#
# 2 . n v c c h a s b e e n k n o w n t o n o t d e l e t e i n te r m e d i a t e r e s u l t s w h e n i t
# e n c o u n t e r s p r o b l e m s . T h e b u i l d r u l e s t h e n d o n ' t c o m p l e t e , b e c a u s e t h e r e
# e x i s t s a p a r t i a l l y w r i t t e n o u t p u t f i l e . T h e s c r i p t n o w d e l e t e s t h e
# o u t p u t f i l e s i f t h e r e w a s a n e r r o r .
# 2 . n v c c h a s b e e n k n o w n t o n o t d e l e t e i n co m p l e t e r e s u l t s w h e n i t
# e n c o u n t e r s p r o b l e m s . T h is c o n f u s e s b u i l d s y s t e m s i n t o t h i n k i n g t h e
# t a r g e t w a s g e n e r a t e d w h e n i n f a c t a n u n u s a b l e f i l e e x i s t s . T h e s c r i p t
# n o w d e l e t e s t h e o u t p u t f i l e s i f t h e r e w a s a n e r r o r .
#
# 3 . B y p u t t i n g a l l t h e o p t i o n s t h a t a f f e c t t h e b u i l d i n t o a f i l e a n d t h e n
# m a k e t h e b u i l d r u l e d e p e n d e n t o n t h e f i l e , wh e n t h e o p t i o n s c h a n g e t h e
# o u t p u t f i l e s w i l l b e r e g e n e r a t e d .
# m a k e t h e b u i l d r u l e d e p e n d e n t o n t h e f i l e , th e o u t p u t f i l e s w i l l b e
# r e g e n e r a t e d w h e n t h e o p t i o n s c h a n g e .
#
# CUDA_ADD_CUFFT_TO_TARGET ( cuda_target )
# - - A d d s t h e c u f f t l i b r a r y t o t h e t a r g e t . H a n d l e s w h e t h e r y o u a r e i n e m u l a t i o n
# m o d e o r n o t .
# T h i s s c r i p t a l s o l o o k s a t o p t i o n a l a r g u m e n t s S T A T I C , S H A R E D , o r M O D U L E t o
# d e t e r m i n e w h e n t o t a r g e t t h e o b j e c t c o m p i l a t i o n f o r a s h a r e d l i b r a r y .
# B U I L D _ S H A R E D _ L I B S i s i g n o r e d i n C U D A _ W R A P _ S R C S , b u t i t i s r e s p e c t e d i n
# C U D A _ A D D _ L I B R A R Y . O n s o m e s y s t e m s s p e c i a l f l a g s a r e a d d e d f o r b u i l d i n g
# o b j e c t s i n t e n d e d f o r s h a r e d l i b r a r i e s . A p r e p r o c e s s o r m a c r o ,
# < t a r g e t _ n a m e > _ E X P O R T S i s d e f i n e d w h e n a s h a r e d l i b r a r y c o m p i l a t i o n i s
# d e t e c t e d .
#
# CUDA_ADD_CUBLAS_TO_TARGET ( cuda_target )
# - - A d d s t h e c u b l a s l i b r a r y t o t h e t a r g e t . H a n d l e s w h e t h e r y o u a r e i n e m u l a t i o n
# m o d e o r n o t .
#
# CUDA_BUILD_CLEAN_TARGET ( )
# - - C r e a t e s a c o n v i e n c e t a r g e t t h a t d e l e t e s a l l t h e d e p e n d e n c y f i l e s g e n e r a t e d .
# Y o u s h o u l d m a k e c l e a n a f t e r r u n n i n g t h i s t a r g e t t o e n s u r e t h e d e p e n d e n c y
# f i l e s g e t r e g e n e r a t e d .
# F l a g s p a s s e d i n t o a d d _ d e f i n i t i o n s w i t h - D o r / D a r e p a s s e d a l o n g t o n v c c .
#
# T h e s c r i p t d e f i n e s t h e f o l l o w i n g v a r i a b l e s :
#
# ( N o t e C U D A _ A D D _ * m a c r o s s e t u p c u d a / c u t l i b r a r y d e p e n d e n c i e s a u t o m a t i c a l l y .
# T h e s e v a r i a b l e s a r e o n l y n e e d e d i f a c u d a A P I c a l l m u s t b e m a d e f r o m c o d e i n
# a o u t s i d e l i b r a r y o r e x e c u t a b l e . )
#
# C U D A _ V E R S I O N _ M A J O R - - T h e m a j o r v e r s i o n o f c u d a a s r e p o r t e d b y n v c c .
# C U D A _ V E R S I O N _ M I N O R - - T h e m i n o r v e r s i o n .
# C U D A _ V E R S I O N
# C U D A _ V E R S I O N _ S T R I N G - - C U D A _ V E R S I O N _ M A J O R . C U D A _ V E R S I O N _ M I N O R
#
# C U D A _ T O O L K I T _ R O O T _ D I R - - P a t h t o t h e C U D A Toolkit ( defined if not set ) .
# C U D A _ S D K _ R O O T _ D I R - - P a t h t o t h e C U D A S D K . U s e t h i s t o f i n d f i l e s i n t h e
# S D K . T h i s s c r i p t w i l l n o t d i r e c t l y s u p p o r t f i n d i n g
# s p e c i f i c l i b r a r i e s o r h e a d e r s , a s t h a t i s n ' t
# s u p p o r t e d b y N V I D I A . I f y o u w a n t t o c h a n g e
# l i b r a r i e s w h e n t h e p a t h c h a n g e s s e e t h e
# F i n d C U D A . c m a k e s c r i p t f o r a n e x a m p l e o f h o w t o c l e a r
# t h e s e v a r i a b l e s . T h e r e a r e a l s o e x a m p l e s o f h o w t o
# u s e t h e C U D A _ S D K _ R O O T _ D I R t o l o c a t e h e a d e r s o r
# l i b r a r i e s , i f y o u s o choose ( at your own risk ) .
# C U D A _ I N C L U D E _ D I R S - - I n c l u d e d i r e c t o r y f o r c u d a h e a d e r s . A d d e d a u t o m a t i c a l l y
# f o r C U D A _ A D D _ E X E C U T A B L E a n d C U D A _ A D D _ L I B R A R Y .
# C U D A _ L I B R A R I E S - - C u d a R T l i b r a r y .
# C U D A _ C U T _ I N C L U D E _ D I R - - I n c l u d e d i r e c t o r y f o r c u d a S D K headers ( cutil.h ) .
# C U D A _ C U T _ L I B R A R I E S - - S D K l i b r a r i e s .
# C U D A _ N V C C _ F L A G S - - A d d i t i o n a l N V C C c o m m a n d l i n e a r g u m e n t s . N O T E :
# m u l t i p l e a r g u m e n t s m u s t b e s e m i - c o l o n d e l i m i t e d
# e . g . - - c o m p i l e r - o p t i o n s ; - W a l l
# C U D A _ N V C C _ F L A G S _ < C O N F I G > - - C o n f u g r a t i o n s p e c i f i c f l a g s f o r N V C C .
# C U D A _ C U F F T _ L I B R A R I E S - - D e v i c e o r e m u l a t i o n l i b r a r y f o r t h e C u d a F F T
# implementation ( alternative to:
# C U D A _ A D D _ C U F F T _ T O _ T A R G E T m a c r o )
@ -197,35 +218,45 @@
# C U D A _ A D D _ C U B L A S _ T O _ T A R G E T m a c r o ) .
#
#
# T h e s c r i p t n o w b u i l d s o b j e c t f i l e s i n s t e a d o f g e n e r a t i n g C f i l e s . I n o r d e r t o
# f a c i l i t a t e t h i s , t h e s c r i p t n o w m a k e s u s e o f t h e C M A K E _ { C , C X X } _ F L A G S a l o n g
# w i t h t h e i r c o n f i g u r a t i o n d e p e n d e n t counterparts ( i.e. CMAKE_C_FLAGS_DEBUG ) .
# T h e s e f l a g s a r e p a s s e d t h r o u g h n v c c t o t h e n a t i v e c o m p i l e r . I n a d d i t i o n , o n
# s o m e s y s t e m s s p e c i a l f l a g s a r e a d d e d f o r b u i l d i n g o b j e c t s i n t e n d e d f o r s h a r e d
# l i b r a r i e s . F i n d C U D A m a k e u s e o f t h e C M a k e v a r i a b l e B U I L D _ S H A R E D _ L I B S t o
# d e t e r m i n e i f t h e s e f l a g s s h o u l d b e u s e d . P l e a s e s e t t h i s v a r i a b l e a c c o r d i n g
# t o h o w t h e o b j e c t s a r e t o b e u s e d b e f o r e c a l l i n g C U D A _ A D D _ L I B R A R Y . A
# p r e p r o c e s s o r m a c r o , < t a r g e t _ n a m e > _ E X P O R T S i s d e f i n e d w h e n B U I L D _ S H A R E D _ L I B S i s
# d e f i n e d . I n a d d i t i o n , f l a g s p a s s e d i n t o a d d _ d e f i n i t i o n s w i t h - D o r / D a r e
# p a s s e d a l o n g t o n v c c .
# J a m e s B i g l e r , N V I D I A Corp ( nvidia.com - jbigler )
# A b e S t e p h e n s , S C I I n s t i t u t e - - h t t p : / / w w w . s c i . u t a h . e d u / ~ a b e / F i n d C u d a . h t m l
#
# F i l e s w i t h t h e H E A D E R _ F I L E _ O N L Y p r o p e r t y s e t w i l l n o t b e c o m p i l e d .
# Copyright ( c ) 2 0 0 8 - 2 0 0 9 N V I D I A C o r p o r a t i o n . A l l r i g h t s r e s e r v e d .
#
# I t m i g h t b e n e c e s s a r y t o s e t C U D A _ T O O L K I T _ R O O T _ D I R m a n u a l l y o n c e r t a i n p l a t f o r m s ,
# o r t o u s e a c u d a r u n t i m e n o t i n s t a l l e d i n t h e d e f a u l t l o c a t i o n . I n n e w e r
# v e r s i o n s o f t h e t o o l k i t t h e c u d a l i b r a r y i s i n c l u d e d w i t h t h e g r a p h i c s
# d r i v e r - b e s u r e t h a t t h e d r i v e r v e r s i o n m a t c h e s w h a t i s n e e d e d b y t h e c u d a
# r u n t i m e v e r s i o n .
# Copyright ( c ) 2 0 0 7 - 2 0 0 9
# S c i e n t i f i c C o m p u t i n g a n d I m a g i n g I n s t i t u t e , U n i v e r s i t y o f U t a h
#
# T h i s c o d e i s l i c e n s e d u n d e r t h e M I T L i c e n s e . S e e t h e F i n d C U D A . c m a k e s c r i p t
# f o r t h e t e x t o f t h e l i c e n s e .
# T h e M I T L i c e n s e
#
# L i c e n s e f o r t h e s p e c i f i c l a n g u a g e g o v e r n i n g r i g h t s a n d l i m i t a t i o n s u n d e r
# P e r m i s s i o n i s h e r e b y g r a n t e d , f r e e o f c h a r g e , t o a n y p e r s o n o b t a i n i n g a
# c o p y o f t h i s s o f t w a r e a n d a s s o c i a t e d d o c u m e n t a t i o n files ( the "Software" ) ,
# t o d e a l i n t h e S o f t w a r e w i t h o u t r e s t r i c t i o n , i n c l u d i n g w i t h o u t l i m i t a t i o n
# t h e r i g h t s t o u s e , c o p y , m o d i f y , m e r g e , p u b l i s h , d i s t r i b u t e , s u b l i c e n s e ,
# a n d / o r s e l l c o p i e s o f t h e S o f t w a r e , a n d t o p e r m i t p e r s o n s t o w h o m t h e
# S o f t w a r e i s f u r n i s h e d t o d o s o , s u b j e c t t o t h e f o l l o w i n g c o n d i t i o n s :
#
# T h e a b o v e c o p y r i g h t n o t i c e a n d t h i s p e r m i s s i o n n o t i c e s h a l l b e i n c l u d e d
# i n a l l c o p i e s o r s u b s t a n t i a l p o r t i o n s o f t h e S o f t w a r e .
#
# T H E S O F T W A R E I S P R O V I D E D " A S I S " , W I T H O U T W A R R A N T Y O F A N Y K I N D , E X P R E S S
# O R I M P L I E D , I N C L U D I N G B U T N O T L I M I T E D T O T H E W A R R A N T I E S O F M E R C H A N T A B I L I T Y ,
# F I T N E S S F O R A P A R T I C U L A R P U R P O S E A N D N O N I N F R I N G E M E N T . I N N O E V E N T S H A L L
# T H E A U T H O R S O R C O P Y R I G H T H O L D E R S B E L I A B L E F O R A N Y C L A I M , D A M A G E S O R O T H E R
# L I A B I L I T Y , W H E T H E R I N A N A C T I O N O F C O N T R A C T , T O R T O R O T H E R W I S E , A R I S I N G
# F R O M , O U T O F O R I N C O N N E C T I O N W I T H T H E S O F T W A R E O R T H E U S E O R O T H E R
# D E A L I N G S I N T H E S O F T W A R E .
#
# - - A b e S t e p h e n s S C I I n s t i t u t e - - h t t p : / / w w w . s c i . u t a h . e d u / ~ a b e / F i n d C u d a . h t m l
# - - J a m e s B i g l e r N V I D I A C o r p
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# F i n d C U D A . c m a k e
# W e n e e d t o h a v e a t l e a s t t h i s v e r s i o n t o s u p p o r t t h e V E R S I O N _ L E S S a r g u m e n t t o ' i f ' .
# W e n e e d t o h a v e a t l e a s t t h i s v e r s i o n t o s u p p o r t t h e V E R S I O N _ L E S S a r g u m e n t t o ' i f ' ( 2 . 6 . 2 ) a n d unset ( 2.6.3 )
cmake_policy ( PUSH )
cmake_minimum_required ( VERSION 2.6.2 )
cmake_minimum_required ( VERSION 2.6. 3 )
cmake_policy ( POP )
# T h i s m a c r o h e l p s u s f i n d t h e l o c a t i o n o f h e l p e r f i l e s w e w i l l n e e d t h e f u l l p a t h t o
@ -235,7 +266,7 @@ macro(CUDA_FIND_HELPER_FILE _name _extension)
# p r o c e s s e d . U s i n g t h i s v a r i a b l e , w e c a n p u l l o u t t h e c u r r e n t p a t h , a n d
# p r o v i d e a w a y t o g e t a c c e s s t o t h e o t h e r f i l e s w e n e e d l o c a l t o h e r e .
get_filename_component ( CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH )
find_file ( CUDA_ ${ _name } ${ _full_name } PATHS ${ CMAKE_CURRENT_LIST_DIR } NO_DEFAULT_PATH )
find_file ( CUDA_ ${ _name } ${ _full_name } PATHS ${ CMAKE_CURRENT_LIST_DIR } /FindCUDA NO_DEFAULT_PATH )
if ( NOT CUDA_ ${ _name } )
set ( error_message "${_full_name} not found in CMAKE_MODULE_PATH" )
if ( CUDA_FIND_REQUIRED )
@ -315,14 +346,10 @@ endmacro(CUDA_INCLUDE_NVCC_DEPENDENCIES)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# S e t u p de f a u l t v a r i a b l e s
# S e t u p va r i a b l e s ' d e f a u l t s
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# S e t w h e t h e r w e a r e u s i n g e m u l a t i o n o r d e v i c e m o d e .
option ( CUDA_BUILD_EMULATION "Build in Emulation mode" OFF )
# P a r s e H O S T _ C O M P I L A T I O N m o d e .
option ( CUDA_HOST_COMPILATION_CPP "Generated file extension" ON )
# A l l o w t h e u s e r t o s p e c i f y i f t h e d e v i c e c o d e i s s u p p o s e d t o b e 3 2 o r 6 4 b i t .
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( CUDA_64_BIT_DEVICE_CODE_DEFAULT ON )
@ -330,22 +357,38 @@ else()
set ( CUDA_64_BIT_DEVICE_CODE_DEFAULT OFF )
endif ( )
option ( CUDA_64_BIT_DEVICE_CODE "Compile device code in 64 bit mode" ${ CUDA_64_BIT_DEVICE_CODE_DEFAULT } )
# A t t a c h t h e b u i l d r u l e t o t h e s o u r c e f i l e i n V S . T h i s o p t i o n
option ( CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE "Attach the build rule to the CUDA source file. Enable only when the CUDA source file is added to at most one target." ON )
# P r i n t s o u t e x t r a i n f o r m a t i o n a b o u t t h e c u d a f i l e d u r i n g c o m p i l a t i o n
option ( CUDA_BUILD_CUBIN "Generate and parse .cubin files in Device mode." ON )
option ( CUDA_BUILD_CUBIN "Generate and parse .cubin files in Device mode." OFF )
# S e t w h e t h e r w e a r e u s i n g e m u l a t i o n o r d e v i c e m o d e .
option ( CUDA_BUILD_EMULATION "Build in Emulation mode" OFF )
# W h e r e t o p u t t h e g e n e r a t e d o u t p u t .
set ( CUDA_GENERATED_OUTPUT_DIR "" CACHE PATH "Directory to put all the output files. If blank it will default to the CMAKE_CURRENT_BINARY_DIR" )
# P a r s e H O S T _ C O M P I L A T I O N m o d e .
option ( CUDA_HOST_COMPILATION_CPP "Generated file extension" ON )
# E x t r a u s e r s e t t a b l e f l a g s
set ( CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments." )
# A t t a c h t h e b u i l d r u l e t o t h e s o u r c e f i l e i n V S . T h i s o p t i o n
option ( CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE "Attach the build rule to the CUDA source file. Enable only when the CUDA source file is added to at most one target." ON )
# P r o p a g a t e t h e h o s t f l a g s t o t h e h o s t c o m p i l e r v i a - X c o m p i l e r
option ( CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" ON )
# S p e c i f i e s w h e t h e r t h e c o m m a n d s u s e d w h e n c o m p i l i n g t h e . c u f i l e w i l l b e p r i n t e d o u t .
option ( CUDA_VERBOSE_BUILD "Print out the commands run while compiling the CUDA source file. With the Makefile generator this defaults to VERBOSE variable specified on the command line, but can be forced on with this option." OFF )
# W h e r e t o p u t t h e g e n e r a t e d o u t p u t .
set ( CUDA_GENERATED_OUTPUT_DIR "" CACHE PATH "Directory to put all the output files. If blank it will default to the CMAKE_CURRENT_BINARY_DIR" )
mark_as_advanced (
C U D A _ H O S T _ C O M P I L A T I O N _ C P P
C U D A _ 6 4 _ B I T _ D E V I C E _ C O D E
C U D A _ N V C C _ F L A G S
C U D A _ A T T A C H _ V S _ B U I L D _ R U L E _ T O _ C U D A _ F I L E
C U D A _ G E N E R A T E D _ O U T P U T _ D I R
C U D A _ H O S T _ C O M P I L A T I O N _ C P P
C U D A _ N V C C _ F L A G S
C U D A _ P R O P A G A T E _ H O S T _ F L A G S
)
# M a k e f i l e a n d s i m i l a r g e n e r a t o r s d o n ' t d e f i n e C M A K E _ C O N F I G U R A T I O N _ T Y P E S , s o w e
@ -383,8 +426,11 @@ if(NOT "${CUDA_TOOLKIT_ROOT_DIR}" STREQUAL "${CUDA_TOOLKIT_ROOT_DIR_INTERNAL}")
endif ( )
if ( NOT "${CUDA_SDK_ROOT_DIR}" STREQUAL "${CUDA_SDK_ROOT_DIR_INTERNAL}" )
unset ( CUDA_CUT_INCLUDE_DIR CACHE )
unset ( CUDA_CUT_LIBRARY CACHE )
# N o s p e c i f i c v a r i a b l e s t o c a t c h . U s e t h i s k i n d o f c o d e b e f o r e c a l l i n g
# find_package ( CUDA ) t o c l e a n u p a n y v a r i a b l e s t h a t m a y d e p e n d o n t h i s p a t h .
# unset ( MY_SPECIAL_CUDA_SDK_INCLUDE_DIR CACHE )
# unset ( MY_SPECIAL_CUDA_SDK_LIBRARY CACHE )
endif ( )
# S e a r c h f o r t h e c u d a d i s t r i b u t i o n .
@ -406,7 +452,7 @@ if(NOT CUDA_TOOLKIT_ROOT_DIR)
)
if ( CUDA_TOOLKIT_ROOT_DIR )
string ( REGEX REPLACE "[/\\\\]?bin[ /\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${ CUDA_TOOLKIT_ROOT_DIR } )
string ( REGEX REPLACE "[/\\\\]?bin[ 64]*[ /\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${ CUDA_TOOLKIT_ROOT_DIR } )
# W e n e e d t o f o r c e t h i s b a c k i n t o t h e c a c h e .
set ( CUDA_TOOLKIT_ROOT_DIR ${ CUDA_TOOLKIT_ROOT_DIR } CACHE PATH "Toolkit location." FORCE )
endif ( CUDA_TOOLKIT_ROOT_DIR )
@ -423,6 +469,7 @@ endif (NOT CUDA_TOOLKIT_ROOT_DIR)
find_program ( CUDA_NVCC_EXECUTABLE
N A M E S n v c c
P A T H S " $ { C U D A _ T O O L K I T _ R O O T _ D I R } / b i n "
" $ { C U D A _ T O O L K I T _ R O O T _ D I R } / b i n 6 4 "
E N V C U D A _ B I N _ P A T H
N O _ D E F A U L T _ P A T H
)
@ -432,7 +479,7 @@ mark_as_advanced(CUDA_NVCC_EXECUTABLE)
if ( CUDA_NVCC_EXECUTABLE AND NOT CUDA_VERSION )
# C o m p u t e t h e v e r s i o n .
exec _program( ${ CUDA_NVCC_EXECUTABLE } ARGS "--version" OUTPUT_VARIABLE NVCC_OUT )
exec ute_process ( COMMAND ${ CUDA_NVCC_EXECUTABLE } "--version" OUTPUT_VARIABLE NVCC_OUT )
string ( REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\1" CUDA_VERSION_MAJOR ${ NVCC_OUT } )
string ( REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\2" CUDA_VERSION_MINOR ${ NVCC_OUT } )
set ( CUDA_VERSION "${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}" CACHE STRING "Version of CUDA as computed from nvcc." )
@ -481,9 +528,13 @@ set (CUDA_NVCC_INCLUDE_ARGS_USER "")
set ( CUDA_INCLUDE_DIRS ${ CUDA_TOOLKIT_INCLUDE } )
macro ( FIND_LIBRARY_LOCAL_FIRST _var _names _doc )
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( _cuda_64bit_lib_dir "${CUDA_TOOLKIT_ROOT_DIR}/lib64" )
endif ( )
find_library ( ${ _var }
N A M E S $ { _ n a m e s }
P A T H S " $ { C U D A _ T O O L K I T _ R O O T _ D I R } / l i b "
P A T H S $ { _ c u d a _ 6 4 b i t _ l i b _ d i r }
" $ { C U D A _ T O O L K I T _ R O O T _ D I R } / l i b "
E N V C U D A _ L I B _ P A T H
D O C $ { _ d o c }
N O _ D E F A U L T _ P A T H
@ -495,6 +546,14 @@ endmacro()
# C U D A _ L I B R A R I E S
find_library_local_first ( CUDA_CUDART_LIBRARY cudart "\" cudart\ " library" )
set ( CUDA_LIBRARIES ${ CUDA_CUDART_LIBRARY } )
if ( APPLE )
# W e n e e d t o a d d t h e p a t h t o c u d a r t t o t h e l i n k e r u s i n g r p a t h , s i n c e t h e
# l i b r a r y n a m e f o r t h e c u d a l i b r a r i e s i s p r e p e n d e d w i t h @ r p a t h .
get_filename_component ( _cuda_path_to_cudart "${CUDA_CUDART_LIBRARY}" PATH )
if ( _cuda_path_to_cudart )
list ( APPEND CUDA_LIBRARIES -Wl,-rpath "-Wl,${_cuda_path_to_cudart}" )
endif ( )
endif ( )
# 1 . 1 t o o l k i t o n l i n u x d o e s n ' t a p p e a r t o h a v e a s e p a r a t e l i b r a r y o n
# s o m e p l a t f o r m s .
@ -536,6 +595,7 @@ endif()
find_path ( CUDA_SDK_ROOT_DIR common/inc/cutil.h
" $ E N V { N V S D K C U D A _ R O O T } "
" [ H K E Y _ L O C A L _ M A C H I N E \ \ S O F T W A R E \ \ N V I D I A C o r p o r a t i o n \ \ I n s t a l l e d P r o d u c t s \ \ N V I D I A S D K 1 0 \ \ C o m p u t e ; I n s t a l l D i r ] "
" / D e v e l o p e r / G P U \ C o m p u t i n g / C "
)
# K e e p t h e C U D A _ S D K _ R O O T _ D I R f i r s t i n o r d e r t o b e a b l e t o o v e r r i d e t h e
@ -549,43 +609,46 @@ set(CUDA_SDK_SEARCH_PATH
" $ E N V { H O M E } / N V I D I A _ C U D A _ S D K _ M A C O S X "
" / D e v e l o p e r / C U D A "
)
# C U D A _ C U T _ I N C L U D E _ D I R
find_path ( CUDA_CUT_INCLUDE_DIR
c u t i l . h
P A T H S $ { C U D A _ S D K _ S E A R C H _ P A T H }
P A T H _ S U F F I X E S " c o m m o n / i n c "
D O C " L o c a t i o n o f c u t i l . h "
N O _ D E F A U L T _ P A T H
)
# N o w s e a r c h s y s t e m p a t h s
find_path ( CUDA_CUT_INCLUDE_DIR cutil.h DOC "Location of cutil.h" )
mark_as_advanced ( CUDA_CUT_INCLUDE_DIR )
# E x a m p l e o f h o w t o f i n d a n i n c l u d e f i l e f r o m t h e C U D A _ S D K _ R O O T _ D I R
# find_path ( CUDA_CUT_INCLUDE_DIR
# c u t i l . h
# P A T H S $ { C U D A _ S D K _ S E A R C H _ P A T H }
# P A T H _ S U F F I X E S " c o m m o n / i n c "
# D O C " L o c a t i o n o f c u t i l . h "
# N O _ D E F A U L T _ P A T H
# )
# # N o w s e a r c h s y s t e m p a t h s
# find_path ( CUDA_CUT_INCLUDE_DIR cutil.h DOC "Location of cutil.h" )
# C U D A _ C U T _ L I B R A R I E S
# mark_as_advanced ( CUDA_CUT_INCLUDE_DIR )
# c u t i l l i b r a r y i s c a l l e d c u t i l 6 4 f o r 6 4 b i t b u i l d s o n w i n d o w s . W e d o n ' t w a n t
# t o g e t t h e s e c o n f u s e d , s o w e a r e s e t t i n g t h e n a m e b a s e d o n t h e w o r d s i z e o f
# t h e b u i l d .
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( cuda_cutil_name cutil64 )
else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( cuda_cutil_name cutil32 )
endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
find_library ( CUDA_CUT_LIBRARY
N A M E S c u t i l $ { c u d a _ c u t i l _ n a m e }
P A T H S $ { C U D A _ S D K _ S E A R C H _ P A T H }
# T h e n e w v e r s i o n o f t h e s d k s h o w s u p i n c o m m o n / l i b , b u t t h e o l d o n e i s i n l i b
P A T H _ S U F F I X E S " c o m m o n / l i b " " l i b "
D O C " L o c a t i o n o f c u t i l l i b r a r y "
N O _ D E F A U L T _ P A T H
)
# N o w s e a r c h s y s t e m p a t h s
find_library ( CUDA_CUT_LIBRARY NAMES cutil ${ cuda_cutil_name } DOC "Location of cutil library" )
mark_as_advanced ( CUDA_CUT_LIBRARY )
set ( CUDA_CUT_LIBRARIES ${ CUDA_CUT_LIBRARY } )
# E x a m p l e o f h o w t o f i n d a l i b r a r y i n t h e C U D A _ S D K _ R O O T _ D I R
# # c u t i l l i b r a r y i s c a l l e d c u t i l 6 4 f o r 6 4 b i t b u i l d s o n w i n d o w s . W e d o n ' t w a n t
# # t o g e t t h e s e c o n f u s e d , s o w e a r e s e t t i n g t h e n a m e b a s e d o n t h e w o r d s i z e o f
# # t h e b u i l d .
# if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
# set ( cuda_cutil_name cutil64 )
# else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
# set ( cuda_cutil_name cutil32 )
# endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
# find_library ( CUDA_CUT_LIBRARY
# N A M E S c u t i l $ { c u d a _ c u t i l _ n a m e }
# P A T H S $ { C U D A _ S D K _ S E A R C H _ P A T H }
# # T h e n e w v e r s i o n o f t h e s d k s h o w s u p i n c o m m o n / l i b , b u t t h e o l d o n e i s i n l i b
# P A T H _ S U F F I X E S " c o m m o n / l i b " " l i b "
# D O C " L o c a t i o n o f c u t i l l i b r a r y "
# N O _ D E F A U L T _ P A T H
# )
# # N o w s e a r c h s y s t e m p a t h s
# find_library ( CUDA_CUT_LIBRARY NAMES cutil ${ cuda_cutil_name } DOC "Location of cutil library" )
# mark_as_advanced ( CUDA_CUT_LIBRARY )
# set ( CUDA_CUT_LIBRARIES ${ CUDA_CUT_LIBRARY } )
@ -632,13 +695,23 @@ cuda_find_helper_file(run_nvcc cmake)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# S e p a r a t e t h e O P T I O N S o u t f r o m t h e s o u r c e s
#
macro ( CUDA_GET_SOURCES_AND_OPTIONS _sources _ options)
macro ( CUDA_GET_SOURCES_AND_OPTIONS _sources _ cmake_options _ options)
set ( ${ _sources } )
set ( ${ _cmake_options } )
set ( ${ _options } )
set ( _found_options FALSE )
foreach ( arg ${ ARGN } )
if ( arg STREQUAL "OPTIONS" )
set ( _found_options TRUE )
elseif (
a r g S T R E Q U A L " WIN32 " O R
a r g S T R E Q U A L " M A C O S X _ B U N D L E " O R
a r g S T R E Q U A L " E X C L U D E _ F R O M _ A L L " O R
a r g S T R E Q U A L " S T A T I C " O R
a r g S T R E Q U A L " S H A R E D " O R
a r g S T R E Q U A L " M O D U L E "
)
list ( APPEND ${ _cmake_options } "${arg}" )
else ( )
if ( _found_options )
list ( APPEND ${ _options } "${arg}" )
@ -689,6 +762,27 @@ function(CUDA_ADD_CUDA_INCLUDE_ONCE)
endif ( )
endfunction ( )
function ( CUDA_BUILD_SHARED_LIBRARY shared_flag )
set ( cmake_args ${ ARGN } )
# I f S H A R E D , M O D U L E , o r S T A T I C a r e n ' t a l r e a d y i n t h e l i s t o f a r g u m e n t s , t h e n
# a d d S H A R E D o r S T A T I C b a s e d o n t h e v a l u e o f B U I L D _ S H A R E D _ L I B S .
list ( FIND cmake_args SHARED _cuda_found_SHARED )
list ( FIND cmake_args MODULE _cuda_found_MODULE )
list ( FIND cmake_args STATIC _cuda_found_STATIC )
if ( _cuda_found_SHARED GREATER -1 OR
_ c u d a _ f o u n d _ M O D U L E G R E A T E R - 1 O R
_ c u d a _ f o u n d _ S T A T I C G R E A T E R - 1 )
set ( _cuda_build_shared_libs )
else ( )
if ( BUILD_SHARED_LIBS )
set ( _cuda_build_shared_libs SHARED )
else ( )
set ( _cuda_build_shared_libs STATIC )
endif ( )
endif ( )
set ( ${ shared_flag } ${ _cuda_build_shared_libs } PARENT_SCOPE )
endfunction ( )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# T h i s h e l p e r m a c r o p o p u l a t e s t h e f o l l o w i n g v a r i a b l e s a n d s e t u p s u p c u s t o m
# c o m m a n d s a n d t a r g e t s t o i n v o k e t h e n v c c c o m p i l e r t o g e n e r a t e C o r P T X s o u r c e
@ -730,7 +824,11 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
if ( CUDA_HOST_COMPILATION_CPP )
set ( CUDA_C_OR_CXX CXX )
else ( CUDA_HOST_COMPILATION_CPP )
if ( CUDA_VERSION VERSION_LESS "3.0" )
set ( nvcc_flags ${ nvcc_flags } --host-compilation C )
else ( )
message ( WARNING "--host-compilation flag is deprecated in CUDA version >= 3.0. Removing --host-compilation C flag" )
endif ( )
set ( CUDA_C_OR_CXX C )
endif ( CUDA_HOST_COMPILATION_CPP )
@ -778,16 +876,40 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
set ( CUDA_WRAP_OPTION_NVCC_FLAGS_ ${ config_upper } )
endforeach ( )
CUDA_GET_SOURCES_AND_OPTIONS ( _cuda_wrap_sources _cuda_wrap_ options ${ ARGN } )
CUDA_GET_SOURCES_AND_OPTIONS ( _cuda_wrap_sources _cuda_wrap_ cmake_options _cuda_wrap_ options ${ ARGN } )
CUDA_PARSE_NVCC_OPTIONS ( CUDA_WRAP_OPTION_NVCC_FLAGS ${ _cuda_wrap_options } )
# F i g u r e o u t i f w e a r e b u i l d i n g a s h a r e d l i b r a r y . B U I L D _ S H A R E D _ L I B S i s
# r e s p e c t e d i n C U D A _ A D D _ L I B R A R Y .
set ( _cuda_build_shared_libs FALSE )
# S H A R E D , M O D U L E
list ( FIND _cuda_wrap_cmake_options SHARED _cuda_found_SHARED )
list ( FIND _cuda_wrap_cmake_options MODULE _cuda_found_MODULE )
if ( _cuda_found_SHARED GREATER -1 OR _cuda_found_MODULE GREATER -1 )
set ( _cuda_build_shared_libs TRUE )
endif ( )
# S T A T I C
list ( FIND _cuda_wrap_cmake_options STATIC _cuda_found_STATIC )
if ( _cuda_found_STATIC GREATER -1 )
set ( _cuda_build_shared_libs FALSE )
endif ( )
# C U D A _ H O S T _ F L A G S
if ( BUILD_SHARED_LIBS )
# I f B U I L D _ S H A R E D _ L I B S i s t r u e , t h e n w e n e e d t o a d d e x t r a f l a g s f o r
if ( _cuda_build_shared_libs )
# I f we a r e s e t t i n g u p c o d e f o r a s h a r e d l i b r a r y , t h e n w e n e e d t o a d d e x t r a f l a g s f o r
# c o m p i l i n g o b j e c t s f o r s h a r e d l i b r a r i e s .
set ( CUDA_HOST_SHARED_FLAGS ${ CMAKE_SHARED_LIBRARY_${CUDA_C_OR_CXX } _FLAGS} )
else ( )
set ( CUDA_HOST_SHARED_FLAGS )
endif ( )
# O n l y a d d t h e C M A K E _ { C , C X X } _ F L A G S i f w e a r e p r o p a g a t i n g h o s t f l a g s . W e
# a l w a y s n e e d t o s e t t h e S H A R E D _ F L A G S , t h o u g h .
if ( CUDA_PROPAGATE_HOST_FLAGS )
set ( CUDA_HOST_FLAGS "set(CMAKE_HOST_FLAGS ${CMAKE_${CUDA_C_OR_CXX}_FLAGS} ${CUDA_HOST_SHARED_FLAGS})" )
else ( )
set ( CUDA_HOST_FLAGS "set(CMAKE_HOST_FLAGS ${CUDA_HOST_SHARED_FLAGS})" )
endif ( )
set ( CUDA_NVCC_FLAGS_CONFIG "# Build specific configuration flags" )
# L o o p o v e r a l l t h e c o n f i g u r a t i o n t y p e s t o g e n e r a t e a p p r o p r i a t e f l a g s f o r r u n _ n v c c . c m a k e
foreach ( config ${ CUDA_configuration_types } )
@ -795,19 +917,29 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
# C M A K E _ F L A G S a r e s t r i n g s a n d n o t l i s t s . B y n o t p u t t i n g q u o t e s a r o u n d C M A K E _ F L A G S
# w e c o n v e r t t h e s t r i n g s t o lists ( like we want ) .
if ( CUDA_PROPAGATE_HOST_FLAGS )
# n v c c c h o k e s o n - g 3 , s o r e p l a c e i t w i t h - g
if ( CMAKE_COMPILER_IS_GNUCC )
string ( REPLACE "-g3" "-g" _cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}" )
else ( )
set ( _cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}" )
endif ( )
set ( CUDA_HOST_FLAGS "${CUDA_HOST_FLAGS}\nset(CMAKE_HOST_FLAGS_${config_upper} ${_cuda_C_FLAGS})" )
endif ( )
# N o t e t h a t i f w e e v e r w a n t C U D A _ N V C C _ F L A G S _ < C O N F I G > t o b e string ( instead of a list
# l i k e i t i s c u r r e n t l y ) , w e c a n r e m o v e t h e q u o t e s a r o u n d t h e
# $ { C U D A _ N V C C _ F L A G S _ $ { c o n f i g _ u p p e r } } v a r i a b l e l i k e t h e C M A K E _ H O S T _ F L A G S _ < C O N F I G > v a r i a b l e .
set ( CUDA_NVCC_FLAGS_CONFIG "${CUDA_NVCC_FLAGS_CONFIG}\nset(CUDA_NVCC_FLAGS_${config_upper} \" ${ CUDA_NVCC_FLAGS_${config_upper } }; ${ CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper } }\ ")" )
set ( CUDA_NVCC_FLAGS_CONFIG "${CUDA_NVCC_FLAGS_CONFIG}\nset(CUDA_NVCC_FLAGS_${config_upper} \" ${ CUDA_NVCC_FLAGS_${config_upper } }; ; ${ CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper } }\ ")" )
endforeach ( )
if ( compile_to_ptx )
# D o n ' t u s e a n y o f t h e h o s t c o m p i l a t i o n f l a g s f o r P T X t a r g e t s .
set ( CUDA_HOST_FLAGS )
set ( CUDA_NVCC_FLAGS_CONFIG )
endif ( )
# G e t t h e l i s t o f d e f i n i t i o n s f r o m t h e d i r e c t o r y p r o p e r t y
get_directory_property ( CUDA_NVCC_DEFINITIONS COMPILE_DEFINITIONS )
if ( CUDA_NVCC_DEFINITIONS )
@ -816,7 +948,7 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
endforeach ( )
endif ( )
if ( BUILD_SHARED_LIBS )
if ( _cuda_build_shared_libs )
list ( APPEND nvcc_flags "-D${cuda_target}_EXPORTS" )
endif ( )
@ -856,10 +988,10 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
# a r g u m e n t , s o t h a t t h e $ { C M A K E _ C F G _ I N T D I R } g e t s e x p a n d e d a t r u n t i m e
# i n s t e a d o f c o n f i g u r e t i m e .
set ( generated_file "${generated_file_path}/${generated_file_basename}" )
set ( cmake_dependency_file "${CMAKE_CURRENT_BINARY_DIR}/ ${generated_file_basename}.depend")
set ( NVCC_generated_dependency_file "${CMAKE_CURRENT_BINARY_DIR}/ ${generated_file_basename}.NVCC-depend")
set ( cmake_dependency_file "${CMAKE_CURRENT_BINARY_DIR}/ CMakeFiles/ ${generated_file_basename}.depend")
set ( NVCC_generated_dependency_file "${CMAKE_CURRENT_BINARY_DIR}/ CMakeFiles/ ${generated_file_basename}.NVCC-depend")
set ( generated_cubin_file "${generated_file_path}/${generated_file_basename}.cubin.txt" )
set ( custom_target_script "${CMAKE_CURRENT_BINARY_DIR}/ ${generated_file_basename}.cmake")
set ( custom_target_script "${CMAKE_CURRENT_BINARY_DIR}/ CMakeFiles/ ${generated_file_basename}.cmake")
# S e t u p p r o p e r t i e s f o r o b j f i l e s :
if ( NOT compile_to_ptx )
@ -930,6 +1062,8 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
$ { m a i n _ d e p }
D E P E N D S $ { C U D A _ N V C C _ D E P E N D }
D E P E N D S $ { c u s t o m _ t a r g e t _ s c r i p t }
# M a k e s u r e t h e o u t p u t d i r e c t o r y e x i s t s b e f o r e t r y i n g t o w r i t e t o i t .
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y " $ { g e n e r a t e d _ f i l e _ p a t h } "
C O M M A N D $ { C M A K E _ C O M M A N D } A R G S
- D v e r b o s e : B O O L = $ { v e r b o s e _ o u t p u t }
$ { c c b i n _ f l a g s }
@ -951,6 +1085,7 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
if ( NOT compile_to_ptx AND CMAKE_GENERATOR MATCHES "Visual Studio" AND CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE )
# V i s u a l S t u d i o 8 c r a s h e s w h e n y o u c l o s e t h e s o l u t i o n w h e n y o u d o n ' t a d d t h e o b j e c t f i l e .
if ( NOT CMAKE_GENERATOR MATCHES "Visual Studio 8" )
# message ( "Not adding ${generated_file}" )
set ( cuda_add_generated_file FALSE )
endif ( )
endif ( )
@ -982,12 +1117,15 @@ macro(CUDA_ADD_LIBRARY cuda_target)
CUDA_ADD_CUDA_INCLUDE_ONCE ( )
# S e p a r a t e t h e s o u r c e s f r o m t h e o p t i o n s
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _options ${ ARGN } )
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _cmake_options _options ${ ARGN } )
CUDA_BUILD_SHARED_LIBRARY ( _cuda_shared_flag ${ ARGN } )
# C r e a t e c u s t o m c o m m a n d s a n d t a r g e t s f o r e a c h f i l e .
CUDA_WRAP_SRCS ( ${ cuda_target } OBJ _generated_files ${ _sources } OPTIONS ${ _options } )
CUDA_WRAP_SRCS ( ${ cuda_target } OBJ _generated_files ${ _sources }
$ { _ c m a k e _ o p t i o n s } $ { _ c u d a _ s h a r e d _ f l a g }
O P T I O N S $ { _ o p t i o n s } )
# A d d t h e l i b r a r y .
add_library ( ${ cuda_target }
add_library ( ${ cuda_target } ${ _cmake_options }
$ { _ g e n e r a t e d _ f i l e s }
$ { _ s o u r c e s }
)
@ -1016,12 +1154,12 @@ macro(CUDA_ADD_EXECUTABLE cuda_target)
CUDA_ADD_CUDA_INCLUDE_ONCE ( )
# S e p a r a t e t h e s o u r c e s f r o m t h e o p t i o n s
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _ options ${ ARGN } )
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _ cmake_options _ options ${ ARGN } )
# C r e a t e c u s t o m c o m m a n d s a n d t a r g e t s f o r e a c h f i l e .
CUDA_WRAP_SRCS ( ${ cuda_target } OBJ _generated_files ${ _sources } OPTIONS ${ _options } )
# A d d t h e l i b r a r y .
add_executable ( ${ cuda_target }
add_executable ( ${ cuda_target } ${ _cmake_options }
$ { _ g e n e r a t e d _ f i l e s }
$ { _ s o u r c e s }
)
@ -1048,9 +1186,10 @@ endmacro(CUDA_ADD_EXECUTABLE cuda_target)
macro ( CUDA_COMPILE generated_files )
# S e p a r a t e t h e s o u r c e s f r o m t h e o p t i o n s
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _ options ${ ARGN } )
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _ cmake_options _ options ${ ARGN } )
# C r e a t e c u s t o m c o m m a n d s a n d t a r g e t s f o r e a c h f i l e .
CUDA_WRAP_SRCS ( cuda_compile OBJ _generated_files ${ _sources } OPTIONS ${ _options } )
CUDA_WRAP_SRCS ( cuda_compile OBJ _generated_files ${ _sources } ${ _cmake_options }
O P T I O N S $ { _ o p t i o n s } )
set ( ${ generated_files } ${ _generated_files } )
@ -1065,9 +1204,10 @@ endmacro(CUDA_COMPILE)
macro ( CUDA_COMPILE_PTX generated_files )
# S e p a r a t e t h e s o u r c e s f r o m t h e o p t i o n s
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _ options ${ ARGN } )
CUDA_GET_SOURCES_AND_OPTIONS ( _sources _ cmake_options _ options ${ ARGN } )
# C r e a t e c u s t o m c o m m a n d s a n d t a r g e t s f o r e a c h f i l e .
CUDA_WRAP_SRCS ( cuda_compile_ptx PTX _generated_files ${ _sources } OPTIONS ${ _options } )
CUDA_WRAP_SRCS ( cuda_compile_ptx PTX _generated_files ${ _sources } ${ _cmake_options }
O P T I O N S $ { _ o p t i o n s } )
set ( ${ generated_files } ${ _generated_files } )