package/redis: fix static linking with libatomic
authorBernd Kuhls <bernd.kuhls@t-online.de>
Thu, 25 May 2017 07:19:34 +0000 (09:19 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 28 May 2017 14:26:56 +0000 (16:26 +0200)
Fixes
http://autobuild.buildroot.net/results/7f1/7f1ecccbfdb6bd95824d9c884f1577e71e0e1e09/
http://autobuild.buildroot.net/results/c0b/c0b1bdcc5fbddf8b996b923015184d753882d4b8/

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Thomas:
 - improve comment to explain the fix
 - remove useless LDFLAGS related code]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/redis/redis.mk

index 3f4956cf344071ee62778e2aeaf1c5fe339712a4..458ed4f8ba05e7cbaf7e7e6edf7e1570a08a48a9 100644 (file)
@@ -13,16 +13,21 @@ define REDIS_USERS
        redis -1 redis -1 * /var/lib/redis /bin/false - Redis Server
 endef
 
-# Uses __atomic_fetch_add_4
+# Uses __atomic_fetch_add_4. Adding -latomic to LDFLAGS does not work,
+# because LDFLAGS is used before the list of object files. We need to
+# add -latomic to FINAL_LIBS to provide -latomic at the correct place
+# in the linking command.
 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
-REDIS_LIBATOMIC = -latomic
+define REDIS_FIX_MAKEFILE
+       $(SED) 's/FINAL_LIBS=-lm/FINAL_LIBS=-lm -latomic/' $(@D)/src/Makefile
+endef
+REDIS_POST_PATCH_HOOKS = REDIS_FIX_MAKEFILE
 endif
 
 # Redis doesn't support DESTDIR (yet, see
 # https://github.com/antirez/redis/pull/609).  We set PREFIX
 # instead.
 REDIS_BUILDOPTS = $(TARGET_CONFIGURE_OPTS) \
-       LDFLAGS="$(TARGET_LDFLAGS) $(REDIS_LIBATOMIC)" \
        PREFIX=$(TARGET_DIR)/usr MALLOC=libc
 
 define REDIS_BUILD_CMDS