123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- TARGET?=
- CARGO?=cargo
- CARGOFLAGS?=
- BUILD=target
- ifneq ($(TARGET),)
- BUILD="target/$(TARGET)"
- CARGOFLAGS+="--target=$(TARGET)"
- endif
- ifeq ($(TARGET),aarch64-unknown-linux-gnu)
- CC?=aarch64-linux-gnu-gcc
- endif
- ifeq ($(TARGET),x86_64-unknown-redox)
- CC?=x86_64-unknown-redox-gcc
- endif
- SRC=\
- Cargo.* \
- src/* \
- src/*/* \
- src/*/*/* \
- src/*/*/*/*
- .PHONY: all clean fmt include install libc libm test
- all: | libc libm
- clean:
- $(CARGO) clean
- make -C tests clean
- check:
- $(CARGO) check
- fmt:
- ./fmt.sh
- install: all
- mkdir -pv "$(DESTDIR)/lib"
- mkdir -pv "$(DESTDIR)/include"
- cp -rv "include"/* "$(DESTDIR)/include"
- cp -rv "$(BUILD)/include"/* "$(DESTDIR)/include"
- cp -v "$(BUILD)/release/libc.a" "$(DESTDIR)/lib"
- cp -v "$(BUILD)/release/crt0.o" "$(DESTDIR)/lib"
- cp -v "$(BUILD)/release/crti.o" "$(DESTDIR)/lib"
- cp -v "$(BUILD)/release/crtn.o" "$(DESTDIR)/lib"
- cp -rv "openlibm/include"/* "$(DESTDIR)/include"
- cp -rv "openlibm/src"/*.h "$(DESTDIR)/include"
- cp -v "$(BUILD)/openlibm/libopenlibm.a" "$(DESTDIR)/lib/libm.a"
- libc: $(BUILD)/release/libc.a $(BUILD)/release/crt0.o $(BUILD)/release/crti.o $(BUILD)/release/crtn.o $(BUILD)/include
- libm: $(BUILD)/openlibm/libopenlibm.a
- sysroot: all
- rm -rf $@
- rm -rf [email protected]
- mkdir -p [email protected]
- make install [email protected]
- mv [email protected] $@
- touch $@
- test: sysroot
- make -C tests run
- $(BUILD)/debug/libc.a: $(SRC)
- $(CARGO) build $(CARGOFLAGS)
- touch $@
- $(BUILD)/debug/crt0.o: $(SRC)
- CARGO_INCREMENTAL=0 $(CARGO) rustc --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
- touch $@
- $(BUILD)/release/libc.a: $(SRC)
- $(CARGO) build --release $(CARGOFLAGS)
- touch $@
- $(BUILD)/release/crt0.o: $(SRC)
- CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crt0/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
- touch $@
- $(BUILD)/release/crti.o: $(SRC)
- CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crti/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
- touch $@
- $(BUILD)/release/crtn.o: $(SRC)
- CARGO_INCREMENTAL=0 $(CARGO) rustc --release --manifest-path src/crtn/Cargo.toml $(CARGOFLAGS) -- --emit obj=$@
- touch $@
- $(BUILD)/include: $(SRC)
- rm -rf $@ [email protected]
- mkdir -p [email protected]
- ./include.sh [email protected]
- mv [email protected] $@
- touch $@
- $(BUILD)/openlibm: openlibm
- rm -rf $@ [email protected]
- mkdir -p $(BUILD)
- cp -r $< [email protected]
- mv [email protected] $@
- touch $@
- $(BUILD)/openlibm/libopenlibm.a: $(BUILD)/openlibm $(BUILD)/include
- make CC=$(CC) CPPFLAGS="-fno-stack-protector -I$(shell pwd)/include -I $(shell pwd)/$(BUILD)/include" -C $< libopenlibm.a
|