xref: /relibc/Makefile (revision 2fdca9bd0a1333e5f0aa8b88ebc3616ca7c11bb0)
1ae137dbcSJeremy SollerTARGET?=
2ae137dbcSJeremy Soller
38a972542SJeremy SollerCARGO?=cargo
481dc1442SJeremy SollerCARGOFLAGS=
562b0b0d5SJeremy SollerRUSTCFLAGS=
68a972542SJeremy Soller
747ee733aSJeremy SollerBUILD=target
8ae137dbcSJeremy Sollerifneq ($(TARGET),)
947ee733aSJeremy Soller	BUILD="target/$(TARGET)"
1081dc1442SJeremy Soller	CARGOFLAGS="--target=$(TARGET)"
1147ee733aSJeremy Sollerendif
1247ee733aSJeremy Soller
1347ee733aSJeremy Sollerifeq ($(TARGET),aarch64-unknown-linux-gnu)
14e102c234SAlexander Theißen	export CC=aarch64-linux-gnu-gcc
1547ee733aSJeremy Sollerendif
1647ee733aSJeremy Soller
170a44d454SJeremy Sollerifeq ($(TARGET),aarch64-unknown-redox)
180a44d454SJeremy Soller	export CC=aarch64-unknown-redox-gcc
190a44d454SJeremy Sollerendif
200a44d454SJeremy Soller
2147ee733aSJeremy Sollerifeq ($(TARGET),x86_64-unknown-redox)
22e102c234SAlexander Theißen	export CC=x86_64-unknown-redox-gcc
23ae137dbcSJeremy Sollerendif
24ae137dbcSJeremy Soller
25adcd0c99SJeremy SollerSRC=\
269eef8d7eSJeremy Soller	Cargo.* \
27adcd0c99SJeremy Soller	src/* \
28adcd0c99SJeremy Soller	src/*/* \
29adcd0c99SJeremy Soller	src/*/*/* \
30adcd0c99SJeremy Soller	src/*/*/*/*
31adcd0c99SJeremy Soller
32*2fdca9bdSJeremy Soller.PHONY: all clean fmt headers install install-headers libc libm test
33d9e4622fSJeremy Soller
348aae8e15SJeremy Sollerall: | libc libm libpthread
35d9e4622fSJeremy Soller
36d9e4622fSJeremy Sollerclean:
37c36ee723SJeremy Soller	$(CARGO) clean
38cee4449fSJeremy Soller	$(MAKE) -C tests clean
39950b4526SJeremy Soller	rm -rf sysroot
40d9e4622fSJeremy Soller
41729709a8SJeremy Sollercheck:
42c36ee723SJeremy Soller	$(CARGO) check
43729709a8SJeremy Soller
44d9e4622fSJeremy Sollerfmt:
45d9e4622fSJeremy Soller	./fmt.sh
46d9e4622fSJeremy Soller
47*2fdca9bdSJeremy Sollerheaders: $(BUILD)/include
48*2fdca9bdSJeremy Soller
49*2fdca9bdSJeremy Sollerinstall-headers: headers
5078c8c217SJeremy Soller	mkdir -pv "$(DESTDIR)/include"
5178c8c217SJeremy Soller	cp -rv "include"/* "$(DESTDIR)/include"
520258fb3fSJeremy Soller	cp -rv "$(BUILD)/include"/* "$(DESTDIR)/include"
53950b4526SJeremy Soller	cp -v "openlibm/include"/*.h "$(DESTDIR)/include"
54950b4526SJeremy Soller	cp -v "openlibm/src"/*.h "$(DESTDIR)/include"
55be035f88SJeremy Soller	cp -v "pthreads-emb/"*.h "$(DESTDIR)/include"
56*2fdca9bdSJeremy Soller
57*2fdca9bdSJeremy Sollerinstall-libs: all
58950b4526SJeremy Soller	mkdir -pv "$(DESTDIR)/lib"
594e3b6732SJeremy Soller	cp -v "$(BUILD)/release/libc.a" "$(DESTDIR)/lib"
604e3b6732SJeremy Soller	cp -v "$(BUILD)/release/crt0.o" "$(DESTDIR)/lib"
61d659377bSjD91mZM2	cp -v "$(BUILD)/release/crti.o" "$(DESTDIR)/lib"
62d659377bSjD91mZM2	cp -v "$(BUILD)/release/crtn.o" "$(DESTDIR)/lib"
6355378175SjD91mZM2	cp -v "$(BUILD)/openlibm/libopenlibm.a" "$(DESTDIR)/lib/libm.a"
64be035f88SJeremy Soller	cp -v "$(BUILD)/pthreads-emb/libpthread.a" "$(DESTDIR)/lib/libpthread.a"
6578c8c217SJeremy Soller
66*2fdca9bdSJeremy Sollerinstall: install-headers install-libs
67*2fdca9bdSJeremy Soller
68d659377bSjD91mZM2libc: $(BUILD)/release/libc.a $(BUILD)/release/crt0.o $(BUILD)/release/crti.o $(BUILD)/release/crtn.o $(BUILD)/include
69e1abe809SJeremy Soller
70e1abe809SJeremy Sollerlibm: $(BUILD)/openlibm/libopenlibm.a
71e1abe809SJeremy Soller
728aae8e15SJeremy Sollerlibpthread: $(BUILD)/pthreads-emb/libpthread.a
738aae8e15SJeremy Soller
7428f4da52SJeremy Sollersysroot: all
751acc2a1aSjD91mZM2	rm -rf $@
7682b9715fSJeremy Soller	rm -rf $@.partial
7782b9715fSJeremy Soller	mkdir -p $@.partial
78cee4449fSJeremy Soller	$(MAKE) install DESTDIR=$@.partial
7982b9715fSJeremy Soller	mv $@.partial $@
8082b9715fSJeremy Soller	touch $@
8182b9715fSJeremy Soller
82d659377bSjD91mZM2test: sysroot
83cee4449fSJeremy Soller	$(MAKE) -C tests run
84d9e4622fSJeremy Soller
850c5abf03SJeremy Soller$(BUILD)/release/libc.a: $(BUILD)/release/librelibc.a $(BUILD)/pthreads-emb/libpthread.a $(BUILD)/openlibm/libopenlibm.a
860c5abf03SJeremy Soller	echo "create $@" > "$@.mri"
870c5abf03SJeremy Soller	for lib in $^; do\
880c5abf03SJeremy Soller		echo "addlib $$lib" >> "$@.mri"; \
890c5abf03SJeremy Soller	done
900c5abf03SJeremy Soller	echo "save" >> "$@.mri"
910c5abf03SJeremy Soller	echo "end" >> "$@.mri"
920c5abf03SJeremy Soller	ar -M < "$@.mri"
930c5abf03SJeremy Soller
940c5abf03SJeremy Soller$(BUILD)/debug/librelibc.a: $(SRC)
9562b0b0d5SJeremy Soller	$(CARGO) rustc $(CARGOFLAGS) -- $(RUSTCFLAGS)
96afdc8062SJeremy Soller	touch $@
97d9e4622fSJeremy Soller
988c218b16SJeremy Soller$(BUILD)/debug/crt0.o: $(SRC)
99bee72373SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ -C panic=abort $(RUSTCFLAGS)
100afdc8062SJeremy Soller	touch $@
101d9e4622fSJeremy Soller
1020c5abf03SJeremy Soller$(BUILD)/debug/crti.o: $(SRC)
103bee72373SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --manifest-path src/crti/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ -C panic=abort $(RUSTCFLAGS)
1040c5abf03SJeremy Soller	touch $@
1050c5abf03SJeremy Soller
1060c5abf03SJeremy Soller$(BUILD)/debug/crtn.o: $(SRC)
107bee72373SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --manifest-path src/crtn/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ -C panic=abort $(RUSTCFLAGS)
1080c5abf03SJeremy Soller	touch $@
1090c5abf03SJeremy Soller
1100c5abf03SJeremy Soller$(BUILD)/release/librelibc.a: $(SRC)
11162b0b0d5SJeremy Soller	$(CARGO) rustc --release $(CARGOFLAGS) -- $(RUSTCFLAGS)
112afdc8062SJeremy Soller	touch $@
11347ee733aSJeremy Soller
1148c218b16SJeremy Soller$(BUILD)/release/crt0.o: $(SRC)
115bee72373SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ -C panic=abort $(RUSTCFLAGS)
116afdc8062SJeremy Soller	touch $@
11747ee733aSJeremy Soller
118d659377bSjD91mZM2$(BUILD)/release/crti.o: $(SRC)
119bee72373SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crti/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ -C panic=abort $(RUSTCFLAGS)
120d659377bSjD91mZM2	touch $@
121d659377bSjD91mZM2
122d659377bSjD91mZM2$(BUILD)/release/crtn.o: $(SRC)
123bee72373SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crtn/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@ -C panic=abort $(RUSTCFLAGS)
124d659377bSjD91mZM2	touch $@
125d659377bSjD91mZM2
1267ab70031SJeremy Soller$(BUILD)/include: $(SRC)
1277ab70031SJeremy Soller	rm -rf $@ $@.partial
1287ab70031SJeremy Soller	mkdir -p $@.partial
1297ab70031SJeremy Soller	./include.sh $@.partial
1307ab70031SJeremy Soller	mv $@.partial $@
13182b9715fSJeremy Soller	touch $@
1327ab70031SJeremy Soller
133ae137dbcSJeremy Soller$(BUILD)/openlibm: openlibm
134ae137dbcSJeremy Soller	rm -rf $@ $@.partial
13569993639SJeremy Soller	mkdir -p $(BUILD)
136ae137dbcSJeremy Soller	cp -r $< $@.partial
137ae137dbcSJeremy Soller	mv $@.partial $@
138afdc8062SJeremy Soller	touch $@
139ae137dbcSJeremy Soller
140124e118fSJeremy Soller$(BUILD)/openlibm/libopenlibm.a: $(BUILD)/openlibm $(BUILD)/include
141cee4449fSJeremy Soller	$(MAKE) CC=$(CC) CPPFLAGS="-fno-stack-protector -I$(shell pwd)/include -I $(shell pwd)/$(BUILD)/include" -C $< libopenlibm.a
1428aae8e15SJeremy Soller
1438aae8e15SJeremy Soller$(BUILD)/pthreads-emb: pthreads-emb
1448aae8e15SJeremy Soller	rm -rf $@ $@.partial
1458aae8e15SJeremy Soller	mkdir -p $(BUILD)
1468aae8e15SJeremy Soller	cp -r $< $@.partial
1478aae8e15SJeremy Soller	mv $@.partial $@
1488aae8e15SJeremy Soller	touch $@
1498aae8e15SJeremy Soller
1508aae8e15SJeremy Soller$(BUILD)/pthreads-emb/libpthread.a: $(BUILD)/pthreads-emb $(BUILD)/include
151cee4449fSJeremy Soller	$(MAKE) CC=$(CC) CFLAGS="-fno-stack-protector -I$(shell pwd)/include -I $(shell pwd)/$(BUILD)/include" -C $< libpthread.a
152