Browse Source

make libgcc static for busybox, make librt separate package, remove dependency to libtirpc, disable inetd, add preliminary multilib support (not working right now),enable 32/64 bit kernel support for x86_64

Waldemar Brodkorb 11 years ago
parent
commit
f3db9f0c59

+ 8 - 2
mk/build.mk

@@ -222,10 +222,16 @@ switch:
 		fi \
 	fi
 
+ifeq (${ADK_TARGET_KERNEL64},y)
+KERNEL_CFG:=kernel64.config
+else
+KERNEL_CFG:=kernel.config
+endif
+
 kernelconfig:
-	cp $(TOPDIR)/target/$(ADK_TARGET_ARCH)/kernel.config $(BUILD_DIR)/linux/.config
+	cp $(TOPDIR)/target/$(ADK_TARGET_ARCH)/${KERNEL_CFG} $(BUILD_DIR)/linux/.config
 	${KERNEL_MAKE_ENV} ${MAKE} ARCH=$(ARCH) ${KERNEL_MAKE_OPTS} -C $(BUILD_DIR)/linux menuconfig
-	cp $(BUILD_DIR)/linux/.config $(TOPDIR)/target/$(ADK_TARGET_ARCH)/kernel.config
+	cp $(BUILD_DIR)/linux/.config $(TOPDIR)/target/$(ADK_TARGET_ARCH)/${KERNEL_CFG}
 
 # create a new package from package/.template
 newpackage:

+ 1 - 1
mk/modules.mk

@@ -79,7 +79,7 @@ $(eval $(call KMOD_template,MAC80211,mac80211,\
 $(eval $(call KMOD_template,ATH5K,ath5k,\
 	$(MODULES_DIR)/kernel/drivers/net/wireless/ath/ath \
 	$(MODULES_DIR)/kernel/drivers/net/wireless/ath/ath5k/ath5k \
-,20))
+,20, kmod-leds-class))
 
 $(eval $(call KMOD_template,P54_COMMON,p54-common,\
 	$(MODULES_DIR)/kernel/drivers/net/wireless/p54/p54common \

+ 0 - 2
package/busybox/Config.in.manual

@@ -8,8 +8,6 @@ config ADK_PACKAGE_BUSYBOX
 	boolean
 	select ADK_COMPILE_BUSYBOX
 	default y if !ADK_TOOLCHAIN_ONLY
-	select ADK_PACKAGE_LIBTIRPC
-	select ADK_PACKAGE_LIBPTHREAD
 	help
 	  Core utilities for embedded Linux systems
 	  

+ 4 - 4
package/busybox/Makefile

@@ -9,7 +9,7 @@ PKG_RELEASE:=		1
 PKG_MD5SUM:=		e025414bc6cd79579cc7a32a45d3ae1c
 PKG_DESCR:=		Core utilities for embedded systems
 PKG_SECTION:=		base
-PKG_BUILDDEP:=		libtirpc
+#PKG_BUILDDEP:=		libtirpc
 PKG_URL:=		http://www.busybox.net/
 PKG_SITES:=		http://www.busybox.net/downloads/
 
@@ -37,11 +37,11 @@ INSTALL_STYLE:=		manual
 
 BB_MAKE_FLAGS:=		V=1 IPKG_ARCH="${CPU_ARCH}" ARCH="${ARCH}" GCC_HONOUR_COPTS=s \
 			HOSTCC="${CC_FOR_BUILD}" HOSTCFLAGS="$(CFLAGS_FOR_BUILD)" \
-			-C ${WRKBUILD}
+			-C ${WRKBUILD} 
 ifneq (${ADK_NATIVE},y)
-BB_MAKE_FLAGS+=		CROSS_COMPILE="$(TARGET_CROSS)" EXTRA_LDFLAGS='-pthread  -ltirpc' EXTRA_CPPFLAGS="-I$(STAGING_DIR)/usr/include/tirpc"
+BB_MAKE_FLAGS+=		CROSS_COMPILE="$(TARGET_CROSS)" EXTRA_LDFLAGS='-static-libgcc'
 else
-BB_MAKE_FLAGS+=		EXTRA_CPPFLAGS="-I/usr/include/tirpc"
+BB_MAKE_FLAGS+=		EXTRA_LDFLAGS="-static-libgcc"
 endif
 
 # XXX: Although this looks like all new symbols are enabled when 'make oldconfig' runs, they're not.

+ 2 - 2
package/busybox/config/networking/Config.in

@@ -551,7 +551,7 @@ config BUSYBOX_FEATURE_IFUPDOWN_EXTERNAL_DHCP
 
 config BUSYBOX_INETD
 	bool "inetd"
-	default y
+	default n
 	select BUSYBOX_FEATURE_SYSLOG
 	help
 	  Internet superserver daemon
@@ -593,7 +593,7 @@ config BUSYBOX_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 
 config BUSYBOX_FEATURE_INETD_RPC
 	bool "Support RPC services"
-	default y
+	default n
 	depends on BUSYBOX_INETD
 	select BUSYBOX_FEATURE_HAVE_RPC
 	help

+ 9 - 25
package/eglibc/Makefile

@@ -53,31 +53,15 @@ ifeq ($(ADK_LOCALES),y)
 	${INSTALL_DIR} $(IDIR_EGLIBC)/usr/bin
 	$(CP) $(STAGING_TARGET_DIR)/usr/bin/locale $(IDIR_EGLIBC)/usr/bin
 endif
-	${INSTALL_DIR} $(IDIR_EGLIBC)/lib $(IDIR_EGLIBC)/etc \
+	${INSTALL_DIR} $(IDIR_EGLIBC)/$(ADK_TARGET_LIBC_PATH) $(IDIR_EGLIBC)/etc \
 	    $(IDIR_EGLIBC)/usr/lib $(IDIR_EGLIBC)/usr/bin
-	#cd ${STAGING_TARGET_DIR} && for f in UTC ${ADK_RUNTIME_TIMEZONE}; do \
-	#	test -s usr/share/zoneinfo/"$$f" || continue; \
-	#	echo usr/share/zoneinfo/"$$f" | \
-	#	    ${TOOLS_DIR}/cpio -pdu ${IDIR_EGLIBC}/; \
-	#done
-	#tz=; cd ${IDIR_EGLIBC}/usr/share/zoneinfo || exit 1; \
-	#    for f in UTC ${ADK_RUNTIME_TIMEZONE}; do \
-	#	test -s "$$f" || continue; \
-	#	tz=$$f; \
-	#done; if test x"$$tz" = x""; then \
-	#	echo >&2 Error during timezone installation; \
-	#	exit 1; \
-	#else \
-	#	ln -sf "../usr/share/zoneinfo/$$tz" \
-	#	    ${IDIR_EGLIBC}/etc/localtime; \
-	#fi
 ifeq ($(ADK_TOOLCHAIN_GCC_USE_SSP),y)
-	$(CP) $(STAGING_TARGET_DIR)/lib/libssp.so* $(IDIR_EGLIBC)/lib
+	$(CP) $(STAGING_TARGET_DIR)/lib/libssp.so* $(IDIR_EGLIBC)/$(ADK_TARGET_LIBC_PATH)
 endif
-	$(CP) $(STAGING_TARGET_DIR)/lib/ld* $(IDIR_EGLIBC)/lib
-	-for file in libc libcrypt libdl libm libresolv librt libutil libnsl libnss_dns libnss_files; do \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_EGLIBC)/lib; \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file-$(PKG_VERSION).so $(IDIR_EGLIBC)/lib; \
+	$(CP) $(STAGING_TARGET_DIR)/lib/ld* $(IDIR_EGLIBC)/$(ADK_TARGET_LIBC_PATH)
+	-for file in libc libcrypt libdl libm libresolv libutil libnsl libnss_dns libnss_files; do \
+		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_EGLIBC)/$(ADK_TARGET_LIBC_PATH); \
+		$(CP) $(STAGING_TARGET_DIR)/lib/$$file-$(PKG_VERSION).so $(IDIR_EGLIBC)/$(ADK_TARGET_LIBC_PATH); \
 	done
 	${INSTALL_DATA} ${STAGING_TARGET_DIR}/etc/gai.conf ${IDIR_EGLIBC}/etc
 	${INSTALL_DATA} ${STAGING_TARGET_DIR}/etc/nscd.conf ${IDIR_EGLIBC}/etc
@@ -89,7 +73,7 @@ eglibc-static-install:
 	$(CP) $(STAGING_TARGET_DIR)/usr/lib/libc.a $(IDIR_EGLIBC_STATIC)/usr/lib
 
 eglibc-dev-install:
-	${INSTALL_DIR} $(IDIR_EGLIBC_DEV)/lib $(IDIR_EGLIBC_DEV)/usr/lib
+	${INSTALL_DIR} $(IDIR_EGLIBC_DEV)/$(ADK_TARGET_LIBC_PATH) $(IDIR_EGLIBC_DEV)/usr/lib
 	# install linker script
 	-cp ./files/libc.so.$(CPU_ARCH) $(IDIR_EGLIBC_DEV)/usr/lib/libc.so
 ifeq ($(ADK_TARGET_ABI_O32),y)
@@ -103,8 +87,8 @@ ifeq ($(ADK_TARGET_ABI_N64),y)
 endif
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/crt* ${IDIR_EGLIBC_DEV}/usr/lib
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/libc_nonshared.a ${IDIR_EGLIBC_DEV}/usr/lib
-	-for file in libcrypt libdl libm libresolv librt libutil libnsl; do \
-		cd $(IDIR_EGLIBC_DEV)/lib/; ln -sf $$file-$(PKG_VERSION).so $$file.so; \
+	-for file in libcrypt libdl libm libresolv libutil libnsl; do \
+		cd $(IDIR_EGLIBC_DEV)/$(ADK_TARGET_LIBC_PATH)/; ln -sf $$file-$(PKG_VERSION).so $$file.so; \
 	done
 	# header package
 	$(MAKE) -C $(TOOLCHAIN_BUILD_DIR)/w-linux-$(KERNEL_VERSION)-$(KERNEL_RELEASE)/linux-$(KERNEL_VERSION) \

+ 9 - 9
package/glibc/Makefile

@@ -31,28 +31,28 @@ INSTALL_STYLE:=		manual
 
 # compile nothing, glibc is already build in toolchain directory
 do-install:
-	${INSTALL_DIR} ${IDIR_GLIBC}/lib ${IDIR_GLIBC}/etc
+	${INSTALL_DIR} ${IDIR_GLIBC}/$(ADK_TARGET_LIBC_PATH) ${IDIR_GLIBC}/etc
 	${CP} ${STAGING_TARGET_DIR}/etc/gai.conf ${IDIR_GLIBC}/etc
 	${CP} ${STAGING_TARGET_DIR}/etc/nscd.conf ${IDIR_GLIBC}/etc
 	${CP} ${STAGING_TARGET_DIR}/etc/nsswitch.conf ${IDIR_GLIBC}/etc
 ifeq ($(ADK_TOOLCHAIN_GCC_USE_SSP),y)
-	$(CP) $(STAGING_TARGET_DIR)/lib/libssp.so* $(IDIR_GLIBC)/lib
+	$(CP) $(STAGING_TARGET_DIR)/lib/libssp.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH)
 endif
-	$(CP) $(STAGING_TARGET_DIR)/lib/ld*.so* $(IDIR_GLIBC)/lib
-	for file in libc libcrypt libdl libm libnsl libresolv librt libutil libnss_compat libnss_dns libnss_files; do \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_GLIBC)/lib; \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file-$(PKG_VER).so $(IDIR_GLIBC)/lib; \
+	$(CP) $(STAGING_TARGET_DIR)/lib/ld*.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH)
+	for file in libc libcrypt libdl libm libnsl libresolv libutil libnss_compat libnss_dns libnss_files; do \
+		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
+		$(CP) $(STAGING_TARGET_DIR)/lib/$$file-$(PKG_VER).so $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
 	done
 
 glibc-dev-install:
 	echo $(TARGET_CFLAGS)
-	${INSTALL_DIR} $(IDIR_GLIBC_DEV)/lib $(IDIR_GLIBC_DEV)/usr/lib
+	${INSTALL_DIR} $(IDIR_GLIBC_DEV)/$(ADK_TARGET_LIBC_PATH) $(IDIR_GLIBC_DEV)/usr/lib
 	# install linker script
 	-cp ./files/libc.so.$(CPU_ARCH) $(IDIR_GLIBC_DEV)/usr/lib/libc.so
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/crt* ${IDIR_GLIBC_DEV}/usr/lib
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/libc_nonshared.a ${IDIR_GLIBC_DEV}/usr/lib
-	-for file in libcrypt libdl libm libresolv librt libutil; do \
-		cd $(IDIR_GLIBC_DEV)/lib; ln -sf $$file-$(PKG_VER).so $$file.so; \
+	-for file in libcrypt libdl libm libresolv libutil; do \
+		cd $(IDIR_GLIBC_DEV)/$(ADK_TARGET_LIBC_PATH); ln -sf $$file-$(PKG_VER).so $$file.so; \
 	done
 	# header package
 	$(MAKE) -C $(TOOLCHAIN_BUILD_DIR)/w-linux-$(KERNEL_VERSION)-$(KERNEL_RELEASE)/linux-$(KERNEL_VERSION) \

+ 3 - 3
package/libgcc/Makefile

@@ -7,7 +7,7 @@ include ${TOPDIR}/toolchain/gcc/Makefile.inc
 PKG_NAME:=		libgcc
 PKG_DESCR:=		GCC library
 PKG_SECTION:=		libs
-PKG_DFLT_LIBGCC:=	y if !ADK_TOOLCHAIN_ONLY
+#PKG_DFLT_LIBGCC:=	y if !ADK_TOOLCHAIN_ONLY
 
 NO_DISTFILES:=		1
 
@@ -23,8 +23,8 @@ INSTALL_STYLE:=		manual
 
 do-install:
 ifeq ($(ADK_NATIVE),)
-	${INSTALL_DIR} ${IDIR_LIBGCC}/lib
-	${CP} ${STAGING_TARGET_DIR}/lib/libgcc*.so* ${IDIR_LIBGCC}/lib
+	${INSTALL_DIR} ${IDIR_LIBGCC}/$(ADK_TARGET_LIBC_PATH)
+	${CP} ${STAGING_TARGET_DIR}/lib/libgcc*.so* ${IDIR_LIBGCC}/$(ADK_TARGET_LIBC_PATH)
 endif
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 2 - 2
package/libpthread/Makefile

@@ -40,8 +40,8 @@ INSTALL_STYLE:=		manual
 
 libpthread-install:
 ifeq ($(ADK_NATIVE),)
-	${INSTALL_DIR} ${IDIR_LIBPTHREAD}/lib
-	${CP} ${STAGING_TARGET_DIR}/lib/libpthread*.so* ${IDIR_LIBPTHREAD}/lib
+	${INSTALL_DIR} ${IDIR_LIBPTHREAD}/$(ADK_TARGET_LIBC_PATH)
+	${CP} ${STAGING_TARGET_DIR}/lib/libpthread*.so* ${IDIR_LIBPTHREAD}/$(ADK_TARGET_LIBC_PATH)
 endif
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 47 - 0
package/librt/Makefile

@@ -0,0 +1,47 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${TOPDIR}/rules.mk
+
+ifeq ($(ADK_TARGET_LIB_GLIBC),y)
+include ${TOPDIR}/toolchain/glibc/Makefile.inc
+endif
+ifeq ($(ADK_TARGET_LIB_EGLIBC),y)
+include ${TOPDIR}/toolchain/eglibc/Makefile.inc
+endif
+ifeq ($(ADK_TARGET_LIB_UCLIBC),y)
+include ${TOPDIR}/toolchain/uClibc/Makefile.inc
+endif
+ifeq ($(ADK_NATIVE),y)
+PKG_VERSION:=		1.0
+PKG_RELEASE:=		1
+endif
+
+PKG_NAME:=		librt
+PKG_DESCR:=		Realtime library
+PKG_SECTION:=		libs
+PKG_OPTS:=		noremove
+
+NO_DISTFILES:=		1
+
+PKG_SUBPKGS:=		LIBRT
+
+ifeq ($(ADK_STATIC),y)
+PKG_OPTS+=		libonly
+endif
+
+include ${TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,LIBRT,librt,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
+
+CONFIG_STYLE:=		manual
+BUILD_STYLE:=		manual
+INSTALL_STYLE:=		manual
+
+librt-install:
+ifeq ($(ADK_NATIVE),)
+	${INSTALL_DIR} ${IDIR_LIBR}/$(ADK_TARGET_LIBC_PATH)
+	${CP} ${STAGING_TARGET_DIR}/lib/librt*.so* ${IDIR_LIBR}/$(ADK_TARGET_LIBC_PATH)
+endif
+
+include ${TOPDIR}/mk/pkg-bottom.mk

+ 4 - 0
package/librt/files/libpthread.postinst

@@ -0,0 +1,4 @@
+#!/bin/sh
+if [ ! -z $IPKG_INSTROOT ];then 
+	(cd $IPKG_INSTROOT/lib && ln -sf libpthread.so.0 libpthread.so)
+fi

+ 5 - 0
package/librt/files/libpthread.so.arm

@@ -0,0 +1,5 @@
+/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+OUTPUT_FORMAT(elf32-arm)
+GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )

+ 5 - 0
package/librt/files/libpthread.so.x86

@@ -0,0 +1,5 @@
+/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+OUTPUT_FORMAT(elf32-i386)
+GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )

+ 5 - 0
package/librt/files/libpthread.so.x86_64

@@ -0,0 +1,5 @@
+/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+OUTPUT_FORMAT(elf64-x86-64)
+GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )

+ 12 - 12
package/uclibc/Makefile

@@ -25,33 +25,33 @@ INSTALL_STYLE:=         manual
 
 # do nothing, uClibc is already build in toolchain directory
 do-install:
-	${INSTALL_DIR} $(IDIR_UCLIBC)/lib $(IDIR_UCLIBC)/etc
+	${INSTALL_DIR} $(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH) $(IDIR_UCLIBC)/etc
 	# create timezone file
 	test -z $(ADK_RUNTIME_TIMEZONE) || \
 	    grep $(ADK_RUNTIME_TIMEZONE) ./files/tz.lst | \
 	    cut -f 2 > $(IDIR_UCLIBC)/etc/TZ
 ifeq ($(ADK_TOOLCHAIN_GCC_USE_SSP),y)
-	$(CP) $(STAGING_TARGET_DIR)/lib/libssp.so* $(IDIR_UCLIBC)/lib
+	$(CP) $(STAGING_TARGET_DIR)/lib/libssp.so* $(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH)
 endif
-	$(CP) $(STAGING_TARGET_DIR)/lib/libc.so.* $(IDIR_UCLIBC)/lib
+	$(CP) $(STAGING_TARGET_DIR)/lib/libc.so.* $(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH)
 	$(CP) $(STAGING_TARGET_DIR)/lib/libuClibc-$(PKG_VERSION).so \
-		$(IDIR_UCLIBC)/lib
+		$(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH)
 	$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc-$(PKG_VERSION).so \
-		$(IDIR_UCLIBC)/lib
-	$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc.so.* $(IDIR_UCLIBC)/lib
-	-for file in libcrypt libdl libm libresolv librt libutil; do \
-		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_UCLIBC)/lib; \
+		$(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH)
+	$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc.so.* $(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH)
+	-for file in libcrypt libdl libm libresolv libutil; do \
+		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH); \
 		$(CP) $(STAGING_TARGET_DIR)/lib/$$file-$(PKG_VERSION).so \
-			$(IDIR_UCLIBC)/lib; \
+			$(IDIR_UCLIBC)/$(ADK_TARGET_LIBC_PATH); \
 	done
 
 uclibc-dev-install:
-	${INSTALL_DIR} ${IDIR_UCLIBC_DEV}/usr/lib ${IDIR_UCLIBC_DEV}/lib
+	${INSTALL_DIR} ${IDIR_UCLIBC_DEV}/usr/lib ${IDIR_UCLIBC_DEV}/$(ADK_TARGET_LIBC_PATH)
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/libc.so ${IDIR_UCLIBC_DEV}/usr/lib
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/uclibc_nonshared.a ${IDIR_UCLIBC_DEV}/usr/lib
 	${CP} ${STAGING_TARGET_DIR}/usr/lib/crt*.o ${IDIR_UCLIBC_DEV}/usr/lib
-	for file in libcrypt libdl libm libresolv librt libutil; do \
-		cd $(IDIR_UCLIBC_DEV)/lib/; ln -sf $$file-$(PKG_VERSION).so $$file.so; \
+	for file in libcrypt libdl libm libresolv libutil; do \
+		cd $(IDIR_UCLIBC_DEV)/$(ADK_TARGET_LIBC_PATH); ln -sf $$file-$(PKG_VERSION).so $$file.so; \
 	done
 	$(MAKE) -C $(TOOLCHAIN_BUILD_DIR)/w-linux-$(KERNEL_VERSION)-$(KERNEL_RELEASE)/linux-$(KERNEL_VERSION) ARCH=$(ARCH) V=1 \
 		INSTALL_HDR_PATH=$(IDIR_UCLIBC_DEV)/usr \

+ 1 - 0
rules.mk

@@ -28,6 +28,7 @@ endif
 ADK_TARGET_ARCH:=	$(strip $(subst ",, $(ADK_TARGET_ARCH)))
 ADK_TARGET_SYSTEM:=	$(strip $(subst ",, $(ADK_TARGET_SYSTEM)))
 ADK_TARGET_LIBC:=	$(strip $(subst ",, $(ADK_TARGET_LIBC)))
+ADK_TARGET_LIBC_PATH:=	$(strip $(subst ",, $(ADK_TARGET_LIBC_PATH)))
 ADK_TARGET_ENDIAN:=	$(strip $(subst ",, $(ADK_TARGET_ENDIAN)))
 ADK_TARGET_CPU_ARCH:=	$(strip $(subst ",, $(ADK_TARGET_CPU_ARCH)))
 ADK_TARGET_CFLAGS:=	$(strip $(subst ",, $(ADK_TARGET_CFLAGS)))

+ 1 - 1
target/Makefile

@@ -6,7 +6,7 @@ include $(TOPDIR)/mk/rootfs.mk
 
 all: install
 
-ifeq (${ADK_64BIT_KERNEL},y)
+ifeq (${ADK_TARGET_KERNEL64},y)
 KERNEL_CFG:=kernel64.config
 else
 KERNEL_CFG:=kernel.config

+ 109 - 1
target/config/Config.in

@@ -31,7 +31,10 @@ endchoice
 
 choice
 prompt "Target Kernel"
-depends on ADK_TARGET_SYSTEM_LEMOTE_YEELONG || ADK_TARGET_SYSTEM_QEMU_MIPS64
+depends on ADK_TARGET_SYSTEM_LEMOTE_YEELONG \
+	|| ADK_TARGET_SYSTEM_QEMU_MIPS64 \
+	|| ADK_LINUX_X86_64
+
 config ADK_TARGET_KERNEL64
 	boolean "64 Bit Kernel"
 
@@ -40,6 +43,15 @@ config ADK_TARGET_KERNEL32
 
 endchoice
 
+config ADK_32
+	boolean
+
+config ADK_64
+	boolean
+
+config ADK_x32
+	boolean
+
 config ADK_o32
 	boolean
 
@@ -73,6 +85,99 @@ config ADK_TARGET_ABI_N64
 
 endchoice
 
+choice
+prompt "Target ABI"
+depends on ADK_TARGET_KERNEL64 && ADK_LINUX_X86_64
+
+config ADK_TARGET_ABI_64
+	boolean "64 Bit ABI"
+	select ADK_64
+
+config ADK_TARGET_ABI_X32
+	boolean "x32 ABI (new)"
+	select ADK_x32
+
+config ADK_TARGET_ABI_32
+	boolean "32 Bit ABI"
+	select ADK_32
+
+endchoice
+
+# multilib support
+config ADK_TARGET_LIBC_PATH
+	string
+	default "lib32" if ADK_n32
+	default "lib64" if ADK_n64 \
+				|| ADK_64 || ADK_LINUX_SPARC64 \
+				|| ADK_LINUX_PPC64 \
+				|| ADK_LINUX_X86_64
+	default "libx32" if ADK_x32
+	default "lib"
+
+
+menu "Target multilib support"
+depends on ADK_TARGET_KERNEL64 && \
+	ADK_LINUX_X86_64 || \
+	ADK_LINUX_MIPS
+
+config ADK_TARGET_WITH_MULTILIB 
+	boolean "multilib support"
+
+config ADK_TARGET_MULTILIB_X86_64
+	boolean "64 bit libraries"
+	depends on ADK_LINUX_X86_64 && ADK_TARGET_WITH_MULTILIB
+	default y
+	
+config ADK_TARGET_MULTILIB_X86_32
+	boolean "32 bit libraries"
+	depends on ADK_LINUX_X86_64 && ADK_TARGET_WITH_MULTILIB
+
+config ADK_TARGET_MULTILIB_X86_X32
+	boolean "x32 bit libraries"
+	depends on ADK_LINUX_X86_64 && ADK_TARGET_WITH_MULTILIB
+
+choice
+prompt "Default Library (compile all applications with this library)"
+config ADK_TARGET_MULTILIB_X86_64_DEF
+	boolean "64 Bit libraries as default"
+	depends on ADK_TARGET_MULTILIB_X86_64
+
+config ADK_TARGET_MULTILIB_X86_32_DEF
+	boolean "32 Bit libraries as default"
+	depends on ADK_TARGET_MULTILIB_X86_32
+
+config ADK_TARGET_MULTILIB_X86_X32_DEF
+	boolean "x32 Bit libraries as default"
+	depends on ADK_TARGET_MULTILIB_X86_X32
+
+endchoice
+endmenu
+
+config ADK_MULTILIB_TARGET
+	string
+	default "m32" if ADK_TARGET_MULTILIB_X86_32 \
+			&& !ADK_TARGET_MULTILIB_X86_64 \
+			&& !ADK_TARGET_MULTILIB_X86_X32
+	default "m64" if !ADK_TARGET_MULTILIB_X86_32 \
+			&& ADK_TARGET_MULTILIB_X86_64 \
+			&& !ADK_TARGET_MULTILIB_X86_X32
+	default "x32" if !ADK_TARGET_MULTILIB_X86_32 \
+			&& !ADK_TARGET_MULTILIB_X86_64 \
+			&& ADK_TARGET_MULTILIB_X86_X32
+	default "m32,m64" if ADK_TARGET_MULTILIB_X86_32 \
+		 	&& ADK_TARGET_MULTILIB_X86_64 \
+			&& !ADK_TARGET_MULTILIB_X86_X32
+	default "mx32,m64" if !ADK_TARGET_MULTILIB_X86_32 \
+		 	&& ADK_TARGET_MULTILIB_X86_64 \
+			&& ADK_TARGET_MULTILIB_X86_X32
+	default "m32,mx32" if ADK_TARGET_MULTILIB_X86_32 \
+		 	&& !ADK_TARGET_MULTILIB_X86_64 \
+			&& ADK_TARGET_MULTILIB_X86_X32
+	default "m64,m32,mx32" if ADK_TARGET_MULTILIB_X86_32 \
+		 	&& ADK_TARGET_MULTILIB_X86_64 \
+			&& ADK_TARGET_MULTILIB_X86_X32
+	
+
 # submodel support
 #
 choice
@@ -375,6 +480,9 @@ config ADK_TARGET_ABI_CFLAGS
 	default "-mabi=32" if ADK_TARGET_ABI_O32
 	default "-mabi=n32 -Wl,-m -Wl,elf32ltsmipn32" if ADK_TARGET_ABI_N32
 	default "-mabi=64 -Wl,-m -Wl,elf64ltsmip" if ADK_TARGET_ABI_N64
+	default "-m32" if ADK_TARGET_ABI_32
+	default "-mx32" if ADK_TARGET_ABI_X32
+	default "-m64" if ADK_TARGET_ABI_64
 
 config ADK_TARGET_KERNEL_LDFLAGS
 	string

+ 3 - 1
target/linux/config/Config.in.debug

@@ -75,7 +75,9 @@ config ADK_KERNEL_DEBUG_WITH_KGDB
 	select ADK_KERNEL_FRAME_POINTER
 	depends on ADK_TARGET_ROOTFS_NFSROOT || \
 		ADK_TARGET_ROOTFS_ARCHIVE || \
-		ADK_TARGET_ROOTFS_YAFFS
+		ADK_TARGET_ROOTFS_YAFFS || \
+		ADK_TARGET_ROOTFS_INITRAMFS || \
+		ADK_TARGET_ROOTFS_INITRAMFS_PIGGYBACK
 	default n
 
 config ADK_KPACKAGE_KMOD_OPROFILE

+ 4 - 0
target/linux/config/Config.in.leds

@@ -9,6 +9,10 @@ config ADK_KERNEL_LEDS_TRIGGERS
 	boolean
 	select ADK_KERNEL_NEW_LEDS
 
+config ADK_KPACKAGE_KMOD_LEDS_CLASS
+	boolean
+	depends on !ADK_KERNEL_LEDS_CLASS
+
 menu "LEDS driver support"
 depends on ADK_TARGET_WITH_LEDS
 

+ 6 - 0
target/packages/pkg-available/laptop

@@ -4,6 +4,7 @@ config ADK_PKG_LAPTOP
 	select ADK_PACKAGE_SCREEN
 	select ADK_PACKAGE_VIM
 	select ADK_PACKAGE_SUDO
+	select ADK_PACKAGE_LYNX
 	select ADK_PACKAGE_KEYCHAIN
 	select ADK_PACKAGE_ALSA_UTILS
 	select ADK_PACKAGE_OPENSSH_CLIENT
@@ -12,10 +13,12 @@ config ADK_PKG_LAPTOP
 	select ADK_PACKAGE_MKSH
 	select ADK_PACKAGE_MKSH_FULL
 	select ADK_PACKAGE_RXVT_UNICODE
+	select ADK_PACKAGE_XTERM
 	select ADK_PACKAGE_XORG_SERVER
 	select ADK_PACKAGE_XORG_SERVER_WITH_DRI
 	select ADK_PACKAGE_XF86_INPUT_KEYBOARD
 	select ADK_PACKAGE_XF86_INPUT_MOUSE
+	select ADK_PACKAGE_XF86_VIDEO_INTEL if ADK_TARGET_SYSTEM_IBM_X40
 	select ADK_PACKAGE_XF86_VIDEO_SILICONMOTION if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
 	select ADK_PACKAGE_FONT_MISC_MISC
 	select ADK_PACKAGE_SETXKBMAP
@@ -24,6 +27,9 @@ config ADK_PKG_LAPTOP
 	select ADK_PACKAGE_FEH
 	select ADK_PACKAGE_XINIT
 	select ADK_PACKAGE_EVILWM
+	select ADK_PACKAGE_IRSSI
+	select ADK_PACKAGE_IRSSI_WITH_SSL
+	select ADK_PACKAGE_IRSSI_WITH_IPV6
 	select ADK_PACKAGE_XRDB
 	select ADK_PACKAGE_FIREFOX
 	select ADK_PACKAGE_DILLO

File diff suppressed because it is too large
+ 605 - 205
target/x86_64/kernel.config


File diff suppressed because it is too large
+ 264 - 267
target/x86_64/kernel64.config


+ 1 - 1
toolchain/binutils/Makefile

@@ -12,7 +12,7 @@ else
 CONFOPTS+=		--disable-libssp
 endif
 
-ifneq ($(strip $(ADK_LINUX_64)$(ADK_64BIT_KERNEL)),)
+ifneq ($(strip $(ADK_LINUX_64)$(ADK_TARGET_KERNEL64)),)
 CONFOPTS+=		--enable-64-bit-bfd
 endif
 

+ 5 - 4
toolchain/gcc/Makefile

@@ -17,7 +17,6 @@ GCC_CONFOPTS=		--prefix=$(STAGING_HOST_DIR) \
 			--with-libelf=$(STAGING_HOST_DIR) \
 			--disable-__cxa_atexit \
 			--with-gnu-ld \
-			--disable-multilib \
 			--disable-libmudflap \
 			--disable-libgomp \
 			--disable-decimal-float \
@@ -34,10 +33,12 @@ else
 GCC_CONFOPTS+=		--disable-sjlj-exceptions
 endif
 
-ifeq ($(ADK_64BIT_KERNEL),y)
-GCC_CONFOPTS+=		--enable-targets=all
+ifeq ($(ADK_TARGET_WITH_MULTILIB),y)
+GCC_CONFOPTS+=		--with-multilib-list=$(ADK_MULTILIB_TARGET) \
+			--enable-multilib
 else
-GCC_CONFOPTS+=		--disable-biarch
+GCC_CONFOPTS+=		--disable-biarch \
+			--disable-multilib
 endif
 
 ifeq ($(ADK_TOOLCHAIN_GCC_SSP),y)

+ 0 - 92
toolchain/gcc/patches/4.7.2/no-lib64.patch

@@ -1,92 +0,0 @@
-diff -Nur gcc-4.7.2.orig/gcc/config/i386/linux64.h gcc-4.7.2/gcc/config/i386/linux64.h
---- gcc-4.7.2.orig/gcc/config/i386/linux64.h	2011-07-07 17:38:34.000000000 +0200
-+++ gcc-4.7.2/gcc/config/i386/linux64.h	2012-09-22 12:48:17.000000000 +0200
-@@ -29,5 +29,5 @@
- #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
- 
- #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
--#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
--#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
-+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
-+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-linux-so.2"
-diff -Nur gcc-4.7.2.orig/gcc/config/i386/t-linux64 gcc-4.7.2/gcc/config/i386/t-linux64
---- gcc-4.7.2.orig/gcc/config/i386/t-linux64	2011-11-02 16:23:48.000000000 +0100
-+++ gcc-4.7.2/gcc/config/i386/t-linux64	2012-09-22 12:46:07.000000000 +0200
-@@ -34,6 +34,6 @@
- comma=,
- MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
- MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
--MULTILIB_OSDIRNAMES = m64=../lib64
--MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
--MULTILIB_OSDIRNAMES+= mx32=../libx32
-+MULTILIB_OSDIRNAMES = m64=../lib
-+MULTILIB_OSDIRNAMES+= m32=../lib
-+MULTILIB_OSDIRNAMES+= mx32=../lib
-diff -Nur gcc-4.7.2.orig/gcc/config/mips/linux64.h gcc-4.7.2/gcc/config/mips/linux64.h
---- gcc-4.7.2.orig/gcc/config/mips/linux64.h	2011-07-19 20:00:27.000000000 +0200
-+++ gcc-4.7.2/gcc/config/mips/linux64.h	2012-09-22 12:44:16.000000000 +0200
-@@ -24,9 +24,9 @@
- #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
- 
- #define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
--#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
--#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1"
--#define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
-+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld.so.1"
-+#define GLIBC_DYNAMIC_LINKERN32 "/lib/ld.so.1"
-+#define UCLIBC_DYNAMIC_LINKERN32 "/lib/ld-uClibc.so.0"
- #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
- #define GNU_USER_DYNAMIC_LINKERN32 \
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
-diff -Nur gcc-4.7.2.orig/gcc/config/mips/t-linux64 gcc-4.7.2/gcc/config/mips/t-linux64
---- gcc-4.7.2.orig/gcc/config/mips/t-linux64	2011-11-02 15:33:56.000000000 +0100
-+++ gcc-4.7.2/gcc/config/mips/t-linux64	2012-09-22 12:48:39.000000000 +0200
-@@ -18,4 +18,4 @@
- 
- MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
- MULTILIB_DIRNAMES = n32 32 64
--MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64
-+MULTILIB_OSDIRNAMES = ../lib ../lib ../lib
-diff -Nur gcc-4.7.2.orig/gcc/config/rs6000/linux64.h gcc-4.7.2/gcc/config/rs6000/linux64.h
---- gcc-4.7.2.orig/gcc/config/rs6000/linux64.h	2012-03-12 17:16:51.000000000 +0100
-+++ gcc-4.7.2/gcc/config/rs6000/linux64.h	2012-09-22 12:44:16.000000000 +0200
-@@ -359,7 +359,7 @@
- #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
- 
- #define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
--#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
-+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
- #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
- #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
- #if DEFAULT_LIBC == LIBC_UCLIBC
-diff -Nur gcc-4.7.2.orig/gcc/config/rs6000/t-linux64 gcc-4.7.2/gcc/config/rs6000/t-linux64
---- gcc-4.7.2.orig/gcc/config/rs6000/t-linux64	2011-11-02 16:23:48.000000000 +0100
-+++ gcc-4.7.2/gcc/config/rs6000/t-linux64	2012-09-22 12:44:16.000000000 +0200
-@@ -31,5 +31,5 @@
- MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
- MULTILIB_EXCEPTIONS     = m64/msoft-float
- MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
--MULTILIB_OSDIRNAMES	= ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
-+MULTILIB_OSDIRNAMES	= ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
- MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
-diff -Nur gcc-4.7.2.orig/gcc/config/sparc/linux64.h gcc-4.7.2/gcc/config/sparc/linux64.h
---- gcc-4.7.2.orig/gcc/config/sparc/linux64.h	2011-11-12 02:05:07.000000000 +0100
-+++ gcc-4.7.2/gcc/config/sparc/linux64.h	2012-09-22 12:44:16.000000000 +0200
-@@ -94,7 +94,7 @@
-    done.  */
- 
- #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
--#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux.so.2"
- 
- #ifdef SPARC_BI_ARCH
- 
-diff -Nur gcc-4.7.2.orig/gcc/config/sparc/t-linux64 gcc-4.7.2/gcc/config/sparc/t-linux64
---- gcc-4.7.2.orig/gcc/config/sparc/t-linux64	2011-11-02 16:23:48.000000000 +0100
-+++ gcc-4.7.2/gcc/config/sparc/t-linux64	2012-09-22 12:49:43.000000000 +0200
-@@ -26,4 +26,4 @@
- 
- MULTILIB_OPTIONS = m64/m32
- MULTILIB_DIRNAMES = 64 32
--MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
-+MULTILIB_OSDIRNAMES = ../lib ../lib

+ 28 - 0
toolchain/uClibc/Makefile

@@ -83,6 +83,33 @@ endif
 	touch $(WRKBUILD)/.configured
 	touch $@
 
+ifeq ($(ADK_TARGET_WITH_MULTILIB),y)
+$(WRKBUILD)/.compiled:
+	$(MAKE) ${UCLIBC_MAKEOPTS} -C $(WRKBUILD) \
+		PREFIX= \
+		DEVEL_PREFIX=/ \
+		RUNTIME_PREFIX=/ \
+		HOSTCC="$(CC_FOR_BUILD)" \
+		CPU_CFLAGS="$(TARGET_CFLAGS)" \
+		MULTILIB_DIR=/$(ADK_TARGET_LIBC_PATH) \
+		all
+	touch $@
+
+$(WRKBUILD)/.installed: $(WRKBUILD)/.compiled
+	$(MAKE) -C $(WRKBUILD) \
+		PREFIX=$(STAGING_TARGET_DIR) \
+		DEVEL_PREFIX=/usr/ \
+		DEVEL_PREFIX_LIB=/ \
+		RUNTIME_PREFIX=/ \
+		CPU_CFLAGS="$(TARGET_CFLAGS)" \
+		MULTILIB_DIR=/$(ADK_TARGET_LIBC_PATH) \
+		install_dev install_runtime
+	rm -rf $(STAGING_TARGET_DIR)/$(ADK_TARGET_LIBC_PATH)/libc.so
+	ln -s libc.so.0 $(STAGING_TARGET_DIR)/$(ADK_TARGET_LIBC_PATH)/libc.so
+	touch $@
+
+else
+
 $(WRKBUILD)/.compiled:
 	$(MAKE) ${UCLIBC_MAKEOPTS} -C $(WRKBUILD) \
 		PREFIX= \
@@ -114,5 +141,6 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.install_headers
 	rm -rf $(STAGING_TARGET_DIR)/lib/libc.so
 	ln -s libc.so.0 $(STAGING_TARGET_DIR)/lib/libc.so
 	touch $@
+endif
 
 include ${TOPDIR}/mk/toolchain.mk

Some files were not shown because too many files changed in this diff