xref: /relibc/Makefile (revision 8a972542bef636a93043bfeb8a6f0a09e3690abf)
1ae137dbcSJeremy SollerTARGET?=
2ae137dbcSJeremy Soller
3*8a972542SJeremy SollerCARGO?=cargo
4*8a972542SJeremy SollerCARGOFLAGS?=
5*8a972542SJeremy Soller
647ee733aSJeremy SollerBUILD=target
7ae137dbcSJeremy Sollerifneq ($(TARGET),)
847ee733aSJeremy Soller	BUILD="target/$(TARGET)"
9ae137dbcSJeremy Soller	CARGOFLAGS+="--target=$(TARGET)"
1047ee733aSJeremy Sollerendif
1147ee733aSJeremy Soller
1247ee733aSJeremy Sollerifeq ($(TARGET),aarch64-unknown-linux-gnu)
13c36ee723SJeremy Soller	CC?=aarch64-linux-gnu-gcc
1447ee733aSJeremy Sollerendif
1547ee733aSJeremy Soller
1647ee733aSJeremy Sollerifeq ($(TARGET),x86_64-unknown-redox)
17c36ee723SJeremy Soller	CC?=x86_64-unknown-redox-gcc
18ae137dbcSJeremy Sollerendif
19ae137dbcSJeremy Soller
20adcd0c99SJeremy SollerSRC=\
219eef8d7eSJeremy Soller	Cargo.* \
22adcd0c99SJeremy Soller	src/* \
23adcd0c99SJeremy Soller	src/*/* \
24adcd0c99SJeremy Soller	src/*/*/* \
25adcd0c99SJeremy Soller	src/*/*/*/*
26adcd0c99SJeremy Soller
27124e118fSJeremy Soller.PHONY: all clean fmt include install libc libm test
28d9e4622fSJeremy Soller
29cb046c78SRobin Randhawaall: | libc libm
30d9e4622fSJeremy Soller
31d9e4622fSJeremy Sollerclean:
32c36ee723SJeremy Soller	$(CARGO) clean
33d9e4622fSJeremy Soller	make -C tests clean
34d9e4622fSJeremy Soller
35729709a8SJeremy Sollercheck:
36c36ee723SJeremy Soller	$(CARGO) check
37729709a8SJeremy Soller
38d9e4622fSJeremy Sollerfmt:
39d9e4622fSJeremy Soller	./fmt.sh
40d9e4622fSJeremy Soller
4178c8c217SJeremy Sollerinstall: all
4278c8c217SJeremy Soller	mkdir -pv "$(DESTDIR)/lib"
4378c8c217SJeremy Soller	mkdir -pv "$(DESTDIR)/include"
4478c8c217SJeremy Soller	cp -rv "include"/* "$(DESTDIR)/include"
450258fb3fSJeremy Soller	cp -rv "$(BUILD)/include"/* "$(DESTDIR)/include"
464e3b6732SJeremy Soller	cp -v "$(BUILD)/release/libc.a" "$(DESTDIR)/lib"
474e3b6732SJeremy Soller	cp -v "$(BUILD)/release/crt0.o" "$(DESTDIR)/lib"
48d659377bSjD91mZM2	cp -v "$(BUILD)/release/crti.o" "$(DESTDIR)/lib"
49d659377bSjD91mZM2	cp -v "$(BUILD)/release/crtn.o" "$(DESTDIR)/lib"
50320eb0ecSjD91mZM2	cp -rv "openlibm/include"/* "$(DESTDIR)/include"
51320eb0ecSjD91mZM2	cp -rv "openlibm/src"/*.h "$(DESTDIR)/include"
5255378175SjD91mZM2	cp -v "$(BUILD)/openlibm/libopenlibm.a" "$(DESTDIR)/lib/libm.a"
5378c8c217SJeremy Soller
54d659377bSjD91mZM2libc: $(BUILD)/release/libc.a $(BUILD)/release/crt0.o $(BUILD)/release/crti.o $(BUILD)/release/crtn.o $(BUILD)/include
55e1abe809SJeremy Soller
56e1abe809SJeremy Sollerlibm: $(BUILD)/openlibm/libopenlibm.a
57e1abe809SJeremy Soller
5828f4da52SJeremy Sollersysroot: all
591acc2a1aSjD91mZM2	rm -rf $@
6082b9715fSJeremy Soller	rm -rf $@.partial
6182b9715fSJeremy Soller	mkdir -p $@.partial
6282b9715fSJeremy Soller	make install DESTDIR=$@.partial
6382b9715fSJeremy Soller	mv $@.partial $@
6482b9715fSJeremy Soller	touch $@
6582b9715fSJeremy Soller
66d659377bSjD91mZM2test: sysroot
67d9e4622fSJeremy Soller	make -C tests run
68d9e4622fSJeremy Soller
69adcd0c99SJeremy Soller$(BUILD)/debug/libc.a: $(SRC)
70c36ee723SJeremy Soller	$(CARGO) build $(CARGOFLAGS)
71afdc8062SJeremy Soller	touch $@
72d9e4622fSJeremy Soller
738c218b16SJeremy Soller$(BUILD)/debug/crt0.o: $(SRC)
74c36ee723SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
75afdc8062SJeremy Soller	touch $@
76d9e4622fSJeremy Soller
77adcd0c99SJeremy Soller$(BUILD)/release/libc.a: $(SRC)
78c36ee723SJeremy Soller	$(CARGO) build --release $(CARGOFLAGS)
79afdc8062SJeremy Soller	touch $@
8047ee733aSJeremy Soller
818c218b16SJeremy Soller$(BUILD)/release/crt0.o: $(SRC)
82c36ee723SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
83afdc8062SJeremy Soller	touch $@
8447ee733aSJeremy Soller
85d659377bSjD91mZM2$(BUILD)/release/crti.o: $(SRC)
86c36ee723SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crti/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
87d659377bSjD91mZM2	touch $@
88d659377bSjD91mZM2
89d659377bSjD91mZM2$(BUILD)/release/crtn.o: $(SRC)
90c36ee723SJeremy Soller	CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crtn/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
91d659377bSjD91mZM2	touch $@
92d659377bSjD91mZM2
937ab70031SJeremy Soller$(BUILD)/include: $(SRC)
947ab70031SJeremy Soller	rm -rf $@ $@.partial
957ab70031SJeremy Soller	mkdir -p $@.partial
967ab70031SJeremy Soller	./include.sh $@.partial
977ab70031SJeremy Soller	mv $@.partial $@
9882b9715fSJeremy Soller	touch $@
997ab70031SJeremy Soller
100ae137dbcSJeremy Soller$(BUILD)/openlibm: openlibm
101ae137dbcSJeremy Soller	rm -rf $@ $@.partial
10269993639SJeremy Soller	mkdir -p $(BUILD)
103ae137dbcSJeremy Soller	cp -r $< $@.partial
104ae137dbcSJeremy Soller	mv $@.partial $@
105afdc8062SJeremy Soller	touch $@
106ae137dbcSJeremy Soller
107124e118fSJeremy Soller$(BUILD)/openlibm/libopenlibm.a: $(BUILD)/openlibm $(BUILD)/include
1080258fb3fSJeremy Soller	make CC=$(CC) CPPFLAGS="-fno-stack-protector -I$(shell pwd)/include -I $(shell pwd)/$(BUILD)/include" -C $< libopenlibm.a
109