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