Files
RedBear-OS/Makefile
T
Alexander Theißen e102c234c1 Properly export CC variable in Makefile
We cannot use ?= because CC is set by default to "cc". Therefore
CC was never set. In addition we need to export the variable
in order to have the rust cc crate pick it up. Otherwise it is
only used by openlibm where it is explicitly passed.
2018-11-17 20:17:35 +01:00

109 lines
2.5 KiB
Makefile

TARGET?=
CARGO?=cargo
CARGOFLAGS=
BUILD=target
ifneq ($(TARGET),)
BUILD="target/$(TARGET)"
CARGOFLAGS="--target=$(TARGET)"
endif
ifeq ($(TARGET),aarch64-unknown-linux-gnu)
export CC=aarch64-linux-gnu-gcc
endif
ifeq ($(TARGET),x86_64-unknown-redox)
export 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 $@.partial
mkdir -p $@.partial
make install DESTDIR=$@.partial
mv $@.partial $@
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 $@ $@.partial
mkdir -p $@.partial
./include.sh $@.partial
mv $@.partial $@
touch $@
$(BUILD)/openlibm: openlibm
rm -rf $@ $@.partial
mkdir -p $(BUILD)
cp -r $< $@.partial
mv $@.partial $@
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