1 ! Copyright (C) 2010 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: combinators.smart io.backend io.directories io.launcher
4 io.pathnames kernel math sequences splitting system ;
7 HOOK: nvcc-path os ( -- path )
9 M: object nvcc-path "nvcc" ;
11 M: macosx nvcc-path "/usr/local/cuda/bin/nvcc" ;
13 : cu>ptx ( path -- path' )
14 ".cu" ?tail drop ".ptx" append ;
16 : nvcc-command ( path -- seq )
18 [ nvcc-path "--ptx" "-o" ] dip
19 [ cu>ptx ] [ file-name ] bi
22 ERROR: nvcc-failed n path ;
24 :: compile-cu ( path -- path' )
25 path normalize-path :> path2
26 path2 parent-directory [
28 run-process wait-for-process [ path2 nvcc-failed ] unless-zero