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