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