summaryrefslogtreecommitdiffstats
path: root/package/fuse/Makefile
blob: 17c52691366c8b72aff662f2fb536cee54ffaa98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# 
# Copyright (C) 2006-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=fuse
PKG_VERSION:=2.8.3
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
PKG_MD5SUM:=517c8384f915e40647bda9f71579fd97

PKG_INSTALL:=1

# Kernel 2.4 Module
FUSE24_VERSION=2.5.3
FUSE24_SOURCE:=$(PKG_NAME)-$(FUSE24_VERSION).tar.gz
FUSE24_MD5SUM:=9c7e8b6606b9f158ae20b8521ba2867c
FUSE24_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(FUSE24_VERSION)
FUSE24_INSTALL_DIR:=$(FUSE24_BUILD_DIR)/ipkg-install
FUSE24_PATCH_DIR:=./patches-kernel24

include $(INCLUDE_DIR)/package.mk

define Package/fuse/Default
  TITLE:=FUSE
  URL:=http://fuse.sourceforge.net/
endef

define Package/fuse/Default/description
 FUSE (Filesystem in UserSpacE)
endef

define Package/fuse-utils
$(call Package/fuse/Default)
  SECTION:=utils
  CATEGORY:=Utilities
  DEPENDS:=+libfuse
  TITLE+= (utilities)
  SUBMENU:=Filesystem
endef

define Package/fuse-utils/description
$(call Package/fuse/Default/description)
 This package contains the FUSE utilities.
 - fusermount
 - ulockmgr_server
endef

define KernelPackage/fuse
	$(call Package/fuse/Default)
	SUBMENU:=Filesystems
	TITLE+= (kernel module)
	ifeq ($(KERNEL),2.4)
		FILES:=$(FUSE24_INSTALL_DIR)/lib/modules/$(LINUX_VERSION)/kernel/fs/fuse/fuse.$(LINUX_KMOD_SUFFIX)
		VERSION:=$(LINUX_VERSION)+$(FUSE24_VERSION)-$(PKG_RELEASE)
	else
		KCONFIG:= CONFIG_FUSE_FS
		FILES:=$(LINUX_DIR)/fs/fuse/fuse.$(LINUX_KMOD_SUFFIX)
		VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)
	endif
	AUTOLOAD:=$(call AutoLoad,80,fuse)
endef

define KernelPackage/fuse/description
$(call Package/fuse/Default/description)
 This package contains the FUSE kernel module.
endef

define Package/libfuse
$(call Package/fuse/Default)
  SECTION:=libs
  CATEGORY:=Libraries
  TITLE+= (library)
  DEPENDS:=kmod-fuse
  SUBMENU:=Filesystem
endef

define Package/libfuse/description
$(call Package/fuse/Default/description)
 This package contains the FUSE shared libraries, needed by other programs.
 - libfuse
 - libulockmgr
endef

# generic args
CONFIGURE_ARGS += \
	--enable-shared \
	--enable-static \
	--disable-rpath \
	--disable-example \
	--disable-mtab 

# kmod 2.4 args
FUSE24_CONFIGURE_ARGS := $(CONFIGURE_ARGS) \
	--disable-lib --disable-util \
	--enable-kernel-module --disable-auto-modprobe \
	--with-kernel="$(LINUX_DIR)"

# generic package uses lib & utils
CONFIGURE_ARGS += --enable-lib --enable-util

####### FUSE24 - START ######
### if we're on kernel 2.4 build a kernel 2.4 compatible fuse module from older version, see also
### http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FAQ#What_version_of_FUSE_do_I_need_to_use_FUSE_with_Linux_2.4.3F
ifeq ($(KERNEL),2.4)

define Download/fuse24
	FILE:=$(FUSE24_SOURCE)
	URL:=$(PKG_SOURCE_URL)
	MD5SUM:=$(FUSE24_MD5SUM)
endef
$(eval $(call Download,fuse24))

define Build/Prepare/fuse24
	rm -rf $(FUSE24_BUILD_DIR)/
	mkdir -p $(FUSE24_BUILD_DIR)/
	$(TAR) -xzf $(DL_DIR)/$(FUSE24_SOURCE) -C $(FUSE24_BUILD_DIR)/..
endef

define Build/Patch/fuse24
	$(call PatchDir,$(FUSE24_BUILD_DIR),$(FUSE24_PATCH_DIR),)
endef

define Build/Configure/fuse24
	(cd $(FUSE24_BUILD_DIR); \
		rm -rf config.{cache,status} ; \
		$(CONFIGURE_VARS) \
		./configure \
			$(FUSE24_CONFIGURE_ARGS) \
	);
endef

define Build/Compile/fuse24
	$(MAKE) -C $(FUSE24_BUILD_DIR)/$(MAKE_PATH) \
		ARCH="$(LINUX_KARCH)" \
		CROSS_COMPILE="$(TARGET_CROSS)" \
		all;
endef

define Build/Install/fuse24
	rm -rf $(FUSE24_INSTALL_DIR)
	mkdir -p $(FUSE24_INSTALL_DIR)
	$(MAKE) -C $(FUSE24_BUILD_DIR) \
		ARCH="$(LINUX_KARCH)" \
		CROSS_COMPILE="$(TARGET_CROSS)" \
		DESTDIR="$(FUSE24_INSTALL_DIR)" \
		install
endef

define Build/Prepare
	@echo "--> Build/Prepare enter"
	$(call Build/Prepare/fuse24)
	$(call Build/Patch/fuse24)
	$(call Build/Prepare/Default)
	@echo "--> Build/Prepare leave"
endef

define Build/Configure
	@echo "--> Build/Configure enter"
	$(call Build/Configure/fuse24)
	$(call Build/Configure/Default)
	@echo "--> Build/Configure leave"
endef

define Build/Compile
	@echo "--> Build/Compile enter"
	$(call Build/Compile/fuse24)
	$(call Build/Compile/Default)
	@echo "--> Build/Compile leave"
endef

define Build/Install
	@echo "--> Build/Install enter"
	$(call Build/Install/fuse24)
	$(call Build/Install/Default)
	@echo "--> Build/Install leave"
endef

endif
####### FUSE24 - END ######

define Build/InstallDev
	@echo "--> Build/InstallDev enter"
	mkdir -p $(1)/usr/include
	$(CP)	$(PKG_INSTALL_DIR)/usr/include/{fuse,*.h} $(1)/usr/include/
	mkdir -p $(1)/usr/lib
	$(CP)	$(PKG_INSTALL_DIR)/usr/lib/*.{a,so*} $(1)/usr/lib/
	mkdir -p $(1)/usr/lib/pkgconfig
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/fuse.pc $(1)/usr/lib/pkgconfig/
	$(SED) 's,-I$$$${includedir}/fuse,,g' $(1)/usr/lib/pkgconfig/fuse.pc
	$(SED) 's,-L$$$${libdir},,g' $(1)/usr/lib/pkgconfig/fuse.pc
	@echo "--> Build/InstallDev leave"
endef

define Package/fuse-utils/install
	@echo "--> Package/fuse-utils/install enter"
	$(INSTALL_DIR) $(1)/usr/bin
	# use cp and keep fusermount sticky bit
	$(FIND) $(PKG_INSTALL_DIR)/usr/bin/ -type f -exec $(CP) -a {} $(1)/usr/bin/ \;
	@echo "--> Package/fuse-utils/install leave"
endef

define Package/libfuse/install
	@echo "--> Package/libfuse/install enter"
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so.* $(1)/usr/lib/
	@echo "--> Package/libfuse/install leave"
endef

define Package/kmod-fuse/install
	@echo "--> Package/kmod-fuse/install enter/leave"
endef

$(eval $(call BuildPackage,fuse-utils))
$(eval $(call BuildPackage,libfuse))
$(eval $(call KernelPackage,fuse))