mirror of
https://github.com/mirror/tinycc.git
synced 2025-01-15 05:20:06 +08:00
tcc -E -P10 : output all numbers as decimals
This may be used to preprocess Fabrice Bellards initial revision
in this repository to demonstrate its capability to compile and
run itself (on i386 32-bit linux or windows).
Initial revision: 27f6e16bae
Also needed:
* an empty stdio.h
* a wrapper named tc.c with
void expr(void);
void decl(int);
void next(void);
#include "tcc.c"
* an hello.c such as
int main()
{
printf("Hello World\n");
return 0;
}
All files with unix LF only lines. Then ...
* preprocess the source
$ tcc -E -P10 -I. tcc.c -o tc1.c
* compile the compiler
$ tcc -w -I. tc.c -o tc -ldl
* run it to compile and
run itself to compile and
run itself to compile and
run itself to compile and
run hello.c
$ ./tc tc1.c tc1.c tc1.c hello.c
--> Hello World!
------------------------------------------------------
* On i386 windows this may be added to the tc.c wrapper
#ifdef _WIN32
#include <windows.h>
void *dlsym(int x, const char *func)
{
if (0 == strcmp(func, "dlsym"))
return &dlsym;
return GetProcAddress(LoadLibrary("msvcrt"), func);
}
#endif
This commit is contained in:
parent
a66ba1f2a1
commit
5e4d0718ff
6
tccpp.c
6
tccpp.c
@ -3711,6 +3711,12 @@ ST_FUNC int tcc_preprocess(TCCState *s1)
|
||||
;
|
||||
define_start = define_stack;
|
||||
|
||||
/* Credits to Fabrice Bellard's initial revision to demonstrate its
|
||||
capability to compile and run itself, provided all numbers are
|
||||
given as decimals. tcc -E -P10 will do. */
|
||||
if (s1->Pflag == 1 + 10)
|
||||
parse_flags |= PARSE_FLAG_TOK_NUM, s1->Pflag = 1;
|
||||
|
||||
#ifdef PP_BENCH
|
||||
/* for PP benchmarks */
|
||||
do next(); while (tok != TOK_EOF); return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user