libbuiltin: Simplify makefile writing
Create a separate bin folder to place the generated .o files Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
This commit is contained in:
parent
d0680fd1bc
commit
4ba941e2b0
2 changed files with 37 additions and 139 deletions
|
|
@ -20,16 +20,16 @@
|
|||
|
||||
include $(TOPDIR)/Make.defs
|
||||
|
||||
ifeq ($(CONFIG_BUILTIN_COMPILER_RT),y)
|
||||
include compiler-rt/Make.defs
|
||||
endif
|
||||
|
||||
BIN ?= libbuiltin$(LIBEXT)
|
||||
BINDIR ?= bin
|
||||
|
||||
KBIN = libkbuiltin$(LIBEXT)
|
||||
KBINDIR = kbin
|
||||
|
||||
ifeq ($(CONFIG_BUILTIN_COMPILER_RT),y)
|
||||
include compiler-rt/Make.defs
|
||||
endif
|
||||
|
||||
AOBJS = $(addprefix $(BINDIR)$(DELIM), $(ASRCS:.S=$(OBJEXT)))
|
||||
COBJS = $(addprefix $(BINDIR)$(DELIM), $(CSRCS:.c=$(OBJEXT)))
|
||||
CXXOBJS = $(addprefix $(BINDIR)$(DELIM), $(CXXSRCS:.cxx=$(OBJEXT)))
|
||||
|
|
@ -79,7 +79,7 @@ clean:
|
|||
$(Q) $(MAKE) -C bin clean
|
||||
$(Q) $(MAKE) -C kbin clean
|
||||
|
||||
distclean: clean
|
||||
distclean:: clean
|
||||
$(Q) $(MAKE) -C bin distclean
|
||||
$(Q) $(MAKE) -C kbin distclean
|
||||
$(call DELFILE, .depend)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,16 @@ LIBBUILTIN += compiler-rt
|
|||
|
||||
COMPILER_RT_VERSION=$(CONFIG_COMPILER_RT_VERSION)
|
||||
|
||||
ifeq ($(CONFIG_ARCH_ARM),y)
|
||||
ARCH = arm
|
||||
else ifeq ($(CONFIG_ARCH_RISCV),y)
|
||||
ARCH = riscv
|
||||
else ifeq ($(CONFIG_ARCH_X86_64),y)
|
||||
ARCH = x86_64
|
||||
else ifeq ($(CONFIG_ARCH_ARM64),y)
|
||||
ARCH = aarch64
|
||||
endif
|
||||
|
||||
ifeq ($(wildcard compiler-rt/compiler-rt/lib),)
|
||||
compiler-rt-$(COMPILER_RT_VERSION).src.tar.xz:
|
||||
$(call DOWNLOAD,https://github.com/llvm/llvm-project/releases/download/llvmorg-$(COMPILER_RT_VERSION),$@)
|
||||
|
|
@ -34,162 +44,50 @@ compiler-rt/compiler-rt: compiler-rt-$(COMPILER_RT_VERSION).src.tar.xz
|
|||
$(call DELDIR, $<)
|
||||
|
||||
compiler-rt: compiler-rt/compiler-rt
|
||||
$(Q) mkdir $(BINDIR)/compiler-rt \
|
||||
$(BINDIR)/compiler-rt/compiler-rt \
|
||||
$(BINDIR)/compiler-rt/compiler-rt/lib \
|
||||
$(BINDIR)/compiler-rt/compiler-rt/lib/builtins \
|
||||
$(BINDIR)/compiler-rt/compiler-rt/lib/builtins/$(ARCH) \
|
||||
$(BINDIR)/compiler-rt/compiler-rt/lib/profile
|
||||
|
||||
endif
|
||||
|
||||
distclean::
|
||||
$(call DELDIR, $(BINDIR)/compiler-rt)
|
||||
|
||||
FLAGS += ${INCDIR_PREFIX}$(CURDIR)/compiler-rt/compiler-rt/include
|
||||
FLAGS += ${INCDIR_PREFIX}$(CURDIR)/compiler-rt/compiler-rt/lib/builtins
|
||||
FLAGS += ${INCDIR_PREFIX}$(CURDIR)/compiler-rt/compiler-rt/lib/builtins/${ARCH}
|
||||
FLAGS += -Wno-shift-count-negative -Wno-constant-conversion -Wshift-count-overflow
|
||||
FLAGS += -Wno-undef -Wno-incompatible-pointer-types -Wno-visibility -Wno-macro-redefined
|
||||
|
||||
################# Builtin Library #################
|
||||
|
||||
# Files related to arithmetic operations
|
||||
CSRCS += absvdi2.c absvsi2.c absvti2.c adddf3.c addtf3.c addvdi3.c addvsi3.c addvti3.c \
|
||||
muldc3.c muldf3.c mulodi4.c mulosi4.c muloti4.c mulsc3.c mulsf3.c multc3.c multf3.c \
|
||||
multi3.c mulvdi3.c mulvsi3.c mulvti3.c mulxc3.c negdf2.c negdi2.c negsf2.c negti2.c \
|
||||
negvdi2.c negvsi2.c negvti2.c subdf3.c subsf3.c subtf3.c subvdi3.c subvsi3.c subvti3.c
|
||||
CSRCS += $(wildcard compiler-rt/compiler-rt/lib/builtins/*.c)
|
||||
ASRCS += $(wildcard compiler-rt/compiler-rt/lib/builtins/$(ARCH)/*.S)
|
||||
CSRCS += $(wildcard compiler-rt/compiler-rt/lib/builtins/$(ARCH)/*.c)
|
||||
|
||||
# Floating point processing related files
|
||||
CSRCS += floatdidf.c floatdisf.c floatditf.c floatdixf.c floatsidf.c floatsisf.c floatsitf.c \
|
||||
floattidf.c floattisf.c floattitf.c floattixf.c floatunditf.c \
|
||||
floatunsidf.c floatunsisf.c floatunsitf.c floatuntidf.c floatuntisf.c \
|
||||
floatuntitf.c floatuntixf.c
|
||||
|
||||
# Convert and expand related files
|
||||
CSRCS += fixtfdi.c fixtfsi.c fixtfti.c fixunsdfdi.c fixunsdfsi.c fixunsdfti.c fixunssfdi.c \
|
||||
fixunssfsi.c fixunssfti.c fixunstfdi.c fixunstfsi.c fixunstfti.c fixunsxfdi.c fixunsxfsi.c \
|
||||
fixunsxfti.c fixxfdi.c fixxfti.c extenddftf2.c extendhfsf2.c extendhftf2.c extendsfdf2.c \
|
||||
extendsftf2.c truncdfhf2.c truncdfsf2.c truncsfhf2.c \
|
||||
trunctfdf2.c trunctfhf2.c trunctfsf2.c
|
||||
|
||||
ifeq ($(CONFIG_COMPILER_RT_HAS_BFLOAT16),y)
|
||||
CSRCS += truncdfbf2.c truncsfbf2.c
|
||||
ifeq ($(CONFIG_COMPILER_RT_HAS_BFLOAT16),)
|
||||
BFLOAT16_SRCS := compiler-rt/compiler-rt/lib/builtins/truncdfbf2.c
|
||||
BFLOAT16_SRCS += compiler-rt/compiler-rt/lib/builtins/truncsfbf2.c
|
||||
CSRCS := $(filter-out $(BFLOAT16_SRCS), $(CSRCS))
|
||||
endif
|
||||
|
||||
# Bit manipulation related files
|
||||
CSRCS += ashldi3.c ashlti3.c ashrdi3.c ashrti3.c \
|
||||
clzti2.c ctzdi2.c ctzsi2.c ctzti2.c lshrdi3.c lshrti3.c popcountdi2.c popcountsi2.c \
|
||||
popcountti2.c paritydi2.c paritysi2.c parityti2.c
|
||||
|
||||
# Files related to division and modulo operations
|
||||
CSRCS += divdc3.c divdf3.c divdi3.c divmoddi4.c divmodti4.c divsc3.c divsf3.c \
|
||||
divtc3.c divtf3.c divti3.c divxc3.c moddi3.c modti3.c udivdi3.c udivmoddi4.c \
|
||||
udivmodti4.c udivti3.c umoddi3.c umodti3.c
|
||||
|
||||
# Files related to atomic operations
|
||||
CSRCS += atomic.c atomic_flag_clear.c atomic_flag_clear_explicit.c atomic_flag_test_and_set.c \
|
||||
atomic_flag_test_and_set_explicit.c atomic_signal_fence.c atomic_thread_fence.c
|
||||
|
||||
# Other function related files
|
||||
CSRCS += apple_versioning.c clear_cache.c cmpdi2.c cmpti2.c comparedf2.c comparetf2.c \
|
||||
cpu_model.c emutls.c enable_execute_stack.c eprintf.c fp_mode.c gcc_personality_v0.c \
|
||||
int_util.c os_version_check.c trampoline_setup.c ucmpdi2.c ucmpti2.c powidf2.c powisf2.c \
|
||||
powitf2.c powixf2.c
|
||||
|
||||
# Bit manipulation related arch
|
||||
ifeq ($(CONFIG_ARCH_ARM),y)
|
||||
ARCH = arm
|
||||
# Arithmetic Operations
|
||||
ASRCS += adddf3vfp.S addsf3.S addsf3vfp.S divmodsi4.S divsi3.S modsi3.S subdf3vfp.S subsf3vfp.S \
|
||||
muldf3vfp.S mulsf3vfp.S negdf2vfp.S negsf2vfp.S
|
||||
|
||||
# Floating-Point Operations
|
||||
ASRCS += comparesf2.S eqdf2vfp.S eqsf2vfp.S extendsfdf2vfp.S fixdfsivfp.S fixsfsivfp.S \
|
||||
fixunsdfsivfp.S fixunssfsivfp.S floatsidfvfp.S floatsisfvfp.S floatunssidfvfp.S \
|
||||
floatunssisfvfp.S gedf2vfp.S gesf2vfp.S gtdf2vfp.S gtsf2vfp.S ledf2vfp.S lesf2vfp.S \
|
||||
ltdf2vfp.S ltsf2vfp.S nedf2vfp.S nesf2vfp.S truncdfsf2vfp.S unorddf2vfp.S unordsf2vfp.S
|
||||
|
||||
# Synchronization Operations
|
||||
ASRCS += sync_fetch_and_add_4.S sync_fetch_and_add_8.S sync_fetch_and_and_4.S sync_fetch_and_and_8.S \
|
||||
sync_fetch_and_max_4.S sync_fetch_and_max_8.S sync_fetch_and_min_4.S sync_fetch_and_min_8.S \
|
||||
sync_fetch_and_nand_4.S sync_fetch_and_nand_8.S sync_fetch_and_or_4.S sync_fetch_and_or_8.S \
|
||||
sync_fetch_and_sub_4.S sync_fetch_and_sub_8.S sync_fetch_and_umax_4.S sync_fetch_and_umax_8.S \
|
||||
sync_fetch_and_umin_4.S sync_fetch_and_umin_8.S sync_fetch_and_xor_4.S sync_fetch_and_xor_8.S \
|
||||
sync_synchronize.S
|
||||
# Memory Operations
|
||||
ASRCS += aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S restore_vfp_d8_d15_regs.S \
|
||||
save_vfp_d8_d15_regs.S
|
||||
|
||||
# Division and Modulus Operations
|
||||
ASRCS += aeabi_idivmod.S aeabi_ldivmod.S aeabi_uidivmod.S aeabi_uldivmod.S udivmodsi4.S udivsi3.S umodsi3.S
|
||||
|
||||
# Bitwise and Other Operations
|
||||
ASRCS += bswapdi2.S bswapsi2.S chkstk.S clzdi2.S clzsi2.S
|
||||
|
||||
# Branch and Control Flow
|
||||
ASRCS += switch16.S switch32.S switch8.S switchu8.S
|
||||
|
||||
CSRCS += aeabi_cdcmpeq_check_nan.c aeabi_cfcmpeq_check_nan.c aeabi_div0.c aeabi_drsub.c aeabi_frsub.c
|
||||
else
|
||||
CSRCS += addsf3.c divsi3.c modsi3.c
|
||||
CSRCS += bswapdi2.c bswapsi2.c clzdi2.c clzsi2.c
|
||||
CSRCS += divmodsi4.c udivmodsi4.c udivsi3.c umodsi3.c
|
||||
CSRCS += comparesf2.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_ARM64),y)
|
||||
ARCH = aarch64
|
||||
ASRCS += chkstk.S lse.S
|
||||
CSRCS += fp_mode.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_RISCV),y)
|
||||
ARCH = riscv
|
||||
ASRCS += muldi3.S mulsi3.S restore.S save.S
|
||||
CSRCS += fp_mode.c
|
||||
else
|
||||
CSRCS += muldi3.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_X86_64),y)
|
||||
ARCH = x86_64
|
||||
ASRCS += chkstk2.S chkstk.S floatundidf.S floatundisf.S floatundixf.S
|
||||
CSRCS += floatdidf.c floatdisf.c floatdixf.c
|
||||
else
|
||||
CSRCS += floatundidf.c floatundisf.c floatundixf.c
|
||||
endif
|
||||
################# Profile Library #################
|
||||
|
||||
ifeq ($(CONFIG_COMPILER_RT_PROFILE),y)
|
||||
|
||||
# Include paths
|
||||
FLAGS += ${INCDIR_PREFIX}$(CURDIR)/compiler-rt/compiler-rt/lib/profile
|
||||
|
||||
# Suppress specific warnings
|
||||
FLAGS += -Wno-cleardeprecated-pragma -Wno-deprecated-pragma -Wno-incompatible-pointer-types
|
||||
FLAGS += -Wno-shadow -Wno-strict-prototypes -Wno-undef -Wno-unknown-warning-option
|
||||
|
||||
# Define compiler-specific macros
|
||||
FLAGS += -DCOMPILER_RT_HAS_UNAME
|
||||
|
||||
# Disable code coverage analysis for the library
|
||||
FLAGS += -fno-profile-generate
|
||||
|
||||
# Profile support source files
|
||||
CSRCS += GCDAProfiling.c InstrProfilingBuffer.c InstrProfiling.c InstrProfilingFile.c InstrProfilingInternal.c
|
||||
CSRCS += InstrProfilingMerge.c InstrProfilingMergeFile.c InstrProfilingNameVar.c
|
||||
CSRCS += InstrProfilingUtil.c InstrProfilingValue.c InstrProfilingVersionVar.c InstrProfilingWriter.c
|
||||
CPPSRCS += InstrProfilingRuntime.cpp
|
||||
|
||||
# Profile platform support
|
||||
CSRCS += InstrProfilingPlatform.c
|
||||
|
||||
# Dependency and search paths
|
||||
DEPPATH += --dep-path compiler-rt/compiler-rt/lib/profile
|
||||
VPATH += :compiler-rt/compiler-rt/lib/profile
|
||||
|
||||
CSRCS += $(wildcard compiler-rt/compiler-rt/lib/profile/*.c)
|
||||
CPPSRCS += $(wildcard compiler-rt/compiler-rt/lib/profile/*.cpp)
|
||||
CSRCS += compiler-rt/InstrProfilingPlatform.c
|
||||
endif
|
||||
|
||||
FLAGS += ${INCDIR_PREFIX}$(CURDIR)/compiler-rt/compiler-rt/lib/builtins/${ARCH}
|
||||
|
||||
AFLAGS += $(FLAGS)
|
||||
CFLAGS += $(FLAGS)
|
||||
CXXFLAGS += $(FLAGS)
|
||||
|
||||
DEPPATH += --dep-path compiler-rt/compiler-rt/lib/builtins/${ARCH}
|
||||
VPATH += :compiler-rt/compiler-rt/lib/builtins/${ARCH}
|
||||
|
||||
DEPPATH += --dep-path compiler-rt/compiler-rt/lib/builtins
|
||||
VPATH += :compiler-rt/compiler-rt/lib/builtins
|
||||
|
||||
DEPPATH += --dep-path compiler-rt
|
||||
VPATH += :compiler-rt
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue