Browse Source

uclibc-ng: rework package, fix spurious unneeded rebuilds

Waldemar Brodkorb 7 years ago
parent
commit
1ecabcafa8

+ 1 - 1
package/uclibc-ng/Config.in.manual

@@ -1,5 +1,5 @@
 config ADK_PACKAGE_UCLIBC_NG
-	bool "uClibc-ng............... embedded C library"
+	bool
 	depends on ADK_TARGET_LIB_UCLIBC_NG
 	default y if ADK_TARGET_LIB_UCLIBC_NG && !ADK_APPLIANCE_TOOLCHAIN
 	default n

+ 3 - 39
package/uclibc-ng/Makefile

@@ -29,41 +29,12 @@ CONFIG_STYLE:=          manual
 BUILD_STYLE:=           manual
 INSTALL_STYLE:=         manual
 
-do-build:
-ifeq ($(ADK_PACKAGE_UCLIBC_NG_TEST),y)
-	PATH='$(HOST_PATH)' $(MAKE) -j1 -C $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)/${PKG_NAME}-${PKG_VERSION} \
-		HOSTCC='$(HOST_CC)' \
-		CC='$(TARGET_CC)' \
-		PREFIX=$(STAGING_TARGET_DIR) \
-		DEVEL_PREFIX=/usr/ \
-		DEVEL_PREFIX_LIB=/ \
-		RUNTIME_PREFIX=/ \
-		UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
-		UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
-		TEST_INSTALLED_UCLIBC=1 \
-		UCLIBC_ONLY=1 \
-		VERBOSE=1 \
-		test_gen test_compile
-endif
-
-do-install:
-	${INSTALL_DIR} $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH) $(IDIR_UCLIBC_NG)/etc
+uclibc-ng-install:
+	$(INSTALL_DIR) $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH) $(IDIR_UCLIBC_NG)/etc
+	-$(CP) $(STAGING_TARGET_DIR)/uclibc-ng/lib*/* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
 	test -z $(ADK_RUNTIME_TIMEZONE) || \
 	    grep $(ADK_RUNTIME_TIMEZONE) ./files/tz.lst | \
 	    cut -f 2 > $(IDIR_UCLIBC_NG)/etc/TZ
-ifneq ($(ADK_TARGET_USE_STATIC_LIBS)$(ADK_TARGET_BINFMT_FLAT),y)
-	$(CP) $(STAGING_TARGET_DIR)/lib/libc.so.* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-	$(CP) $(STAGING_TARGET_DIR)/lib/libuClibc-*.so \
-		$(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-	$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc-*.so \
-		$(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-	$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc*.so.* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-	-for file in libcrypt libdl libm libnsl libresolv libutil libuargp; do \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH); \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file-*.so \
-			$(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH); \
-	done
-endif
 ifeq ($(ADK_RUNTIME_ENABLE_LOCALE),y)
 	${INSTALL_DIR} $(IDIR_UCLIBC_NG)/usr/bin
 	$(INSTALL_BIN) $(STAGING_TARGET_DIR)/usr/bin/locale $(IDIR_UCLIBC_NG)/usr/bin
@@ -73,14 +44,7 @@ uclibc-ng-dev-install:
 	${INSTALL_DIR} ${IDIR_UCLIBC_NG_DEV}/usr/lib ${IDIR_UCLIBC_NG_DEV}/$(ADK_TARGET_LIBC_PATH)
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/libc.so ${IDIR_UCLIBC_NG_DEV}/usr/lib
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/uclibc_nonshared.a ${IDIR_UCLIBC_NG_DEV}/usr/lib
-ifeq ($(ADK_TARGET_LIB_WITH_THREADS),y)
-	-${CP} ${STAGING_TARGET_DIR}/usr/lib/libpthread.so ${IDIR_UCLIBC_NG_DEV}/usr/lib
-	-${CP} ${STAGING_TARGET_DIR}/usr/lib/libpthread_nonshared.a ${IDIR_UCLIBC_NG_DEV}/usr/lib
-endif
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/crt*.o ${IDIR_UCLIBC_NG_DEV}/usr/lib
-	for file in libcrypt libdl libm libresolv libutil libuargp; do \
-		cd $(IDIR_UCLIBC_NG_DEV)/$(ADK_TARGET_LIBC_PATH); ln -sf $$file-$(PKG_VERSION).so $$file.so; \
-	done
 	${KERNEL_MAKE_ENV} \
 	$(MAKE) -C $(TOOLCHAIN_BUILD_DIR)/w-linux-$(KERNEL_VERSION)/linux-$(KERNEL_FILE_VER) \
 		$(KERNEL_MAKE_OPTS) \

+ 1 - 0
target/config/Config.in.libc

@@ -7,6 +7,7 @@ default ADK_TARGET_LIB_UCLIBC_NG if ADK_TARGET_OS_LINUX
 
 config ADK_TARGET_LIB_UCLIBC_NG
 	bool "uClibc-ng embedded C library"
+	select ADK_PACKAGE_LIBGCC
 	depends on (\
 		ADK_TARGET_ARCH_ALPHA || \
 		ADK_TARGET_ARCH_ARC || \

+ 32 - 8
toolchain/uclibc-ng/Makefile

@@ -41,9 +41,9 @@ UCLIBC_MAKEOPTS+=	-j${ADK_MAKE_JOBS}
 endif
 
 $(WRKBUILD)/.configured: $(WRKBUILD)/.prepared
-	$(SED) 's,^CROSS_COMPILE=.*,CROSS_COMPILE=$(TARGET_CROSS),g' $(WRKBUILD)/Rules.mak
 	PATH='$(HOST_PATH)' sed -e 's^KERNEL_HEADERS.*$$KERNEL_HEADERS=\"${STAGING_TARGET_DIR}/usr/include\"' \
 	    $(ADK_TOPDIR)/target/$(ADK_TARGET_ARCH)/uclibc-ng.config >${WRKBUILD}/.config
+	$(SED) 's^.*\(CROSS_COMPILER_PREFIX\).*^\1=\"$(TARGET_CROSS)\"^' ${WRKBUILD}/.config
 ifeq ($(ADK_TARGET_ENDIAN),little)
 	$(SED) 's/.*\(ARCH_LITTLE_ENDIAN\).*/\1=y/' ${WRKBUILD}/.config
 	$(SED) 's/.*\(ARCH_WANTS_LITTLE_ENDIAN\).*/\1=y/' ${WRKBUILD}/.config
@@ -284,7 +284,7 @@ ifeq ($(ADK_TARGET_ABI_O32),y)
 	$(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
 endif
-	echo N|PATH='$(HOST_PATH)' $(MAKE) $(UCLIBC_MAKEOPTS) -C $(WRKBUILD) \
+	echo N|PATH='$(HOST_PATH)' $(MAKE) -C $(WRKBUILD) \
 		HOSTCC="$(HOST_CC)" \
 		CC='$(TARGET_CC)' \
 		PREFIX=$(STAGING_TARGET_DIR) \
@@ -300,30 +300,54 @@ endif
 
 $(WRKBUILD)/.compiled: $(WRKBUILD)/.configured
 	PATH='$(HOST_PATH)' $(MAKE) $(UCLIBC_MAKEOPTS) -C $(WRKBUILD) \
+		ARCH="$(ADK_TARGET_ARCH)" \
+		CROSS_COMPILE="$(TARGET_CROSS)" \
 		HOSTCC="$(HOST_CC)" \
-		CC='$(TARGET_CC)' \
 		PREFIX=$(STAGING_TARGET_DIR) \
 		DEVEL_PREFIX=/usr/ \
-		DEVEL_PREFIX_LIB=/ \
 		RUNTIME_PREFIX=/ \
 		UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
 		UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
 		VERBOSE=1 \
-		all utils
+		all
 	touch $@
 
 $(WRKBUILD)/.installed: $(WRKBUILD)/.compiled
 	PATH='$(HOST_PATH)' $(MAKE) -C $(WRKBUILD) \
+		ARCH="$(ADK_TARGET_ARCH)" \
+		CROSS_COMPILE="$(TARGET_CROSS)" \
 		HOSTCC="$(HOST_CC)" \
-		CC='$(TARGET_CC)' \
 		PREFIX=$(STAGING_TARGET_DIR) \
 		DEVEL_PREFIX=/usr/ \
-		DEVEL_PREFIX_LIB=/ \
 		RUNTIME_PREFIX=/ \
 		UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
 		UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
 		VERBOSE=1 \
-		install_runtime install_dev install_utils
+		install_runtime install_dev
+	PATH='$(HOST_PATH)' $(MAKE) -C $(WRKBUILD) \
+		ARCH="$(ADK_TARGET_ARCH)" \
+		CROSS_COMPILE="$(TARGET_CROSS)" \
+		HOSTCC="$(HOST_CC)" \
+		PREFIX=$(STAGING_TARGET_DIR)/uclibc-ng \
+		DEVEL_PREFIX=/usr/ \
+		RUNTIME_PREFIX=/ \
+		UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
+		UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
+		VERBOSE=1 \
+		install_runtime
+	PATH='$(HOST_PATH)' $(MAKE) -C $(WRKBUILD) \
+		ARCH="$(ADK_TARGET_ARCH)" \
+		CROSS_COMPILE="$(TARGET_CROSS)" \
+		HOSTCC="$(HOST_CC)" \
+		PREFIX=$(STAGING_TARGET_DIR)/uclibc-ng \
+		DEVEL_PREFIX=/usr/ \
+		RUNTIME_PREFIX=/ \
+		UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
+		UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
+		TEST_INSTALLED_UCLIBC=1 \
+		UCLIBC_ONLY=1 \
+		VERBOSE=1 \
+		test_compile test_gen
 	touch $@
 
 include ${ADK_TOPDIR}/mk/toolchain.mk