mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
NEWS: Moved Tiny C Compiler advice to a separate file.
This commit is contained in:
parent
3308e41c31
commit
13d00f8049
6
NEWS
6
NEWS
@ -152,12 +152,6 @@ roughly in decreasing order of importance.
|
|||||||
- (bitrot) Fix compilation under gcc 4.x. Backported from gentoo portage.
|
- (bitrot) Fix compilation under gcc 4.x. Backported from gentoo portage.
|
||||||
Also, reduce warnings on gcc 4.2 snapshots.
|
Also, reduce warnings on gcc 4.2 snapshots.
|
||||||
- (bitrot) Update SpiderMonkey configure check Debian compatibility
|
- (bitrot) Update SpiderMonkey configure check Debian compatibility
|
||||||
- (experimental, new feature) Tiny C Compiler support, currently
|
|
||||||
suffering from many problems. Use --disable-nls to avoid alloca,
|
|
||||||
and do not use CFLAGS=-g. Perl, Python, and Ruby provide linker
|
|
||||||
options like -export-dynamic that TCC 0.9.23 does not support.
|
|
||||||
Using GNU TLS and Guile together can crash TCC (Debian bug 418360).
|
|
||||||
SEE 2.0.1131 has a syntax error inside #ifndef __GNUC__.
|
|
||||||
- (new feature 779) make uninstall
|
- (new feature 779) make uninstall
|
||||||
- (experimental, new feature) Native Win32 port
|
- (experimental, new feature) Native Win32 port
|
||||||
- (enhancement) If make -k was used and a sub-Make fails, build the
|
- (enhancement) If make -k was used and a sub-Make fails, build the
|
||||||
|
187
doc/tinycc.txt
Normal file
187
doc/tinycc.txt
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
Compiling ELinks with Tiny C Compiler
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
ELinks has been successfully compiled with http://www.tinycc.org/[Tiny
|
||||||
|
C Compiler] version 0.9.23, however there are several problems.
|
||||||
|
This file lists some of these problems and their possible solutions.
|
||||||
|
|
||||||
|
Perl uses unsupported -Wl,-E
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
checking for Perl... no
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
`config.log` reveals:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
configure:18039: checking for Perl
|
||||||
|
configure:18082: tcc -o conftest ... -rdynamic conftest.c -Wl,-E ... -lperl ... >&5
|
||||||
|
tcc: unsupported linker option '-E'
|
||||||
|
configure:18088: $? = 1
|
||||||
|
...
|
||||||
|
configure:18106: result: no
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
The `-Wl,-E` option comes from this command:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
perl -MExtUtils::Embed -e ldopts
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
TCC 0.9.23 does not support the option, so ELinks builds without Perl.
|
||||||
|
|
||||||
|
Python uses unsupported -Xlinker -export-dynamic
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
checking for Python... yes
|
||||||
|
checking for python... /usr/bin/python
|
||||||
|
...
|
||||||
|
Browser scripting ............... Guile, Lua, SpiderMonkey
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
`config.log` reveals:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
configure:18204: checking for Python
|
||||||
|
configure:18208: result: yes
|
||||||
|
configure:18219: checking for python
|
||||||
|
configure:18237: found /usr/bin/python
|
||||||
|
configure:18250: result: /usr/bin/python
|
||||||
|
configure:18287: tcc -o conftest ... -rdynamic conftest.c -Xlinker -export-dynamic ... -lpython2.3 ... >&5
|
||||||
|
tcc: invalid option -- '-Xlinker'
|
||||||
|
configure:18293: $? = 1
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
The `-Xlinker -export-dynamic` options come from this command:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
python -c 'from distutils import sysconfig; print sysconfig.get_config_var("LINKFORSHARED")'
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
TCC 0.9.23 does not support `-Xlinker`, so ELinks builds without
|
||||||
|
Python.
|
||||||
|
|
||||||
|
Ruby uses unsupported -Wl,-export-dynamic
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
checking for Ruby... yes
|
||||||
|
checking for ruby... /usr/bin/ruby
|
||||||
|
checking Ruby version... 1.8.3
|
||||||
|
checking for Ruby header files... /usr/lib/ruby/1.8/i486-linux
|
||||||
|
configure: error: Ruby not found
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
`config.log` reveals:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
configure:18617: checking for Ruby
|
||||||
|
configure:18641: result: yes
|
||||||
|
configure:18653: checking for ruby
|
||||||
|
configure:18671: found /usr/bin/ruby
|
||||||
|
configure:18684: result: /usr/bin/ruby
|
||||||
|
configure:18694: checking Ruby version
|
||||||
|
configure:18698: result: 1.8.3
|
||||||
|
configure:18701: checking for Ruby header files
|
||||||
|
configure:18706: result: /usr/lib/ruby/1.8/i486-linux
|
||||||
|
configure:18765: tcc -o conftest ... -rdynamic -Wl,-export-dynamic ... conftest.c -lruby1.8 ... >&5
|
||||||
|
tcc: unsupported linker option '-export-dynamic'
|
||||||
|
configure:18771: $? = 1
|
||||||
|
configure:18808: error: Ruby not found
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
The `-rdynamic -Wl,-export-dynamic` options come from this command:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
TCC 0.9.23 supports the former but not the latter. To work around the
|
||||||
|
error, configure `\--without-ruby`.
|
||||||
|
|
||||||
|
Stabs entry has invalid string index
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
ld -r -o lib.o frames.o parser.o renderer.o tables.o parser/lib.o
|
||||||
|
ld: parser/lib.o(.stab+0x2688): Stabs entry has invalid string index.
|
||||||
|
parser/lib.o: could not read symbols: Bad value
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Apparently, GNU ld 2.16.91 does not like the debug information
|
||||||
|
generated by TCC 0.9.23. To work around the error, either set
|
||||||
|
`LD=tcc` or remove `-g` from `CFLAGS`.
|
||||||
|
|
||||||
|
Linker segfault
|
||||||
|
---------------
|
||||||
|
|
||||||
|
If you configure ELinks with both `\--with-gnutls` and `\--with-guile`,
|
||||||
|
TCC 0.9.23 crashes when it's trying to link ELinks.
|
||||||
|
|
||||||
|
http://bugs.debian.org/418360[Debian bug #418360] has a patch that
|
||||||
|
fixes this.
|
||||||
|
|
||||||
|
Undefined symbol alloca
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
[LINK] src/elinks
|
||||||
|
tcc: undefined symbol 'alloca'
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
GNU libc 2.3.6 declares `alloca()` in `<alloca.h>` but does not
|
||||||
|
actually define it as a function, perhaps because the definition must
|
||||||
|
be specific to each compiler. TCC 0.9.23 does not define `alloca()`
|
||||||
|
either and fails to generate an executable but stupidly exits with
|
||||||
|
code 0.
|
||||||
|
|
||||||
|
In ELinks, only `intl/gettext/plural.c` uses `alloca()`, so you can
|
||||||
|
avoid the error with `configure --disable-nls`.
|
||||||
|
|
||||||
|
Unexpanded @HAVE_ALLOCA_H@ in <see/type.h>
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
.../include/see/type.h:180: identifier expected
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
`<see/type.h>` of
|
||||||
|
http://www.adaptive-enterprises.com.au/~d/software/see/[Simple
|
||||||
|
ECMAScript Engine] 2.0.1131 has an unexpanded `@HAVE_ALLOCA_H@` inside
|
||||||
|
`#ifndef __GNUC__`. Of course, TCC 0.9.23 does not define `__GNUC__`,
|
||||||
|
so an error results. To avoid the error, either configure ELinks
|
||||||
|
`\--without-see`, or edit `<see/type.h>`.
|
||||||
|
|
||||||
|
Reported as
|
||||||
|
http://www.adaptive-enterprises.com.au/bugs/show_bug.cgi?id=65[SEE bug 65].
|
||||||
|
|
||||||
|
Advanced: Compiling SEE with TCC
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
If you want even more problems, try compiling Simple ECMAScript Engine
|
||||||
|
with Tiny C Compiler as well.
|
||||||
|
|
||||||
|
Wrong precedence of sizeof
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
.../see-2.0.1131/libsee/unicase.c:86: pointer expected
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
TCC 0.9.23 misparses `sizeof (a)[0]` used in the `lengthof` macro.
|
||||||
|
To work around the bug, change it to `sizeof ((a)[0])`.
|
||||||
|
|
||||||
|
Reported as http://bugs.debian.org/419203[Debian bug #419203].
|
||||||
|
|
||||||
|
Linker option -soname not supported
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
tcc: invalid option -- '-soname'
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
To construct a proper ELF library, the build system of SEE 2.0.1131
|
||||||
|
must specify the shared object name. Unfortunately, TCC 0.9.23 does
|
||||||
|
not appear to support any such option. So, use some other linker.
|
Loading…
Reference in New Issue
Block a user