Skip to content

Commit

Permalink
libbuiltin: Simplify makefile writing
Browse files Browse the repository at this point in the history
Create a separate bin folder to place the generated .o files

Signed-off-by: wangmingrong1 <[email protected]>
  • Loading branch information
W-M-R authored and xiaoxiang781216 committed Nov 6, 2024
1 parent d0680fd commit 4ba941e
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 139 deletions.
10 changes: 5 additions & 5 deletions libs/libbuiltin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)))
Expand Down Expand Up @@ -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)
Expand Down
166 changes: 32 additions & 134 deletions libs/libbuiltin/compiler-rt/Make.defs
Original file line number Diff line number Diff line change
Expand Up @@ -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),$@)
Expand All @@ -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

# 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
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
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)

# 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
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

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

0 comments on commit 4ba941e

Please sign in to comment.