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