mirror of
https://github.com/mirror/tinycc.git
synced 2025-01-05 04:40:06 +08:00
5280293d6b
This was already possible using make NOTALLINONE=1 and is now the default. To build as previously from one big source, use make ONE_SOURCE=1 Cross compilers are still build from one source because using separate objects requires separate build directories one per platform which currently is not (yet) supported by the makefile. We could probably use gnu-makeish target variables like $(I386_CROSS): OUTDIR=build/i386 $(X64_CROSS): OUTDIR=build/x86-64 and so on ... Also NEED_FLOAT_TYPES for arm-gen is removed. It was about variables that are referenced from outside (libtcc, tccgen). We could declare them in tcc.h (as with reg_classes) or have them twice in arm-gen.c. I chose option 2.
63 lines
1.7 KiB
Batchfile
63 lines
1.7 KiB
Batchfile
@rem ----------------------------------------------------
|
|
@rem batch file to build tcc using gcc and ar from mingw
|
|
@rem ----------------------------------------------------
|
|
|
|
echo>..\config.h #define TCC_VERSION "0.9.25"
|
|
echo>>..\config.h #define CONFIG_TCCDIR "."
|
|
echo>>..\config.h #define CONFIG_SYSROOT ""
|
|
|
|
@if _%PROCESSOR_ARCHITEW6432%_==_AMD64_ goto x86_64
|
|
@if _%PROCESSOR_ARCHITECTURE%_==_AMD64_ goto x86_64
|
|
|
|
@set target=-DTCC_TARGET_PE -DTCC_TARGET_I386
|
|
@set CC=gcc -Os -s
|
|
@set AR=ar
|
|
@set P=32
|
|
@goto tools
|
|
|
|
:x86_64
|
|
@set target=-DTCC_TARGET_PE -DTCC_TARGET_X86_64
|
|
@rem mingw 64 has an ICE with -Os
|
|
@set CC=x86_64-pc-mingw32-gcc -O0 -s
|
|
@set AR=x86_64-pc-mingw32-ar
|
|
@set P=64
|
|
|
|
:tools
|
|
%CC% %target% tools/tiny_impdef.c -o tiny_impdef.exe
|
|
%CC% %target% tools/tiny_libmaker.c -o tiny_libmaker.exe
|
|
|
|
:libtcc
|
|
if not exist libtcc\nul mkdir libtcc
|
|
copy ..\libtcc.h libtcc\libtcc.h
|
|
%CC% %target% -fno-strict-aliasing -DONE_SOURCE ../libtcc.c -c -o libtcc.o
|
|
%AR% rcs libtcc/libtcc.a libtcc.o
|
|
|
|
:tcc
|
|
%CC% %target% -fno-strict-aliasing ../tcc.c -o tcc.exe -ltcc -Llibtcc
|
|
|
|
:copy_std_includes
|
|
copy ..\include\*.h include
|
|
|
|
:libtcc1.a
|
|
.\tcc %target% -c ../lib/libtcc1.c
|
|
.\tcc %target% -c lib/crt1.c
|
|
.\tcc %target% -c lib/wincrt1.c
|
|
.\tcc %target% -c lib/dllcrt1.c
|
|
.\tcc %target% -c lib/dllmain.c
|
|
.\tcc %target% -c lib/chkstk.S
|
|
@if _%P%_==_64_ goto lib64
|
|
|
|
:lib32
|
|
.\tcc %target% -c ../lib/alloca86.S
|
|
.\tcc %target% -c ../lib/alloca86-bt.S
|
|
.\tcc %target% -c ../lib/bcheck.c
|
|
tiny_libmaker lib/libtcc1.a libtcc1.o alloca86.o alloca86-bt.o crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o bcheck.o
|
|
@goto the_end
|
|
|
|
:lib64
|
|
.\tcc %target% -c ../lib/alloca86_64.S
|
|
tiny_libmaker lib/libtcc1.a libtcc1.o alloca86_64.o crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
|
|
|
|
:the_end
|
|
del *.o
|