version 1.71, 2012/07/02 21:59:10
|
version 1.74, 2012/07/23 22:12:35
|
Line 217 end-struct list%
|
Line 217 end-struct list%
|
|
|
2variable c-libs \ library names in a string (without "lib") |
2variable c-libs \ library names in a string (without "lib") |
|
|
|
: lib-prefix ( -- addr u ) s" libgf" ; |
|
|
: add-lib ( c-addr u -- ) \ gforth |
: add-lib ( c-addr u -- ) \ gforth |
\G Add library lib@i{string} to the list of libraries, where |
\G Add library lib@i{string} to the list of libraries, where |
\G @i{string} is represented by @i{c-addr u}. |
\G @i{string} is represented by @i{c-addr u}. |
Line 266 defer save-c-prefix-line ( c-addr u -- )
|
Line 268 defer save-c-prefix-line ( c-addr u -- )
|
\G One line of C declarations for the C interface |
\G One line of C declarations for the C interface |
-1 parse save-c-prefix-line ; |
-1 parse save-c-prefix-line ; |
|
|
s" #include <gforth" arch-modifier s+ s" /" s+ version-string s+ s" /libcc.h>" append ( c-addr u ) |
s" #include <gforth" arch-modifier s+ s" /" append version-string append s" /libcc.h>" append ( c-addr u ) |
2dup save-c-prefix-line drop free throw |
2dup save-c-prefix-line drop free throw |
|
|
\ Types (for parsing) |
\ Types (for parsing) |
Line 467 create gen-wrapped-types
|
Line 469 create gen-wrapped-types
|
dup { descriptor } |
dup { descriptor } |
count { ret } count 2dup { d: pars } chars + count { d: c-name } |
count { ret } count 2dup { d: pars } chars + count { d: c-name } |
." void " |
." void " |
[ lib-suffix s" .la" str= [IF] ] lib-modulename 2@ type ." _LTX_" [ [THEN] ] |
[ lib-suffix s" .la" str= [IF] ] lib-prefix type lib-modulename 2@ type ." _LTX_" [ [THEN] ] |
descriptor wrapper-function-name 2dup type drop free throw |
descriptor wrapper-function-name 2dup type drop free throw |
.\" (GFORTH_ARGS)\n" |
.\" (GFORTH_ARGS)\n" |
.\" {\n Cell MAYBE_UNUSED *sp = gforth_SP;\n Float MAYBE_UNUSED *fp = gforth_FP;\n " |
.\" {\n Cell MAYBE_UNUSED *sp = gforth_SP;\n Float MAYBE_UNUSED *fp = gforth_FP;\n " |
Line 512 create gen-wrapped-types
|
Line 514 create gen-wrapped-types
|
2over s+ 2swap drop free throw ; |
2over s+ 2swap drop free throw ; |
|
|
: open-wrappers ( -- addr|0 ) |
: open-wrappers ( -- addr|0 ) |
lib-filename 2@ lib-suffix s+ |
lib-filename 2@ dirname lib-prefix s+ |
|
lib-filename 2@ basename append lib-suffix append |
2dup libcc-named-dir string-prefix? if ( c-addr u ) |
2dup libcc-named-dir string-prefix? if ( c-addr u ) |
\ see if we can open it in the path |
\ see if we can open it in the path |
libcc-named-dir nip /string |
libcc-named-dir nip /string |
Line 607 DEFER compile-wrapper-function ( -- )
|
Line 610 DEFER compile-wrapper-function ( -- )
|
libtool-cc append libtool-flags append s" -module -rpath " s+ ] sliteral |
libtool-cc append libtool-flags append s" -module -rpath " s+ ] sliteral |
lib-filename 2@ dirname replace-rpath s+ s" " append |
lib-filename 2@ dirname replace-rpath 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@ dirname append lib-prefix append |
|
lib-filename 2@ basename append s" .la" append ( c-addr u ) |
c-libs 2@ append |
c-libs 2@ append |
\ 2dup type cr |
\ 2dup type cr |
2dup system drop free throw $? abort" libtool link failed" |
2dup system drop free throw $? abort" libtool link failed" |