xref: /relibc/Makefile (revision 9eef8d7e2dcbf0ced3af7cfd49d21bef386d4def)
1ae137dbcSJeremy SollerTARGET?=
2ae137dbcSJeremy Soller
347ee733aSJeremy SollerBUILD=target
4ae137dbcSJeremy Sollerifneq ($(TARGET),)
547ee733aSJeremy Soller	BUILD="target/$(TARGET)"
6ae137dbcSJeremy Soller	CARGOFLAGS+="--target=$(TARGET)"
747ee733aSJeremy Sollerendif
847ee733aSJeremy Soller
947ee733aSJeremy Sollerifeq ($(TARGET),aarch64-unknown-linux-gnu)
10fb09b03aSjD91mZM2	CC=aarch64-linux-gnu-gcc
1147ee733aSJeremy Sollerendif
1247ee733aSJeremy Soller
1347ee733aSJeremy Sollerifeq ($(TARGET),x86_64-unknown-redox)
14fb09b03aSjD91mZM2	CC=x86_64-unknown-redox-gcc
15ae137dbcSJeremy Sollerendif
16ae137dbcSJeremy Soller
17adcd0c99SJeremy SollerSRC=\
18*9eef8d7eSJeremy Soller	Cargo.* \
19adcd0c99SJeremy Soller	src/* \
20adcd0c99SJeremy Soller	src/*/* \
21adcd0c99SJeremy Soller	src/*/*/* \
22adcd0c99SJeremy Soller	src/*/*/*/*
23adcd0c99SJeremy Soller
24124e118fSJeremy Soller.PHONY: all clean fmt include install libc libm test
25d9e4622fSJeremy Soller
26cb046c78SRobin Randhawaall: | libc libm
27d9e4622fSJeremy Soller
28d9e4622fSJeremy Sollerclean:
29d9e4622fSJeremy Soller	cargo clean
30d9e4622fSJeremy Soller	make -C tests clean
31d9e4622fSJeremy Soller
32729709a8SJeremy Sollercheck:
33729709a8SJeremy Soller	cargo check
34729709a8SJeremy Soller
35d9e4622fSJeremy Sollerfmt:
36d9e4622fSJeremy Soller	./fmt.sh
37d9e4622fSJeremy Soller
3878c8c217SJeremy Sollerinstall: all
3978c8c217SJeremy Soller	mkdir -pv "$(DESTDIR)/lib"
4078c8c217SJeremy Soller	mkdir -pv "$(DESTDIR)/include"
4178c8c217SJeremy Soller	cp -rv "include"/* "$(DESTDIR)/include"
420258fb3fSJeremy Soller	cp -rv "$(BUILD)/include"/* "$(DESTDIR)/include"
434e3b6732SJeremy Soller	cp -v "$(BUILD)/release/libc.a" "$(DESTDIR)/lib"
444e3b6732SJeremy Soller	cp -v "$(BUILD)/release/crt0.o" "$(DESTDIR)/lib"
45d659377bSjD91mZM2	cp -v "$(BUILD)/release/crti.o" "$(DESTDIR)/lib"
46d659377bSjD91mZM2	cp -v "$(BUILD)/release/crtn.o" "$(DESTDIR)/lib"
47320eb0ecSjD91mZM2	cp -rv "openlibm/include"/* "$(DESTDIR)/include"
48320eb0ecSjD91mZM2	cp -rv "openlibm/src"/*.h "$(DESTDIR)/include"
4955378175SjD91mZM2	cp -v "$(BUILD)/openlibm/libopenlibm.a" "$(DESTDIR)/lib/libm.a"
5078c8c217SJeremy Soller
51d659377bSjD91mZM2libc: $(BUILD)/release/libc.a $(BUILD)/release/crt0.o $(BUILD)/release/crti.o $(BUILD)/release/crtn.o $(BUILD)/include
52e1abe809SJeremy Soller
53e1abe809SJeremy Sollerlibm: $(BUILD)/openlibm/libopenlibm.a
54e1abe809SJeremy Soller
5528f4da52SJeremy Sollersysroot: all
5682b9715fSJeremy Soller	rm -rf $@.partial
5782b9715fSJeremy Soller	mkdir -p $@.partial
5882b9715fSJeremy Soller	make install DESTDIR=$@.partial
5982b9715fSJeremy Soller	mv $@.partial $@
6082b9715fSJeremy Soller	touch $@
6182b9715fSJeremy Soller
62d659377bSjD91mZM2test: sysroot
63d9e4622fSJeremy Soller	make -C tests run
64d9e4622fSJeremy Soller
65adcd0c99SJeremy Soller$(BUILD)/debug/libc.a: $(SRC)
66ae137dbcSJeremy Soller	cargo build $(CARGOFLAGS)
67afdc8062SJeremy Soller	touch $@
68d9e4622fSJeremy Soller
698c218b16SJeremy Soller$(BUILD)/debug/crt0.o: $(SRC)
707e6e1b16SJeremy Soller	CARGO_INCREMENTAL=0 cargo rustc --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
71afdc8062SJeremy Soller	touch $@
72d9e4622fSJeremy Soller
73adcd0c99SJeremy Soller$(BUILD)/release/libc.a: $(SRC)
7447ee733aSJeremy Soller	cargo build --release $(CARGOFLAGS)
75afdc8062SJeremy Soller	touch $@
7647ee733aSJeremy Soller
778c218b16SJeremy Soller$(BUILD)/release/crt0.o: $(SRC)
78878f466bSJeremy Soller	CARGO_INCREMENTAL=0 cargo rustc --release --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
79afdc8062SJeremy Soller	touch $@
8047ee733aSJeremy Soller
81d659377bSjD91mZM2$(BUILD)/release/crti.o: $(SRC)
82d659377bSjD91mZM2	CARGO_INCREMENTAL=0 cargo rustc --release --manifest-path src/crti/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
83d659377bSjD91mZM2	touch $@
84d659377bSjD91mZM2
85d659377bSjD91mZM2$(BUILD)/release/crtn.o: $(SRC)
86d659377bSjD91mZM2	CARGO_INCREMENTAL=0 cargo rustc --release --manifest-path src/crtn/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
87d659377bSjD91mZM2	touch $@
88d659377bSjD91mZM2
897ab70031SJeremy Soller$(BUILD)/include: $(SRC)
907ab70031SJeremy Soller	rm -rf $@ $@.partial
917ab70031SJeremy Soller	mkdir -p $@.partial
927ab70031SJeremy Soller	./include.sh $@.partial
937ab70031SJeremy Soller	mv $@.partial $@
9482b9715fSJeremy Soller	touch $@
957ab70031SJeremy Soller
96ae137dbcSJeremy Soller$(BUILD)/openlibm: openlibm
97ae137dbcSJeremy Soller	rm -rf $@ $@.partial
9869993639SJeremy Soller	mkdir -p $(BUILD)
99ae137dbcSJeremy Soller	cp -r $< $@.partial
100ae137dbcSJeremy Soller	mv $@.partial $@
101afdc8062SJeremy Soller	touch $@
102ae137dbcSJeremy Soller
103124e118fSJeremy Soller$(BUILD)/openlibm/libopenlibm.a: $(BUILD)/openlibm $(BUILD)/include
1040258fb3fSJeremy Soller	make CC=$(CC) CPPFLAGS="-fno-stack-protector -I$(shell pwd)/include -I $(shell pwd)/$(BUILD)/include" -C $< libopenlibm.a
105