1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License (the "License").
   6 # You may not use this file except in compliance with the License.
   7 #
   8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9 # or http://www.opensolaris.org/os/licensing.
  10 # See the License for the specific language governing permissions
  11 # and limitations under the License.
  12 #
  13 # When distributing Covered Code, include this CDDL HEADER in each
  14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15 # If applicable, add the following below this CDDL HEADER, with the
  16 # fields enclosed by brackets "[]" replaced with your own identifying
  17 # information: Portions Copyright [yyyy] [name of copyright owner]
  18 #
  19 # CDDL HEADER END
  20 #
  21 #
  22 # Copyright 2015 Gary Mills
  23 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 #
  26 # Copyright (c) 2019, Joyent, Inc.
  27 
  28 LIBRARY= libnisdb.a
  29 VERS=   .2
  30 PROTOCOL_DIR= $(ROOT)/include/rpcsvc
  31 YPTOL_DIR= ./yptol
  32 
  33 SED=    sed
  34 
  35 OBJECTS = \
  36         db_entry.o db_entry_c_xdr.o \
  37         db_item.o db_item_c_xdr.o \
  38         db_vers.o db_vers_c_xdr.o \
  39         db_pickle.o \
  40         db_table.o db_table_c_xdr.o \
  41         db_index_entry.o db_index_entry_c.o \
  42         db_index.o db_index_c_xdr.o \
  43         db_scheme.o db_scheme_c_xdr.o \
  44         db_query.o db_query_c_xdr.o \
  45         db_mindex.o db_mindex2.o db_mindex3.o db_mindex_c_xdr.o \
  46         db_log_entry.o db_log_entry_c_xdr.o \
  47         db_log.o \
  48         db.o \
  49         xdr_nullptr.o \
  50         db_dictionary.o db_dictionary_c_xdr.o \
  51         db_dictxdr.o db_dictlog.o db_dictlog_c_xdr.o \
  52         nis_db.o \
  53         nisdb_mt.o nisdb_rw.o \
  54         nis_hashitem.o \
  55         ldap_attr.o ldap_cto.o ldap_glob.o ldap_ldap.o \
  56         ldap_map.o ldap_nisdbquery.o \
  57         ldap_op.o ldap_parse.o ldap_print.o ldap_ruleval.o \
  58         ldap_util.o ldap_val.o ldap_xdr.o ldap_scheme.o \
  59         nis_ldap.o \
  60         nis_parse_ldap_attr.o nis_parse_ldap_conf.o \
  61         nis_parse_ldap_map.o nis_parse_ldap_util.o \
  62         nis_parse_ldap_yp_util.o        \
  63         dit_access.o \
  64         dit_access_utils.o \
  65         lock_update.o \
  66         map_conv.o \
  67         map_ctrl.o \
  68         yptol_utils.o \
  69         shim.o \
  70         shim_ancil.o \
  71         shim_lockmap.o \
  72         ttl_utils.o \
  73         update.o \
  74         shim_changepasswd.o \
  75         stubs.o
  76 
  77 X_FILES= \
  78     db_c.x             db_dictionary_c.x db_entry_c.x  db_index_c.x     \
  79     db_index_entry_c.x db_item_c.x       db_log_c.x    db_log_entry_c.x \
  80     db_mindex_c.x      db_query_c.x      db_scheme_c.x db_table_c.x     \
  81     db_vers_c.x        db_dictlog_c.x
  82 
  83 DERIVED_HEADERS= $(X_FILES:%_c.x=%_c.h) $(X_FILES:%_c.x=%.h)
  84 DERIVED_SOURCES= $(X_FILES:%_c.x=%_c_xdr.c)
  85 DERIVED_FILES= $(DERIVED_HEADERS) $(DERIVED_SOURCES)
  86 
  87 # delete the derived files when cleaning up
  88 CLEANFILES += $(DERIVED_FILES)
  89 
  90 # include library definitions
  91 include ../Makefile.lib
  92 
  93 MAPFILES =      mapfile-vers
  94 
  95 SRCS= db_dictionary_c_xdr.c db_dictlog_c_xdr.c db_dictxdr.c \
  96 db_entry_c_xdr.c db_index_c_xdr.c db_index_entry_c_xdr.c db_item_c_xdr.c \
  97 db_log_c_xdr.c db_log_entry_c_xdr.c db_mindex_c_xdr.c db_query_c_xdr.c \
  98 db_scheme_c_xdr.c db_table_c_xdr.c db_vers_c_xdr.c \
  99 $(YPTOL_DIR)/dit_access.c \
 100 $(YPTOL_DIR)/dit_access_utils.c \
 101 $(YPTOL_DIR)/lock_update.c \
 102 $(YPTOL_DIR)/map_conv.c \
 103 $(YPTOL_DIR)/map_ctrl.c \
 104 $(YPTOL_DIR)/yptol_utils.c \
 105 $(YPTOL_DIR)/shim.c \
 106 $(YPTOL_DIR)/shim_ancil.c \
 107 $(YPTOL_DIR)/shim_lockmap.c \
 108 $(YPTOL_DIR)/ttl_utils.c \
 109 $(YPTOL_DIR)/update.c \
 110 $(YPTOL_DIR)/shim_changepasswd.c \
 111 $(YPTOL_DIR)/stubs.c \
 112 #db_c_xdr.c xdr_nullptr.c
 113 
 114 # Libnisdb has grown large enough that there may be too many symbols
 115 # wanting `small' PIC references. Hence, compile some files with
 116 # `large' PIC references; the parser files are good candidates, since
 117 # they're only used at startup, and performance isn't too important.
 118 LARGESYMS=      nis_parse_ldap_conf.o \
 119                 nis_parse_ldap_attr.o \
 120                 nis_parse_ldap_yp_util.o \
 121                 nis_parse_ldap_map.o \
 122                 ldap_parse.o \
 123                 dit_access.o \
 124                 dit_access_utilis.o \
 125                 map_conv.o \
 126                 map_ctrl.o \
 127                 shim.o \
 128                 shim_ancil.o \
 129                 shim_changepasswd.o \
 130                 update.o \
 131                 stubs.o \
 132                 yptol_utils.o \
 133                 nis_parse_ldap_util.o
 134 LARGEPICS=      $(LARGESYMS:%=pics/%)
 135 $(LARGEPICS) := sparc_C_PICFLAGS = $(C_BIGPICFLAGS)
 136 $(LARGEPICS) := i386_C_PICFLAGS = $(C_BIGPICFLAGS)
 137 
 138 # More and stricter semantic checks and lint-like checks
 139 CFLAGS  +=      $(CCVERBOSE)
 140 
 141 CPPFLAGS +=     -D_REENTRANT
 142 
 143 # Have an unused variable that can't be removed
 144 UVAR_PICS = \
 145 pics/db_dictionary_c_xdr.o \
 146 pics/db_dictlog_c_xdr.o \
 147 pics/db_entry_c_xdr.o \
 148 pics/db_index_c_xdr.o \
 149 pics/db_item_c_xdr.o \
 150 pics/db_log_entry_c_xdr.o \
 151 pics/db_mindex_c_xdr.o \
 152 pics/db_query_c_xdr.o \
 153 pics/db_scheme_c_xdr.o \
 154 pics/db_table_c_xdr.o \
 155 pics/db_vers_c_xdr.o \
 156 pics/ldap_xdr.o \
 157 pics/dit_access.o \
 158 pics/update.o \
 159 pics/yptol_utils.o \
 160 pics/map_ctrl.o
 161 
 162 $(UVAR_PICS) := CERRWARN += -_gcc=-Wno-unused-variable
 163 
 164 # Correcting these might alter logic
 165 CERRWARN +=     $(CNOWARN_UNINIT)
 166 CERRWARN +=     -_gcc=-Wno-switch
 167 
 168 # not linted
 169 SMATCH=off
 170 
 171 # Extra includes, from yp, for yptol files.
 172 CPPFLAGS += -I$(SRC)/cmd/ypcmd
 173 
 174 # Need the path to nis_clnt.h
 175 CLNT_PICS = pics/db_entry_c_xdr.o pics/ldap_xdr.o pics/db_mindex_c_xdr.o
 176 
 177 $(CLNT_PICS) := CPPFLAGS += -I../libnsl/nis/gen
 178 
 179 LIBS = $(DYNLIB)
 180 ZDEFS=
 181 LDLIBS += -lnsl -lldap -lc
 182 
 183 # A number of interfaces are interposed by numerous applications, therefore
 184 # prevent direct binding to anything in libnisdb.  Disable libnisdb from
 185 # directly binding to itself, but allow libnisdb to directly bind to its
 186 # dependencies (ie. map -Bdirect -> -zdirect).  Ensure lazy loading is
 187 # established (which is enabled automatically with -Bdirect).  In addition,
 188 # libnisdb interposes on socket(), so tag this library as an interposer.
 189 # dependencies (lazyload).
 190 BDIRECT =
 191 DYNFLAGS +=     $(BNODIRECT) $(ZINTERPOSE) $(ZDIRECT) $(ZLAZYLOAD)
 192 
 193 all :=          TARGET= all
 194 clean :=        TARGET= clean
 195 clobber :=      TARGET= clobber
 196 install :=      TARGET= install
 197 lint :=         TARGET= lint
 198 
 199 .KEEP_STATE:
 200 
 201 all:    $(DERIVED_FILES) $(LIBS)
 202 
 203 install: all $(ROOTLIBS) $(ROOTLINKS)
 204 
 205 lint: $(DERIVED_FILES) .WAIT lintcheck
 206 
 207 objs/%.o pics/%.o profs/%.o: $(YPTOL_DIR)/%.c
 208         $(COMPILE.c) -o $@ $<
 209         $(POST_PROCESS_O)
 210 
 211 #
 212 # Pattern matching rules that define how to build the derived files.
 213 #
 214 %_c.h: %_c.x
 215         $(RM) $@
 216         $(RPCGEN) -DUSINGC -h -o $@ $<
 217 
 218 %.h: %_c.x
 219         $(RM) $@
 220         $(RPCGEN) -h -o $@ $<
 221 
 222 %_c_xdr.c: %_c.x
 223         $(RM) $@
 224         $(RPCGEN) -DUSINGC -c -o $@ $<
 225 
 226 # rename the xdr_db_free_entry() in the db_table_c_xdr.c.  So the one
 227 # in db_index_entry_c is used instead.
 228 DB_TABLE=db_table_c
 229 
 230 $(DB_TABLE)_xdr.c:      $(DB_TABLE).x
 231         $(RM) $@
 232         $(RPCGEN) -DUSINGC -c $(DB_TABLE).x |\
 233         $(SED) -e 's/^xdr_db_free_entry(/__OBSOLETED_xdr_db_free_entry(/' > $@
 234 
 235 # include library targets
 236 include ../Makefile.targ