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