]> gitweb.factorcode.org Git - factor.git/blob - extra/cuda/nvcc/nvcc.factor
c1e35c32caea95275cfbcad681eae616b8b2f608
[factor.git] / extra / cuda / nvcc / nvcc.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays combinators.smart io.backend io.directories
4 io.launcher io.pathnames kernel locals math sequences splitting
5 system ;
6 IN: cuda.nvcc
7
8 HOOK: nvcc-path os ( -- path )
9
10 M: object nvcc-path "nvcc" ;
11
12 M: macosx nvcc-path "/usr/local/cuda/bin/nvcc" ;
13
14 : cu>ptx ( path -- path' )
15     ".cu" ?tail drop ".ptx" append ;
16
17 : nvcc-command ( path -- seq )
18     [
19         [ nvcc-path "--ptx" "-o" ] dip
20         [ cu>ptx ] [ file-name ] bi
21     ] output>array ;
22
23 ERROR: nvcc-failed n path ;
24
25 :: compile-cu ( path -- path' )
26     path normalize-path :> path2
27     path2 parent-directory [
28         path2 nvcc-command
29         run-process wait-for-process [ path2 nvcc-failed ] unless-zero
30         path2 cu>ptx
31     ] with-directory ;