The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/lib/Makefile.am

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #
    2 # Shown below is a simplified dependency graph of the OpenZFS provided
    3 # libraries.  Administrative commands (`zfs`, `zpool`, etc) interface with
    4 # the kernel modules using the `libzfs.so` and `libzfs_core.so` libraries.
    5 # These libraries provide a stable ABI across OpenZFS point releases.
    6 #
    7 # The `libzpool.so` library is a user space build of the DMU and SPA layers
    8 # used to implement debugging tools (zdb) and code validation tools (ztest).
    9 # These library interfaces are subject to change at any time.
   10 #
   11 #
   12 # CMDS:   zhack/ztest/zdb/            zfs/zpool/zed/
   13 #        raidz_{test,bench}          zinject/zstream
   14 #                |                          |
   15 # LIBS:          |                          |              libzfsbootenv*
   16 #                |                          |                    |
   17 #                |                          |                    |
   18 #             libzpool                   libzfs* ----------------+
   19 #             | | |  \                  / | | |
   20 #    libicp --/ | |   \                /  | | \------- libshare
   21 #               | |    \              /   | |
   22 #    libzstd ---/ |     \            /    | \--------- libuutil
   23 #                 |      \          /     \              | |
   24 #    libunicode --/       \        /       \             | |
   25 #                          \      /         \            | |
   26 #                          libzutil        libzfs_core*  | |
   27 #                          | | | | \          |     |    | |
   28 #                          | | | | |          |     |    | |
   29 #                          | | | | |          |     |    | |
   30 #    libtpool -------------/ | | | \---- libnvpair* |    | |
   31 #                            | | |                  |    | |
   32 #    libefi -----------------/ | \------ libavl* --------/ |
   33 #                              |                    |      |
   34 #                              \-------- libspl ----+------/
   35 #
   36 #
   37 # NB: GNU Automake Manual, Chapter 8.3.5: Libtool Convenience Libraries
   38 # These nine libraries are intermediary build components.
   39 #
   40 # * - A stable ABI is provided for these libraries;
   41 # when performing an ABI check the following options are applied:
   42 #
   43 # --no-unreferenced-symbols: Exclude symbols which are not referenced by
   44 # any debug information.  Without this _init() and _fini() are incorrectly
   45 # reported on CentOS7 for libuutil.so.
   46 #
   47 # --headers-dir1: Limit ABI checks to public OpenZFS headers, otherwise
   48 # changes in public system headers are also reported.
   49 #
   50 # --suppressions: Honor a suppressions file for each library to provide
   51 # a mechanism for suppressing harmless warnings.
   52 #
   53 
   54 noinst_LTLIBRARIES =
   55 lib_LTLIBRARIES =
   56 pkgconfig_DATA =
   57 include $(srcdir)/%D%/libavl/Makefile.am
   58 include $(srcdir)/%D%/libicp/Makefile.am
   59 include $(srcdir)/%D%/libnvpair/Makefile.am
   60 include $(srcdir)/%D%/libshare/Makefile.am
   61 include $(srcdir)/%D%/libspl/Makefile.am
   62 include $(srcdir)/%D%/libtpool/Makefile.am
   63 include $(srcdir)/%D%/libunicode/Makefile.am
   64 include $(srcdir)/%D%/libuutil/Makefile.am
   65 include $(srcdir)/%D%/libzfs_core/Makefile.am
   66 include $(srcdir)/%D%/libzfs/Makefile.am
   67 include $(srcdir)/%D%/libzfsbootenv/Makefile.am
   68 include $(srcdir)/%D%/libzpool/Makefile.am
   69 include $(srcdir)/%D%/libzstd/Makefile.am
   70 include $(srcdir)/%D%/libzutil/Makefile.am
   71 if BUILD_LINUX
   72 include $(srcdir)/%D%/libefi/Makefile.am
   73 endif
   74 
   75 
   76 PHONY += lib
   77 lib: $(noinst_LTLIBRARIES) $(lib_LTLIBRARIES)
   78 
   79 
   80 PHONY += checkabi storeabi check_libabi_version allow_libabi_only_for_x86_64
   81 
   82 check_libabi_version:
   83         if [ $$(abidw -v | $(SED) 's/[^0-9]//g') -lt 200 ]; then \
   84                 printf '%s\n' "" \
   85                     "*** Please use libabigail 2.0.0 version or newer;" \
   86                     "*** otherwise results are not consistent!" \
   87                     "(or see https://github.com/openzfs/libabigail-docker)"; \
   88                 exit 1; \
   89         fi
   90 
   91 allow_libabi_only_for_x86_64:
   92         echo '*** ABI definitions provided apply only to x86_64:'
   93         echo '*** not checking or storing ABI and assuming success.'
   94 
   95 if TARGET_CPU_X86_64
   96 # These should depend on $(lib_LTLIBRARIES), but this breaks on CI when bound into Docker
   97 checkabi: check_libabi_version
   98         err=0; \
   99         for lib in $(lib_LTLIBRARIES); do \
  100                 lib=$${lib%.la}; \
  101                 [ -f $(srcdir)/lib/$$lib/$$lib.suppr ] || continue; \
  102                 echo $$lib:; \
  103                 abidiff --no-unreferenced-symbols \
  104                     --headers-dir1 include \
  105                     --suppressions $(srcdir)/lib/$$lib/$$lib.suppr \
  106                     $(srcdir)/lib/$$lib/$$lib.abi .libs/$$lib.so || err=$$((err + 1)); \
  107         done; \
  108         exit $$err
  109 
  110 storeabi: check_libabi_version
  111         for lib in $(lib_LTLIBRARIES); do \
  112                 lib=$${lib%.la}; \
  113                 [ -f $(srcdir)/lib/$$lib/$$lib.suppr ] || continue; \
  114                 abidw --no-show-locs \
  115                     --no-corpus-path \
  116                     --no-comp-dir-path \
  117                     --type-id-style hash \
  118                     .libs/$$lib.so > $(srcdir)/lib/$$lib/$$lib.abi; \
  119         done
  120 else
  121 checkabi: allow_libabi_only_for_x86_64
  122 storeabi: allow_libabi_only_for_x86_64
  123 endif

Cache object: bf47971bcea07f66c3d53d3467f05d16


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.