2 # Copyright (C) 2006-2012 OpenWrt.org
3 # Copyright (c) 2016 LEDE project
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
9 include $(TOPDIR
)/rules.mk
15 PKG_SOURCE
:=uClibc
++-$(PKG_VERSION
).
tar.bz2
16 PKG_SOURCE_URL
:=http
://cxx.uclibc.org
/src
/
17 PKG_HASH
:=be16fc6a6eb2e59df420ee41e7042f38e27ebaf5c2762d90e75803364a7b00db
19 PKG_BUILD_DIR
:=$(BUILD_DIR
)/uClibc
++-$(PKG_VERSION
)
22 PKG_LICENSE
:=LGPL-2.1
+
26 include $(INCLUDE_DIR
)/package.mk
28 define Package
/uclibcxx
32 TITLE
:=C
++ library for embedded systems
33 URL
:=http
://cxx.uclibc.org
/src
/
36 UCLIBC_TARGET_ARCH
:=$(shell echo
$(ARCH
) | sed
-e s
'/-.*//' \
38 -e
's/sparc.*/sparc/' \
40 -e
's/ppc/powerpc/g' \
41 -e
's/v850.*/v850/g' \
43 -e
's/sh[234].*/sh/' \
45 -e
's/mipsel.*/mips/' \
48 TARGET_CFLAGS
+= $(FPIC
)
50 ifneq ($(CONFIG_CCACHE
),)
51 TARGET_CXX
=$(TARGET_CXX_NOCACHE
)
54 ifeq ($(CONFIG_USE_MUSL
),y
)
55 SSP_LIB
=-lssp_nonshared
59 TOPDIR
="$(PKG_BUILD_DIR)/" \
60 $(TARGET_CONFIGURE_OPTS
) \
61 CPU_CFLAGS
="$(TARGET_CFLAGS)" \
62 CROSS
="$(TARGET_CROSS)" \
63 LDFLAGS
="-Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc -Wl,-z,defs $(TARGET_LDFLAGS)" \
65 GEN_LIBS
="-lc $(LIBGCC_S) $(SSP_LIB)" \
66 GEN_CFLAGS
="-std=gnu++98 -nostdinc++" \
69 # check_as_needed overrides dependency on libgcc_s
73 $(SED
) 's/\r$$$$//' $(PKG_BUILD_DIR
)/include/unwind-cxx.h
77 define Build
/Configure
78 if
[ -f .
/files
/config.
$(UCLIBC_TARGET_ARCH
) ]; then \
79 cp .
/files
/config.
$(UCLIBC_TARGET_ARCH
) $(PKG_BUILD_DIR
)/.config
; \
81 cp .
/files
/config.default
$(PKG_BUILD_DIR
)/.config
; \
85 define Build
/InstallDev
86 $(INSTALL_DIR
) $(2)/bin
$(1)/usr
/include/uClibc
++ $(1)/usr
/lib
87 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/bin
/g
++-uc
$(TOOLCHAIN_DIR
)/bin
/
88 $(CP
) $(PKG_INSTALL_DIR
)/include/* $(1)/usr
/include/uClibc
++/
89 $(CP
) $(PKG_INSTALL_DIR
)/lib
/libuClibc
++*.
{a
,so
}* $(1)/usr
/lib
/
90 $(SED
) 's!\(^\|[[:space:]]\)-[IL]$(TOOLCHAIN_DIR)/[^[:space:]]*!!g' $(TOOLCHAIN_DIR
)/bin
/g
++-uc
91 $(SED
) 's|-I/include/|-I$$$${STAGING_DIR:-$(STAGING_DIR)}/usr/include/uClibc++/|g' $(TOOLCHAIN_DIR
)/bin
/g
++-uc
92 $(SED
) 's|-L/lib/|-L$$$${STAGING_DIR:-$(STAGING_DIR)}/lib/|g' $(TOOLCHAIN_DIR
)/bin
/g
++-uc
93 # add another wrapper which links against both uClibc++ and libstdc++
94 $(INSTALL_BIN
) $(TOOLCHAIN_DIR
)/bin
/g
++-uc
$(TOOLCHAIN_DIR
)/bin
/g
++-uc
+std
95 $(SED
) 's|^WRAPPER_INCLUDEDIR=.*||g' $(TOOLCHAIN_DIR
)/bin
/g
++-uc
+std
96 $(SED
) 's|-luClibc++|-Wl,-Bdynamic,-luClibc++,-Bstatic,-lstdc++,-Bdynamic|g' $(TOOLCHAIN_DIR
)/bin
/g
++-uc
+std
97 $(SED
) 's|-nostdinc++||g' $(TOOLCHAIN_DIR
)/bin
/g
++-uc
+std
100 define Package
/uclibcxx
/install
101 $(INSTALL_DIR
) $(1)/usr
/lib
102 $(CP
) $(PKG_INSTALL_DIR
)/lib
/libuClibc
++.so.
* $(1)/usr
/lib
/
103 $(CP
) $(PKG_INSTALL_DIR
)/lib
/libuClibc
++-*.so
$(1)/usr
/lib
/
106 $(eval
$(call BuildPackage
,uclibcxx
))