1
- TARGETS := libjevmachopp.a
1
+ TARGETS := build/jevmachopp/ libjevmachopp.a
2
2
3
3
ROOT_DIR := $(patsubst % /,% ,$(dir $(lastword $(MAKEFILE_LIST ) ) ) )
4
4
8
8
9
9
LIBJEVMACHOPP_CXX_SRCS := $(wildcard $(ROOT_DIR ) /lib/jevmachopp/* .cpp)
10
10
LIBJEVMACHOPP_CXX_OBJS := $(notdir $(LIBJEVMACHOPP_CXX_SRCS:.cpp=.o ) )
11
+
11
12
LIBJEVMACHOPP_ASM_SRCS := $(wildcard $(ROOT_DIR ) /lib/jevmachopp/* .S)
12
13
LIBJEVMACHOPP_ASM_OBJS := $(notdir $(LIBJEVMACHOPP_ASM_SRCS:.S=.o ) )
14
+
13
15
LIBJEVMACHOPP_OBJS := $(LIBJEVMACHOPP_CXX_OBJS ) $(LIBJEVMACHOPP_ASM_OBJS )
14
16
# no slurp/mmap on baremetal
15
17
LIBJEVMACHOPP_OBJS := $(filter-out Slurp.o,$(LIBJEVMACHOPP_OBJS ) )
16
18
LIBJEVMACHOPP_OBJS := $(filter-out SearchFS.o,$(LIBJEVMACHOPP_OBJS ) )
19
+ LIBJEVMACHOPP_OBJS := $(filter-out PlatformizeHelper.o,$(LIBJEVMACHOPP_OBJS ) )
20
+ LIBJEVMACHOPP_OBJS := $(addprefix build/jevmachopp/,$(LIBJEVMACHOPP_OBJS ) )
17
21
18
- AR ?= aarch64-none-elf-gcc-ar
19
- CC ?= aarch64-none-elf-gcc
20
- CXX ?= aarch64-none-elf-g++
21
- LD ?= aarch64-none-elf-ld
22
+ JEV_AR ?= aarch64-none-elf-gcc-ar
23
+ JEV_CC ?= aarch64-none-elf-gcc
24
+ JEV_CXX ?= aarch64-none-elf-g++
25
+ JEV_LD ?= aarch64-none-elf-ld
22
26
23
27
BOOST_DEFINE_FLAGS := -DBOOST_STATIC_STRING_STANDALONE=1 -DBOOST_NO_EXCEPTIONS=1
24
28
FMT_DEFINE_FLAGS := -DFMT_EXCEPTIONS=0 -DFMT_LOCALE -DFMT_USE_DOUBLE=0 -DFMT_USE_FLOAT=0 -DFMT_USE_INT128=0 -DFMT_USE_LONG_DOUBLE=0 -DFMT_USE_NONTYPE_TEMPLATE_PARAMETERS=1 -DFMT_USE_USER_DEFINED_LITERALS=1
25
29
FMT_DEFINE_FLAGS += -DUSE_FMT=0
26
- DEFINE_FLAGS := $(BOOST_DEFINE_FLAGS ) $(FMT_DEFINE_FLAGS )
30
+ DEFINE_FLAGS := -DM1N1=1 $(BOOST_DEFINE_FLAGS ) $(FMT_DEFINE_FLAGS )
27
31
INCLUDE_FLAGS := -I $(ROOT_DIR ) /include -I $(ROOT_DIR ) /3rdparty/fmt/include -I $(ROOT_DIR ) /3rdparty/hedley -I $(ROOT_DIR ) /3rdparty/callable_traits/include -I $(ROOT_DIR ) /3rdparty/static_string/include -I $(ROOT_DIR ) /3rdparty/static_vector/include -I $(ROOT_DIR ) /3rdparty/enum.hpp/headers -I $(ROOT_DIR ) /3rdparty/nanorange/include -I $(ROOT_DIR ) /3rdparty/uleb128/include -I $(ROOT_DIR ) /3rdparty/visit/include
28
32
29
33
# C_CXX_FLAGS := -Os
@@ -33,6 +37,8 @@ C_CXX_FLAGS += -Wno-unknown-pragmas
33
37
JEV_CFLAGS := $(CFLAGS )
34
38
JEV_CFLAGS := $(filter-out -ffreestanding,$(JEV_CFLAGS ) )
35
39
JEV_CFLAGS := $(filter-out -nostdinc,$(JEV_CFLAGS ) )
40
+ JEV_CFLAGS := $(filter-out -isystem $(shell $(CC ) -print-file-name=include) ,$(JEV_CFLAGS ) )
41
+ JEV_CFLAGS := $(filter-out -isystem sysinc,$(JEV_CFLAGS ) )
36
42
JEV_CFLAGS := $(JEV_CFLAGS ) $(C_CXX_FLAGS ) -std=gnu11 $(DEFINE_FLAGS ) $(INCLUDE_FLAGS )
37
43
JEV_CXXFLAGS := $(JEV_CFLAGS ) $(CXXFLAGS ) $(C_CXX_FLAGS ) -std=gnu++2b $(DEFINE_FLAGS ) $(INCLUDE_FLAGS )
38
44
JEV_CXXFLAGS := $(filter-out -Werror=strict-prototypes,$(JEV_CXXFLAGS ) )
@@ -45,18 +51,24 @@ JEV_CXXFLAGS += -fconcepts-diagnostics-depth=6
45
51
print-% :
46
52
@echo $* = $($* )
47
53
48
- all : $(TARGETS )
54
+ all-default : $(TARGETS )
55
+
56
+ .PHONY : clean-default
49
57
50
- .PHONY : clean
58
+ clean-default :
59
+ rm -rf build/*
51
60
52
- clean :
53
- rm -f $( TARGETS ) $( LIBJEVMACHOPP_OBJS )
61
+ % : % -default
62
+ @true
54
63
55
- % .o : $(ROOT_DIR ) /lib/jevmachopp/% .cpp
56
- $(CXX ) $(JEV_CXXFLAGS ) -c -o $@ $^
64
+ build/jevmachopp/% .o : $(ROOT_DIR ) /lib/jevmachopp/% .cpp
65
+ @mkdir -p " $( dir $@ ) "
66
+ $(JEV_CXX ) $(JEV_CXXFLAGS ) -c -o $@ $^
57
67
58
- % .o : $(ROOT_DIR ) /lib/jevmachopp/% .S
59
- $(CXX ) $(JEV_CXXFLAGS ) -c -o $@ $^
68
+ build/jevmachopp/% .o : $(ROOT_DIR ) /lib/jevmachopp/% .S
69
+ @mkdir -p " $( dir $@ ) "
70
+ $(JEV_CXX ) $(JEV_CXXFLAGS ) -c -o $@ $^
60
71
61
- libjevmachopp.a : $(LIBJEVMACHOPP_OBJS )
62
- $(AR ) rc $@ $^
72
+ build/jevmachopp/libjevmachopp.a : $(LIBJEVMACHOPP_OBJS )
73
+ @mkdir -p " $( dir $@ ) "
74
+ $(JEV_AR ) rc $@ $^
0 commit comments