]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - nss/Makefile
[powerpc] No need to enter "Ignore Exceptions Mode"
[thirdparty/glibc.git] / nss / Makefile
index 93ffbaee34405c1f32068a346b24e24b8030a6b8..7590669e49c4c6d3f9d8c63776d65772c0e28061 100644 (file)
@@ -1,42 +1,87 @@
-# Copyright (C) 1996 Free Software Foundation, Inc.
+# Copyright (C) 1996-2019 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
 
 # The GNU C Library is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Library General Public License for more details.
+# Lesser General Public License for more details.
 
-# You should have received a copy of the GNU Library General Public
-# License along with the GNU C Library; see the file COPYING.LIB.  If
-# not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
 
 #
 #      Makefile for name service switch.
 #
 subdir := nss
 
+include ../Makeconfig
+
 headers                        := nss.h
-distribute             := nsswitch.h XXX-lookup.c getXXbyYY.c getXXbyYY_r.c \
-                          getXXent.c getXXent_r.c databases.def \
-                          nsswitch.conf db-Makefile
 
 # This is the trivial part which goes into libc itself.
-routines               = nsswitch $(addsuffix -lookup,$(databases))
+routines               = nsswitch getnssent getnssent_r digits_dots \
+                         valid_field valid_list_field rewrite_field \
+                         $(addsuffix -lookup,$(databases)) \
+                         compat-lookup nss_hash
 
 # These are the databases that go through nss dispatch.
 # Caution: if you add a database here, you must add its real name
 # in databases.def, too.
-databases              = proto service hosts network grp pwd rpc ethers \
-                         spwd netgrp key
+databases              = proto service hosts network grp pwd ethers \
+                         spwd netgrp alias sgrp
+
+ifneq (,$(filter sunrpc,$(subdirs)))
+databases              += key rpc
+have-sunrpc            := 1
+else
+have-sunrpc            := 0
+endif
+CPPFLAGS-getent.c      = -DHAVE_SUNRPC=$(have-sunrpc)
+
+others                  := getent makedb
+install-bin             := getent makedb
+makedb-modules = xmalloc hash-string
+others-extras          = $(makedb-modules)
+extra-objs             += $(makedb-modules:=.o)
+
+tests-static            = tst-field
+tests-internal         = tst-field
+tests                  = test-netdb test-digits-dots tst-nss-getpwent bug17079 \
+                         tst-nss-test1 \
+                         tst-nss-test2 \
+                         tst-nss-test4 \
+                         tst-nss-test5
+xtests                 = bug-erange
+
+tests-container = \
+                         tst-nss-test3 \
+                         tst-nss-files-hosts-long \
+                         tst-nss-db-endpwent \
+                         tst-nss-db-endgrent
+
+# Tests which need libdl
+ifeq (yes,$(build-shared))
+tests += tst-nss-files-hosts-erange
+tests += tst-nss-files-hosts-multi
+tests += tst-nss-files-hosts-getent
+tests += tst-nss-files-alias-leak
+tests += tst-nss-files-alias-truncated
+endif
+
+# If we have a thread library then we can test cancellation against
+# some routines like getpwuid_r.
+ifeq (yes,$(have-thread-library))
+tests += tst-cancel-getpwuid_r
+endif
 
 # Specify rules for the nss_* modules.  We have some services.
-services               := files dns db
+services               := files db compat
 
 extra-libs             = $(services:%=libnss_%)
 # These libraries will be built in the `others' pass rather than
@@ -45,40 +90,95 @@ extra-libs-others   = $(extra-libs)
 
 # The sources are found in the appropriate subdir.
 subdir-dirs = $(services:%=nss_%)
-vpath %.c $(subdir-dirs)
+vpath %.c $(subdir-dirs) ../locale/programs ../intl
 
 
-libnss_files-routines  := $(addprefix files-,$(filter-out key, $(databases)))
-distribute             += files-XXX.c files-parse.c
+libnss_files-routines  := $(addprefix files-,$(databases)) \
+                          files-initgroups files-init
 
-libnss_dns-routines    := dns-host dns-network
+libnss_db-dbs          := $(addprefix db-,\
+                                      $(filter-out hosts network key alias,\
+                                                   $(databases))) \
+                          db-initgroups
+libnss_db-routines     := $(libnss_db-dbs) db-open db-init hash-string
+generated              += $(filter-out db-alias.c db-netgrp.c, \
+                                       $(addsuffix .c,$(libnss_db-dbs)))
 
-libnss_db-routines     := $(addprefix db-,$(filter-out hosts network key,\
-                                                       $(databases)))
-generated              += $(filter-out db-netgrp.c, \
-                                       $(addsuffix .c,$(libnss_db-routines)))
-distribute             += db-XXX.c
+libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
+                          nisdomain
 
-libnss_files-inhibit-o = $(filter-out .so,$(object-suffixes))
-libnss_dns-inhibit-o   = $(filter-out .so,$(object-suffixes))
-libnss_db-inhibit-o    = $(filter-out .so,$(object-suffixes))
+install-others         += $(inst_vardbdir)/Makefile
 
+# Build static module into libc if requested
+libnss_files-inhibit-o = $(filter-out .os,$(object-suffixes))
+libnss_db-inhibit-o    = $(filter-out .os,$(object-suffixes))
+libnss_compat-inhibit-o        = $(filter-out .os,$(object-suffixes))
+ifeq ($(build-static-nss),yes)
+routines                += $(libnss_files-routines)
+static-only-routines    += $(libnss_files-routines)
+tests-static           += tst-nss-static
+endif
+extra-test-objs                += nss_test1.os nss_test2.os
 
 include ../Rules
 
+ifeq (yes,$(have-selinux))
+LDLIBS-makedb          := -lselinux
+endif
 
-$(objpfx)libnss_dns.so: $(common-objpfx)resolv/libresolv.so
+libnss-libc = $(common-objpfx)linkobj/libc.so
+# Target-specific variable setting to link objects using deprecated
+# RPC interfaces with the version of libc.so that makes them available
+# for new links:
+$(services:%=$(objpfx)libnss_%.so): libc-for-link = $(libnss-libc)
 
-$(objpfx)libnss_db.so: $(common-objpfx)db/libdb.so $(objpfx)libnss_files.so
+$(objpfx)libnss_db.so: $(objpfx)libnss_files.so
 
-$(libnss_db-routines:%=$(objpfx)%.c): $(objpfx)db-%.c: nss_files/files-%.c
+$(libnss_db-dbs:%=$(objpfx)%.c): $(objpfx)db-%.c: nss_files/files-%.c
        @rm -f $@.new
        (echo '#define EXTERN_PARSER';\
         echo '#define GENERIC "../nss_db/db-XXX.c"';\
-        echo '#include <$<>') > $@.new
+        echo '#include "$<"') > $@.new
        mv -f $@.new $@
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(services:%=$(objpfx)libnss_%.so): $(common-objpfx)libc.so
+
+$(objpfx)makedb: $(makedb-modules:%=$(objpfx)%.o)
+
+$(inst_vardbdir)/Makefile: db-Makefile $(+force)
+       $(do-install)
+
+libnss_test1.so-no-z-defs = 1
+libnss_test2.so-no-z-defs = 1
+
+rtld-tests-LDFLAGS += -Wl,--dynamic-list=nss_test.ver
+
+libof-nss_test1 = extramodules
+libof-nss_test2 = extramodules
+$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(link-libc-deps)
+       $(build-module)
+$(objpfx)/libnss_test2.so: $(objpfx)nss_test2.os $(link-libc-deps)
+       $(build-module)
+$(objpfx)nss_test2.os : nss_test1.c
+ifdef libnss_test1.so-version
+$(objpfx)/libnss_test1.so$(libnss_test1.so-version): $(objpfx)/libnss_test1.so
+       $(make-link)
+endif
+ifdef libnss_test2.so-version
+$(objpfx)/libnss_test2.so$(libnss_test2.so-version): $(objpfx)/libnss_test2.so
+       $(make-link)
+endif
+$(patsubst %,$(objpfx)%.out,$(tests) $(tests-container)) : \
+       $(objpfx)/libnss_test1.so$(libnss_test1.so-version) \
+       $(objpfx)/libnss_test2.so$(libnss_test2.so-version)
+
+ifeq (yes,$(have-thread-library))
+$(objpfx)tst-cancel-getpwuid_r: $(shared-thread-library)
+endif
+
+$(objpfx)tst-nss-files-hosts-erange: $(libdl)
+$(objpfx)tst-nss-files-hosts-multi: $(libdl)
+$(objpfx)tst-nss-files-hosts-getent: $(libdl)
+$(objpfx)tst-nss-files-alias-leak: $(libdl)
+$(objpfx)tst-nss-files-alias-leak.out: $(objpfx)/libnss_files.so
+$(objpfx)tst-nss-files-alias-truncated: $(libdl)
+$(objpfx)tst-nss-files-alias-truncated.out: $(objpfx)/libnss_files.so