build: remove check for nonexistant CONFIG_TAR_VERBOSITY variable and move TAR_OPTION...
[oweals/openwrt.git] / include / unpack.mk
1
2 # Copyright (C) 2006-2007 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 # unpacking files with +s may break on some platforms. this typically emits error code 2
9 ifneq ($(HOST_OS),Linux)
10   HOST_TAR:=trapret 2 $(TAR)
11 else
12   HOST_TAR:=$(TAR)
13 endif
14
15 TAR_OPTIONS:=-xf -
16 TAR_CMD=$(HOST_TAR) -C $(1)/.. $(TAR_OPTIONS)
17 UNZIP_CMD=unzip -d $(1)/.. $(DL_DIR)/$(PKG_SOURCE)
18
19 ifeq ($(PKG_SOURCE),)
20   PKG_UNPACK ?= true
21 else
22
23 ifeq ($(strip $(UNPACK_CMD)),)
24   ifeq ($(strip $(PKG_CAT)),)
25     # try to autodetect file type
26     EXT:=$(call ext,$(PKG_SOURCE))
27     EXT1:=$(EXT)
28
29     ifeq ($(filter gz tgz,$(EXT)),$(EXT))
30       EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
31       DECOMPRESS_CMD:=gzip -dc $(DL_DIR)/$(PKG_SOURCE) |
32     endif
33     ifeq ($(filter bzip2 bz2 bz tbz2 tbz,$(EXT)),$(EXT))
34       EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
35       DECOMPRESS_CMD:=bzcat $(DL_DIR)/$(PKG_SOURCE) |
36     endif
37     ifeq ($(filter xz txz,$(EXT)),$(EXT))
38       EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
39       DECOMPRESS_CMD:=xzcat $(DL_DIR)/$(PKG_SOURCE) |
40     endif
41     ifeq ($(filter tgz tbz tbz2 txz,$(EXT1)),$(EXT1))
42       EXT:=tar
43     endif
44     DECOMPRESS_CMD ?= cat $(DL_DIR)/$(PKG_SOURCE) |
45     ifeq ($(EXT),tar)
46       UNPACK_CMD=$(DECOMPRESS_CMD) $(TAR_CMD)
47     endif
48     ifeq ($(EXT),cpio)
49       UNPACK_CMD=$(DECOMPRESS_CMD) (cd $(1)/..; cpio -i -d)
50     endif
51     ifeq ($(EXT),zip)
52       UNPACK_CMD=$(UNZIP_CMD)
53     endif
54   endif
55
56   # compatibility code for packages that set PKG_CAT
57   ifeq ($(strip $(UNPACK_CMD)),)
58     # use existing PKG_CAT
59     UNPACK_CMD=$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | $(TAR_CMD)
60     ifeq ($(PKG_CAT),unzip)
61       UNPACK_CMD=$(UNZIP_CMD)
62     endif
63     # replace zcat with $(ZCAT), because some system don't support it properly
64     ifeq ($(PKG_CAT),zcat)
65       UNPACK_CMD=gzip -dc $(DL_DIR)/$(PKG_SOURCE) | $(TAR_CMD)
66     endif
67   endif
68   ifneq ($(strip $(CRLF_WORKAROUND)),)
69     CRLF_CMD := && find $(PKG_BUILD_DIR) -type f -print0 | xargs -0 perl -pi -e 's!\r$$$$!!g'
70   else
71     CRLF_CMD :=
72   endif
73 endif
74
75 ifdef PKG_BUILD_DIR
76   PKG_UNPACK ?= $(SH_FUNC) $(call UNPACK_CMD,$(PKG_BUILD_DIR)) $(call CRLF_CMD,$(PKG_BUILD_DIR))
77 endif
78 ifdef HOST_BUILD_DIR
79   HOST_UNPACK ?= $(SH_FUNC) $(call UNPACK_CMD,$(HOST_BUILD_DIR)) $(call CRLF_CMD,$(HOST_BUILD_DIR))
80 endif
81
82 endif # PKG_SOURCE
83