- link rpm libraries together, use shared helpers with external -lelf.
[tools/librpm-tizen.git] / Makefile.am
1 # Top level Makefile for rpm
2
3 AUTOMAKE_OPTIONS = 1.4 foreign
4
5 LINT = splint
6
7 EXTRA_DIST = CHANGES CREDITS Doxyheader GROUPS README.amiga INSTALL \
8         RPM-GPG-KEY RPM-PGP-KEY \
9         autodeps/none autodeps/*.prov autodeps/*.req autogen.sh \
10         config.site db db3/configure gendiff installplatform platform* \
11         xmlspec/Makefile xmlspec/*.c xmlspec/*.h \
12         xmlspec/examples/*.sh xmlspec/examples/*.lst \
13         xmlspec/examples/*.xmlspec \
14         po/*.in po/*.po po/rpm.pot \
15         rpm.magic rpmpopt-$(VERSION) rpmqv.c rpm.c
16
17 SUBDIRS = intl po @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@  file @WITH_DB_SUBDIR@ popt beecrypt rpmio rpmdb lib build misc @WITH_PYTHON_SUBDIR@ tools scripts tests doc .
18
19 INCLUDES = \
20         -I$(top_srcdir)/build \
21         -I$(top_srcdir)/lib \
22         -I$(top_srcdir)/rpmdb \
23         -I$(top_srcdir)/rpmio \
24         -I$(top_srcdir)/beecrypt \
25         -I$(top_srcdir)/popt \
26         @WITH_LIBELF_INCLUDE@ \
27         @INCPATH@
28
29 myLDFLAGS = # @LDFLAGS_STATIC@
30
31 # XXX libtool can/should generate dependent libs.
32 # XXX solaris2.6 cannot use *.la with --all-static (downrev binutils/egcs?)
33 # XXX top_builddir ldpaths are wrong building in tree
34 myLDADD = \
35         $(top_builddir)/build/librpmbuild.la \
36         $(top_builddir)/lib/librpm.la \
37         $(top_builddir)/rpmdb/librpmdb.la \
38         $(top_builddir)/rpmio/librpmio.la \
39         $(top_builddir)/popt/libpopt.la \
40         @WITH_LIBELF_LIB@ \
41         @WITH_ZLIB_LIB@ \
42         @INTLLIBS@ \
43         @LIBMISC@
44
45 whyLDADD = \
46         $(top_builddir)/build/.libs/librpmbuild.a \
47         $(top_builddir)/lib/.libs/librpm.a \
48         $(top_builddir)/rpmdb/.libs/librpmdb.a \
49         $(top_builddir)/rpmio/.libs/librpmio.a \
50         $(top_builddir)/popt/.libs/libpopt.a \
51         @WITH_LIBELF_LIB@ \
52         @WITH_ZLIB_LIB@ \
53         @INTLLIBS@ \
54         @LIBMISC@
55
56 rpmbindir = `echo $(bindir) | sed -e s,usr/bin,bin,`
57 rpmbin_PROGRAMS = rpm
58
59 bin_PROGRAMS =          rpm2cpio
60 bin_SCRIPTS =           gendiff
61
62 pkglibdir =             @RPMCONFIGDIR@
63 pkglib_PROGRAMS =       rpmb rpmd rpmi rpmk rpmq
64 pkglib_DATA =           rpmrc rpmpopt-$(VERSION) macros
65 pkglib_SCRIPTS =        find-provides find-requires mkinstalldirs \
66                         config.guess config.sub config.site
67
68 rpmpopt-$(VERSION): rpmpopt
69         cp rpmpopt $@
70
71 noinst_HEADERS = build.h debug.h system.h
72
73 rpm_SOURCES =
74 rpm_LDFLAGS =           @LDFLAGS_STATIC@ $(myLDFLAGS)
75 rpm_LDADD =             rpm.o $(whyLDADD)
76 rpm.o:  rpmqv.c
77         $(COMPILE) -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c rpmqv.c
78
79 #rpm_SOURCES =          rpm.c
80 #rpm_LDFLAGS =          @LDFLAGS_STATIC@ $(myLDFLAGS)
81 #rpm_LDADD =            $(myLDADD)
82
83 rpmb_SOURCES =          build.c
84 rpmb_LDFLAGS =          $(myLDFLAGS)
85 rpmb_LDADD =            rpmb.o $(myLDADD)
86 rpmb.o: rpmqv.c
87         $(COMPILE) -DIAM_RPMBT -o $@ -c rpmqv.c
88
89 rpmd_SOURCES =
90 rpmd_LDFLAGS =          $(myLDFLAGS)
91 rpmd_LDADD =            rpmd.o $(myLDADD)
92 rpmd.o: rpmqv.c
93         $(COMPILE) -DIAM_RPMDB -o $@ -c rpmqv.c
94
95 rpmi_SOURCES =
96 rpmi_LDFLAGS =          $(myLDFLAGS)
97 rpmi_LDADD =            rpmi.o $(myLDADD)
98 rpmi.o: rpmqv.c
99         $(COMPILE) -DIAM_RPMEIU -o $@ -c rpmqv.c
100
101 rpmk_SOURCES =
102 rpmk_LDFLAGS =          $(myLDFLAGS)
103 rpmk_LDADD =            rpmk.o $(myLDADD)
104 rpmk.o: rpmqv.c
105         $(COMPILE) -DIAM_RPMK -o $@ -c rpmqv.c
106
107 rpmq_SOURCES =
108 rpmq_LDFLAGS =          $(myLDFLAGS)
109 rpmq_LDADD =            rpmq.o $(myLDADD)
110 rpmq.o: rpmqv.c
111         $(COMPILE) -DIAM_RPMQV -o $@ -c rpmqv.c
112
113 rpm2cpio_SOURCES =      rpm2cpio.c
114 rpm2cpio_LDFLAGS =      $(myLDFLAGS)
115 rpm2cpio_LDADD =        $(myLDADD) @LIBMISC@
116
117 $(PROGRAMS):            $(myLDADD) @WITH_APIDOCS_TARGET@
118
119 .PHONY: splint
120 splint:
121         splint \
122             -load build/rpmbuild.lcd \
123             -load lib/rpmlib.lcd \
124             -load rpmdb/rpmdb.lcd \
125             -load rpmio/rpmio.lcd \
126             -load popt/popt.lcd \
127                 $(DEFS) $(INCLUDES) rpmqv.c $(rpmb_SOURCES)
128
129 .PHONY: lint
130 lint:
131         $(LINT) -Dlint $(DEFS) $(INCLUDES) rpmqv.c $(rpmb_SOURCES) \
132                 `make -s sources -C build` \
133                 `make -s sources -C lib` \
134                 `make -s sources -C rpmdb` \
135                 `make -s sources -C rpmio` \
136                 `make -s sources -C beecrypt` \
137                 `make -s sources -C popt`
138
139 CVSTAG = r$(subst .,-,$(VERSION))
140
141 pkgsrcdir = $(prefix)/src/$(RPMCANONVENDOR)
142
143 install-data-local:
144         @$(mkinstalldirs) $(DESTDIR)$(varprefix)/lib/rpm
145         @rm -f $(DESTDIR)$(libdir)/rpmrc
146         @@LN_S@ rpm/rpmrc $(DESTDIR)$(libdir)/rpmrc
147         @rm -f $(DESTDIR)$(libdir)/rpmpopt
148         @@LN_S@ rpm/rpmpopt $(DESTDIR)$(libdir)/rpmpopt
149         @rm -f $(DESTDIR)$(libdir)/rpm/rpmt
150         @@LN_S@ rpmb $(DESTDIR)$(libdir)/rpm/rpmt
151         @rm -f $(DESTDIR)$(libdir)/rpm/rpme
152         @@LN_S@ rpmi $(DESTDIR)$(libdir)/rpm/rpme
153         @rm -f $(DESTDIR)$(libdir)/rpm/rpmu
154         @@LN_S@ rpmi $(DESTDIR)$(libdir)/rpm/rpmu
155         @rm -f $(DESTDIR)$(libdir)/rpm/rpmv
156         @@LN_S@ rpmq $(DESTDIR)$(libdir)/rpm/rpmv
157         rm -f $(DESTDIR)$(bindir)/rpmbuild
158         @LN_S@ ../lib/rpm/rpmb $(DESTDIR)$(bindir)/rpmbuild
159         rm -f $(DESTDIR)$(bindir)/rpmquery
160         @LN_S@ ../lib/rpm/rpmq $(DESTDIR)$(bindir)/rpmquery
161         rm -f $(DESTDIR)$(bindir)/rpmverify
162         @LN_S@ ../lib/rpm/rpmv $(DESTDIR)$(bindir)/rpmverify
163         rm -f $(DESTDIR)$(bindir)/rpmsign
164         @LN_S@ ../lib/rpm/rpmk $(DESTDIR)$(bindir)/rpmsign
165         rm -f $(DESTDIR)$(bindir)/rpmdb ; \
166         @LN_S@ ../lib/rpm/rpmd $(DESTDIR)$(bindir)/rpmdb ; \
167         for bf in e i u ; do \
168             rm -f $(DESTDIR)$(bindir)/rpm$$bf ; \
169             @LN_S@ ../lib/rpm/rpm$$bf $(DESTDIR)$(bindir)/rpm$$bf ; \
170         done
171         @for dir in BUILD RPMS SOURCES SPECS SRPMS ; do\
172             $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/$$dir;\
173         done
174         @case "@host_cpu@" in \
175         *86)    $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/i386 ;\
176                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/i486 ;\
177                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/i586 ;\
178                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/i686 ;\
179                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/athlon ;;\
180         alpha*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alpha ;\
181                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alphaev6 ;;\
182         sparc*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparc ;\
183                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv9 ;\
184                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparc64 ;;\
185         ia64*)  $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/ia64 ;;\
186         s390*)  $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/s390 ;;\
187         mipsel*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/mipsel ;;\
188         mips*)  $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/mips ;;\
189         powerpc*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/ppc ;\
190                 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/ppc64 ;;\
191         *)      $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/@host_cpu@ ;;\
192         esac
193         $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/noarch
194         @case "@host_os@" in \
195         mint) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/m68kmint ;;\
196         solaris*|linux*) \
197            chmod u+x ./installplatform; DESTDIR="$(DESTDIR)" pkglibdir="$(pkglibdir)" ./installplatform rpmrc macros platform ;; \
198         esac
199         @$(mkinstalldirs) $(DESTDIR)/var/tmp
200
201 .PHONY: setperms
202 setperms:
203         @for f in $(rpmbin_PROGRAMS) ; do\
204             $(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(rpmbindir)/$$f ;\
205             $(__CHMOD) g+s $(DESTDIR)$(rpmbindir)/$$f ;\
206         done
207         @for f in $(bin_PROGRAMS) ; do\
208             $(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(bindir)/$$f ;\
209         done
210         @for f in $(pkglib_PROGRAMS) ; do\
211             $(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)/$$f ;\
212             $(__CHMOD) g+s $(DESTDIR)$(pkglibdir)/$$f ;\
213         done
214         @for f in $(pkglib_SCRIPTS) ; do\
215             $(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)/$$f ;\
216         done
217         @$(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)
218         @$(__CHOWN) -R ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(varprefix)/lib/rpm
219         -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/rpm/[A-Z]*
220         -@$(__CHMOD) 0775 $(DESTDIR)$(varprefix)/lib/rpm
221         -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/rpm/__db.*
222
223 .PHONY: unsetgid
224 unsetgid:
225         @for f in $(rpmbin_PROGRAMS) ; do\
226             $(__CHMOD) g-s $(DESTDIR)$(rpmbindir)/$$f ;\
227         done
228         @for f in $(pkglib_PROGRAMS) ; do\
229             $(__CHMOD) g-s $(DESTDIR)$(pkglibdir)/$$f ;\
230         done
231
232 .PHONY: tar
233 tar:
234         rm -rf /tmp/rpm-$(VERSION)
235         $(MAKE) DESTDIR=/tmp/rpm-$(VERSION) install
236         cd /tmp/rpm-$(VERSION) ; tar cvf /tmp/rpm-$(VERSION).tar .
237
238 .PHONY: noconfig
239 noconfig:
240         find . -name "Makefile" -exec rm {} \; 
241         rm -f *gz *rpm config.*
242
243 .PHONY: archive
244 archive: 
245         @cvs -d `cat CVS/Root` diff 2>&1 > /dev/null || { \
246             echo " " ; \
247             echo "==> Please resolve differences between the repository and" ; \
248             echo "==> your rpm check out before tagging." ; \
249             echo " " ; \
250             cvs -n up ; \
251             echo " " ; \
252             exit 1 ; \
253         }
254         @cvs -d `cat CVS/Root` -Q tag -F $(CVSTAG) .
255         @make dist
256         @echo " "
257         @echo "The final archive is ./rpm-$(VERSION).tar.gz."
258
259 .PHONY: nextsrpm
260 nextsrpm: all archive
261         @sudo ./rpm -ta rpm-$(VERSION).tar.gz
262
263 .PHONY: doxygen
264 doxygen @WITH_APIDOCS_TARGET@: Doxyfile
265         rm -rf $@
266         mkdir -p $@
267         - [ X"@__DOXYGEN@" != Xno ] && @__DOXYGEN@
268
269 ctags:
270         find . -type f -name "*.[ch]*" | xargs @CTAGS@
271
272 cscope:
273         @CSCOPE@ -b -R
274
275 cref: ctags cscope