root/trunk/make/transmission.mk

Revision 11865, 13.6 KB (checked in by bzhou, 3 weeks ago)

transmission: 2.03 -> 2.04

Line 
1###########################################################
2#
3# transmission
4#
5###########################################################
6#
7# TRANSMISSION_VERSION, TRANSMISSION_SITE and TRANSMISSION_SOURCE define
8# the upstream location of the source code for the package.
9# TRANSMISSION_DIR is the directory which is created when the source
10# archive is unpacked.
11# TRANSMISSION_UNZIP is the command used to unzip the source.
12# It is usually "zcat" (for .gz) or "bzcat" (for .bz2)
13#
14# You should change all these variables to suit your package.
15# Please make sure that you add a description, and that you
16# list all your packages' dependencies, seperated by commas.
17#
18# If you list yourself as MAINTAINER, please give a valid email
19# address, and indicate your irc nick if it cannot be easily deduced
20# from your name or email address.  If you leave MAINTAINER set to
21# "NSLU2 Linux" other developers will feel free to edit.
22#
23#  TRAC: http://trac.transmissionbt.com/timeline
24#
25# SVN releases also include transmissiond-dbg while official releases does not.
26#
27TRANSMISSION_SITE=http://mirrors.m0k.org/transmission/files
28TRANSMISSION_VERSION=2.04
29
30#TRANSMISSION_SVN_REV=8696
31
32ifdef TRANSMISSION_SVN_REV
33TRANSMISSION_SVN=svn://svn.transmissionbt.com/Transmission/trunk
34TRANSMISSION_SOURCE=transmission-svn-$(TRANSMISSION_SVN_REV).tar.bz2
35else
36TRANSMISSION_SOURCE=transmission-$(TRANSMISSION_VERSION).tar.bz2
37endif
38TRANSMISSION_DIR=transmission-$(TRANSMISSION_VERSION)
39TRANSMISSION_UNZIP=bzcat
40TRANSMISSION_MAINTAINER=oleo@email.si
41TRANSMISSION_DESCRIPTION=Lightweight BitTorrent client and daemon, with web interface bundled.
42TRANSMISSION_SECTION=net
43TRANSMISSION_PRIORITY=optional
44TRANSMISSION_DEPENDS=openssl, libcurl, libevent, zlib
45TRANSMISSION_SUGGESTS=
46TRANSMISSION_CONFLICTS=
47
48#
49# TRANSMISSION_IPK_VERSION should be incremented when the ipk changes.
50#
51TRANSMISSION_IPK_VERSION=1
52
53#
54# TRANSMISSION_CONFFILES should be a list of user-editable files
55#TRANSMISSION_CONFFILES=/opt/etc/transmission.conf
56
57TRANSMISSION_PATCHES = $(TRANSMISSION_SOURCE_DIR)/int64_switch.patch
58
59#
60# If the compilation of the package requires additional
61# compilation or linking flags, then list them here.
62#
63TRANSMISSION_CPPFLAGS=-O3 -DTR_EMBEDDED
64TRANSMISSION_LDFLAGS=
65TRANSMISSION-DBG_CPPFLAGS=-O0 -g -DTR_EMBEDDED
66TRANSMISSION-DBG_LDFLAGS=-lefence -lpthread
67ifeq (uclibc, $(LIBC_STYLE))
68TRANSMISSION_LDFLAGS+=-lintl
69TRANSMISSION-DBG_LDFLAGS+=-lintl
70endif
71ifeq ($(GETTEXT_NLS), enable)
72TRANSMISSION_DEPENDS+=, gettext
73endif
74
75#
76# TRANSMISSION_BUILD_DIR is the directory in which the build is done.
77# TRANSMISSION_SOURCE_DIR is the directory which holds all the
78# patches and ipkg control files.
79# TRANSMISSION_IPK_DIR is the directory in which the ipk is built.
80# TRANSMISSION_IPK is the name of the resulting ipk files.
81#
82# You should not change any of these variables.
83#
84TRANSMISSION_BUILD_DIR=$(BUILD_DIR)/transmission
85TRANSMISSION_SOURCE_DIR=$(SOURCE_DIR)/transmission
86TRANSMISSION_IPK_DIR=$(BUILD_DIR)/transmission-$(TRANSMISSION_VERSION)-ipk
87ifdef TRANSMISSION_SVN_REV
88TRANSMISSION_IPK=$(BUILD_DIR)/transmission_$(TRANSMISSION_VERSION)+r$(TRANSMISSION_SVN_REV)-$(TRANSMISSION_IPK_VERSION)_$(TARGET_ARCH).ipk
89else
90TRANSMISSION_IPK=$(BUILD_DIR)/transmission_$(TRANSMISSION_VERSION)-$(TRANSMISSION_IPK_VERSION)_$(TARGET_ARCH).ipk
91endif
92
93#
94# TRANSMISSION-DBG_BUILD_DIR is the directory in which the build is done.
95# TRANSMISSION-DBG_SOURCE_DIR is the directory which holds all the
96# patches and ipkg control files.
97# TRANSMISSION-DBG_IPK_DIR is the directory in which the ipk is built.
98# TRANSMISSION-DBG_IPK is the name of the resulting ipk files.
99#
100# You should not change any of these variables.
101#
102TRANSMISSION-DBG_BUILD_DIR=$(BUILD_DIR)/transmission-dbg
103TRANSMISSION-DBG_SOURCE_DIR=$(SOURCE_DIR)/transmission
104TRANSMISSION-DBG_IPK_DIR=$(BUILD_DIR)/transmission-dbg-$(TRANSMISSION_VERSION)-ipk
105ifdef TRANSMISSION_SVN_REV
106TRANSMISSION-DBG_IPK=$(BUILD_DIR)/transmission-dbg_$(TRANSMISSION_VERSION)+r$(TRANSMISSION_SVN_REV)-$(TRANSMISSION_IPK_VERSION)_$(TARGET_ARCH).ipk
107else
108TRANSMISSION-DBG_IPK=$(BUILD_DIR)/transmission-dbg_$(TRANSMISSION_VERSION)-$(TRANSMISSION_IPK_VERSION)_$(TARGET_ARCH).ipk
109endif
110
111ifeq ($(TRANSMISSION_SOURCE), $(TRANSMISSIOND_SOURCE))
112TRANSMISSION_SKIP_FETCH=1
113endif
114
115#
116# This is the dependency on the source code.  If the source is missing,
117# then it will be fetched from the site using wget.
118#
119ifndef TRANSMISSION_SKIP_FETCH
120$(DL_DIR)/$(TRANSMISSION_SOURCE):
121#       rm -fv  $(DL_DIR)/transmission*.tar.bz2
122ifdef TRANSMISSION_SVN_REV
123        ( cd $(BUILD_DIR) ; \
124                rm -rf $(TRANSMISSION_DIR) && \
125                svn co -r $(TRANSMISSION_SVN_REV) $(TRANSMISSION_SVN) \
126                        $(TRANSMISSION_DIR) && \
127                tar -cjf $@ $(TRANSMISSION_DIR) && \
128                rm -rf $(TRANSMISSION_DIR) \
129        )
130else
131        $(WGET) -P $(@D) $(TRANSMISSION_SITE)/$(@F) || \
132        $(WGET) -P $(@D) $(SOURCES_NLO_SITE)/$(@F)
133endif
134endif
135
136#
137# The source code depends on it existing within the download directory.
138# This target will be called by the top level Makefile to download the
139# source code's archive (.tar.gz, .bz2, etc.)
140#
141transmission-source transmission-dbg-source: $(DL_DIR)/$(TRANSMISSION_SOURCE) $(TRANSMISSION_PATCHES)
142
143#
144# This target unpacks the source code in the build directory.
145# If the source archive is not .tar.gz or .tar.bz2, then you will need
146# to change the commands here.  Patches to the source code are also
147# applied in this target as required.
148#
149# This target also configures the build within the build directory.
150# Flags such as LDFLAGS and CPPFLAGS should be passed into configure
151# and NOT $(MAKE) below.  Passing it to configure causes configure to
152# correctly BUILD the Makefile with the right paths, where passing it
153# to Make causes it to override the default search paths of the compiler.
154#
155# If the compilation of the package requires other packages to be staged
156# first, then do that first (e.g. "$(MAKE) <bar>-stage <baz>-stage").
157#
158# If the package uses  GNU libtool, you should invoke $(PATCH_LIBTOOL) as
159# shown below to make various patches to it.
160#
161# Note that openssl is used only for SHA1 hash calculation and that it looks
162# better to use Transmission provided (built-in) SHA1 hash
163#
164$(TRANSMISSION_BUILD_DIR)/.configured: $(DL_DIR)/$(TRANSMISSION_SOURCE) $(TRANSMISSION_PATCHES) make/transmission.mk
165        $(MAKE) openssl-stage libcurl-stage libevent-stage zlib-stage
166ifeq ($(GETTEXT_NLS), enable)
167        $(MAKE) gettext-stage
168endif
169        rm -rf $(BUILD_DIR)/$(TRANSMISSION_DIR) $(@D)
170ifndef TRANSMISSION_SVN_REV
171        mkdir -p $(BUILD_DIR)/$(TRANSMISSION_DIR)
172endif
173        $(TRANSMISSION_UNZIP) $(DL_DIR)/$(TRANSMISSION_SOURCE) | tar -C $(BUILD_DIR) -xvf -
174        if test -n "$(TRANSMISSION_PATCHES)" ; \
175                then cat $(TRANSMISSION_PATCHES) | \
176                patch -d $(BUILD_DIR)/$(TRANSMISSION_DIR) -p0 ; \
177        fi
178        if test "$(BUILD_DIR)/$(TRANSMISSION_DIR)" != "$(@D)" ; \
179                then mv $(BUILD_DIR)/$(TRANSMISSION_DIR) $(@D) ; \
180        fi
181ifdef TRANSMISSION_SVN_REV
182        if test -x "$(@D)/autogen.sh"; \
183        then cd $(@D) && \
184                PKG_CONFIG_PATH="$(STAGING_LIB_DIR)/pkgconfig" \
185                ./autogen.sh; \
186        else \
187                PKG_CONFIG_PATH="$(STAGING_LIB_DIR)/pkgconfig" \
188                autoreconf -vif $(@D); \
189        fi
190endif
191        sed -i -e '/FLAGS=/s|-g ||' $(@D)/configure
192        if test `$(TARGET_CC) -dumpversion | cut -c1-3` = "3.3"; then \
193                sed -i -e '/CFLAGS/s| -Wdeclaration-after-statement||' $(@D)/configure; \
194        fi
195        if test `$(TARGET_CC) -dumpversion | cut -c1` = "3"; then \
196                sed -i -e '/CFLAGS/s| -Wextra||' -e '/CFLAGS/s| -Winit-self||' $(@D)/configure; \
197        fi
198        (cd $(@D); \
199                $(TARGET_CONFIGURE_OPTS) \
200                CPPFLAGS="$(STAGING_CPPFLAGS) $(TRANSMISSION_CPPFLAGS)" \
201                LDFLAGS="$(STAGING_LDFLAGS) $(TRANSMISSION_LDFLAGS)" \
202                PKG_CONFIG_PATH="$(STAGING_LIB_DIR)/pkgconfig" \
203                PKG_CONFIG_LIBDIR="$(STAGING_LIB_DIR)/pkgconfig" \
204                ./configure \
205                --build=$(GNU_HOST_NAME) \
206                --host=$(GNU_TARGET_NAME) \
207                --target=$(GNU_TARGET_NAME) \
208                --prefix=/opt \
209                --datadir=/opt/share \
210                --disable-gtk \
211                --disable-wx \
212                --disable-nls \
213        )
214        $(PATCH_LIBTOOL) $(@D)/libtool
215        touch $@
216
217
218$(TRANSMISSION-DBG_BUILD_DIR)/.configured: $(DL_DIR)/$(TRANSMISSION_SOURCE) $(TRANSMISSION_PATCHES) make/transmission.mk
219        $(MAKE) openssl-stage electric-fence-stage
220ifeq ($(GETTEXT_NLS), enable)
221        $(MAKE) gettext-stage
222endif
223        rm -rf $(BUILD_DIR)/$(TRANSMISSION_DIR) $(@D)
224ifndef TRANSMISSION_SVN_REV
225        mkdir -p $(BUILD_DIR)/$(TRANSMISSION_DIR)
226endif
227        $(TRANSMISSION_UNZIP) $(DL_DIR)/$(TRANSMISSION_SOURCE) | tar -C $(BUILD_DIR) -xvf -
228        if test -n "$(TRANSMISSION_PATCHES)" ; \
229                then cat $(TRANSMISSION_PATCHES) | \
230                patch -d $(BUILD_DIR)/$(TRANSMISSION_DIR) -p0 ; \
231        fi
232        if test "$(BUILD_DIR)/$(TRANSMISSION_DIR)" != "$(@D)" ; \
233                then mv $(BUILD_DIR)/$(TRANSMISSION_DIR) $(@D) ; \
234        fi
235        if test -n "$(TRANSMISSION-DBG_SOURCES)"; then cp $(TRANSMISSION-DBG_SOURCES) $(@D)/cli; fi
236ifdef TRANSMISSION_SVN_REV
237        if test -x "$(@D)/autogen.sh"; \
238        then cd $(@D) && \
239                PKG_CONFIG_PATH="$(STAGING_LIB_DIR)/pkgconfig" \
240                ./autogen.sh; \
241        else \
242                PKG_CONFIG_PATH="$(STAGING_LIB_DIR)/pkgconfig" \
243                autoreconf -vif $(@D); \
244        fi
245endif
246        if test `$(TARGET_CC) -dumpversion | cut -c1-3` = "3.3"; then \
247                sed -i -e 's|-Wdeclaration-after-statement||' $(@D)/configure; \
248        fi
249        (cd $(@D); \
250                $(TARGET_CONFIGURE_OPTS) \
251                CPPFLAGS="$(STAGING_CPPFLAGS) $(TRANSMISSION-DBG_CPPFLAGS)" \
252                LDFLAGS="$(STAGING_LDFLAGS) $(TRANSMISSION-DBG_LDFLAGS)" \
253                PKG_CONFIG_PATH="$(STAGING_LIB_DIR)/pkgconfig" \
254                PKG_CONFIG_LIBDIR="$(STAGING_LIB_DIR)/pkgconfig" \
255                ./configure \
256                --build=$(GNU_HOST_NAME) \
257                --host=$(GNU_TARGET_NAME) \
258                --target=$(GNU_TARGET_NAME) \
259                --prefix=/opt \
260                --disable-gtk \
261                --disable-wx \
262                --disable-nls \
263        )
264#       $(PATCH_LIBTOOL) $(@D)/libtool
265        touch $@
266
267
268transmission-unpack: $(TRANSMISSION_BUILD_DIR)/.configured
269
270#
271# This builds the actual binary.
272#
273$(TRANSMISSION_BUILD_DIR)/.built: $(TRANSMISSION_BUILD_DIR)/.configured $(TRANSMISSION_SOURCES)
274        rm -f $@
275        $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
276        touch $@
277
278$(TRANSMISSION-DBG_BUILD_DIR)/.built: $(TRANSMISSION-DBG_BUILD_DIR)/.configured $(TRANSMISSION-DBG_SOURCES)
279        rm -f $@
280        $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
281        touch $@
282
283#
284# This is the build convenience target.
285#
286ifdef TRANSMISSION_SVN_REV
287transmission: $(TRANSMISSION_BUILD_DIR)/.built $(TRANSMISSION-DBG_BUILD_DIR)/.built
288else
289transmission: $(TRANSMISSION_BUILD_DIR)/.built
290endif
291
292#
293# If you are building a library, then you need to stage it too.
294#
295$(TRANSMISSION_BUILD_DIR)/.staged: $(TRANSMISSION_BUILD_DIR)/.built
296        rm -f $@
297        $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
298        touch $@
299
300transmission-stage: $(TRANSMISSION_BUILD_DIR)/.staged
301
302#
303# This rule creates a control file for ipkg. 
304#
305$(TRANSMISSION_IPK_DIR)/CONTROL/control:
306        @install -d $(@D)
307        @rm -f $@
308        @echo "Package: transmission" >>$@
309        @echo "Architecture: $(TARGET_ARCH)" >>$@
310        @echo "Priority: $(TRANSMISSION_PRIORITY)" >>$@
311        @echo "Section: $(TRANSMISSION_SECTION)" >>$@
312ifdef TRANSMISSION_SVN_REV
313        @echo "Version: $(TRANSMISSION_VERSION)+r$(TRANSMISSION_SVN_REV)-$(TRANSMISSION_IPK_VERSION)" >>$@
314else
315        @echo "Version: $(TRANSMISSION_VERSION)-$(TRANSMISSION_IPK_VERSION)" >>$@
316endif
317        @echo "Maintainer: $(TRANSMISSION_MAINTAINER)" >>$@
318        @echo "Source: $(TRANSMISSION_SITE)/$(TRANSMISSION_SOURCE)" >>$@
319        @echo "Description: $(TRANSMISSION_DESCRIPTION)" >>$@
320        @echo "Depends: $(TRANSMISSION_DEPENDS)" >>$@
321        @echo "Suggests: $(TRANSMISSION_SUGGESTS)" >>$@
322        @echo "Conflicts: $(TRANSMISSION_CONFLICTS)" >>$@
323
324#
325# This builds the IPK file.
326#
327# Binaries should be installed into $(TRANSMISSION_IPK_DIR)/opt/sbin or $(TRANSMISSION_IPK_DIR)/opt/bin
328# (use the location in a well-known Linux distro as a guide for choosing sbin or bin).
329# Libraries and include files should be installed into $(TRANSMISSION_IPK_DIR)/opt/{lib,include}
330# Configuration files should be installed in $(TRANSMISSION_IPK_DIR)/opt/etc/transmission/...
331# Documentation files should be installed in $(TRANSMISSION_IPK_DIR)/opt/doc/transmission/...
332# Daemon startup scripts should be installed in $(TRANSMISSION_IPK_DIR)/opt/etc/init.d/S??transmission
333#
334# You may need to patch your application to make it use these locations.
335#
336ifdef TRANSMISSION_SVN_REV
337$(TRANSMISSION_IPK): $(TRANSMISSION_BUILD_DIR)/.built \
338# $(TRANSMISSION-DBG_BUILD_DIR)/.built
339else
340$(TRANSMISSION_IPK): $(TRANSMISSION_BUILD_DIR)/.built
341endif
342        rm -rf $(TRANSMISSION_IPK_DIR) $(BUILD_DIR)/transmission_*_$(TARGET_ARCH).ipk
343        install -d $(TRANSMISSION_IPK_DIR)/opt
344        $(MAKE) -C $(TRANSMISSION_BUILD_DIR) DESTDIR=$(TRANSMISSION_IPK_DIR) install-strip
345#       install -d $(TRANSMISSION_IPK_DIR)/opt/etc
346#       install -m 644 $(TRANSMISSION_SOURCE_DIR)/transmission.conf $(TRANSMISSION_IPK_DIR)/opt/etc/transmission.conf
347        install -d $(TRANSMISSION_IPK_DIR)/opt/share/doc/transmission
348        install -m 666 $(TRANSMISSION_BUILD_DIR)/[CNR]$(TRANSMISSION_IPK_DIR)/opt/share/doc/transmission
349        install -d $(TRANSMISSION_IPK_DIR)/opt/var/log
350        install -d $(TRANSMISSION_IPK_DIR)/opt/var/run
351        $(MAKE) $(TRANSMISSION_IPK_DIR)/CONTROL/control
352        echo $(TRANSMISSION_CONFFILES) | sed -e 's/ /\n/g' > $(TRANSMISSION_IPK_DIR)/CONTROL/conffiles
353        cd $(BUILD_DIR); $(IPKG_BUILD) $(TRANSMISSION_IPK_DIR)
354
355#
356# This is called from the top level makefile to create the IPK file.
357#
358transmission-ipk: $(TRANSMISSION_IPK)
359
360#
361# This is called from the top level makefile to clean all of the built files.
362#
363transmission-clean:
364        rm -f $(TRANSMISSION_BUILD_DIR)/.built
365        -$(MAKE) -C $(TRANSMISSION_BUILD_DIR) clean
366        rm -f $(TRANSMISSION-DBG_BUILD_DIR)/.built
367        -$(MAKE) -C $(TRANSMISSION-DBG_BUILD_DIR) clean
368
369#
370# This is called from the top level makefile to clean all dynamically created
371# directories.
372#
373transmission-dirclean:
374        rm -rf $(BUILD_DIR)/$(TRANSMISSION_DIR) $(TRANSMISSION_BUILD_DIR) $(TRANSMISSION_IPK_DIR) $(TRANSMISSION_IPK)
375        rm -rf $(TRANSMISSION-DBG_BUILD_DIR)
376
377#
378# Some sanity check for the package.
379# Non stripped transmissiond-dbg is intentional
380transmission-check: $(TRANSMISSION_IPK)
381        perl scripts/optware-check-package.pl --target=$(OPTWARE_TARGET) $^
Note: See TracBrowser for help on using the browser.