From b700bbdede249dd290dc67ff2ebdaf730e3ffa6a Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 1 Mar 2014 09:32:10 +0100 Subject: move target/tools to tools, use ADK_HOST_NEED variable to build a tool, when required. Add archivers to tools, remove prereq checks for them. Rename host_ dir in preparation for shared openadk source via nfs/smb from different host systems. Make some abi cleanup --- .gitignore | 1 - README | 6 +- mk/build.mk | 42 +- mk/host.mk | 2 +- mk/image.mk | 12 +- mk/kernel-vars.mk | 2 +- mk/package.mk | 2 +- mk/pkg-bottom.mk | 6 +- mk/vars.mk | 40 +- package/base-files/Makefile | 2 +- package/gcc/Makefile | 6 +- rules.mk | 1 + scripts/create.sh | 5 +- scripts/scan-tools.sh | 36 - target/config/Config.in | 23 + target/config/Config.in.tools | 40 + target/linux/config/Config.in.kernel | 8 +- target/microblaze/Makefile | 9 +- target/mips/Makefile | 14 +- target/tools/addpattern/Makefile | 4 - target/tools/addpattern/addpattern.c | 252 ----- target/tools/lzma-loader/.svn/entries | 300 ------ .../.svn/text-base/LzmaDecode.c.svn-base | 663 ------------ .../.svn/text-base/LzmaDecode.h.svn-base | 100 -- .../lzma-loader/.svn/text-base/Makefile.svn-base | 77 -- .../lzma-loader/.svn/text-base/README.svn-base | 55 - .../.svn/text-base/decompress.c.svn-base | 186 ---- .../.svn/text-base/decompress.lds.in.svn-base | 20 - .../lzma-loader/.svn/text-base/head.S.svn-base | 160 --- .../.svn/text-base/loader.lds.in.svn-base | 17 - target/tools/lzma-loader/Makefile | 5 - target/tools/lzma-loader/src/LzmaDecode.c | 663 ------------ target/tools/lzma-loader/src/LzmaDecode.h | 100 -- target/tools/lzma-loader/src/LzmaDecode.o | Bin 6248 -> 0 bytes target/tools/lzma-loader/src/Makefile | 78 -- target/tools/lzma-loader/src/README | 55 - target/tools/lzma-loader/src/data.lds | 1 - target/tools/lzma-loader/src/data.o | Bin 3996 -> 0 bytes target/tools/lzma-loader/src/decompress | Bin 71097 -> 0 bytes target/tools/lzma-loader/src/decompress.c | 186 ---- target/tools/lzma-loader/src/decompress.image | Bin 3484 -> 0 bytes target/tools/lzma-loader/src/decompress.lds | 20 - target/tools/lzma-loader/src/decompress.lds.in | 20 - target/tools/lzma-loader/src/decompress.o | Bin 2680 -> 0 bytes target/tools/lzma-loader/src/head.S | 160 --- target/tools/lzma-loader/src/head.o | Bin 1204 -> 0 bytes target/tools/lzma-loader/src/loader | Bin 3804 -> 0 bytes target/tools/lzma-loader/src/loader.elf | Bin 8486 -> 0 bytes target/tools/lzma-loader/src/loader.gz | Bin 2374 -> 0 bytes target/tools/lzma-loader/src/loader.lds | 17 - target/tools/lzma-loader/src/loader.lds.in | 17 - target/tools/lzma-loader/src/loader.o | Bin 8486 -> 0 bytes target/tools/lzma/Makefile | 31 - target/tools/lzma/patches/001-large_files.patch | 13 - target/tools/lzma/patches/002-lzmp.patch | 1059 -------------------- target/tools/lzma/patches/003-compile_fixes.patch | 26 - target/tools/lzma/patches/100-static_library.patch | 70 -- target/tools/mkfimage/Makefile | 4 - target/tools/mkfimage/mkfimage.c | 72 -- target/tools/mtd-utils/Makefile | 24 - target/tools/mtd-utils/patches/lzo.patch | 88 -- target/tools/rules.mk | 7 - target/tools/squashfs/Makefile | 29 - target/tools/squashfs/patches/cppflags.patch | 12 - target/tools/srec2bin/Makefile | 4 - target/tools/srec2bin/srec2bin.c | 521 ---------- target/tools/trx/Makefile | 4 - target/tools/trx/trx.c | 366 ------- target/tools/xz/Makefile | 28 - toolchain/gcc/Makefile | 4 +- tools/Makefile | 30 +- tools/addpattern/Makefile | 4 + tools/addpattern/addpattern.c | 252 +++++ tools/adk/Makefile | 8 +- tools/bc/Makefile | 6 +- tools/cdrtools/Makefile | 6 +- tools/cpio/Makefile | 4 +- tools/genext2fs/Makefile | 6 +- tools/gperf/Makefile | 6 +- tools/lzma-loader/.svn/entries | 300 ++++++ .../.svn/text-base/LzmaDecode.c.svn-base | 663 ++++++++++++ .../.svn/text-base/LzmaDecode.h.svn-base | 100 ++ tools/lzma-loader/.svn/text-base/Makefile.svn-base | 77 ++ tools/lzma-loader/.svn/text-base/README.svn-base | 55 + .../.svn/text-base/decompress.c.svn-base | 186 ++++ .../.svn/text-base/decompress.lds.in.svn-base | 20 + tools/lzma-loader/.svn/text-base/head.S.svn-base | 160 +++ .../.svn/text-base/loader.lds.in.svn-base | 17 + tools/lzma-loader/Makefile | 5 + tools/lzma-loader/src/LzmaDecode.c | 663 ++++++++++++ tools/lzma-loader/src/LzmaDecode.h | 100 ++ tools/lzma-loader/src/LzmaDecode.o | Bin 0 -> 6248 bytes tools/lzma-loader/src/Makefile | 78 ++ tools/lzma-loader/src/README | 55 + tools/lzma-loader/src/data.lds | 1 + tools/lzma-loader/src/data.o | Bin 0 -> 3996 bytes tools/lzma-loader/src/decompress | Bin 0 -> 71097 bytes tools/lzma-loader/src/decompress.c | 186 ++++ tools/lzma-loader/src/decompress.image | Bin 0 -> 3484 bytes tools/lzma-loader/src/decompress.lds | 20 + tools/lzma-loader/src/decompress.lds.in | 20 + tools/lzma-loader/src/decompress.o | Bin 0 -> 2680 bytes tools/lzma-loader/src/head.S | 160 +++ tools/lzma-loader/src/head.o | Bin 0 -> 1204 bytes tools/lzma-loader/src/loader | Bin 0 -> 3804 bytes tools/lzma-loader/src/loader.elf | Bin 0 -> 8486 bytes tools/lzma-loader/src/loader.gz | Bin 0 -> 2374 bytes tools/lzma-loader/src/loader.lds | 17 + tools/lzma-loader/src/loader.lds.in | 17 + tools/lzma-loader/src/loader.o | Bin 0 -> 8486 bytes tools/lzma/Makefile | 30 + tools/lzma/patches/001-large_files.patch | 13 + tools/lzma/patches/002-lzmp.patch | 1059 ++++++++++++++++++++ tools/lzma/patches/003-compile_fixes.patch | 26 + tools/lzma/patches/100-static_library.patch | 70 ++ tools/mkcrypt/Makefile | 4 +- tools/mkfimage/Makefile | 4 + tools/mkfimage/mkfimage.c | 72 ++ tools/mkimage/Makefile | 4 +- tools/mtd-utils/Makefile | 24 + tools/mtd-utils/patches/lzo.patch | 88 ++ tools/squashfs/Makefile | 29 + tools/squashfs/patches/cppflags.patch | 12 + tools/srec2bin/Makefile | 4 + tools/srec2bin/srec2bin.c | 521 ++++++++++ tools/syslinux/Makefile | 13 +- tools/trx/Makefile | 4 + tools/trx/trx.c | 366 +++++++ tools/xz/Makefile | 28 + 129 files changed, 5700 insertions(+), 5668 deletions(-) delete mode 100644 target/tools/addpattern/Makefile delete mode 100644 target/tools/addpattern/addpattern.c delete mode 100644 target/tools/lzma-loader/.svn/entries delete mode 100644 target/tools/lzma-loader/.svn/text-base/LzmaDecode.c.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/LzmaDecode.h.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/Makefile.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/README.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/decompress.c.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/decompress.lds.in.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/head.S.svn-base delete mode 100644 target/tools/lzma-loader/.svn/text-base/loader.lds.in.svn-base delete mode 100644 target/tools/lzma-loader/Makefile delete mode 100644 target/tools/lzma-loader/src/LzmaDecode.c delete mode 100644 target/tools/lzma-loader/src/LzmaDecode.h delete mode 100644 target/tools/lzma-loader/src/LzmaDecode.o delete mode 100644 target/tools/lzma-loader/src/Makefile delete mode 100644 target/tools/lzma-loader/src/README delete mode 100644 target/tools/lzma-loader/src/data.lds delete mode 100644 target/tools/lzma-loader/src/data.o delete mode 100755 target/tools/lzma-loader/src/decompress delete mode 100644 target/tools/lzma-loader/src/decompress.c delete mode 100755 target/tools/lzma-loader/src/decompress.image delete mode 100644 target/tools/lzma-loader/src/decompress.lds delete mode 100644 target/tools/lzma-loader/src/decompress.lds.in delete mode 100644 target/tools/lzma-loader/src/decompress.o delete mode 100644 target/tools/lzma-loader/src/head.S delete mode 100644 target/tools/lzma-loader/src/head.o delete mode 100755 target/tools/lzma-loader/src/loader delete mode 100755 target/tools/lzma-loader/src/loader.elf delete mode 100644 target/tools/lzma-loader/src/loader.gz delete mode 100644 target/tools/lzma-loader/src/loader.lds delete mode 100644 target/tools/lzma-loader/src/loader.lds.in delete mode 100755 target/tools/lzma-loader/src/loader.o delete mode 100644 target/tools/lzma/Makefile delete mode 100644 target/tools/lzma/patches/001-large_files.patch delete mode 100644 target/tools/lzma/patches/002-lzmp.patch delete mode 100644 target/tools/lzma/patches/003-compile_fixes.patch delete mode 100644 target/tools/lzma/patches/100-static_library.patch delete mode 100644 target/tools/mkfimage/Makefile delete mode 100644 target/tools/mkfimage/mkfimage.c delete mode 100644 target/tools/mtd-utils/Makefile delete mode 100644 target/tools/mtd-utils/patches/lzo.patch delete mode 100644 target/tools/rules.mk delete mode 100644 target/tools/squashfs/Makefile delete mode 100644 target/tools/squashfs/patches/cppflags.patch delete mode 100644 target/tools/srec2bin/Makefile delete mode 100644 target/tools/srec2bin/srec2bin.c delete mode 100644 target/tools/trx/Makefile delete mode 100644 target/tools/trx/trx.c delete mode 100644 target/tools/xz/Makefile create mode 100644 tools/addpattern/Makefile create mode 100644 tools/addpattern/addpattern.c create mode 100644 tools/lzma-loader/.svn/entries create mode 100644 tools/lzma-loader/.svn/text-base/LzmaDecode.c.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/LzmaDecode.h.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/Makefile.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/README.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/decompress.c.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/decompress.lds.in.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/head.S.svn-base create mode 100644 tools/lzma-loader/.svn/text-base/loader.lds.in.svn-base create mode 100644 tools/lzma-loader/Makefile create mode 100644 tools/lzma-loader/src/LzmaDecode.c create mode 100644 tools/lzma-loader/src/LzmaDecode.h create mode 100644 tools/lzma-loader/src/LzmaDecode.o create mode 100644 tools/lzma-loader/src/Makefile create mode 100644 tools/lzma-loader/src/README create mode 100644 tools/lzma-loader/src/data.lds create mode 100644 tools/lzma-loader/src/data.o create mode 100755 tools/lzma-loader/src/decompress create mode 100644 tools/lzma-loader/src/decompress.c create mode 100755 tools/lzma-loader/src/decompress.image create mode 100644 tools/lzma-loader/src/decompress.lds create mode 100644 tools/lzma-loader/src/decompress.lds.in create mode 100644 tools/lzma-loader/src/decompress.o create mode 100644 tools/lzma-loader/src/head.S create mode 100644 tools/lzma-loader/src/head.o create mode 100755 tools/lzma-loader/src/loader create mode 100755 tools/lzma-loader/src/loader.elf create mode 100644 tools/lzma-loader/src/loader.gz create mode 100644 tools/lzma-loader/src/loader.lds create mode 100644 tools/lzma-loader/src/loader.lds.in create mode 100755 tools/lzma-loader/src/loader.o create mode 100644 tools/lzma/Makefile create mode 100644 tools/lzma/patches/001-large_files.patch create mode 100644 tools/lzma/patches/002-lzmp.patch create mode 100644 tools/lzma/patches/003-compile_fixes.patch create mode 100644 tools/lzma/patches/100-static_library.patch create mode 100644 tools/mkfimage/Makefile create mode 100644 tools/mkfimage/mkfimage.c create mode 100644 tools/mtd-utils/Makefile create mode 100644 tools/mtd-utils/patches/lzo.patch create mode 100644 tools/squashfs/Makefile create mode 100644 tools/squashfs/patches/cppflags.patch create mode 100644 tools/srec2bin/Makefile create mode 100644 tools/srec2bin/srec2bin.c create mode 100644 tools/trx/Makefile create mode 100644 tools/trx/trx.c create mode 100644 tools/xz/Makefile diff --git a/.gitignore b/.gitignore index a4d67734a..fc81d7882 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,6 @@ /host_*/ /pkg_*/ /root_*/ -/bin/ /firmware/ /build_*/ /config/*.o diff --git a/README b/README index 820cc95c9..3e280c165 100644 --- a/README +++ b/README @@ -8,16 +8,11 @@ Before you can start you need to install some tools: - gcc - binutils - GNU make -- GNU m4 - GNU awk - GNU sed - tar - patch - gzip -- bzip2 -- lzop -- lzma -- xz - wget - libc headers - ncurses5 headers @@ -39,3 +34,4 @@ To switch to another target configuration, simply run "make switch". This will backup your existing configuration and will start with an empty one. Sunshine! + Waldemar Brodkorb diff --git a/mk/build.mk b/mk/build.mk index eadccdcb3..d6fd9b20c 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -91,7 +91,7 @@ POSTCONFIG= -@\ if [ -f .adkinit ];then rm .adkinit;\ else \ if [ -f .config.old ];then \ - $(TOPDIR)/bin/pkgrebuild;\ + $(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/pkgrebuild;\ rebuild=0; \ if [ "$$(grep ^BUSYBOX .config|md5sum)" != "$$(grep ^BUSYBOX .config.old|md5sum)" ];then \ touch .rebuild.busybox;\ @@ -138,7 +138,7 @@ include $(TOPDIR)/rules.mk all: world ${TOPDIR}/package/Depends.mk: ${TOPDIR}/.config $(wildcard ${TOPDIR}/package/*/Makefile) - $(BIN_DIR)/depmaker > ${TOPDIR}/package/Depends.mk + $(STAGING_HOST_DIR)/usr/bin/depmaker > ${TOPDIR}/package/Depends.mk .NOTPARALLEL: .PHONY: all world clean cleantarget cleandir distclean image_clean @@ -155,12 +155,12 @@ ifeq ($(ADK_NATIVE),y) else ifeq ($(ADK_TOOLCHAIN),y) ifeq ($(ADK_TOOLCHAIN_ONLY),y) - $(MAKE) -f mk/build.mk toolchain/fixup tools/install package/compile + $(MAKE) -f mk/build.mk tools/install toolchain/fixup package/compile else - $(MAKE) -f mk/build.mk toolchain/fixup tools/install package/compile root_clean package/install + $(MAKE) -f mk/build.mk tools/install toolchain/fixup package/compile root_clean package/install endif else - $(MAKE) -f mk/build.mk toolchain/fixup tools/install target/config-prepare target/compile package/compile root_clean package/install target/install package_index + $(MAKE) -f mk/build.mk tools/install toolchain/fixup target/config-prepare target/compile package/compile root_clean package/install target/install package_index endif endif @@ -250,13 +250,13 @@ root_clean: clean: @$(TRACE) clean $(MAKE) -C $(CONFIG) clean - for d in ${STAGING_PKG_DIR}; do \ - for f in $$(ls $$d/[a-z]* 2>/dev/null |grep -v [A-Z] 2>/dev/null); do \ - while read file ; do \ - rm ${STAGING_DIR}/$$file 2>/dev/null;\ - done < $$f ; \ - rm $$f ; \ - done \ + for f in $$(ls ${STAGING_PKG_DIR}/ 2>/dev/null |grep -v [A-Z]|grep -v stamps 2>/dev/null); do \ + while read file ; do \ + echo ${STAGING_DIR}/$$file ;\ + rm ${STAGING_DIR}/$$file 2>/dev/null;\ + done < $$f ; \ + echo ${STAGING_PKG_DIR}/$$f ;\ + rm ${STAGING_PKG_DIR}/$$f ; \ done rm -rf $(BUILD_DIR) $(FW_DIR) $(TARGET_DIR) \ ${TOPDIR}/package/pkglist.d @@ -619,24 +619,24 @@ bulkallmod: if [ -f .exit ];then echo "Bulk build failed!"; cat .exit;rm .exit; exit 1;fi \ done -${TOPDIR}/bin/pkgmaker: $(TOPDIR)/tools/adk/pkgmaker.c $(TOPDIR)/tools/adk/sortfile.c $(TOPDIR)/tools/adk/strmap.c - @mkdir -p ${TOPDIR}/bin +$(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/pkgmaker: $(TOPDIR)/tools/adk/pkgmaker.c $(TOPDIR)/tools/adk/sortfile.c $(TOPDIR)/tools/adk/strmap.c + @mkdir -p host_$(GNU_HOST_NAME)/usr/bin @$(CC_FOR_BUILD) -g -o $@ tools/adk/pkgmaker.c tools/adk/sortfile.c tools/adk/strmap.c -${TOPDIR}/bin/pkgrebuild: $(TOPDIR)/tools/adk/pkgrebuild.c $(TOPDIR)/tools/adk/strmap.c +$(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/pkgrebuild: $(TOPDIR)/tools/adk/pkgrebuild.c $(TOPDIR)/tools/adk/strmap.c @$(CC_FOR_BUILD) -g -o $@ tools/adk/pkgrebuild.c tools/adk/strmap.c -package/Config.in.auto menu .menu: $(wildcard ${TOPDIR}/package/*/Makefile) ${TOPDIR}/bin/pkgmaker ${TOPDIR}/bin/pkgrebuild +package/Config.in.auto menu .menu: $(wildcard ${TOPDIR}/package/*/Makefile) $(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/pkgmaker $(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/pkgrebuild @echo "Generating menu structure ..." - @$(TOPDIR)/bin/pkgmaker + @$(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/pkgmaker @:>.menu -${TOPDIR}/bin/depmaker: $(TOPDIR)/tools/adk/depmaker.c - $(CC_FOR_BUILD) -g -o $(TOPDIR)/bin/depmaker $(TOPDIR)/tools/adk/depmaker.c +$(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/depmaker: $(TOPDIR)/tools/adk/depmaker.c + $(CC_FOR_BUILD) -g -o $@ $(TOPDIR)/tools/adk/depmaker.c -dep: $(TOPDIR)/bin/depmaker +dep: $(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/depmaker @echo "Generating dependencies ..." - @$(TOPDIR)/bin/depmaker > ${TOPDIR}/package/Depends.mk + @$(TOPDIR)/host_$(GNU_HOST_NAME)/usr/bin/depmaker > ${TOPDIR}/package/Depends.mk .PHONY: menu dep diff --git a/mk/host.mk b/mk/host.mk index 3fcca0664..aa88bab44 100644 --- a/mk/host.mk +++ b/mk/host.mk @@ -37,7 +37,7 @@ _HOST_PATCH_COOKIE= ${WRKDIST}/.prepared _HOST_CONFIGURE_COOKIE= ${WRKDIR}/.host_configure_done _HOST_BUILD_COOKIE= ${WRKDIR}/.host_build_done _HOST_FAKE_COOKIE= ${HOST_WRKINST}/.host_fake_done -_HOST_COOKIE= ${STAGING_PKG_DIR}/${PKG_NAME}${PKG_VERSION}-${PKG_RELEASE}-host +_HOST_COOKIE= ${STAGING_PKG_DIR}/stamps/${PKG_NAME}${PKG_VERSION}-${PKG_RELEASE}-host hostextract: ${_HOST_EXTRACT_COOKIE} hostpatch: ${_HOST_PATCH_COOKIE} diff --git a/mk/image.mk b/mk/image.mk index 9b60c2400..571752eaf 100644 --- a/mk/image.mk +++ b/mk/image.mk @@ -136,15 +136,15 @@ endif ${FW_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR} kernel-package cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | \ sed "s#\(.*\)#:0:0::::::\1#" | sort | \ - ${BIN_DIR}/cpio -o -Hustar -P | gzip -n9 >$@ + ${STAGING_HOST_DIR}/usr/bin/cpio -o -Hustar -P | gzip -n9 >$@ ${FW_DIR}/${ROOTFSUSERTARBALL}: ${TARGET_DIR} cd ${TARGET_DIR}; find . | grep -v ./boot/ | sed -n '/^\.\//s///p' | \ sed "s#\(.*\)#:0:0::::::\1#" | sort | \ - ${BIN_DIR}/cpio -o -Hustar -P | gzip -n9 >$@ + ${STAGING_HOST_DIR}/usr/bin/cpio -o -Hustar -P | gzip -n9 >$@ ${FW_DIR}/${INITRAMFS}_list: ${TARGET_DIR} - bash ${LINUX_DIR}/scripts/gen_initramfs_list.sh -u squash -g squash \ + $(BASH) ${LINUX_DIR}/scripts/gen_initramfs_list.sh -u squash -g squash \ ${TARGET_DIR}/ >$@ ( \ echo "nod /dev/console 0644 0 0 c 5 1"; \ @@ -162,12 +162,12 @@ ${FW_DIR}/${INITRAMFS}: ${FW_DIR}/${INITRAMFS}_list ${ADK_COMPRESSION_TOOL} -c >$@ ${BUILD_DIR}/root.squashfs: ${TARGET_DIR} - ${STAGING_HOST_DIR}/bin/mksquashfs ${TARGET_DIR} \ + ${STAGING_HOST_DIR}/usr/bin/mksquashfs ${TARGET_DIR} \ ${BUILD_DIR}/root.squashfs -comp xz \ -nopad -noappend -root-owned $(MAKE_TRACE) ${FW_DIR}/${ROOTFSJFFS2}: ${TARGET_DIR} - ${STAGING_HOST_DIR}/bin/mkfs.jffs2 $(ADK_JFFS2_OPTS) -q -r ${TARGET_DIR} \ + ${STAGING_HOST_DIR}/usr/bin/mkfs.jffs2 $(ADK_JFFS2_OPTS) -q -r ${TARGET_DIR} \ --pad=$(ADK_TARGET_MTD_SIZE) -o ${FW_DIR}/${ROOTFSJFFS2} $(MAKE_TRACE) createinitramfs: ${FW_DIR}/${INITRAMFS}_list @@ -242,7 +242,7 @@ ${FW_DIR}/${ROOTFSISO}: ${TARGET_DIR} kernel-package ${TARGET_DIR}/boot/syslinux echo 'DEFAULT /boot/kernel root=/dev/sr0 init=/init' > \ ${TARGET_DIR}/boot/syslinux/isolinux.cfg - ${BIN_DIR}/mkisofs -R -uid 0 -gid 0 -o $@ \ + ${STAGING_HOST_DIR}/usr/bin/mkisofs -R -uid 0 -gid 0 -o $@ \ -b boot/syslinux/isolinux.bin \ -c boot/syslinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table ${TARGET_DIR} diff --git a/mk/kernel-vars.mk b/mk/kernel-vars.mk index d668f7edb..0b3e7ddbb 100644 --- a/mk/kernel-vars.mk +++ b/mk/kernel-vars.mk @@ -25,4 +25,4 @@ ADK_KCPPFLAGS+= -DBCM47XX_OVERRIDE_FLASHSIZE=0x800000 \ endif KERNEL_MAKE_ENV+= KCPPFLAGS='${ADK_KCPPFLAGS}' \ - PATH="${BIN_DIR}:$$PATH" + PATH="${STAGING_HOST_DIR}/usr/bin:$$PATH" diff --git a/mk/package.mk b/mk/package.mk index 125ed3d26..264cd06e0 100644 --- a/mk/package.mk +++ b/mk/package.mk @@ -249,7 +249,7 @@ endif find usr ! -type d 2>/dev/null | \ grep -E -v -e '^usr/lib/pkgconfig' -e '^usr/share' -e '^usr/doc' -e '^usr/src' -e '^usr/man' -e '^usr/info' -e '^usr/lib/libc.so' -e '^usr/bin/[a-z0-9-]+-config' | \ tee '$${STAGING_PKG_DIR}/$(1)' | \ - $(BIN_DIR)/cpio -padlmu '$${STAGING_DIR}' + $(STAGING_HOST_DIR)/usr/bin/cpio -padlmu '$${STAGING_DIR}' @cd '$${STAGING_DIR}'; grep 'usr/lib/.*\.la$$$$' \ '$${STAGING_PKG_DIR}/$(1)' | while read fn; do \ chmod u+w $$$$fn; \ diff --git a/mk/pkg-bottom.mk b/mk/pkg-bottom.mk index d82a653ea..3988a676f 100644 --- a/mk/pkg-bottom.mk +++ b/mk/pkg-bottom.mk @@ -171,11 +171,11 @@ ifneq (,$(filter dev,${PKG_OPTS})) @mkdir -p $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/include @test -d ${WRKINST}/usr/include && cd ${WRKINST}/usr/include; \ find . -name \*.h | \ - $(BIN_DIR)/cpio -padlmu $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/include + $(STAGING_HOST_DIR)/usr/bin/cpio -padlmu $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/include @mkdir -p $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/lib/pkgconfig @test -d ${WRKINST}/usr/lib/pkgconfig && cd ${WRKINST}/usr/lib/pkgconfig; \ find . -name \*.pc | \ - $(BIN_DIR)/cpio -padlmu $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/lib/pkgconfig + $(STAGING_HOST_DIR)/usr/bin/cpio -padlmu $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/lib/pkgconfig @for a in ${WRKINST}/usr/bin/*-config*; do \ [[ -e $$a ]] || continue; \ mkdir -p $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(PKG_LIBNAME)-dev/usr/bin; \ @@ -191,7 +191,7 @@ endif find usr ! -type d 2>/dev/null | \ grep -E -v -e '^usr/lib/pkgconfig' -e '^usr/share' -e '^usr/src' -e '^usr/doc' -e '^usr/local' -e '^usr/man' -e '^usr/info' -e '^usr/lib/libc.so' -e '^usr/bin/[a-z0-9-]+-config*' -e '^/usr/lib/libpthread_nonshared.a' | \ tee '${STAGING_PKG_DIR}/${PKG_NAME}' | \ - $(BIN_DIR)/cpio -padlmu '${STAGING_DIR}' + $(STAGING_HOST_DIR)/usr/bin/cpio -padlmu '${STAGING_DIR}' @cd '${STAGING_DIR}'; grep 'usr/lib/.*\.la$$' \ '${STAGING_PKG_DIR}/${PKG_NAME}' | while read fn; do \ chmod u+w $$fn; \ diff --git a/mk/vars.mk b/mk/vars.mk index 427b5b4ec..a9b213e4c 100644 --- a/mk/vars.mk +++ b/mk/vars.mk @@ -16,34 +16,38 @@ BUILD_DIR:= ${BASE_DIR}/build_${ADK_TARGET_SYSTEM}_${CPU_ARCH}_${ADK_TARGET_LIB BUILD_DIR_PFX:= $(BASE_DIR)/build_* STAGING_PKG_DIR:= ${BASE_DIR}/pkg_${ADK_TARGET_SYSTEM}_${CPU_ARCH}_${ADK_TARGET_LIBC} STAGING_PKG_DIR_PFX:= ${BASE_DIR}/pkg_* -STAGING_HOST_DIR:= ${BASE_DIR}/host_${CPU_ARCH}_${ADK_TARGET_SUFFIX}_${ADK_TARGET_LIBC} +STAGING_HOST_DIR:= ${BASE_DIR}/host_${GNU_HOST_NAME} STAGING_HOST_DIR_PFX:= ${BASE_DIR}/host_* # use headers and foo-config from system ifeq ($(ADK_NATIVE),y) STAGING_TARGET_DIR:= SCRIPT_TARGET_DIR:= /usr/bin else -STAGING_TARGET_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_SUFFIX}_${ADK_TARGET_LIBC} +ifeq ($(ADK_TARGET_ABI),) +STAGING_TARGET_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_LIBC} +STAGING_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_LIBC} +STAGING_HOST2TARGET:= ../target_${CPU_ARCH}_${ADK_TARGET_LIBC} +TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${CPU_ARCH}_${ADK_TARGET_LIBC} +else +STAGING_TARGET_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_LIBC}_${ADK_TARGET_ABI} +STAGING_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_LIBC}_${ADK_TARGET_ABI} +STAGING_HOST2TARGET:= ../target_${CPU_ARCH}_${ADK_TARGET_LIBC}_${ADK_TARGET_ABI} +TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${CPU_ARCH}_${ADK_TARGET_LIBC}_${ADK_TARGET_ABI} +endif SCRIPT_TARGET_DIR:= ${STAGING_TARGET_DIR}/scripts endif -STAGING_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_SUFFIX}_${ADK_TARGET_LIBC} STAGING_TARGET_DIR_PFX:=${BASE_DIR}/target_* -# relation from STAGING_HOST_DIR to STAGING_TARGET_DIR (for gcc to find -# its sysroot while staying relocatable) -STAGING_HOST2TARGET:= ../target_${CPU_ARCH}_${ADK_TARGET_SUFFIX}_${ADK_TARGET_LIBC} -TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${CPU_ARCH}_${ADK_TARGET_SUFFIX}_${ADK_TARGET_LIBC} TOOLCHAIN_BUILD_DIR_PFX=$(BASE_DIR)/toolchain_build_* TOOLS_BUILD_DIR= $(BASE_DIR)/tools_build -BIN_DIR:= $(BASE_DIR)/bin SCRIPT_DIR:= $(BASE_DIR)/scripts FW_DIR:= $(BASE_DIR)/firmware/${ADK_TARGET_SYSTEM}_${CPU_ARCH}_${ADK_TARGET_LIBC} FW_DIR_PFX:= $(BASE_DIR)/firmware PACKAGE_DIR:= $(FW_DIR)/packages TARGET_DIR:= $(BASE_DIR)/root_${ADK_TARGET_SYSTEM}_${CPU_ARCH}_${ADK_TARGET_LIBC} TARGET_DIR_PFX:= $(BASE_DIR)/root_* -TARGET_PATH= ${SCRIPT_DIR}:${BIN_DIR}:${STAGING_TARGET_DIR}/scripts:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH} -HOST_PATH= ${SCRIPT_DIR}:${BIN_DIR}:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH} -AUTOTOOL_PATH= ${BIN_DIR}:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${STAGING_TARGET_DIR}/scripts:${_PATH} +TARGET_PATH= ${SCRIPT_DIR}:${STAGING_TARGET_DIR}/scripts:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH} +HOST_PATH= ${SCRIPT_DIR}:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH} +AUTOTOOL_PATH= ${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${STAGING_TARGET_DIR}/scripts:${_PATH} REAL_GNU_TARGET_NAME= $(CPU_ARCH)-$(ADK_VENDOR)-linux-$(ADK_TARGET_SUFFIX) GNU_TARGET_NAME= $(CPU_ARCH)-$(ADK_VENDOR)-linux @@ -185,7 +189,7 @@ PKG_INSTALL:= IPKG_TMP=$(BUILD_DIR)/tmp \ IPKG_INSTROOT=$(TARGET_DIR) \ IPKG_CONF_DIR=$(STAGING_TARGET_DIR)/etc \ IPKG_OFFLINE_ROOT=$(TARGET_DIR) \ - BIN_DIR=$(BIN_DIR) \ + BIN_DIR=$(STAGING_HOST_DIR)/usr/bin \ ${BASH} ${SCRIPT_DIR}/ipkg \ -force-defaults -force-depends install PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/ipkg @@ -208,21 +212,21 @@ EXTRACT_CMD= mkdir -p ${WRKDIR}; \ cd ${WRKDIR} && \ for file in ${FULLDISTFILES}; do case $$file in \ *.cpio) \ - cat $$file | $(BIN_DIR)/cpio -i -d ;; \ + cat $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -i -d ;; \ *.tar) \ tar -xf $$file ;; \ *.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \ - gzip -dc $$file | $(BIN_DIR)/cpio -i -d ;; \ + gzip -dc $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -i -d ;; \ *.tar.xz | *.txz) \ - xz -dc $$file | tar -xf - ;; \ + $(STAGING_HOST_DIR)/usr/bin/xz -dc $$file | tar -xf - ;; \ *.tar.Z | *.tar.gz | *.taz | *.tgz) \ gzip -dc $$file | tar -xf - ;; \ *.cpio.bz2 | *.cbz) \ - bzip2 -dc $$file | $(BIN_DIR)/cpio -i -d ;; \ + $(STAGING_HOST_DIR)/usr/bin/bzip2 -dc $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -i -d ;; \ *.tar.bz2 | *.tbz | *.tbz2) \ - bzip2 -dc $$file | tar -xf - ;; \ + $(STAGING_HOST_DIR)/usr/bin/bzip2 -dc $$file | tar -xf - ;; \ *.zip) \ - cat $$file | $(BIN_DIR)/cpio -ivd -H zip ;; \ + cat $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -ivd -H zip ;; \ *.arm) \ cp $$file ${WRKDIR} ;; \ *) \ diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 0eb3a40b3..ad09f8d3d 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -85,7 +85,7 @@ endif echo "::1 localhost" >> $(IDIR_BASE_FILES)/etc/hosts echo "127.0.1.1 $(ADK_RUNTIME_HOSTNAME)" >> $(IDIR_BASE_FILES)/etc/hosts test -z $(ADK_RUNTIME_PASSWORD) || \ - $(SED) 's,\*NP\*,'"$$(${TOPDIR}/bin/mkcrypt \ + $(SED) 's,\*NP\*,'"$$($(STAGING_HOST_DIR)/usr/bin/mkcrypt \ ${ADK_RUNTIME_PASSWORD}),g" $(IDIR_BASE_FILES)/etc/shadow git log -1|head -1|sed -e 's#commit ##' \ > $(IDIR_BASE_FILES)/etc/adkversion diff --git a/package/gcc/Makefile b/package/gcc/Makefile index 4b8480342..9e043401a 100644 --- a/package/gcc/Makefile +++ b/package/gcc/Makefile @@ -26,13 +26,13 @@ TARGET_CFLAGS:= '' TARGET_CXXFLAGS:= $(filter-out -fstack-protector,$(TARGET_CXXFLAGS)) ifeq ($(ADK_TARGET_SYSTEM_LEMOTE_YEELONG),y) -CONFIGURE_ARGS+= --with-abi=$(ADK_TARGET_ABI) +CONFIGURE_ARGS+= --with-abi=$(ADK_TARGET_MIPS_ABI) endif ifeq ($(ADK_TARGET_SYSTEM_QEMU_MIPS64),y) -CONFIGURE_ARGS+= --with-abi=$(ADK_TARGET_ABI) +CONFIGURE_ARGS+= --with-abi=$(ADK_TARGET_MIPS_ABI) endif ifeq ($(ADK_TARGET_SYSTEM_QEMU_MIPS64EL),y) -CONFIGURE_ARGS+= --with-abi=$(ADK_TARGET_ABI) +CONFIGURE_ARGS+= --with-abi=$(ADK_TARGET_MIPS_ABI) endif ifeq ($(ADK_TOOLCHAIN_GCC_SJLJ),y) diff --git a/rules.mk b/rules.mk index 8865327f8..c4f7594ee 100644 --- a/rules.mk +++ b/rules.mk @@ -39,6 +39,7 @@ ADK_TARGET_ABI_CFLAGS:= $(strip $(subst ",, $(ADK_TARGET_ABI_CFLAGS))) ADK_TARGET_ABI_LDFLAGS:= $(strip $(subst ",, $(ADK_TARGET_ABI_LDFLAGS))) ADK_TARGET_KERNEL_LDFLAGS:= $(strip $(subst ",, $(ADK_TARGET_KERNEL_LDFLAGS))) ADK_TARGET_ABI:= $(strip $(subst ",, $(ADK_TARGET_ABI))) +ADK_TARGET_MIPS_ABI:= $(strip $(subst ",, $(ADK_TARGET_MIPS_ABI))) ADK_TARGET_IP:= $(strip $(subst ",, $(ADK_TARGET_IP))) ADK_TARGET_SUFFIX:= $(strip $(subst ",, $(ADK_TARGET_SUFFIX))) ADK_TARGET_CMDLINE:= $(strip $(subst ",, $(ADK_TARGET_CMDLINE))) diff --git a/scripts/create.sh b/scripts/create.sh index 634a87643..f5309f884 100755 --- a/scripts/create.sh +++ b/scripts/create.sh @@ -28,11 +28,12 @@ # root partition and an OpenADK cfgfs partition. TOPDIR=$(pwd) +HOST=$(gcc -dumpmachine) me=$0 case :$PATH: in -(*:$TOPDIR/bin:*) ;; -(*) export PATH=$PATH:$TOPDIR/bin ;; +(*:$TOPDIR/host_$HOST/usr/bin:*) ;; +(*) export PATH=$PATH:$TOPDIR/host_$HOST/usr/bin ;; esac test -n "$KSH_VERSION" || if ! which mksh >/dev/null 2>&1; then diff --git a/scripts/scan-tools.sh b/scripts/scan-tools.sh index a060d24fc..af3223b0b 100644 --- a/scripts/scan-tools.sh +++ b/scripts/scan-tools.sh @@ -112,30 +112,6 @@ if ! which gzip >/dev/null 2>&1; then out=1 fi -if ! which bzip2 >/dev/null 2>&1; then - echo You must install bzip2 to continue. - echo - out=1 -fi - -if ! which lzop >/dev/null 2>&1; then - echo You must install lzop to continue. - echo - out=1 -fi - -if ! which lzma >/dev/null 2>&1; then - echo You must install lzma to continue. - echo - out=1 -fi - -if ! which xz >/dev/null 2>&1; then - echo You must install xz-utils to continue. - echo - out=1 -fi - if ! which patch >/dev/null 2>&1; then echo You must install patch to continue. echo @@ -219,18 +195,6 @@ if ! which perl >/dev/null 2>&1; then out=1 fi -if ! which m4 >/dev/null 2>&1; then - echo "You must install m4 (macro processor) to continue." - echo - out=1 -fi - -if ! which bc >/dev/null 2>&1; then - echo "You need bc to continue." - echo - out=1 -fi - if ! which xargs >/dev/null 2>&1; then echo "You need xargs to continue." echo diff --git a/target/config/Config.in b/target/config/Config.in index 68e2eefb0..f59bdd5b7 100644 --- a/target/config/Config.in +++ b/target/config/Config.in @@ -117,6 +117,17 @@ config ADK_n64 boolean config ADK_TARGET_ABI + string + default "o32" if ADK_o32 + default "n32" if ADK_n32 + default "n64" if ADK_n64 + default "32" if ADK_32 + default "x32" if ADK_x32 + default "64" if ADK_64 + default "eabi" if ADK_EABI + default "eabihf" if ADK_EABIHF + +config ADK_TARGET_MIPS_ABI string default "32" if ADK_o32 default "n32" if ADK_n32 @@ -650,6 +661,7 @@ config ADK_TARGET_LIB_EGLIBC prompt "Embedded GNU C library" boolean select ADK_eglibc + select ADK_HOST_NEED_GPERF depends on \ ADK_LINUX_ARM || \ ADK_LINUX_ARMEB || \ @@ -719,6 +731,11 @@ config ADK_TARGET_SUFFIX default "muslgnueabihf" if ADK_TARGET_LIB_MUSL && ADK_EABIHF default "muslgnueabi" if ADK_TARGET_LIB_MUSL && ADK_EABI default "musl" if ADK_TARGET_LIB_MUSL && !ADK_EABI + default "n64" if ADK_n64 + default "n32" if ADK_n32 + default "o32" if ADK_o32 + default "32" if ADK_32 + default "x32" if ADK_x32 default "gnu" choice @@ -767,6 +784,7 @@ config ADK_TARGET_ROOTFS_INITRAMFS_PIGGYBACK config ADK_TARGET_ROOTFS_SQUASHFS bool "Compressed read-only root filesystem (squashfs)" select ADK_KERNEL_SQUASHFS + select ADK_HOST_NEED_SQUASHFS depends on ADK_TARGET_WITH_MTD help highly compressed read-only filesystem for MTD flash systems. @@ -775,6 +793,7 @@ config ADK_TARGET_ROOTFS_JFFS2 bool "Compressed read-write root filesystem (jffs2)" select ADK_KERNEL_MISC_FILESYSTEMS select ADK_KERNEL_JFFS2 + select ADK_HOST_NEED_JFFS2 depends on ADK_TARGET_WITH_MTD help compressed read-write filesystem for MTD flash systems. @@ -833,6 +852,7 @@ config ADK_TARGET_ROOTFS_GENEXT2FS depends on ADK_TARGET_WITH_CF select ADK_KERNEL_EXT2_FS select ADK_KERNEL_SCSI + select ADK_HOST_NEED_GENEXT2FS help Use this option if you have a compact flash based system. (ext2 filesystem is used.) @@ -853,6 +873,8 @@ config ADK_TARGET_ROOTFS_ISO select ADK_KERNEL_JOLIET select ADK_KERNEL_SCSI select ADK_KERNEL_BLK_DEV_SR + select ADK_HOST_NEED_MKISOFS + select ADK_HOST_NEED_SYSLINUX depends on ADK_HOST_LINUX depends on ADK_LINUX_X86 help @@ -860,6 +882,7 @@ config ADK_TARGET_ROOTFS_ISO config ADK_TARGET_ROOTFS_ARCHIVE bool "Archive usable for different filesystems" + select ADK_HOST_NEED_GENEXT2FS if ADK_HARDWARE_QEMU select ADK_KERNEL_EXT2_FS if ADK_HARDWARE_QEMU depends on !ADK_LINUX_MICROBLAZE help diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools index 31246458d..cf92eadee 100644 --- a/target/config/Config.in.tools +++ b/target/config/Config.in.tools @@ -1,3 +1,43 @@ +config ADK_HOST_NEED_MKISOFS + boolean + default n + +config ADK_HOST_NEED_SYSLINUX + boolean + default n + +config ADK_HOST_NEED_GPERF + boolean + default n + +config ADK_HOST_NEED_SQUASHFS + boolean + default n + +config ADK_HOST_NEED_JFFS2 + boolean + default n + +config ADK_HOST_NEED_GENEXT2FS + boolean + default n + +config ADK_HOST_NEED_LZOP + boolean + default n + +config ADK_HOST_NEED_LZMA + boolean + default n + +config ADK_HOST_NEED_BZIP2 + boolean + default n + +config ADK_HOST_NEED_XZ + boolean + default n + config ADK_TOOLS_ADDPATTERN_ARGS string default "-p W54G -v v4.20.6" if ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54G diff --git a/target/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel index db1ab5c57..d928cea09 100644 --- a/target/linux/config/Config.in.kernel +++ b/target/linux/config/Config.in.kernel @@ -11,18 +11,22 @@ config ADK_KERNEL_INITRAMFS_COMPRESSION_NONE boolean config ADK_KERNEL_INITRAMFS_COMPRESSION_XZ + select ADK_HOST_NEED_XZ boolean config ADK_KERNEL_INITRAMFS_COMPRESSION_LZMA + select ADK_HOST_NEED_LZMA boolean config ADK_KERNEL_INITRAMFS_COMPRESSION_LZO + select ADK_HOST_NEED_LZOP boolean -config ADK_KERNEL_INITRAMFS_COMPRESSION_GZIP +config ADK_KERNEL_INITRAMFS_COMPRESSION_BZIP2 + select ADK_HOST_NEED_BZIP2 boolean -config ADK_KERNEL_INITRAMFS_COMPRESSION_BZIP2 +config ADK_KERNEL_INITRAMFS_COMPRESSION_GZIP boolean config ADK_KERNEL_RD_GZIP diff --git a/target/microblaze/Makefile b/target/microblaze/Makefile index 7a411aa95..c3b6dfa7e 100644 --- a/target/microblaze/Makefile +++ b/target/microblaze/Makefile @@ -9,11 +9,6 @@ include $(TOPDIR)/mk/image.mk KERNEL:=$(LINUX_DIR)/arch/microblaze/boot/$(ADK_TARGET_KERNEL) -tools-compile: - $(MAKE) -C ../tools/mtd-utils all - $(MAKE) -C ../tools/xz all - $(MAKE) -C ../tools/squashfs all - ifeq ($(ADK_TARGET_QEMU_MICROBLAZE_MODEL_ML605),y) MODEL:=petalogix-ml605 DTB:=-dtb target/microblaze/ml605.dtb @@ -24,7 +19,7 @@ DTB:= endif ifeq ($(ADK_TARGET_FS),squashfs) -imageinstall: tools-compile $(BUILD_DIR)/root.squashfs +imageinstall: $(BUILD_DIR)/root.squashfs qemu-img create -f raw $(FW_DIR)/$(ROOTFSSQUASHFS) $(ADK_TARGET_MTD_SIZE) dd conv=notrunc if=$(BUILD_DIR)/root.squashfs of=$(FW_DIR)/$(ROOTFSSQUASHFS) @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL) @@ -34,7 +29,7 @@ ifneq ($(ADK_HARDWARE_QEMU),) endif endif ifeq ($(ADK_TARGET_FS),jffs2) -imageinstall: tools-compile $(FW_DIR)/$(ROOTFSJFFS2) +imageinstall: $(FW_DIR)/$(ROOTFSJFFS2) @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL) ifneq ($(ADK_HARDWARE_QEMU),) @echo "Start qemu with following options:" diff --git a/target/mips/Makefile b/target/mips/Makefile index 31cbc319a..5ebbe5d7d 100644 --- a/target/mips/Makefile +++ b/target/mips/Makefile @@ -11,16 +11,8 @@ KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL) OSTRIP:=-R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id -tools-compile: - $(MAKE) -C ../tools/trx all - $(MAKE) -C ../tools/addpattern all - $(MAKE) -C ../tools/srec2bin all - $(MAKE) -C ../tools/squashfs all - $(MAKE) -C ../tools/lzma all - $(MAKE) -C ../tools/lzma-loader all - ifeq ($(ADK_TARGET_SYSTEM_BROADCOM_BCM47XX),y) -kernel-install: tools-compile +kernel-install: ${TARGET_CROSS}objcopy ${OSTRIP} -S ${LINUX_DIR}/vmlinuz.elf \ ${BUILD_DIR}/${TARGET_KERNEL} @@ -39,7 +31,7 @@ endif endif ifeq ($(ADK_TARGET_SYSTEM_LINKSYS_AG241),y) -kernel-install: tools-compile +kernel-install: ${TARGET_CROSS}objcopy -S -O srec $(KERNEL) $(LINUX_DIR)/vmlinux.srec PATH='${TARGET_PATH}' srec2bin $(LINUX_DIR)/vmlinux.srec $(LINUX_DIR)/vmlinux.bin (dd if=/dev/zero bs=16 count=1; cat $(LINUX_DIR)/vmlinux.bin) > $(LINUX_DIR)/vmlinux.tmp @@ -56,7 +48,7 @@ kernel-install: $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL) endif ifeq ($(ADK_TARGET_SYSTEM_FON_FON2100),y) -kernel-install: tools-compile +kernel-install: $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL) ${BUILD_DIR}/${ROOTFSSQUASHFS}: ${BUILD_DIR}/root.squashfs diff --git a/target/tools/addpattern/Makefile b/target/tools/addpattern/Makefile deleted file mode 100644 index 596daeb52..000000000 --- a/target/tools/addpattern/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -include $(TOPDIR)/rules.mk - -all: addpattern.c - $(CC_FOR_BUILD) $(FLAGS_FOR_BUILD) -o ${STAGING_HOST_DIR}/bin/addpattern addpattern.c diff --git a/target/tools/addpattern/addpattern.c b/target/tools/addpattern/addpattern.c deleted file mode 100644 index 8133bf26e..000000000 --- a/target/tools/addpattern/addpattern.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2004 Manuel Novoa III - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* July 29, 2004 - * - * This is a hacked replacement for the 'addpattern' utility used to - * create wrt54g .bin firmware files. It isn't pretty, but it does - * the job for me. - * - * Extensions: - * -v allows setting the version string on the command line. - * -{0|1} sets the (currently ignored) hw_ver flag in the header - * to 0 or 1 respectively. - */ - -/* January 12, 2005 - * - * Modified by rodent at rodent dot za dot net - * Support added for the new WRT54G v2.2 and WRT54GS v1.1 "flags" - * Without the flags set to 0x7, the above units will refuse to flash. - * - * Extensions: - * -{0|1|2} sets {0|1} sets hw_ver flag to 0/1. {2} sets hw_ver to 1 - * and adds the new hardware "flags" for the v2.2/v1.1 units -*/ - -/* January 1, 2007 - * - * Modified by juan.i.gonzalez at subdown dot net - * Support added for the AG241v2 and similar - * - * Extensions: - * -r #.# adds revision hardware flags. AG241v2 and similar. - * - * AG241V2 firmware sets the hw_ver to 0x44. - * - * Example: -r 2.0 - * - * Convert 2.0 to 20 to be an integer, and add 0x30 to skip special ASCII - * #define HW_Version ((HW_REV * 10) + 0x30) -> from cyutils.h -*/ - -#include -#include -#include -#include -#include -#include - -/**********************************************************************/ - -#define CODE_ID "U2ND" /* from code_pattern.h */ -#define CODE_PATTERN "W54S" /* from code_pattern.h */ -#define PBOT_PATTERN "PBOT" - -#define CYBERTAN_VERSION "v3.37.2" /* from cyutils.h */ - -/* WRT54G v2.2 and WRT54GS v1.1 "flags" (from 3.37.32 firmware cyutils.h) */ -#define SUPPORT_4712_CHIP 0x0001 -#define SUPPORT_INTEL_FLASH 0x0002 -#define SUPPORT_5325E_SWITCH 0x0004 - -struct code_header { /* from cyutils.h */ - char magic[4]; - char res1[4]; /* for extra magic */ - char fwdate[3]; - char fwvern[3]; - char id[4]; /* U2ND */ - char hw_ver; /* 0: for 4702, 1: for 4712 -- new in 2.04.3 */ - char unused; - unsigned char flags[2]; /* SUPPORT_ flags new for 3.37.2 (WRT54G v2.2 and WRT54GS v1.1) */ - unsigned char res2[10]; -} ; - -/**********************************************************************/ - -void usage(void) __attribute__ (( __noreturn__ )); - -void usage(void) -{ - fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-r #.#] [-{0|1|2|4}] -h\n"); - exit(EXIT_FAILURE); -} - -int main(int argc, char **argv) -{ - char buf[1024]; /* keep this at 1k or adjust garbage calc below */ - struct code_header *hdr; - FILE *in = stdin; - FILE *out = stdout; - char *ifn = NULL; - char *ofn = NULL; - char *pattern = CODE_PATTERN; - char *pbotpat = PBOT_PATTERN; - char *version = CYBERTAN_VERSION; - int gflag = 0; - int pbotflag = 0; - int c; - int v0, v1, v2; - size_t off, n; - time_t t; - struct tm *ptm; - - hdr = (struct code_header *) buf; - memset(hdr, 0, sizeof(struct code_header)); - - while ((c = getopt(argc, argv, "i:o:p:gbv:0124hr:")) != -1) { - switch (c) { - case 'i': - ifn = optarg; - break; - case 'o': - ofn = optarg; - break; - case 'p': - pattern = optarg; - break; - case 'g': - gflag = 1; - break; - case 'b': - pbotflag = 1; - break; - case 'v': /* extension to allow setting version */ - version = optarg; - break; - case '0': - hdr->hw_ver = 0; - break; - case '1': - hdr->hw_ver = 1; - break; - case '2': /* new 54G v2.2 and 54GS v1.1 flags */ - hdr->hw_ver = 1; - hdr->flags[0] |= SUPPORT_4712_CHIP; - hdr->flags[0] |= SUPPORT_INTEL_FLASH; - hdr->flags[0] |= SUPPORT_5325E_SWITCH; - break; - case '4': - /* V4 firmware sets the flags to 0x1f */ - hdr->hw_ver = 0; - hdr->flags[0] = 0x1f; - break; - case 'r': - hdr->hw_ver = (char)(atof(optarg)*10)+0x30; - break; - - case 'h': - default: - usage(); - } - } - - if (optind != argc || optind == 1) { - fprintf(stderr, "illegal arg \"%s\"\n", argv[optind]); - usage(); - } - - if (strlen(pattern) != 4) { - fprintf(stderr, "illegal pattern \"%s\": length != 4\n", pattern); - usage(); - } - - if (ifn && !(in = fopen(ifn, "r"))) { - fprintf(stderr, "can not open \"%s\" for reading\n", ifn); - usage(); - } - - if (ofn && !(out = fopen(ofn, "w"))) { - fprintf(stderr, "can not open \"%s\" for writing\n", ofn); - usage(); - } - - if (time(&t) == (time_t)(-1)) { - fprintf(stderr, "time call failed\n"); - return EXIT_FAILURE; - } - - ptm = localtime(&t); - - if (3 != sscanf(version, "v%d.%d.%d", &v0, &v1, &v2)) { - fprintf(stderr, "bad version string \"%s\"\n", version); - return EXIT_FAILURE; - } - - memcpy(&hdr->magic, pattern, 4); - if (pbotflag) - memcpy(&hdr->res1, pbotpat, 4); - hdr->fwdate[0] = ptm->tm_year % 100; - hdr->fwdate[1] = ptm->tm_mon + 1; - hdr->fwdate[2] = ptm->tm_mday; - hdr->fwvern[0] = v0; - hdr->fwvern[1] = v1; - hdr->fwvern[2] = v2; - memcpy(&hdr->id, CODE_ID, strlen(CODE_ID)); - - off = sizeof(struct code_header); - - fprintf(stderr, "writing firmware v%d.%d.%d on %d/%d/%d (y/m/d)\n", - v0, v1, v2, - hdr->fwdate[0], hdr->fwdate[1], hdr->fwdate[2]); - - - while ((n = fread(buf + off, 1, sizeof(buf)-off, in) + off) > 0) { - off = 0; - if (n < sizeof(buf)) { - if (ferror(in)) { - FREAD_ERROR: - fprintf(stderr, "fread error\n"); - return EXIT_FAILURE; - } - if (gflag) { - gflag = sizeof(buf) - n; - memset(buf + n, 0xff, gflag); - n = sizeof(buf); - } - } - if (!fwrite(buf, n, 1, out)) { - FWRITE_ERROR: - fprintf(stderr, "fwrite error\n"); - return EXIT_FAILURE; - } - } - - if (ferror(in)) { - goto FREAD_ERROR; - } - - if (fflush(out)) { - goto FWRITE_ERROR; - } - - fclose(in); - fclose(out); - - return EXIT_SUCCESS; -} diff --git a/target/tools/lzma-loader/.svn/entries b/target/tools/lzma-loader/.svn/entries deleted file mode 100644 index 2934ab892..000000000 --- a/target/tools/lzma-loader/.svn/entries +++ /dev/null @@ -1,300 +0,0 @@ -10 - -dir -29646 -svn://svn.openwrt.org/openwrt/trunk/target/linux/brcm47xx/image/lzma-loader/src -svn://svn.openwrt.org/openwrt - - - -2010-12-02T21:27:54.805904Z -24217 -hauke - - - - - - - - - - - - - - -3c298f89-4303-0410-b956-a3cf2f4a3e73 - -head.S -file - - - - -2011-11-10T10:12:04.000000Z -566bfb5f462e85d45d1d0c4faca0dadd -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -3585 - -decompress.c -file - - - - -2011-11-10T10:12:04.000000Z -b9ae9d76bf7f1f35ce46b5e496a02aa1 -2010-12-02T21:27:54.805904Z -24217 -hauke - - - - - - - - - - - - - - - - - - - - - -5426 - -LzmaDecode.c -file - - - - -2011-11-10T10:12:04.000000Z -14403972ddbcfadbe017a6aeb3e8fae1 -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -17104 - -decompress.lds.in -file - - - - -2011-11-10T10:12:04.000000Z -c80cc6ad34b26e0af3c1d764218a3a61 -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -186 - -loader.lds.in -file - - - - -2011-11-10T10:12:04.000000Z -f06b23d31242fb56a60b864b741c1266 -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -151 - -LzmaDecode.h -file - - - - -2011-11-10T10:12:04.000000Z -12fcb710de789e54587079c021ae5e33 -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -2465 - -Makefile -file - - - - -2011-11-10T10:12:04.000000Z -61400e27cb7c0099046d83e2146e0053 -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -2325 - -README -file - - - - -2011-11-10T10:12:04.000000Z -b29e81088cc18e92dede243f094c4134 -2010-06-26T20:41:49.877730Z -21945 -nbd - - - - - - - - - - - - - - - - - - - - - -2464 - diff --git a/target/tools/lzma-loader/.svn/text-base/LzmaDecode.c.svn-base b/target/tools/lzma-loader/.svn/text-base/LzmaDecode.c.svn-base deleted file mode 100644 index 951700bdd..000000000 --- a/target/tools/lzma-loader/.svn/text-base/LzmaDecode.c.svn-base +++ /dev/null @@ -1,663 +0,0 @@ -/* - LzmaDecode.c - LZMA Decoder - - LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25) - http://www.7-zip.org/ - - LZMA SDK is licensed under two licenses: - 1) GNU Lesser General Public License (GNU LGPL) - 2) Common Public License (CPL) - It means that you can select one of these two licenses and - follow rules of that license. - - SPECIAL EXCEPTION: - Igor Pavlov, as the author of this code, expressly permits you to - statically or dynamically link your code (or bind by name) to the - interfaces of this file without subjecting your linked code to the - terms of the CPL or GNU LGPL. Any modifications or additions - to this file, however, are subject to the LGPL or CPL terms. -*/ - -#include "LzmaDecode.h" - -#ifndef Byte -#define Byte unsigned char -#endif - -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) - -#define kNumBitModelTotalBits 11 -#define kBitModelTotal (1 << kNumBitModelTotalBits) -#define kNumMoveBits 5 - -typedef struct _CRangeDecoder -{ - Byte *Buffer; - Byte *BufferLim; - UInt32 Range; - UInt32 Code; - #ifdef _LZMA_IN_CB - ILzmaInCallback *InCallback; - int Result; - #endif - int ExtraBytes; -} CRangeDecoder; - -Byte RangeDecoderReadByte(CRangeDecoder *rd) -{ - if (rd->Buffer == rd->BufferLim) - { - #ifdef _LZMA_IN_CB - UInt32 size; - rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size); - rd->BufferLim = rd->Buffer + size; - if (size == 0) - #endif - { - rd->ExtraBytes = 1; - return 0xFF; - } - } - return (*rd->Buffer++); -} - -/* #define ReadByte (*rd->Buffer++) */ -#define ReadByte (RangeDecoderReadByte(rd)) - -void RangeDecoderInit(CRangeDecoder *rd, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback - #else - Byte *stream, UInt32 bufferSize - #endif - ) -{ - int i; - #ifdef _LZMA_IN_CB - rd->InCallback = inCallback; - rd->Buffer = rd->BufferLim = 0; - #else - rd->Buffer = stream; - rd->BufferLim = stream + bufferSize; - #endif - rd->ExtraBytes = 0; - rd->Code = 0; - rd->Range = (0xFFFFFFFF); - for(i = 0; i < 5; i++) - rd->Code = (rd->Code << 8) | ReadByte; -} - -#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code; -#define RC_FLUSH_VAR rd->Range = range; rd->Code = code; -#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; } - -UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits) -{ - RC_INIT_VAR - UInt32 result = 0; - int i; - for (i = numTotalBits; i > 0; i--) - { - /* UInt32 t; */ - range >>= 1; - - result <<= 1; - if (code >= range) - { - code -= range; - result |= 1; - } - /* - t = (code - range) >> 31; - t &= 1; - code -= range & (t - 1); - result = (result + result) | (1 - t); - */ - RC_NORMALIZE - } - RC_FLUSH_VAR - return result; -} - -int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd) -{ - UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob; - if (rd->Code < bound) - { - rd->Range = bound; - *prob += (kBitModelTotal - *prob) >> kNumMoveBits; - if (rd->Range < kTopValue) - { - rd->Code = (rd->Code << 8) | ReadByte; - rd->Range <<= 8; - } - return 0; - } - else - { - rd->Range -= bound; - rd->Code -= bound; - *prob -= (*prob) >> kNumMoveBits; - if (rd->Range < kTopValue) - { - rd->Code = (rd->Code << 8) | ReadByte; - rd->Range <<= 8; - } - return 1; - } -} - -#define RC_GET_BIT2(prob, mi, A0, A1) \ - UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \ - if (code < bound) \ - { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \ - else \ - { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \ - RC_NORMALIZE - -#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;) - -int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd) -{ - int mi = 1; - int i; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - for(i = numLevels; i > 0; i--) - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + mi; - RC_GET_BIT(prob, mi) - #else - mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd); - #endif - } - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return mi - (1 << numLevels); -} - -int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd) -{ - int mi = 1; - int i; - int symbol = 0; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - for(i = 0; i < numLevels; i++) - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + mi; - RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i)) - #else - int bit = RangeDecoderBitDecode(probs + mi, rd); - mi = mi + mi + bit; - symbol |= (bit << i); - #endif - } - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return symbol; -} - -Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd) -{ - int symbol = 1; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - do - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + symbol; - RC_GET_BIT(prob, symbol) - #else - symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd); - #endif - } - while (symbol < 0x100); - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return symbol; -} - -Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte) -{ - int symbol = 1; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - do - { - int bit; - int matchBit = (matchByte >> 7) & 1; - matchByte <<= 1; - #ifdef _LZMA_LOC_OPT - { - CProb *prob = probs + ((1 + matchBit) << 8) + symbol; - RC_GET_BIT2(prob, symbol, bit = 0, bit = 1) - } - #else - bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd); - symbol = (symbol << 1) | bit; - #endif - if (matchBit != bit) - { - while (symbol < 0x100) - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + symbol; - RC_GET_BIT(prob, symbol) - #else - symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd); - #endif - } - break; - } - } - while (symbol < 0x100); - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return symbol; -} - -#define kNumPosBitsMax 4 -#define kNumPosStatesMax (1 << kNumPosBitsMax) - -#define kLenNumLowBits 3 -#define kLenNumLowSymbols (1 << kLenNumLowBits) -#define kLenNumMidBits 3 -#define kLenNumMidSymbols (1 << kLenNumMidBits) -#define kLenNumHighBits 8 -#define kLenNumHighSymbols (1 << kLenNumHighBits) - -#define LenChoice 0 -#define LenChoice2 (LenChoice + 1) -#define LenLow (LenChoice2 + 1) -#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) -#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) -#define kNumLenProbs (LenHigh + kLenNumHighSymbols) - -int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState) -{ - if(RangeDecoderBitDecode(p + LenChoice, rd) == 0) - return RangeDecoderBitTreeDecode(p + LenLow + - (posState << kLenNumLowBits), kLenNumLowBits, rd); - if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0) - return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid + - (posState << kLenNumMidBits), kLenNumMidBits, rd); - return kLenNumLowSymbols + kLenNumMidSymbols + - RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd); -} - -#define kNumStates 12 - -#define kStartPosModelIndex 4 -#define kEndPosModelIndex 14 -#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) - -#define kNumPosSlotBits 6 -#define kNumLenToPosStates 4 - -#define kNumAlignBits 4 -#define kAlignTableSize (1 << kNumAlignBits) - -#define kMatchMinLen 2 - -#define IsMatch 0 -#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) -#define IsRepG0 (IsRep + kNumStates) -#define IsRepG1 (IsRepG0 + kNumStates) -#define IsRepG2 (IsRepG1 + kNumStates) -#define IsRep0Long (IsRepG2 + kNumStates) -#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) -#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) -#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) -#define LenCoder (Align + kAlignTableSize) -#define RepLenCoder (LenCoder + kNumLenProbs) -#define Literal (RepLenCoder + kNumLenProbs) - -#if Literal != LZMA_BASE_SIZE -StopCompilingDueBUG -#endif - -#ifdef _LZMA_OUT_READ - -typedef struct _LzmaVarState -{ - CRangeDecoder RangeDecoder; - Byte *Dictionary; - UInt32 DictionarySize; - UInt32 DictionaryPos; - UInt32 GlobalPos; - UInt32 Reps[4]; - int lc; - int lp; - int pb; - int State; - int PreviousIsMatch; - int RemainLen; -} LzmaVarState; - -int LzmaDecoderInit( - unsigned char *buffer, UInt32 bufferSize, - int lc, int lp, int pb, - unsigned char *dictionary, UInt32 dictionarySize, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback - #else - unsigned char *inStream, UInt32 inSize - #endif - ) -{ - LzmaVarState *vs = (LzmaVarState *)buffer; - CProb *p = (CProb *)(buffer + sizeof(LzmaVarState)); - UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp)); - UInt32 i; - if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState)) - return LZMA_RESULT_NOT_ENOUGH_MEM; - vs->Dictionary = dictionary; - vs->DictionarySize = dictionarySize; - vs->DictionaryPos = 0; - vs->GlobalPos = 0; - vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1; - vs->lc = lc; - vs->lp = lp; - vs->pb = pb; - vs->State = 0; - vs->PreviousIsMatch = 0; - vs->RemainLen = 0; - dictionary[dictionarySize - 1] = 0; - for (i = 0; i < numProbs; i++) - p[i] = kBitModelTotal >> 1; - RangeDecoderInit(&vs->RangeDecoder, - #ifdef _LZMA_IN_CB - inCallback - #else - inStream, inSize - #endif - ); - return LZMA_RESULT_OK; -} - -int LzmaDecode(unsigned char *buffer, - unsigned char *outStream, UInt32 outSize, - UInt32 *outSizeProcessed) -{ - LzmaVarState *vs = (LzmaVarState *)buffer; - CProb *p = (CProb *)(buffer + sizeof(LzmaVarState)); - CRangeDecoder rd = vs->RangeDecoder; - int state = vs->State; - int previousIsMatch = vs->PreviousIsMatch; - Byte previousByte; - UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3]; - UInt32 nowPos = 0; - UInt32 posStateMask = (1 << (vs->pb)) - 1; - UInt32 literalPosMask = (1 << (vs->lp)) - 1; - int lc = vs->lc; - int len = vs->RemainLen; - UInt32 globalPos = vs->GlobalPos; - - Byte *dictionary = vs->Dictionary; - UInt32 dictionarySize = vs->DictionarySize; - UInt32 dictionaryPos = vs->DictionaryPos; - - if (len == -1) - { - *outSizeProcessed = 0; - return LZMA_RESULT_OK; - } - - while(len > 0 && nowPos < outSize) - { - UInt32 pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos]; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - len--; - } - if (dictionaryPos == 0) - previousByte = dictionary[dictionarySize - 1]; - else - previousByte = dictionary[dictionaryPos - 1]; -#else - -int LzmaDecode( - Byte *buffer, UInt32 bufferSize, - int lc, int lp, int pb, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback, - #else - unsigned char *inStream, UInt32 inSize, - #endif - unsigned char *outStream, UInt32 outSize, - UInt32 *outSizeProcessed) -{ - UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp)); - CProb *p = (CProb *)buffer; - CRangeDecoder rd; - UInt32 i; - int state = 0; - int previousIsMatch = 0; - Byte previousByte = 0; - UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1; - UInt32 nowPos = 0; - UInt32 posStateMask = (1 << pb) - 1; - UInt32 literalPosMask = (1 << lp) - 1; - int len = 0; - if (bufferSize < numProbs * sizeof(CProb)) - return LZMA_RESULT_NOT_ENOUGH_MEM; - for (i = 0; i < numProbs; i++) - p[i] = kBitModelTotal >> 1; - RangeDecoderInit(&rd, - #ifdef _LZMA_IN_CB - inCallback - #else - inStream, inSize - #endif - ); -#endif - - *outSizeProcessed = 0; - while(nowPos < outSize) - { - int posState = (int)( - (nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - & posStateMask); - #ifdef _LZMA_IN_CB - if (rd.Result != LZMA_RESULT_OK) - return rd.Result; - #endif - if (rd.ExtraBytes != 0) - return LZMA_RESULT_DATA_ERROR; - if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0) - { - CProb *probs = p + Literal + (LZMA_LIT_SIZE * - ((( - (nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - & literalPosMask) << lc) + (previousByte >> (8 - lc)))); - - if (state < 4) state = 0; - else if (state < 10) state -= 3; - else state -= 6; - if (previousIsMatch) - { - Byte matchByte; - #ifdef _LZMA_OUT_READ - UInt32 pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - matchByte = dictionary[pos]; - #else - matchByte = outStream[nowPos - rep0]; - #endif - previousByte = LzmaLiteralDecodeMatch(probs, &rd, matchByte); - previousIsMatch = 0; - } - else - previousByte = LzmaLiteralDecode(probs, &rd); - outStream[nowPos++] = previousByte; - #ifdef _LZMA_OUT_READ - dictionary[dictionaryPos] = previousByte; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - #endif - } - else - { - previousIsMatch = 1; - if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1) - { - if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0) - { - if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0) - { - #ifdef _LZMA_OUT_READ - UInt32 pos; - #endif - if ( - (nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - == 0) - return LZMA_RESULT_DATA_ERROR; - state = state < 7 ? 9 : 11; - #ifdef _LZMA_OUT_READ - pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - previousByte = dictionary[pos]; - dictionary[dictionaryPos] = previousByte; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - #else - previousByte = outStream[nowPos - rep0]; - #endif - outStream[nowPos++] = previousByte; - continue; - } - } - else - { - UInt32 distance; - if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0) - distance = rep1; - else - { - if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0) - distance = rep2; - else - { - distance = rep3; - rep3 = rep2; - } - rep2 = rep1; - } - rep1 = rep0; - rep0 = distance; - } - len = LzmaLenDecode(p + RepLenCoder, &rd, posState); - state = state < 7 ? 8 : 11; - } - else - { - int posSlot; - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - state = state < 7 ? 7 : 10; - len = LzmaLenDecode(p + LenCoder, &rd, posState); - posSlot = RangeDecoderBitTreeDecode(p + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << -