Browse Source

build host tools on demand, when not available on the host

Waldemar Brodkorb 10 years ago
parent
commit
3b513e5acf
5 changed files with 47 additions and 12 deletions
  1. 1 0
      .gitignore
  2. 2 2
      mk/buildhlp.mk
  3. 6 6
      mk/vars.mk
  4. 32 0
      scripts/scan-tools.sh
  5. 6 4
      target/config/Config.in.tools

+ 1 - 0
.gitignore

@@ -55,4 +55,5 @@
 /target/config/Config.in.system
 /target/config/Config.in.native
 /target/config/Config.in.arch
+/target/config/Config.in.prereq
 /target/m68k/aranym.cfg

+ 2 - 2
mk/buildhlp.mk

@@ -46,7 +46,7 @@ endif
 ifeq ($(EXTRACT_OVERRIDE),1)
 	${MAKE} do-extract
 else
-	${EXTRACT_CMD}
+	PATH='${HOST_PATH}' ${EXTRACT_CMD}
 endif
 	@${MAKE} post-extract $(MAKE_TRACE)
 	touch $@
@@ -62,7 +62,7 @@ endif
 ifeq ($(EXTRACT_OVERRIDE),1)
 	${MAKE} do-extract
 else
-	${EXTRACT_CMD}
+	PATH='${HOST_PATH}' ${EXTRACT_CMD}
 endif
 	@${MAKE} post-extract $(MAKE_TRACE)
 	touch $@

+ 6 - 6
mk/vars.mk

@@ -211,21 +211,21 @@ EXTRACT_CMD=		mkdir -p ${WRKDIR}; \
 			cd ${WRKDIR} && \
 			for file in ${FULLDISTFILES}; do case $$file in \
 			*.cpio) \
-				cat $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -i -d ;; \
+				cat $$file | cpio -i -d ;; \
 			*.tar) \
 				tar -xf $$file ;; \
 			*.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \
-				gzip -dc $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -i -d ;; \
+				gzip -dc $$file | cpio -i -d ;; \
 			*.tar.xz | *.txz) \
-				$(STAGING_HOST_DIR)/usr/bin/xz -dc $$file | tar -xf - ;; \
+				xz -dc $$file | tar -xf - ;; \
 			*.tar.Z | *.tar.gz | *.taz | *.tgz) \
 				gzip -dc $$file | tar -xf - ;; \
 			*.cpio.bz2 | *.cbz) \
-				$(STAGING_HOST_DIR)/usr/bin/bzip2 -dc $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -i -d ;; \
+				bzip2 -dc $$file | cpio -i -d ;; \
 			*.tar.bz2 | *.tbz | *.tbz2) \
-				$(STAGING_HOST_DIR)/usr/bin/bzip2 -dc $$file | tar -xf - ;; \
+				bzip2 -dc $$file | tar -xf - ;; \
 			*.zip) \
-				cat $$file | $(STAGING_HOST_DIR)/usr/bin/cpio -ivd -H zip ;; \
+				cat $$file | cpio -ivd -H zip ;; \
 			*.arm) \
 				cp $$file ${WRKDIR} ;; \
 			*) \

+ 32 - 0
scripts/scan-tools.sh

@@ -208,6 +208,38 @@ if ! which g++ >/dev/null 2>&1; then
 	out=1
 fi
 
+host_need_file=0
+if ! which file >/dev/null 2>&1; then
+	echo "No file found, will build one."
+	host_need_file=1
+fi
+
+host_need_bc=0
+if ! which bc >/dev/null 2>&1; then
+	echo "No bc found, will build one."
+	host_need_bc=1
+fi
+
+host_need_bzip2=0
+if ! which bzip2 >/dev/null 2>&1; then
+	echo "No bzip2 found, will build one."
+	host_need_bzip2=1
+fi
+
+host_need_xz=0
+if ! which xz >/dev/null 2>&1; then
+	echo "No xz found, will build one."
+	host_need_xz=1
+fi
+
+echo "config ADK_HOST_NEED_TOOLS" > $topdir/target/config/Config.in.prereq
+printf "\t%s\n" "boolean" >> $topdir/target/config/Config.in.prereq
+printf "\t%s\n" "default y" >> $topdir/target/config/Config.in.prereq
+if [ $host_need_xz -eq 1 ];then printf "\t%s\n" "select ADK_HOST_NEED_XZ" >> $topdir/target/config/Config.in.prereq ;fi
+if [ $host_need_bc -eq 1 ];then printf "\t%s\n" "select ADK_HOST_NEED_BC" >> $topdir/target/config/Config.in.prereq ;fi
+if [ $host_need_file -eq 1 ];then printf "\t%s\n" "select ADK_HOST_NEED_FILE" >> $topdir/target/config/Config.in.prereq ;fi
+if [ $host_need_bzip2 -eq 1 ];then printf "\t%s\n" "select ADK_HOST_NEED_BZIP2" >> $topdir/target/config/Config.in.prereq ;fi
+
 cd $topdir
 rm -rf tmp
 

+ 6 - 4
target/config/Config.in.tools

@@ -2,17 +2,17 @@ config ADK_HOST_NEED_HEIRLOOM_CPIO
 	boolean
 	default y
 
-config ADK_HOST_NEED_BC
+config ADK_HOST_NEED_MKCRYPT
 	boolean
 	default y
 
-config ADK_HOST_NEED_MKCRYPT
+config ADK_HOST_NEED_BC
 	boolean
-	default y
+	default n
 
 config ADK_HOST_NEED_FILE
 	boolean
-	default y
+	default n
 
 config ADK_HOST_NEED_BZIP2
 	boolean
@@ -66,3 +66,5 @@ config ADK_HOST_NEED_PCRE
 	boolean
 	default y if ADK_HOST_DARWIN
 	default n
+
+source "target/config/Config.in.prereq"