2019-03-02 15:23:50 +01:00
|
|
|
include_rules
|
|
|
|
|
|
|
|
DEFINES = -ffunction-sections -fno-strict-aliasing -g -fPIC
|
|
|
|
# drop the standard defines to avoid -nostdinc
|
|
|
|
|
2019-09-16 18:07:32 +02:00
|
|
|
export LIBCXX
|
|
|
|
export LIBCXXABI
|
2019-09-20 23:24:05 +02:00
|
|
|
export LIBUNWIND_BAREMETAL
|
2019-09-16 18:07:32 +02:00
|
|
|
|
|
|
|
INCLUDES += -I$LIBCXX/include/c++/v1
|
|
|
|
INCLUDES += -I$LIBCXXABI/include
|
|
|
|
|
|
|
|
LLVM_LIBS += $LIBCXXABI/lib/libc++abi.a
|
2019-09-20 23:24:05 +02:00
|
|
|
LLVM_LIBS += $LIBUNWIND_BAREMETAL/lib/libunwind.a
|
2019-09-16 18:07:32 +02:00
|
|
|
|
2019-03-02 15:23:50 +01:00
|
|
|
: foreach *.cc |> !cxx |> {supc++}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Prevent symbols of the gcc support libs from being discarded during 'ld -r'
|
|
|
|
#
|
|
|
|
KEEP_SYMBOLS = \
|
|
|
|
-u __cxa_guard_acquire \
|
|
|
|
-u __dynamic_cast \
|
|
|
|
-u __cxa_throw_bad_array_new_length \
|
|
|
|
-u __cxa_current_exception_type \
|
|
|
|
-u _ZTVN10__cxxabiv116__enum_type_infoE \
|
|
|
|
-u _ZN10__cxxabiv121__vmi_class_type_infoD0Ev \
|
|
|
|
-u _ZTVN10__cxxabiv119__pointer_type_infoE \
|
|
|
|
-u _ZTSN10__cxxabiv120__function_type_infoE \
|
|
|
|
|
2019-09-16 18:07:32 +02:00
|
|
|
: {supc++} |> $(LD) $(LD_MARCH) $(KEEP_SYMBOLS) -r %f $(LLVM_LIBS) -o %o |> supc++.tmp
|
2019-03-02 15:23:50 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# Here we define all symbols we want to hide in libsupc++ and libgcc_eh
|
|
|
|
#
|
|
|
|
LOCAL_SYMBOLS = \
|
|
|
|
--localize-symbol=abort \
|
|
|
|
--localize-symbol=calloc \
|
|
|
|
--localize-symbol=fputc \
|
|
|
|
--localize-symbol=fputs \
|
|
|
|
--localize-symbol=free \
|
|
|
|
--localize-symbol=fwrite \
|
|
|
|
--localize-symbol=malloc \
|
|
|
|
--localize-symbol=memcmp \
|
|
|
|
--localize-symbol=realloc \
|
|
|
|
--localize-symbol=sprintf \
|
|
|
|
--localize-symbol=stderr \
|
|
|
|
--localize-symbol=__stderrp \
|
|
|
|
--localize-symbol=strcat \
|
|
|
|
--localize-symbol=strcmp \
|
|
|
|
--localize-symbol=strcpy \
|
|
|
|
--localize-symbol=strlen \
|
|
|
|
--localize-symbol=strncmp \
|
|
|
|
|
|
|
|
#
|
|
|
|
# Symbols we wrap (see unwind.cc)
|
|
|
|
#
|
|
|
|
EH_SYMBOLS = \
|
|
|
|
_Unwind_Resume \
|
|
|
|
_Unwind_Complete \
|
|
|
|
_Unwind_DeleteException \
|
|
|
|
|
|
|
|
#
|
|
|
|
# Additional functions for ARM
|
|
|
|
#
|
|
|
|
EH_SYMBOLS += \
|
|
|
|
__aeabi_unwind_cpp_pr0 \
|
|
|
|
__aeabi_unwind_cpp_pr1 \
|
|
|
|
|
|
|
|
REDEF_SYMBOLS = `echo $(EH_SYMBOLS) | awk -v RS=' ' '{ print "--redefine-sym "$1"=_cxx_"$1 }'`
|
|
|
|
|
2019-09-16 18:07:32 +02:00
|
|
|
export OBJCOPY
|
2019-09-20 23:24:05 +02:00
|
|
|
: supc++.tmp |> $OBJCOPY $(LOCAL_SYMBOLS) $(REDEF_SYMBOLS) -weaken %f %o |> supc++.o {obj}
|
2019-03-02 15:23:50 +01:00
|
|
|
|
|
|
|
: foreach *.c |> !cc |> {obj}
|
|
|
|
|
2019-09-21 15:13:27 +02:00
|
|
|
: {obj} |> !ar |> {bin}
|
|
|
|
: foreach {bin} |> !collect_static |>
|
|
|
|
: |> !emit_lib_pkg_config |>
|