--- gforth/libcc.fs 2007/06/01 16:27:37 1.17 +++ gforth/libcc.fs 2007/06/04 18:13:26 1.19 @@ -187,11 +187,12 @@ variable c-prefix-lines-end c-prefix-lin align here 0 , c-prefix-lines-end list-append ( c-addr u ) longstring, ; -: \c ( "rest-of-line" -- ) +: \c ( "rest-of-line" -- ) \ gforth backslash-c \G One line of C declarations for the C interface -1 parse save-c-prefix-line ; -\c #include "engine/libcc.h" +s" #include " append ( c-addr u ) + 2dup save-c-prefix-line drop free throw \ Types (for parsing) @@ -390,9 +391,10 @@ create gen-wrapped-types : compile-wrapper-function ( -- ) c-source-file close-file throw 0 c-source-file-id ! - s" gcc -I. -fPIC -shared -Wl,-soname," lib-filename 2@ s+ + s" gcc -fPIC -shared -Wl,-soname," lib-filename 2@ s+ s" .so.1 -Wl,-export_dynamic -o " append lib-filename 2@ append - s" .so.1 -O " append lib-filename 2@ append s" .c" append ( c-addr u ) + [ s" .so.1 -O -I " s" includedir" getenv append s" " append ] sliteral + append lib-filename 2@ append s" .c" append ( c-addr u ) 2dup system drop free throw $? abort" compiler generated error" \ !! call dlerror lib-filename 2@ s" .so.1" s+ @@ -432,7 +434,7 @@ create gen-wrapped-types does> ( ... -- ... ) @ call-c ; -: c-function ( "forth-name" "c-name" "{libcc-type}" "--" "libcc-type" -- ) +: c-function ( "forth-name" "c-name" "@{type@}" "--" "type" -- ) \ gforth \G Define a Forth word @i{forth-name}. @i{Forth-name} has the \G specified stack effect and calls the C function @code{c-name}. defer lastxt dup c-function-rt lastxt c-function-ft