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 (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
  23 # Copyright 2016 RackTop Systems.
  24 # Copyright 2017 Joyent, Inc.
  25 # Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
  26 #
  27 
  28 include         $(SRC)/cmd/Makefile.cmd
  29 
  30 # Note: Why SUBDIRS-common isn't sorted alphabetically
  31 #
  32 # The items under SGS are not independent of each other.
  33 # They must be built in an order that ensures that
  34 # all dependencies of an item have been built before the
  35 # item itself.
  36 #
  37 SUBDIRS-common= libconv         \
  38                 .WAIT           \
  39                 libdl           \
  40                 libelf          \
  41                 liblddbg        \
  42                 .WAIT           \
  43                 libld           \
  44                 libldmake       \
  45                 libldstab       \
  46                 librtld         \
  47                 libcrle         \
  48                 .WAIT           \
  49                 0@0             \
  50                 ld              \
  51                 ldd             \
  52                 lddstub         \
  53                 rtld            \
  54                 link_audit      \
  55                 .WAIT           \
  56                 librtld_db      \
  57                 ldprof          \
  58                 pvs             \
  59                 crle            \
  60                 ar              \
  61                 dump            \
  62                 elfdump         \
  63                 elfedit         \
  64                 elfwrap         \
  65                 error           \
  66                 gprof           \
  67                 lari            \
  68                 lex             \
  69                 lorder          \
  70                 m4              \
  71                 mcs             \
  72                 moe             \
  73                 nm              \
  74                 prof            \
  75                 ranlib          \
  76                 size            \
  77                 symorder        \
  78                 tsort           \
  79                 unifdef         \
  80                 yacc
  81 
  82 SUBDIRS-i386=
  83 SUBDIRS-sparc=  rtld.4.x
  84 
  85 SUBDIRS=        $(SUBDIRS-common) $(SUBDIRS-$(MACH))
  86 
  87 # Messaging support
  88 #
  89 POSUBDIRS=      m4              nm      tsort           yacc
  90 POFILE=         sgs.po
  91 POFILES=        $(POSUBDIRS:%=%/%.po)
  92 
  93 MSGSUBDIRS=     ld              ldd             libld           liblddbg \
  94                 libldstab       librtld         rtld            libelf \
  95                 ldprof          libcrle         pvs             elfdump \
  96                 elfedit         crle            moe             lari \
  97                 librtld_db      elfwrap         ar
  98 
  99 MSGDIR=         messages
 100 
 101 
 102 all :=          TARGET= all
 103 install :=      TARGET= install
 104 clean :=        TARGET= clean
 105 clobber :=      TARGET= clobber
 106 delete :=       TARGET= delete
 107 lint :=         TARGET= lint
 108 _msg :=         TARGET= catalog
 109 _msg_gettext := TARGET= catalog
 110 _msg_sgsmsg :=  TARGET= catalog
 111 chkmsg :=       TARGET= chkmsg
 112 
 113 
 114 .KEEP_STATE:
 115 
 116 .PARALLEL:      $(SUBDIRS)
 117 
 118 all install:    native-add .WAIT $(SUBDIRS)
 119 
 120 include         $(SRC)/cmd/Makefile.targ
 121 
 122 # Messaging support
 123 #
 124 _msg: _msg_gettext _msg_sgsmsg
 125 
 126 _msg_gettext: $(MSGDOMAIN)/$(POFILE)
 127 
 128 # $(MACH)/sgsmsg must be built before we can descend into $(MSGDIR)
 129 _msg_sgsmsg: native-add .WAIT $(MSGDIR)
 130 
 131 $(MSGDOMAIN)/$(POFILE): \
 132                 $(MSGDOMAIN) $(POFILE)
 133 
 134 $(POFILE):      $(POSUBDIRS)
 135                 $(RM) $(POFILE)
 136                 cat $(POFILES) > $(POFILE)
 137 
 138 $(MSGDIR):      $(MSGSUBDIRS) FRC
 139                 @ cd $@; pwd; $(MAKE) $(TARGET)
 140 
 141 chkmsg:         libconv $(MSGSUBDIRS) FRC
 142 
 143 check:          chkmsg
 144 
 145 # built from lib/Makefile
 146 install_lib:    FRC
 147                 @ cd lex; pwd; $(MAKE) $@
 148                 @ cd yacc; pwd; $(MAKE) $@
 149 
 150 lint:
 151 
 152 delete \
 153 clean clobber:  native-clobber .WAIT $(SUBDIRS) $(MSGDIR)
 154 
 155 $(SUBDIRS):     FRC
 156                 @ cd $@; pwd; $(MAKE) $(TARGET)
 157 
 158 
 159 # Integration of ld and ld.so.1 in some developement cycles requires that both
 160 # of these modules be built using the new ld.  This `native' target allows us
 161 # to build a local ld which will then be used to build the delivered version of
 162 # itself and ld.so.1.  Once this new functionality appears in the standard ld
 163 # this target can be disabled.
 164 
 165 native-add:     FRC
 166                 @ cd tools/$(MACH); pwd; $(MAKE) native
 167                 @ cd libconv/$(MACH); pwd; $(MAKE)
 168                 @ cd libelf/$(MACH); pwd; $(MAKE) native
 169                 @ cd liblddbg/$(MACH); pwd; $(MAKE) native
 170                 @ cd libldstab/$(MACH); pwd; $(MAKE) native
 171                 @ cd libld/$(MACH); pwd; $(MAKE) native
 172                 @ cd ld/$(MACH); pwd; $(MAKE) native
 173 
 174 native-clobber:
 175                 @ cd tools; pwd; $(MAKE) $(TARGET)
 176                 $(RM) -r proto/$(MACH)
 177 
 178 FRC:
 179 
 180 #
 181 # Cross-reference customization: ignore the directories named by XRPRUNE,
 182 # and tweak the file globs slightly.
 183 #
 184 XRPRUNE=        rtld.4.x packages abi
 185 XRADD=          *.msg mapfile*
 186 XRDEL=          Makefile* kobj_*
 187 
 188 #
 189 # Establish a set of directories for xref to search.  As there are duplicates
 190 # of things like headers, and only one file will be added to the xref database,
 191 # we want xref to list the source file.
 192 #
 193 XRDIRS=         . \
 194                 ../../common/elfcap \
 195                 ../../head \
 196                 ../../uts/common/krtld \
 197                 ../../uts/common/sys \
 198                 ../../uts/sparc/sys \
 199                 ../../uts/sparc/krtld \
 200                 ../../uts/intel/ia32/krtld \
 201                 ../../uts/intel/amd64/krtld
 202 
 203 xref:           FRC
 204                 @ $(RM) cscope.*
 205                 xref -p -x cscope