Split and moved makefiles into a seperate folder, fixes and speed-up to

the retrieving of the SVN revision, OS X packages now show the revision
if this isn't a release build
This commit is contained in:
Eric Petit 2006-05-31 12:54:53 +00:00
parent a3d3d1f33d
commit e72c5580c6
15 changed files with 212 additions and 166 deletions

4
.gitignore vendored
View File

@ -1,6 +1,4 @@
/.depend
/Makefile.config
/Makefile.version
Transmission.xcodeproj/*.mode1
Transmission.xcodeproj/*.pbxuser
beos/.depend
@ -18,3 +16,5 @@ libtransmission/version.h
macosx/English.lproj/*~.nib
macosx/Info.plist
macosx/Transmission.app
mk/config.mk
mk/version.mk

136
Makefile
View File

@ -1,116 +1,38 @@
# $Id$
-include Makefile.config
ifndef CONFIGURE_RUN
$(error You must run ./configure first)
endif
include mk/common.mk
-include Makefile.version
include Makefile.common
default: all
ifneq ($(SYSTEM),Darwin)
# Before we do anything else, make sure we have config.mk and an
# updated version.mk
TARGETS = .cli
ifeq ($(GTK),yes)
TARGETS += .gtk
endif
ifeq ($(SYSTEM),BeOS)
TARGETS += .beos
endif
all: $(TARGETS)
.lib: .version
@echo "* Building libtransmission"
@$(MAKE) -C libtransmission
.cli: .lib
@echo "* Building Transmission CLI client"
@$(MAKE) -C cli
.gtk: .lib
@echo "* Building Transmission GTK+ client"
@$(MAKE) -C gtk
.beos: .lib
@echo "* Building Transmission BeOS client"
@make -C beos
install: all $(foreach SUB,$(TARGETS),.install$(SUB))
.install.cli: .cli
@echo "* Installing Transmission CLI client"
@$(MAKE) -C cli install
.install.gtk: .gtk
@echo "* Installing Transmission GTK+ client"
@$(MAKE) -C gtk install
.install.beos:
clean:
@$(MAKE) -C libtransmission clean
@$(MAKE) -C cli clean
ifeq ($(GTK),yes)
@$(MAKE) -C gtk clean
endif
ifeq ($(SYSTEM),BeOS)
@$(MAKE) -C beos clean
endif
else
all: .version
@$(MAKE) -C macosx
@xcodebuild -alltargets -activeconfiguration | grep -v "^$$"
clean:
@xcodebuild -alltargets -activeconfiguration clean | grep -v "^$$"
@$(MAKE) -C macosx clean
MAKELINK = printf "[InternetShortcut]\nURL=http://transmission.m0k.org%s\n"
define PACKAGE_RULE1
$(RM) tmp "Transmission $(VERSION_STRING)" \
Transmission-$(VERSION_STRING).dmg
mkdir -p tmp
cp -r macosx/Transmission.app tmp/
cp AUTHORS tmp/AUTHORS.txt
cp LICENSE tmp/LICENSE.txt
cp NEWS tmp/NEWS.txt
$(MAKELINK) "/" > tmp/Homepage.url
$(MAKELINK) "/forum" > tmp/Forums.url
$(MAKELINK) "/contribute.php" > tmp/Contribute.url
endef
define PACKAGE_RULE2
mv tmp "Transmission $(VERSION_STRING)"
hdiutil create -format UDZO -srcfolder \
"Transmission $(VERSION_STRING)" Transmission-$(VERSION_STRING).dmg
rm -rf "Transmission $(VERSION_STRING)"
endef
package:
$(PACKAGE_RULE1)
$(PACKAGE_RULE2)
package-release:
$(PACKAGE_RULE1)
strip -S tmp/Transmission.app/Contents/MacOS/Transmission
$(PACKAGE_RULE2)
endif
.version: .version1 .version2
.version1:
required: mk/config.mk mk/version.mk
mk/config.mk:
@echo "Please run ./configure first."
@false
mk/version.mk: FORCE
@echo "Checking SVN revision..."
@./version.sh
FORCE:
.version2:
@$(RM) libtransmission/version.h
@( echo "#define VERSION_MAJOR $(VERSION_MAJOR)" && \
echo "#define VERSION_MINOR $(VERSION_MINOR)" && \
echo "#define VERSION_STRING \"$(VERSION_STRING)\"" && \
echo "#define VERSION_REVISION $(VERSION_REVISION)" ) > \
libtransmission/version.h
# Now call the Makefile that'll really build
# OS X has its special Makefile that wraps to Xcode
Makefile.version: .version1
-include mk/config.mk
ifneq ($(SYSTEM),Darwin)
REALMAKE = $(MAKE) -f mk/default.mk
else
REALMAKE = $(MAKE) -f mk/osx.mk
endif
all: required
@$(REALMAKE) all
clean: required
@$(REALMAKE) clean
install: required
@$(REALMAKE) install
package: required
@$(REALMAKE) package
package-release: required
@$(REALMAKE) package-release

7
configure vendored
View File

@ -284,11 +284,10 @@ lm_test
lrintf_test
#
# Generate Makefile.config
# Generate config.mk
#
rm -f Makefile.config
cat > Makefile.config << EOF
CONFIGURE_RUN = yes
rm -f mk/config.mk
cat > mk/config.mk << EOF
SYSTEM = $SYSTEM
PREFIX = $PREFIX
LOCALEDIR = $LOCALEDIR

View File

@ -1,13 +0,0 @@
# $Id$
include ../Makefile.config
include ../Makefile.version
include ../Makefile.common
Info.plist: Info.plist.in ../Makefile.version ../Makefile.common
$(RM) $@
sed -e "s/%%BUNDLE_VERSION%%/$(VERSION_REVISION)/g" \
-e "s/%%SHORT_VERSION_STRING%%/$(VERSION_STRING)/g" < $< > $@
clean:
$(RM) Info.plist

View File

@ -1,7 +1,7 @@
# $Id$
include ../Makefile.config
include ../Makefile.common
include ../mk/config.mk
include ../mk/common.mk
SRCS = TRApplication.cpp TRWindow.cpp TRTransfer.cpp \
TRPrefsWindow.cpp TRInfoWindow.cpp
@ -17,13 +17,13 @@ Transmission: $(OBJS) Transmission.rsrc
xres -o Transmission Transmission.rsrc
mimeset -f Transmission
%.o: %.cpp ../Makefile.config ../Makefile.common Makefile
%.o: %.cpp ../mk/config.mk ../mk/common.mk ../mk/beos.mk
$(CXX) $(CXXFLAGS) -o $@ -c $<
clean:
$(RM) Transmission $(OBJS)
.depend: $(SRCS) Makefile
.depend: $(SRCS) ../mk/config.mk ../mk/common.mk ../mk/beos.mk
$(RM) .depend
$(foreach SRC, $(SRCS), $(CXX) $(CXXFLAGS) -MM $(SRC) >> .depend;)

View File

@ -1,8 +1,7 @@
# $Id$
include ../Makefile.config
include ../Makefile.version
include ../Makefile.common
include ../mk/config.mk
include ../mk/common.mk
SRCS = transmissioncli.c
OBJS = $(SRCS:%.c=%.o)
@ -10,13 +9,10 @@ OBJS = $(SRCS:%.c=%.o)
CFLAGS += -I../libtransmission
LDFLAGS += ../libtransmission/libtransmission.a
all: transmissioncli
@true
transmissioncli: $(OBJS) ../libtransmission/libtransmission.a
$(LINK_RULE)
%.o: %.c ../Makefile.config ../Makefile.common Makefile
%.o: %.c ../mk/config.mk ../mk/common.mk ../mk/cli.mk
$(CC_RULE)
clean:
@ -25,7 +21,7 @@ clean:
@echo "Clean $(OBJS)"
@$(RM) $(OBJS)
.depend: $(SRCS) ../Makefile.config ../Makefile.common Makefile
.depend: $(SRCS) ../mk/config.mk ../mk/common.mk ../mk/cli.mk
$(DEP_RULE)
install: install-bin install-man

View File

@ -1,9 +1,5 @@
# $Id$
VERSION_MAJOR = 0
VERSION_MINOR = 5
VERSION_STRING = 0.6-svn
TMPCFLAGS = -g -Wall -W -O3 -funroll-loops -D_FILE_OFFSET_BITS=64 \
-D_LARGEFILE_SOURCE -D_GNU_SOURCE \
-DSYS_$(shell echo $(SYSTEM) | tr a-z A-Z)

14
mk/config.mk Normal file
View File

@ -0,0 +1,14 @@
SYSTEM = Linux
PREFIX = /usr/local
LOCALEDIR = /usr/local/share/locale
BEOS_NETSERVER = no
PTHREAD = yes
OPENSSL = yes
GTK = yes
CC = cc
CFLAGS =
CXX = c++
CXXFLAGS =
LDFLAGS = -lm
CFLAGS_GTK = -DXTHREADS -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DLOCALEDIR=\"/usr/local/share/locale\"
LDFLAGS_GTK = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

52
mk/default.mk Normal file
View File

@ -0,0 +1,52 @@
# $Id$
include mk/config.mk
include mk/common.mk
TARGETS = .cli
ifeq ($(GTK),yes)
TARGETS += .gtk
endif
ifeq ($(SYSTEM),BeOS)
TARGETS += .beos
endif
all: $(TARGETS)
.lib:
@echo "* Building libtransmission"
@$(MAKE) -C libtransmission -f ../mk/lib.mk
.cli: .lib
@echo "* Building Transmission CLI client"
@$(MAKE) -C cli -f ../mk/cli.mk
.gtk: .lib
@echo "* Building Transmission GTK+ client"
@$(MAKE) -C gtk -f ../mk/gtk.mk
.beos: .lib
@echo "* Building Transmission BeOS client"
@make -C beos -f ../mk/beos.mk
install: all $(foreach SUB,$(TARGETS),.install$(SUB))
.install.cli: .cli
@echo "* Installing Transmission CLI client"
@$(MAKE) -C cli -f mk/cli.mk install
.install.gtk: .gtk
@echo "* Installing Transmission GTK+ client"
@$(MAKE) -C gtk -f mk/gtk.mk install
.install.beos:
clean:
@$(MAKE) -C libtransmission -f ../mk/lib.mk clean
@$(MAKE) -C cli -f ../mk/cli.mk clean
ifeq ($(GTK),yes)
@$(MAKE) -C gtk -f ../mk/gtk.mk clean
endif
ifeq ($(SYSTEM),BeOS)
@$(MAKE) -C beos -f ../mk/beos.mk clean
endif

View File

@ -1,7 +1,7 @@
# $Id$
include ../Makefile.config
include ../Makefile.common
include ../mk/config.mk
include ../mk/common.mk
SRCS = conf.c dialogs.c io.c ipc.c main.c tr_backend.c tr_torrent.c \
tr_cell_renderer_torrent.c util.c
@ -17,9 +17,9 @@ transmission-gtk: $(OBJS) ../libtransmission/libtransmission.a
$(LINK_RULE)
.po:
@$(MAKE) -C po
@$(MAKE) -C po -f ../../mk/po.mk
%.o: %.c ../Makefile.config ../Makefile.common Makefile
%.o: %.c ../mk/config.mk ../mk/common.mk ../mk/gtk.mk
$(CC_RULE)
clean:
@ -27,14 +27,14 @@ clean:
@$(RM) transmission-gtk
@echo "Clean $(OBJS)"
@$(RM) $(OBJS)
@$(MAKE) -C po clean
@$(MAKE) -C po -f ../../mk/po.mk clean
.depend: $(SRCS) ../Makefile.config ../Makefile.common Makefile
.depend: $(SRCS) ../mk/config.mk ../mk/common.mk ../mk/gtk.mk
$(DEP_RULE)
install: transmission-gtk .po
$(INSTALL_BIN_RULE)
@$(MAKE) -C po install
@$(MAKE) -C po -f ../../mk/po.mk install
morepot: $(SRCS)
xgettext --output=po/transmission-gtk.pot --from-code=UTF-8 --add-comments --keyword=_ --keyword=N_ $^

View File

@ -1,7 +1,7 @@
# $Id$
include ../Makefile.config
include ../Makefile.common
include ../mk/config.mk
include ../mk/common.mk
SRCS = transmission.c bencode.c net.c tracker.c peer.c inout.c \
metainfo.c sha1.c utils.c fdlimit.c clients.c completion.c \
@ -10,15 +10,12 @@ OBJS = $(SRCS:%.c=%.o)
CFLAGS += -D__TRANSMISSION__
all: libtransmission.a
@true
libtransmission.a: $(OBJS)
@echo "Library $@"
@ar ru $@ $(OBJS)
@ranlib $@
%.o: %.c ../Makefile.config ../Makefile.common Makefile
%.o: %.c ../mk/config.mk ../mk/common.mk ../mk/cli.mk
$(CC_RULE)
clean:
@ -26,7 +23,7 @@ clean:
@echo "Clean $(OBJS)"
@$(RM) libtransmission.a $(OBJS)
.depend: $(SRCS) ../Makefile.config ../Makefile.common Makefile
.depend: $(SRCS) ../mk/config.mk ../mk/common.mk ../mk/cli.mk
$(DEP_RULE)
-include .depend

59
mk/osx.mk Normal file
View File

@ -0,0 +1,59 @@
# $Id$
#
# Update Info.plist with the version from version.mk
#
include mk/version.mk
macosx/Info.plist: macosx/Info.plist.in mk/version.mk
$(RM) $@
sed -e "s/%%BUNDLE_VERSION%%/$(VERSION_REVISION)/g" \
-e "s/%%SHORT_VERSION_STRING%%/$(VERSION_STRING)/g" < $< > $@
#
# Then use Xcode do make the actual build
#
all: macosx/Info.plist
@xcodebuild -alltargets -activeconfiguration | grep -v "^$$"
clean:
@xcodebuild -alltargets -activeconfiguration clean | grep -v "^$$"
$(RM) macosx/Info.plist
#
# Package generation
# Check if this is a release or an SVN build
#
ifeq ($(VERSION_STRING),$(VERSION_MAJOR).$(VERSION_MINOR))
VERSION_PACKAGE = $(VERSION_STRING)
else
VERSION_PACKAGE = $(VERSION_STRING)-r$(VERSION_REVISION)
endif
URL = printf "[InternetShortcut]\nURL=http://transmission.m0k.org%s\n"
define PACKAGE_RULE1
$(RM) tmp "Transmission $(VERSION_PACKAGE)" \
Transmission-$(VERSION_PACKAGE).dmg
mkdir -p tmp
cp -r macosx/Transmission.app tmp/
cp AUTHORS tmp/AUTHORS.txt
cp LICENSE tmp/LICENSE.txt
cp NEWS tmp/NEWS.txt
$(URL) "/" > tmp/Homepage.url
$(URL) "/forum" > tmp/Forums.url
$(URL) "/contribute.php" > tmp/Contribute.url
endef
define PACKAGE_RULE2
mv tmp "Transmission $(VERSION_PACKAGE)"
hdiutil create -format UDZO -srcfolder \
"Transmission $(VERSION_PACKAGE)" Transmission-$(VERSION_PACKAGE).dmg
rm -rf "Transmission $(VERSION_PACKAGE)"
endef
package:
$(PACKAGE_RULE1)
$(PACKAGE_RULE2)
package-release:
$(PACKAGE_RULE1)
strip -S tmp/Transmission.app/Contents/MacOS/Transmission
$(PACKAGE_RULE2)

View File

@ -1,7 +1,7 @@
# $Id$
include ../../Makefile.config
include ../../Makefile.common
include ../../mk/config.mk
include ../../mk/common.mk
POFILES = $(wildcard *.po)
MOFILES = $(POFILES:%.po=%.mo)
@ -9,7 +9,7 @@ MOFILES = $(POFILES:%.po=%.mo)
all: $(MOFILES)
@true
%.mo: %.po ../../Makefile.config ../../Makefile.common Makefile
%.mo: %.po ../../mk/config.mk ../../mk/common.mk ../../mk/po.mk
$(MSGFMT_RULE)
%.mo.install: %.mo
@ -17,7 +17,7 @@ all: $(MOFILES)
clean:
@echo "Clean $(MOFILES)"
$(RM) $(MOFILES)
@$(RM) $(MOFILES)
install: $(MOFILES) $(MOFILES:%.mo=%.mo.install)

5
mk/version.mk.in Normal file
View File

@ -0,0 +1,5 @@
# $Id$
VERSION_MAJOR = 0
VERSION_MINOR = 5
VERSION_STRING = 0.6-svn

View File

@ -2,11 +2,11 @@
#
# $Id$
# Get current SVN revision from Ids in all source files
REVMAX=0
for pattern in '*.[chm]' '*.cpp' '*.po' 'Makefile*' 'configure'; do
for f in `find . -name "$pattern"`; do
REV=`grep '\$Id:' $f | sed 's/.*\$Id: [^ ]* \([0-9]*\) .*/\1/'`
for pattern in '*.[chm]' '*.cpp' '*.po' '*.mk'; do
for f in `find . -name "$pattern"` Makefile configure; do
REV=`sed -e '/\$Id:/!d; s/.*\$Id$f`
if [ -n "$REV" ]; then
if [ "$REV" -gt "$REVMAX" ]; then
REVMAX="$REV"
@ -15,7 +15,26 @@ for pattern in '*.[chm]' '*.cpp' '*.po' 'Makefile*' 'configure'; do
done
done
rm -f Makefile.version
echo "VERSION_REVISION = $REVMAX" > Makefile.version
# Generate files to be included: only overwrite them if changed so make
# won't rebuild everything unless necessary
replace_if_differs ()
{
if cmp $1 $2 > /dev/null 2>&1; then
rm -f $1
else
mv -f $1 $2
fi
}
# Generate version.mk
cp -f mk/version.mk.in mk/version.mk.new
echo "VERSION_REVISION = $REVMAX" >> mk/version.mk.new
replace_if_differs mk/version.mk.new mk/version.mk
# Generate version.h from version.mk
grep "^VER" mk/version.mk | sed -e 's/^/#define /g' -e 's/= //g' \
-e 's/\(VERSION_STRING[ ]*\)\(.*\)/\1"\2"/' > \
libtransmission/version.h.new
replace_if_differs libtransmission/version.h.new libtransmission/version.h
exit 0