2022-02-18 14:15:09 -05:00
|
|
|
TCCDIR=tcc-0.9.27
|
2022-02-19 18:22:57 -08:00
|
|
|
TCC=$(TCCDIR)/tcc
|
|
|
|
TCC0=$(TCC)0
|
2023-07-01 19:19:53 +01:00
|
|
|
TCCINST=tcc-bootstrap
|
2025-04-05 10:55:40 +01:00
|
|
|
all: testapp
|
2023-07-06 11:48:59 +01:00
|
|
|
in04: *.b ../04a/out04
|
2022-01-07 23:32:27 -05:00
|
|
|
../04a/out04 main.b in04
|
|
|
|
out04: in04 ../04/out03
|
|
|
|
../04/out03 in04 out04
|
|
|
|
%.html: %.md ../markdown
|
|
|
|
../markdown $<
|
2022-02-14 16:52:33 -05:00
|
|
|
%.out: %.c *.h out04
|
2022-01-07 23:32:27 -05:00
|
|
|
./out04 $< $@
|
2022-02-14 16:52:33 -05:00
|
|
|
a.out: main.c *.h out04
|
2022-02-14 12:04:49 -05:00
|
|
|
./out04
|
2022-02-19 12:01:56 -05:00
|
|
|
$(TCC0): $(TCCDIR)/*.c $(TCCDIR)/*.h out04
|
|
|
|
cd $(TCCDIR) && ../out04 tcc.c tcc0
|
|
|
|
$(TCCDIR)/lib/libtcc1.a: $(TCC0) $(TCCDIR)/lib/*.[cS]
|
|
|
|
$(TCC0) -c $(TCCDIR)/lib/alloca86_64-bt.S -o $(TCCDIR)/lib/alloca86_64-bt.o
|
|
|
|
$(TCC0) -c $(TCCDIR)/lib/alloca86_64.S -o $(TCCDIR)/lib/alloca86_64.o
|
|
|
|
$(TCC0) -c $(TCCDIR)/lib/va_list.c -o $(TCCDIR)/lib/va_list.o
|
|
|
|
$(TCC0) -c $(TCCDIR)/lib/libtcc1.c -o $(TCCDIR)/lib/libtcc1.o
|
|
|
|
$(TCC0) -ar $(TCCDIR)/lib/libtcc1.a $(TCCDIR)/lib/*.o
|
2023-07-03 17:50:49 -04:00
|
|
|
musl: tcc-files
|
2025-04-18 12:38:54 +01:00
|
|
|
mkdir -p musl-bootstrap/include
|
|
|
|
mkdir -p musl-bootstrap/bin
|
|
|
|
mkdir -p musl-bootstrap/lib
|
2023-07-06 11:48:59 +01:00
|
|
|
$(MAKE) -j8 -C musl-0.6.0
|
2023-07-03 17:50:49 -04:00
|
|
|
$(MAKE) -C musl-0.6.0 install
|
|
|
|
tcc-files: $(TCCDIR)/lib/libtcc1.a $(TCCDIR)/include/*.h
|
2022-02-19 12:01:56 -05:00
|
|
|
mkdir -p $(TCCINST)/include
|
|
|
|
cp -r $(TCCDIR)/include/*.h $(TCCINST)/include/
|
|
|
|
cp -r $(TCCDIR)/lib/libtcc1.a $(TCCINST)/
|
2023-07-06 11:48:59 +01:00
|
|
|
$(TCC): $(TCC0) musl
|
2025-04-18 12:38:54 +01:00
|
|
|
cd $(TCCDIR) && ./tcc0 -nostdinc -nostdlib -B ../tcc-bootstrap -I ../musl-bootstrap/include tcc.c ../musl-bootstrap/lib/*.[oa] -o tcc
|
2023-07-06 11:48:59 +01:00
|
|
|
tcc: $(TCC)
|
2025-04-05 10:55:40 +01:00
|
|
|
musl-final: tcc
|
2025-04-18 12:38:54 +01:00
|
|
|
mkdir -p musl-bootstrap-final/include
|
|
|
|
mkdir -p musl-bootstrap-final/bin
|
|
|
|
mkdir -p musl-bootstrap-final/lib
|
|
|
|
$(MAKE) -C musl-final
|
|
|
|
tcc-final: tcc musl-final
|
|
|
|
cd tcc-final && ../$(TCCDIR)/tcc -Wall -g -static -nostdinc -nostdlib -B ../tcc-bootstrap -I ../musl-final/include tcc.c ../musl-final/lib/*.[oa] -o tcc
|
2025-04-05 10:55:40 +01:00
|
|
|
testapp: tcc musl-final
|
2025-04-18 12:38:54 +01:00
|
|
|
./tcc-final/tcc -Wall -g -static -nostdinc -nostdlib -I ./tcc-final/include -I ./musl-final/include test.c ./musl-final/lib/*.[oa] -o test
|
2023-07-01 19:19:53 +01:00
|
|
|
|
2022-02-19 18:22:57 -08:00
|
|
|
$(TCC)2: $(TCC)1
|
|
|
|
cd $(TCCDIR) && ./tcc1 tcc.c -o tcc2
|
|
|
|
$(TCC)0a: $(TCCDIR)/*.c $(TCCDIR)/*.h
|
|
|
|
cd $(TCCDIR) && gcc tcc.c -o tcc0a
|
|
|
|
$(TCC)1a: $(TCCDIR)/*.c $(TCCDIR)/*.h
|
|
|
|
cd $(TCCDIR) && ./tcc0a tcc.c -o tcc1a
|
2022-01-07 23:32:27 -05:00
|
|
|
clean:
|
2025-04-05 10:55:40 +01:00
|
|
|
$(MAKE) -C musl-final clean
|
|
|
|
$(MAKE) -C musl-0.6.0 clean
|
2023-07-01 19:19:53 +01:00
|
|
|
rm -rf musl-bootstrap
|
2025-04-05 10:55:40 +01:00
|
|
|
rm -rf musl-bootstrap-final
|
2023-07-01 19:19:53 +01:00
|
|
|
rm -rf tcc-bootstrap
|
2025-04-01 18:16:28 +01:00
|
|
|
rm -f out* *.out *.o $(TCCDIR)/tcc[0123456] $(TCCDIR)/tcc[0123456]a $(TCCDIR)/lib/*.[oa]
|