Diff for /gforth/libcc.fs between versions 1.28 and 1.34

version 1.28, 2007/12/31 18:40:24 version 1.34, 2008/04/29 20:03:40
Line 123 Line 123
 \ first-time word, then to the run-time word; the run-time word calls  \ first-time word, then to the run-time word; the run-time word calls
 \ the c function.  \ the c function.
   
 : delete-file 2drop 0 ;  [ifundef] parse-name
       ' parse-word alias parse-name
   [then]
   [ifundef] defer!
   : defer! ( xt xt-deferred -- ) \ gforth  defer-store
   \G Changes the @code{defer}red word @var{xt-deferred} to execute @var{xt}.
       >body [ has? rom [IF] ] @ [ [THEN] ] ! ;
   [then]
   
   \ : delete-file 2drop 0 ;
   
 require struct.fs  require struct.fs
   
Line 205  end-struct list% Line 214  end-struct list%
             node list-next @              node list-next @
     repeat ;      repeat ;
   
   \ linked libraries
   
   list%
       cell% 2* field c-lib-string
   end-struct c-lib%
   
   variable c-libs \ linked list of library names (without "lib")
   
   : add-lib ( c-addr u -- )
   \G Add library lib@i{string} to the list of libraries, where
   \G @i{string} is represented by @i{c-addr u}.
       c-lib% %size allocate throw dup >r
       c-lib-string 2!
       r> c-libs list-insert ;
   
   : append-l ( c-addr1 u1 node -- c-addr2 u2 )
       \ append " -l<nodelib>" to string1
       >r s"  -l" append r> c-lib-string 2@ append ;
   
 \ C prefix lines  \ C prefix lines
   
 \ linked list of longcstrings: [ link | count-cell | characters ]  \ linked list of longcstrings: [ link | count-cell | characters ]
Line 363  create gen-par-types Line 391  create gen-par-types
     ." ," gen-par-n ." ," gen-par-n ." )" ;      ." ," gen-par-n ." ," gen-par-n ." )" ;
   
 : gen-wrapped-r ( pars c-name fp-change1 sp-change1 -- fp-change sp-change )  : gen-wrapped-r ( pars c-name fp-change1 sp-change1 -- fp-change sp-change )
     2dup gen-par-r 2>r ." =" gen-wrapped-void 2r> ;      2dup gen-par-r 2>r ." =" gen-wrapped-call 2r> ;
   
 : gen-wrapped-func ( pars c-name fp-change1 sp-change1 -- fp-change sp-change )  : gen-wrapped-func ( pars c-name fp-change1 sp-change1 -- fp-change sp-change )
     gen-wrapped-a ;      gen-wrapped-a ;
Line 435  create gen-wrapped-types Line 463  create gen-wrapped-types
 : .lib-error ( -- )  : .lib-error ( -- )
     [ifdef] lib-error      [ifdef] lib-error
         ['] cr stderr outfile-execute          ['] cr stderr outfile-execute
         lib-error ['] type outfile-execute          lib-error ['] type stderr outfile-execute
     [then] ;      [then] ;
   
 DEFER compile-wrapper-function  DEFER compile-wrapper-function ( -- )
 :NONAME ( -- )  :NONAME ( -- )
     c-source-file close-file throw      c-source-file close-file throw
     0 c-source-file-id !      0 c-source-file-id !
Line 446  DEFER compile-wrapper-function Line 474  DEFER compile-wrapper-function
     s" includedir" getenv append ] sliteral      s" includedir" getenv append ] sliteral
     s"  -O -c " s+ lib-filename 2@ append s" .c -o " append      s"  -O -c " s+ lib-filename 2@ append s" .c -o " append
     lib-filename 2@ append s" .lo" append ( c-addr u )      lib-filename 2@ append s" .lo" append ( c-addr u )
   \    cr 2dup type
     2dup system drop free throw $? abort" libtool compile failed"      2dup system drop free throw $? abort" libtool compile failed"
     [ libtool-command s"  --silent --mode=link gcc -module -rpath " s+ ] sliteral      [ libtool-command s"  --silent --mode=link gcc -module -rpath " s+ ] sliteral
     tempdir s+ s"  " append      tempdir s+ s"  " append
     lib-filename 2@ append s" .lo -o " append      lib-filename 2@ append s" .lo -o " append
     lib-filename 2@ append s" .la" append ( c-addr u )      lib-filename 2@ append s" .la" append ( c-addr u )
       c-libs @ ['] append-l list-map
   \    2dup type cr
     2dup system drop free throw $? abort" libtool link failed"      2dup system drop free throw $? abort" libtool link failed"
     lib-filename 2@ s" .la" s+      lib-filename 2@ s" .la" s+
   \    2dup type cr
     2dup open-lib dup 0= if      2dup open-lib dup 0= if
         .lib-error true abort" open-lib failed"          .lib-error true abort" open-lib failed"
     endif      endif
Line 498  DEFER compile-wrapper-function Line 530  DEFER compile-wrapper-function
     \G specified stack effect and calls the C function @code{c-name}.      \G specified stack effect and calls the C function @code{c-name}.
     defer lastxt dup c-function-rt lastxt c-function-ft      defer lastxt dup c-function-rt lastxt c-function-ft
     lastxt swap defer! ;      lastxt swap defer! ;
   
   : clear-libs ( -- )
   \G Clear the list of libs
       c-source-file-id @ if
           compile-wrapper-function
       endif
       0 c-libs ! ;
   clear-libs

Removed from v.1.28  
changed lines
  Added in v.1.34


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>