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) 1989, 2010, Oracle and/or its affiliates. All rights reserved. 23 # Copyright 2017 RackTop Systems. 24 # 25 # Definitions common to command source. 26 # 27 # include global definitions; SRC should be defined in the shell. 28 # SRC is needed until RFE 1026993 is implemented. 29 30 include $(SRC)/Makefile.master 31 32 LN= ln 33 SH= sh 34 ECHO= echo 35 MKDIR= mkdir 36 TOUCH= touch 37 38 FILEMODE= 0555 39 LIBFILEMODE= 0444 40 XPG4= $(XPG4PROG:%=%.xpg4) 41 XPG6= $(XPG6PROG:%=%.xpg6) 42 43 KRB5DIR= $(ROOT)/usr 44 KRB5BIN= $(KRB5DIR)/bin 45 KRB5SBIN= $(KRB5DIR)/sbin 46 KRB5LIB= $(KRB5DIR)/lib/krb5 47 KRB5RUNPATH= /usr/lib/krb5 48 GSSRUNPATH= /usr/lib/gss 49 50 51 ROOTBIN= $(ROOT)/usr/bin 52 ROOTLIB= $(ROOT)/usr/lib 53 ROOTLIBSVCBIN= $(ROOT)/lib/svc/bin 54 ROOTLIBSVCMETHOD= $(ROOT)/lib/svc/method 55 ROOTLIBXEN= $(ROOT)/usr/lib/xen/bin 56 ROOTLIBZONES= $(ROOT)/lib/zones 57 58 ROOTSHLIB= $(ROOT)/usr/share/lib 59 ROOTPKGBIN= $(ROOT)/usr/sadm/install/bin 60 ROOTCLASS_SCR_DIR= $(ROOT)/usr/sadm/install/scripts 61 ROOTADMIN_SRC_DIR= $(ROOT)/var/sadm/install/admin 62 63 ROOTSHLIBCCS= $(ROOTSHLIB)/ccs 64 ROOTSBIN= $(ROOT)/sbin 65 ROOTUSRSBIN= $(ROOT)/usr/sbin 66 ROOTETC= $(ROOT)/etc 67 68 ROOTETCSECURITY= $(ROOTETC)/security 69 ROOTETCTSOL= $(ROOTETCSECURITY)/tsol 70 ROOTETCSECLIB= $(ROOTETCSECURITY)/lib 71 ROOTETCZONES= $(ROOTETC)/zones 72 73 ROOTETCFTPD= $(ROOT)/etc/ftpd 74 ROOTETCINET= $(ROOT)/etc/inet 75 ROOTCCSBIN= $(ROOT)/usr/ccs/bin 76 ROOTCCSBIN64= $(ROOTCCSBIN)/$(MACH64) 77 ROOTCCSBINLINKDIR= $(ROOT)/../../bin 78 ROOTCCSBINLINKDIR64= $(ROOT)../../../bin/$(MACH) 79 ROOTCCSLIB= $(ROOT)/usr/ccs/lib 80 ROOTUSRKVM= $(ROOT)/usr/kvm 81 ROOTHAS= $(ROOT)/usr/has 82 ROOTHASBIN= $(ROOT)/usr/has/bin 83 ROOTHASLIB= $(ROOT)/usr/has/lib 84 ROOTXPG4= $(ROOT)/usr/xpg4 85 ROOTXPG4BIN= $(ROOT)/usr/xpg4/bin 86 ROOTXPG4BIN32= $(ROOTXPG4BIN)/$(MACH32) 87 ROOTXPG4BIN64= $(ROOTXPG4BIN)/$(MACH64) 88 ROOTXPG6= $(ROOT)/usr/xpg6 89 ROOTXPG6BIN= $(ROOT)/usr/xpg6/bin 90 ROOTLOCALEDEF= $(ROOT)/usr/lib/localedef 91 ROOTCHARMAP= $(ROOTLOCALEDEF)/charmap 92 ROOTI18NEXT= $(ROOTLOCALEDEF)/extensions 93 ROOTI18NEXT64= $(ROOTLOCALEDEF)/extensions/$(MACH64) 94 ROOTBIN32= $(ROOTBIN)/$(MACH32) 95 ROOTBIN64= $(ROOTBIN)/$(MACH64) 96 ROOTCMDDIR64= $(ROOTCMDDIR)/$(MACH64) 97 ROOTLIB64= $(ROOTLIB)/$(MACH64) 98 ROOTUSRSBIN32= $(ROOTUSRSBIN)/$(MACH32) 99 ROOTUSRSBIN64= $(ROOTUSRSBIN)/$(MACH64) 100 ROOTMAN= $(ROOT)/usr/share/man 101 ROOTMAN1= $(ROOTMAN)/man1 102 ROOTMAN1M= $(ROOTMAN)/man1m 103 ROOTMAN3= $(ROOTMAN)/man3 104 ROOTVARSMB= $(ROOT)/var/smb 105 106 107 # 108 # Like ROOTLIBDIR in $(SRC)/Makefile.lib, any lower-level Makefiles that 109 # put their binaries in a non-standard location should reset this and use 110 # $(ROOTCMD) in their `install' target. By default we set this to a bogus 111 # value so that it will not conflict with any of the other values already 112 # defined in this Makefile. 113 # 114 ROOTCMDDIR= $(ROOT)/__nonexistent_directory__ 115 116 ROOTSHAUDIO= $(ROOT)/usr/share/audio 117 ROOTAUDIOSAMP= $(ROOTSHAUDIO)/samples 118 ROOTAUDIOSAMPAU=$(ROOTAUDIOSAMP)/au 119 120 ISAEXEC= $(ROOT)/usr/lib/isaexec 121 PLATEXEC= $(ROOT)/usr/lib/platexec 122 123 LDLIBS = $(LDLIBS.cmd) 124 125 LDFLAGS.cmd = \ 126 $(BDIRECT) $(ENVLDFLAGS1) $(ENVLDFLAGS2) $(ENVLDFLAGS3) \ 127 $(MAPFILE.NES:%=-M%) $(MAPFILE.PGA:%=-M%) $(MAPFILE.NED:%=-M%) \ 128 $(ZASSERTDEFLIB) 129 130 LDFLAGS = $(LDFLAGS.cmd) 131 132 LINTFLAGS= -axsm 133 LINTFLAGS64= -axsm -m64 134 LINTOUT= lint.out 135 136 KRB5PROG= $(PROG:%=$(KRB5BIN)/%) 137 KRB5SBINPROG= $(PROG:%=$(KRB5SBIN)/%) 138 KRB5LIBPROG= $(PROG:%=$(KRB5LIB)/%) 139 140 ROOTPROG= $(PROG:%=$(ROOTBIN)/%) 141 ROOTCMD= $(PROG:%=$(ROOTCMDDIR)/%) 142 ROOTSHFILES= $(SHFILES:%=$(ROOTBIN)/%) 143 ROOTLIBPROG= $(PROG:%=$(ROOTLIB)/%) 144 ROOTLIBSHFILES= $(SHFILES:%=$(ROOTLIB)/%) 145 ROOTSHLIBPROG= $(PROG:%=$(ROOTSHLIB)/%) 146 ROOTSBINPROG= $(PROG:%=$(ROOTSBIN)/%) 147 ROOTPKGBINPROG= $(PROG:%=$(ROOTPKGBIN)/%) 148 ROOTCLASS_SCR_FILES= $(SCRIPTS:%=$(ROOTCLASS_SCR_DIR)/%) 149 ROOTUSRSBINPROG=$(PROG:%=$(ROOTUSRSBIN)/%) 150 ROOTUSRSBINSCRIPT=$(SCRIPT:%=$(ROOTUSRSBIN)/%) 151 ROOTETCPROG= $(PROG:%=$(ROOTETC)/%) 152 ROOTHASBINPROG= $(PROG:%=$(ROOTHASBIN)/%) 153 ROOTHASLIBPROG= $(PROG:%=$(ROOTHASLIB)/%) 154 ROOTCCSBINPROG= $(PROG:%=$(ROOTCCSBIN)/%) 155 ROOTCCSBINPROG64= $(PROG:%=$(ROOTCCSBIN64)/%) 156 ROOTCCSBINLINK=$(PROG:%= $(ROOTCCSBINLINKDIR)/%) 157 ROOTCCSBINLINK64=$(PROG:%=$(ROOTCCSBINLINKDIR64)/%) 158 ROOTUSRKVMPROG= $(PROG:%=$(ROOTUSRKVM)/%) 159 ROOTXPG4PROG= $(XPG4PROG:%=$(ROOTXPG4BIN)/%) 160 ROOTXPG4PROG32= $(XPG4PROG:%=$(ROOTXPG4BIN32)/%) 161 ROOTXPG4PROG64= $(XPG4PROG:%=$(ROOTXPG4BIN64)/%) 162 ROOTXPG6PROG= $(XPG6PROG:%=$(ROOTXPG6BIN)/%) 163 ROOTLOCALEPROG= $(PROG:%=$(ROOTLOCALEDEF)/%) 164 ROOTPROG64= $(PROG:%=$(ROOTBIN64)/%) 165 ROOTPROG32= $(PROG:%=$(ROOTBIN32)/%) 166 ROOTCMD64= $(PROG:%=$(ROOTCMDDIR64)/%) 167 ROOTUSRSBINPROG32= $(PROG:%=$(ROOTUSRSBIN32)/%) 168 ROOTUSRSBINPROG64= $(PROG:%=$(ROOTUSRSBIN64)/%) 169 ROOTMAN1FILES= $(MAN1FILES:%=$(ROOTMAN1)/%) 170 $(ROOTMAN1FILES) := FILEMODE= 444 171 ROOTMAN1MFILES= $(MAN1MFILES:%=$(ROOTMAN1M)/%) 172 $(ROOTMAN1MFILES) := FILEMODE= 444 173 ROOTMAN3FILES= $(MAN3FILES:%=$(ROOTMAN3)/%) 174 $(ROOTMAN3FILES) := FILEMODE= 444 175 176 # Symlink rules for /usr/ccs/bin commands. Note, those commands under 177 # the rule of the linker area, are controlled by a different set of 178 # rules defined in $(SRC)/cmd/sgs/Makefile.var. 179 180 INS.ccsbinlink= \ 181 $(RM) $(ROOTCCSBINPROG); \ 182 $(SYMLINK) ../../bin/$(PROG) $(ROOTCCSBINPROG) 183 184 INS.ccsbinlink64= \ 185 $(RM) $(ROOTCCSBINPROG64); \ 186 $(SYMLINK) ../../../bin/$(MACH64)/$(PROG) $(ROOTCCSBINPROG64) 187 188 ROOTETCDEFAULT= $(ROOTETC)/default 189 ROOTETCDEFAULTFILES= $(DEFAULTFILES:%.dfl=$(ROOTETCDEFAULT)/%) 190 $(ROOTETCDEFAULTFILES) := FILEMODE = 0644 191 192 ROOTETCSECFILES= $(ETCSECFILES:%=$(ROOTETCSECURITY)/%) 193 $(ROOTETCSECFILES) := FILEMODE = 0644 194 195 ROOTETCTSOLFILES= $(ETCTSOLFILES:%=$(ROOTETCTSOL)/%) 196 $(ROOTETCTSOLFILES) := FILEMODE = 0644 197 198 ROOTETCSECLIBFILES= $(ETCSECLIBFILES:%=$(ROOTETCSECLIB)/%) 199 200 ROOTETCZONESFILES= $(ETCZONESFILES:%=$(ROOTETCZONES)/%) 201 $(ROOTETCZONESFILES) := FILEMODE = 0444 202 203 ROOTLIBZONESFILES= $(LIBZONESFILES:%=$(ROOTLIBZONES)/%) 204 $(ROOTLIBZONESFILES) := FILEMODE = 0555 205 206 ROOTADMIN_SRC_FILE= $(ADMINFILE:%=$(ROOTADMIN_SRC_DIR)/%) 207 $(ROOTADMIN_SRC_FILE) := FILEMODE = 0444 208 209 # 210 # Directories for smf(5) service manifests and profiles. 211 # 212 ROOTSVC= $(ROOT)/lib/svc 213 ROOTETCSVC= $(ROOT)/etc/svc 214 215 ROOTSVCMANIFEST= $(ROOTSVC)/manifest 216 ROOTSVCPROFILE= $(ROOTETCSVC)/profile 217 218 ROOTSVCMILESTONE= $(ROOTSVCMANIFEST)/milestone 219 ROOTSVCDEVICE= $(ROOTSVCMANIFEST)/device 220 ROOTSVCSYSTEM= $(ROOTSVCMANIFEST)/system 221 ROOTSVCSYSTEMDEVICE= $(ROOTSVCSYSTEM)/device 222 ROOTSVCSYSTEMFILESYSTEM= $(ROOTSVCSYSTEM)/filesystem 223 ROOTSVCSYSTEMSECURITY= $(ROOTSVCSYSTEM)/security 224 ROOTSVCNETWORK= $(ROOTSVCMANIFEST)/network 225 ROOTSVCNETWORKDNS= $(ROOTSVCNETWORK)/dns 226 ROOTSVCNETWORKISCSI= $(ROOTSVCNETWORK)/iscsi 227 ROOTSVCNETWORKLDAP= $(ROOTSVCNETWORK)/ldap 228 ROOTSVCNETWORKNFS= $(ROOTSVCNETWORK)/nfs 229 ROOTSVCNETWORKNIS= $(ROOTSVCNETWORK)/nis 230 ROOTSVCNETWORKROUTING= $(ROOTSVCNETWORK)/routing 231 ROOTSVCNETWORKRPC= $(ROOTSVCNETWORK)/rpc 232 ROOTSVCNETWORKSMB= $(ROOTSVCNETWORK)/smb 233 ROOTSVCNETWORKSECURITY= $(ROOTSVCNETWORK)/security 234 ROOTSVCNETWORKSSL= $(ROOTSVCNETWORK)/ssl 235 ROOTSVCNETWORKIPSEC= $(ROOTSVCNETWORK)/ipsec 236 ROOTSVCNETWORKSHARES= $(ROOTSVCNETWORK)/shares 237 ROOTSVCSMB= $(ROOTSVCNETWORK)/smb 238 ROOTSVCPLATFORM= $(ROOTSVCMANIFEST)/platform 239 ROOTSVCPLATFORMSUN4U= $(ROOTSVCPLATFORM)/sun4u 240 ROOTSVCPLATFORMSUN4V= $(ROOTSVCPLATFORM)/sun4v 241 ROOTSVCAPPLICATION= $(ROOTSVCMANIFEST)/application 242 ROOTSVCAPPLICATIONMANAGEMENT= $(ROOTSVCAPPLICATION)/management 243 ROOTSVCAPPLICATIONSECURITY= $(ROOTSVCAPPLICATION)/security 244 ROOTSVCAPPLICATIONPRINT= $(ROOTSVCAPPLICATION)/print 245 246 # 247 # Commands Makefiles delivering a manifest are expected to define MANIFEST. 248 # 249 # Like ROOTCMDDIR, any lower-level Makefiles that put their manifests in a 250 # subdirectory of the manifest directories listed above should reset 251 # ROOTMANIFESTDIR and use it in their `install' target. By default we set this 252 # to a bogus value so that it will not conflict with any of the other values 253 # already defined in this Makefile. 254 # 255 # The manifest validation of the $SRC/cmd check target is also derived from a 256 # valid MANIFEST setting. 257 # 258 ROOTMANIFESTDIR= $(ROOTSVCMANIFEST)/__nonexistent_directory__ 259 ROOTMANIFEST= $(MANIFEST:%=$(ROOTMANIFESTDIR)/%) 260 CHKMANIFEST= $(MANIFEST:%.xml=%.xmlchk) 261 262 # Manifests cannot be checked in parallel, because we are using the global 263 # repository that is in $(SRC)/cmd/svc/seed/global.db. This is a 264 # repository that is built from the manifests in this workspace, whereas 265 # the build machine's repository may be out of sync with these manifests. 266 # Because we are using a private repository, svccfg-native must start up a 267 # private copy of configd-native. We cannot have multiple copies of 268 # configd-native trying to access global.db simultaneously. 269 270 .NO_PARALLEL: $(CHKMANIFEST) 271 272 # 273 # For installing "starter scripts" of services 274 # 275 276 ROOTSVCMETHOD= $(SVCMETHOD:%=$(ROOTLIBSVCMETHOD)/%) 277 278 ROOTSVCBINDIR= $(ROOTLIBSVCBIN)/__nonexistent_directory__ 279 ROOTSVCBIN= $(SVCBIN:%=$(ROOTSVCBINDIR)/%) 280 281 # 282 283 # For programs that are installed in the root filesystem, 284 # build $(ROOTFS_PROG) rather than $(PROG) 285 $(ROOTFS_PROG) := LDFLAGS += -Wl,-I/lib/ld.so.1 286 287 $(KRB5BIN)/%: % 288 $(INS.file) 289 290 $(KRB5SBIN)/%: % 291 $(INS.file) 292 293 $(KRB5LIB)/%: % 294 $(INS.file) 295 296 $(ROOTBIN)/%: % 297 $(INS.file) 298 299 $(ROOTLIB)/%: % 300 $(INS.file) 301 302 $(ROOTBIN64)/%: % 303 $(INS.file) 304 305 $(ROOTLIB64)/%: % 306 $(INS.file) 307 308 $(ROOTBIN32)/%: % 309 $(INS.file) 310 311 $(ROOTSHLIB)/%: % 312 $(INS.file) 313 314 $(ROOTPKGBIN)/%: % 315 $(INS.file) 316 317 $(ROOTCLASS_SCR_DIR)/%: % 318 $(INS.file) 319 320 $(ROOTADMIN_SRC_DIR)/%: % 321 $(INS.file) 322 323 $(ROOTSBIN)/%: % 324 $(INS.file) 325 326 $(ROOTUSRSBIN)/%: % 327 $(INS.file) 328 329 $(ROOTUSRSBIN32)/%: % 330 $(INS.file) 331 332 $(ROOTUSRSBIN64)/%: % 333 $(INS.file) 334 335 $(ROOTETC)/%: % 336 $(INS.file) 337 338 $(ROOTETCFTPD)/%: % 339 $(INS.file) 340 341 $(ROOTETCINET)/%: % 342 $(INS.file) 343 344 $(ROOTETCDEFAULT)/%: %.dfl 345 $(INS.rename) 346 347 $(ROOTETCTSOL)/%: % 348 $(INS.file) 349 350 $(ROOTETCSECLIB)/%: % 351 $(INS.file) 352 353 $(ROOTETCZONES)/%: % 354 $(INS.file) 355 356 $(ROOTLIBZONES)/%: % 357 $(INS.file) 358 359 $(ROOTLIBXEN)/%: % 360 $(INS.file) 361 362 $(ROOTHASBIN)/%: % 363 $(INS.file) 364 365 $(ROOTHASLIB)/%: % 366 $(INS.file) 367 368 $(ROOTUSRKVM)/%: % 369 $(INS.file) 370 371 $(ROOTXPG4BIN)/%: %.xpg4 372 $(INS.rename) 373 374 $(ROOTXPG4BIN32)/%: %.xpg4 375 $(INS.rename) 376 377 $(ROOTXPG4BIN64)/%: %.xpg4 378 $(INS.rename) 379 380 $(ROOTXPG6BIN)/%: %.xpg6 381 $(INS.rename) 382 383 $(ROOTLOCALEDEF)/%: % 384 $(INS.file) 385 386 $(ROOTCHARMAP)/%: % 387 $(INS.file) 388 389 $(ROOTI18NEXT)/%: % 390 $(INS.file) 391 392 $(ROOTI18NEXT64)/%: % 393 $(INS.file) 394 395 $(ROOTLIBSVCMETHOD)/%: % 396 $(INS.file) 397 398 $(ROOTLIBSVCBIN)/%: % 399 $(INS.file) 400 401 $(ROOTSVCMILESTONE)/%: % 402 $(INS.file) 403 404 $(ROOTSVCDEVICE)/%: % 405 $(INS.file) 406 407 $(ROOTSVCSYSTEM)/%: % 408 $(INS.file) 409 410 $(ROOTSVCSYSTEMDEVICE)/%: % 411 $(INS.file) 412 413 $(ROOTSVCSYSTEMFILESYSTEM)/%: % 414 $(INS.file) 415 416 $(ROOTSVCSYSTEMSECURITY)/%: % 417 $(INS.file) 418 419 $(ROOTSVCNETWORK)/%: % 420 $(INS.file) 421 422 $(ROOTSVCNETWORKLDAP)/%: % 423 $(INS.file) 424 425 $(ROOTSVCNETWORKNFS)/%: % 426 $(INS.file) 427 428 $(ROOTSVCNETWORKNIS)/%: % 429 $(INS.file) 430 431 $(ROOTSVCNETWORKRPC)/%: % 432 $(INS.file) 433 434 $(ROOTSVCNETWORKSECURITY)/%: % 435 $(INS.file) 436 437 $(ROOTSVCNETWORKSSL)/%: % 438 $(INS.file) 439 440 $(ROOTSVCNETWORKIPSEC)/%: % 441 $(INS.file) 442 443 $(ROOTSVCNETWORKSHARES)/%: % 444 $(INS.file) 445 446 $(ROOTSVCNETWORKSMB)/%: % 447 $(INS.file) 448 449 $(ROOTSVCAPPLICATION)/%: % 450 $(INS.file) 451 452 $(ROOTSVCAPPLICATIONMANAGEMENT)/%: % 453 $(INS.file) 454 455 $(ROOTSVCAPPLICATIONSECURITY)/%: % 456 $(INS.file) 457 458 $(ROOTSVCAPPLICATIONPRINT)/%: % 459 $(INS.file) 460 461 $(ROOTSVCPLATFORM)/%: % 462 $(INS.file) 463 464 $(ROOTSVCPLATFORMSUN4U)/%: % 465 $(INS.file) 466 467 $(ROOTSVCPLATFORMSUN4V)/%: % 468 $(INS.file) 469 470 # Install rule for gprof, yacc, and lex dependency files 471 $(ROOTSHLIBCCS)/%: ../common/% 472 $(INS.file) 473 474 $(ROOTCCSBINLINKDIR)/%: % 475 $(INS.ccsbinlink) 476 477 $(ROOTCCSBINLINKDIR64)/%: % 478 $(INS.ccsbinlink64) 479 480 $(ROOTMAN1)/%: %.sunman 481 $(INS.rename) 482 483 $(ROOTMAN1M)/%: %.sunman 484 $(INS.rename) 485 486 $(ROOTMAN3)/%: %.sunman 487 $(INS.rename) 488 489 $(ROOTVARSMB)/%: % 490 $(INS.file) 491 492 # build rule for statically linked programs with single source file. 493 %.static: %.c 494 $(LINK.c) -o $@ $< $(LDLIBS) 495 $(POST_PROCESS) 496 497 %.xpg4: %.c 498 $(LINK.c) -o $@ $< $(LDLIBS) 499 $(POST_PROCESS) 500 501 %.xpg6: %.c 502 $(LINK.c) -o $@ $< $(LDLIBS) 503 $(POST_PROCESS) 504 505 # Define the majority text domain in this directory. 506 TEXT_DOMAIN= SUNW_OST_OSCMD 507 508 CLOBBERFILES += $(XPG4) $(XPG6) $(DCFILE) 509 510 # This flag is for programs which should not build a 32-bit binary 511 sparc_64ONLY= $(POUND_SIGN) 512 64ONLY= $($(MACH)_64ONLY)