-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.isp
90 lines (74 loc) · 3.74 KB
/
Makefile.isp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
.PHONY: all
.PHONY: install
.PHONY: clean
.PHONY: rv32 rv64 multilib
ISP_PREFIX ?= $(HOME)/.local/isp/
#_____________________________________________________ 32 bit flags
CONFIGURE32_OPTIONS += --prefix=$(ISP_PREFIX)/clang_sysroot
CONFIGURE32_OPTIONS += --target=riscv32-unknown-elf
CONFIGURE32_OPTIONS += CFLAGS_FOR_TARGET="-O0 -g -fuse-init-array -ffreestanding -mno-relax --target=riscv32-unknown-elf -march=rv32ima -mabi=ilp32"
CONFIGURE32_OPTIONS += LDFLAGS_FOR_TARGET="-fuse-ld=lld"
CONFIGURE32_OPTIONS += CC_FOR_TARGET=$(ISP_PREFIX)/bin/clang
CONFIGURE32_OPTIONS += AR_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-ar
CONFIGURE32_OPTIONS += AS_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-as
CONFIGURE32_OPTIONS += ASFLAGS="-march=rv32ima -mabi=ilp32"
CONFIGURE32_OPTIONS += LD_FOR_TARGET=$(ISP_PREFIX)/bin/lld
CONFIGURE32_OPTIONS += RANLIB_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-ranlib
#_____________________________________________________ 64 bit flags
CONFIGURE64_OPTIONS += --prefix=$(ISP_PREFIX)/clang_sysroot
CONFIGURE64_OPTIONS += --target=riscv64-unknown-elf
CONFIGURE64_OPTIONS += CFLAGS_FOR_TARGET="-O0 -g -fuse-init-array -ffreestanding -mno-relax -mcmodel=medany --target=riscv64-unknown-elf -march=rv64imafd -mabi=lp64d"
CONFIGURE64_OPTIONS += LDFLAGS_FOR_TARGET="-fuse-ld=lld"
CONFIGURE64_OPTIONS += CC_FOR_TARGET=$(ISP_PREFIX)/bin/clang
CONFIGURE64_OPTIONS += AR_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-ar
CONFIGURE64_OPTIONS += AS_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-as
CONFIGURE64_OPTIONS += LD_FOR_TARGET=$(ISP_PREFIX)/bin/lld
CONFIGURE64_OPTIONS += RANLIB_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-ranlib
#_____________________________________________________ Multilib flags
CONFIGUREMULTI_OPTIONS += --prefix=$(ISP_PREFIX)/clang_sysroot
CONFIGUREMULTI_OPTIONS += --enable-multilib
CONFIGUREMULTI_OPTIONS += --with-newlib
CONFIGUREMULTI_OPTIONS += --target=riscv64-unknown-elf
CONFIGUREMULTI_OPTIONS += --enable-newlib-iconv --enable-newlib-io-c99-formats
CONFIGUREMULTI_OPTIONS += --enable-newlib-io-long-double
CONFIGUREMULTI_OPTIONS += --enable-newlib-io-long-long
CONFIGUREMULTI_OPTIONS += --enable-newlib-register-fini
CONFIGUREMULTI_OPTIONS += CFLAGS_FOR_TARGET="-O0 -g -fuse-ld=lld -ffreestanding -mno-relax -mcmodel=medany --target=riscv64-unknown-elf"
CONFIGUREMULTI_OPTIONS += CC_FOR_TARGET=$(ISP_PREFIX)/bin/clang
CONFIGUREMULTI_OPTIONS += AR_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-ar
CONFIGUREMULTI_OPTIONS += AS_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-as
CONFIGUREMULTI_OPTIONS += LD_FOR_TARGET=$(ISP_PREFIX)/bin/lld
CONFIGUREMULTI_OPTIONS += RANLIB_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-ranlib
CONFIGUREMULTI_OPTIONS += CXX_FOR_TARGET=$(ISP_PREFIX)/bin/clang
CONFIGUREMULTI_OPTIONS += DLLTOOL_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-dlltool
CONFIGUREMULTI_OPTIONS += NM_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-nm
CONFIGUREMULTI_OPTIONS += OBJDUMP_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-objdump
CONFIGUREMULTI_OPTIONS += OBJCOPY_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-objcopy
CONFIGUREMULTI_OPTIONS += READELF_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-readelf
CONFIGUREMULTI_OPTIONS += STRIP_FOR_TARGET=$(ISP_PREFIX)/bin/llvm-strip
all: multilib
rv64: build64/Makefile
$(MAKE) -C build64
rv32: build32/Makefile
$(MAKE) -C build32
multilib: build_multilib/Makefile
$(MAKE) -C build_multilib MULTILIB_CONF=$(PWD)/multilib.conf
build32/Makefile:
mkdir -p build32
cd build32; ../configure $(CONFIGURE32_OPTIONS)
build64/Makefile:
mkdir -p build64
cd build64; ../configure $(CONFIGURE64_OPTIONS)
build_multilib/Makefile:
mkdir -p build_multilib
cd build_multilib; ../configure $(CONFIGUREMULTI_OPTIONS)
install:
if [ -d build32 ]; then \
$(MAKE) -C build32 install; \
elif [ -d build64 ]; then \
$(MAKE) -C build64 install; \
elif [ -d build_multilib ]; then \
$(MAKE) -C build_multilib install; \
fi
clean:
$(RM) -r build32 build64 build_multilib