<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<font face="Consolas">I could already find a work around for
compiling with <font color="#660000"><b>--enable-foreign</b></font>!<br>
I have just replaced the original <i><b>libffi </b></i>source
tree by its patched version <br>
from <i><b>Debian repository</b></i>. <br>
<br>
The compilation on my Nokia N900 run without problems <br>
until I got the following error:<br>
<br>
-----------------------------------------------------------------<br>
...<br>
a - thread.o<br>
a - type.o<br>
a - vector.o<br>
a - foreign.o<br>
a - ../src/gmp.o<br>
a - ../src/unwind.o<br>
a - ../../foreign/gcc/libffi/src/closures.o<br>
a - ../../foreign/gcc/libffi/src/debug.o<br>
a - ../../foreign/gcc/libffi/src/java_raw_api.o<br>
a - ../../foreign/gcc/libffi/src/prep_cif.o<br>
a - ../../foreign/gcc/libffi/src/raw_api.o<br>
a - ../../foreign/gcc/libffi/src/types.o<br>
a - ../../foreign/gcc/libffi/src/arm/ffi.o<br>
a - ../../foreign/gcc/libffi/src/arm/sysv.o<br>
a - gc2.o<br>
ranlib ../libracket3m.a<br>
cd ..; gcc -o racket3m gc2/main.o libracket3m.a -ldl -lm -ldl
-lm -rdynamic <br>
libracket3m.a(gc2.o): In function `fault_handler':<br>
/home/user/tmp/plt-5.0-ffi/src/build/racket/gc2/../../../racket/gc2/sighand.c:58:
undefined reference to `mz_proc_thread_self'<br>
collect2: ld returned 1 exit status<br>
make[4]: *** [../racket3m] Error 1<br>
make[4]: Leaving directory
`/home/user/tmp/plt-5.0-ffi/src/build/racket/gc2'<br>
make[3]: *** [all] Error 2<br>
make[3]: Leaving directory
`/home/user/tmp/plt-5.0-ffi/src/build/racket/gc2'<br>
make[2]: *** [3m] Error 2<br>
make[2]: Leaving directory
`/home/user/tmp/plt-5.0-ffi/src/build/racket'<br>
make[1]: *** [3m] Error 2<br>
make[1]: Leaving directory `/home/user/tmp/plt-5.0-ffi/src/build'<br>
make: *** [all] Error 2<br>
</font><font face="Consolas">-----------------------------------------------------------------</font><br>
<font face="Consolas"><br>
I will also give the latest Racket sources a try!!<br>
By the way it would be helpful if there is a pointer<br>
to latest sources of Racket on the web site!<br>
<br>
Regards<br>
Nik<br>
<br>
PS: It would </font><font face="Consolas">be also helpful if the
build process<br>
could take advantage of the available libraries <br>
on a platform. In this way it will take us the burden<br>
of compiling the same libraries again!<br>
E.g., on Maemo there are already binary packages <br>
for libgmp, libffi and libgc.<br>
</font> <br>
<br>
On 07/14/2010 02:46 PM, Matthew Flatt wrote:
<blockquote
cite="mid:20100714124619.5438965011A@mail-svr1.cs.utah.edu"
type="cite">
<pre wrap="">Right --- this is the problem that Kevin was talking about when he
mentioned that the 3m build doesn't work. It's also what I was talking
about for `raco make' and `raco setup', because something like `raco
make' is used to build some Racket files that are used to build 3m.
Besides the changes that I mentioned before, we've upgraded libffi to
the latest version, so you might now be able to build without using
`--disable-foreign'. Either way, the latest code should work.
You can download and try the latest Racket sources from here:
<a class="moz-txt-link-freetext" href="http://github.com/plt/racket/">http://github.com/plt/racket/</a>
At Wed, 14 Jul 2010 13:10:53 +0200, nitralime wrote:
</pre>
<blockquote type="cite">
<pre wrap="">I get now the following errors:
-------------------------------------------------------------------------------
-------------
.....
.....
make[3]: Entering directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
mkdir xsrc
make xsrc/precomp.h
make[4]: Entering directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
env XFORM_PRECOMP=yes ../racketcgc -cqu ../../../racket/gc2/xform.rkt
--setup . --cpp "gcc -E -I./.. -I../../../racket/gc2/../include
-DNEWGC_BTC_ACCOUNT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-DDONT_USE_FOREIGN " --keep-lines -o xsrc/precomp.h
../../../racket/gc2/precomp.c
Copying tree...
/home/user/tmp/plt-5.0/collects/ffi/unsafe.rkt:17:56: rename-out: no
binding for identifier at: _scheme in: (rename-out (_scheme _racket))
=== context ===
/home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:741:25
/home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:740:18
/home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:725:5
/home/user/tmp/plt-5.0/collects/racket/provide-transform.rkt:51:2:
expand-export
/home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:605:17:
transform-simple
/home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:601:2
make[4]: *** [xsrc/precomp.h] Error 1
make[4]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
make[2]: *** [3m] Error 2
make[2]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
make[1]: *** [3m] Error 2
make[1]: Leaving directory `/home/user/tmp/plt-5.0/src/build'
make: *** [all] Error 2
-------------------------------------------------------------------------------
-------------
Regards
Nik
On 07/13/2010 06:19 PM, Kevin Tew wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Ok I tried compiling with your configure line myself.
I had to make an additional change to get racket/racketcgc to build.
the 3m variant still doesn't build do to more reliance on the ffi
during xform.
setup is also going to try to use the ffi.
We have added additional dependencies on the ffi (foreign function
interface) and need to decide if we are going to support building
without it.
My guess is that is possible but will require some engineering effort.
Kevin
diff --git a/src/racket/src/env.c b/src/racket/src/env.c
index b1c0a8d..68b634b 100644
--- a/src/racket/src/env.c
+++ b/src/racket/src/env.c
@@ -501,7 +501,9 @@ static Scheme_Env *place_instance_init(void
*stack_base, int initial_main_os_thr
scheme_init_gmp_places();
scheme_alloc_global_fdset();
scheme_init_file_places();
+#ifndef DONT_USE_FOREIGN
scheme_init_foreign_places();
+#endif
env = scheme_make_empty_env();
scheme_set_param(scheme_current_config(), MZCONFIG_ENV,
(Scheme_Object *)env);
diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c
index 7329d58..3d2c4fb 100644
--- a/src/racket/src/thread.c
+++ b/src/racket/src/thread.c
@@ -4159,7 +4159,7 @@ void scheme_thread_block(float sleep_time)
#ifdef MZ_USE_FUTURES
scheme_check_future_work();
#endif
-#ifdef MZ_USE_MZRT
+#if defined(MZ_USE_MZRT) && !defined(DONT_USE_FOREIGN)
scheme_check_foreign_work();
#endif
On 07/13/2010 10:03 AM, Kevin Tew wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Try this patch, if it works for you. I'll commit it
Kevin
diff --git a/src/racket/src/env.c b/src/racket/src/env.c
index b1c0a8d..68b634b 100644
--- a/src/racket/src/env.c
+++ b/src/racket/src/env.c
@@ -501,7 +501,9 @@ static Scheme_Env *place_instance_init(void
*stack_base, int initial_main_os_thr
scheme_init_gmp_places();
scheme_alloc_global_fdset();
scheme_init_file_places();
+#ifndef DONT_USE_FOREIGN
scheme_init_foreign_places();
+#endif
env = scheme_make_empty_env();
scheme_set_param(scheme_current_config(), MZCONFIG_ENV,
(Scheme_Object *)env);
On 07/13/2010 09:25 AM, nitralime wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Hi folks!
I have tried to compile Racket on Maemo 5 (<--> Nokia N900).
Following the usual configure and make schema I have proceeded
as follows:
# cd plt-5.0/src/build
# ../configure --prefix=/home/user/local/racket-5.0 --without-x
--disable-gracket --disable-foreign
# make
...
...
a - src/unwind.o
a - src/vector.o
ranlib libracket.a
make[5]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
make[4]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
make racketcgc
make[4]: Entering directory `/home/user/tmp/plt-5.0/src/build/racket'
gcc -I. -I../../racket/include -g -O2 -Wall -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -DDONT_USE_FOREIGN
-DINITIAL_COLLECTS_DIRECTORY='"'"`cd ../../racket/../../collects;
pwd`"'"' -c ../../racket/main.c -o main.o
gcc -o racketcgc main.o libracket.a libmzgc.a -ldl -lm -ldl -lm
-rdynamic
libracket.a(env.o): In function `place_instance_init':
/home/user/tmp/plt-5.0/src/build/racket/src/../../../racket/src/env.c:500:
undefined reference to `scheme_init_foreign_places'
collect2: ld returned 1 exit status
make[4]: *** [racketcgc] Error 1
make[4]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
make[3]: *** [cgc] Error 2
make[3]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
make[2]: *** [3m] Error 2
make[2]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
make[1]: *** [3m] Error 2
make[1]: Leaving directory `/home/user/tmp/plt-5.0/src/build'
make: *** [all] Error
Any idea how this problem can be resolved!
Regards
Nik
_________________________________________________
For list-related administrative tasks:
<a class="moz-txt-link-freetext" href="http://lists.racket-lang.org/listinfo/users">http://lists.racket-lang.org/listinfo/users</a>
</pre>
</blockquote>
<pre wrap="">
_________________________________________________
For list-related administrative tasks:
<a class="moz-txt-link-freetext" href="http://lists.racket-lang.org/listinfo/users">http://lists.racket-lang.org/listinfo/users</a>
</pre>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
<pre wrap="">
_________________________________________________
For list-related administrative tasks:
<a class="moz-txt-link-freetext" href="http://lists.racket-lang.org/listinfo/users">http://lists.racket-lang.org/listinfo/users</a>
</pre>
</blockquote>
</blockquote>
<br>
</body>
</html>