uclibc++: add hack to fix failing patch
[openwrt/openwrt.git] / package / libs / uclibc++ / Makefile
index 38e8a99f9f44b7c47dfa21c2aeaf328fcbc172f4..4c7c7678e3ace5d0c5bd93c76ce5190857c59ca3 100644 (file)
@@ -1,5 +1,6 @@
 #
 # Copyright (C) 2006-2012 OpenWrt.org
+# Copyright (c) 2016 LEDE project
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +10,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uclibc++
 PKG_VERSION:=0.2.4
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 PKG_SOURCE:=uClibc++-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://cxx.uclibc.org/src/
@@ -18,6 +19,7 @@ PKG_MD5SUM:=394c119363dd8b469fb898442a6764b8
 PKG_BUILD_DIR:=$(BUILD_DIR)/uClibc++-$(PKG_VERSION)
 PKG_BUILD_PARALLEL:=1
 PKG_USE_MIPS16:=0
+PKG_LICENSE:=LGPL-2.1+
 
 PKG_INSTALL:=1
 
@@ -41,7 +43,6 @@ UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \
        -e 's/sh[234].*/sh/' \
        -e 's/mips.*/mips/' \
        -e 's/mipsel.*/mips/' \
-       -e 's/cris.*/cris/' \
 )
 
 TARGET_CFLAGS += $(FPIC)
@@ -50,17 +51,28 @@ ifneq ($(CONFIG_CCACHE),)
 TARGET_CXX=$(TARGET_CXX_NOCACHE)
 endif
 
+ifeq ($(CONFIG_USE_MUSL),y)
+SSP_LIB=-lssp_nonshared
+endif
+
 MAKE_FLAGS:= \
        TOPDIR="$(PKG_BUILD_DIR)/" \
        $(TARGET_CONFIGURE_OPTS) \
        CPU_CFLAGS="$(TARGET_CFLAGS)" \
        CROSS="$(TARGET_CROSS)" \
+       LDFLAGS="-Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc -Wl,-z,defs $(TARGET_LDFLAGS)" \
        CP="$(CP)" \
-       GEN_LIBS="-lc $(LIBGCC_S)" \
+       GEN_LIBS="-lc $(LIBGCC_S) $(SSP_LIB)" \
        check_as_needed=
 
 # check_as_needed overrides dependency on libgcc_s
 
+define Build/Prepare
+       $(PKG_UNPACK)
+       $(SED) 's/\r$$$$//' $(PKG_BUILD_DIR)/include/unwind-cxx.h
+       $(Build/Patch)
+endef
+
 define Build/Configure
        if [ -f ./files/config.$(UCLIBC_TARGET_ARCH) ]; then \
                cp ./files/config.$(UCLIBC_TARGET_ARCH) $(PKG_BUILD_DIR)/.config; \
@@ -74,9 +86,10 @@ define Build/InstallDev
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/g++-uc $(TOOLCHAIN_DIR)/bin/
        $(CP) $(PKG_INSTALL_DIR)/include/* $(1)/usr/include/uClibc++/
        $(CP) $(PKG_INSTALL_DIR)/lib/libuClibc++*.{a,so}* $(1)/usr/lib/
-       $(SED) 's|-I/include/|-I$(STAGING_DIR)/usr/include/uClibc++/|g' $(TOOLCHAIN_DIR)/bin/g++-uc
-       $(SED) 's|-L/lib/|-L$(STAGING_DIR)/usr/lib/|g' $(TOOLCHAIN_DIR)/bin/g++-uc
-# add another wrapper which links against both uClibc++ and libstdc++ 
+       $(SED) 's!\(^\|[[:space:]]\)-[IL]$(TOOLCHAIN_DIR)/[^[:space:]]*!!g' $(TOOLCHAIN_DIR)/bin/g++-uc
+       $(SED) 's|-I/include/|-I$$$${STAGING_DIR:-$(STAGING_DIR)}/usr/include/uClibc++/|g' $(TOOLCHAIN_DIR)/bin/g++-uc
+       $(SED) 's|-L/lib/|-L$$$${STAGING_DIR:-$(STAGING_DIR)}/lib/|g' $(TOOLCHAIN_DIR)/bin/g++-uc
+# add another wrapper which links against both uClibc++ and libstdc++
        $(INSTALL_BIN) $(TOOLCHAIN_DIR)/bin/g++-uc $(TOOLCHAIN_DIR)/bin/g++-uc+std
        $(SED) 's|^WRAPPER_INCLUDEDIR=.*||g' $(TOOLCHAIN_DIR)/bin/g++-uc+std
        $(SED) 's|-luClibc++|-Wl,-Bdynamic,-luClibc++,-Bstatic,-lstdc++,-Bdynamic|g' $(TOOLCHAIN_DIR)/bin/g++-uc+std