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.
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.
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]
21 # Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
22 # Copyright 2015 Nexenta Systems, Inc. All rights reserved.
25 # The filesystem independent utilities clri, fsdb, dcopy, labelit, and mkfs
26 # are all built from the source file switchout.c. They are all then links
27 # to the same object. This is accomplished by:
28 # 1) building clri from switchout.c (had to choose one)
29 # 2) installing it in the target directory
30 # 3) linking the others to clri.
31 # In a similar manner, ncheck is linked to ff.
34 PROG
= $(DFPROG
) fsck volcopy ff
35 ROOTFS_PROG
= mount umount
40 include ..
/Makefile.cmd
42 SUBDIR1
= bootfs lofs zfs
43 SUBDIR2
= dev fd pcfs nfs hsfs proc ctfs udfs ufs tmpfs \
44 autofs mntfs objfs sharefs smbclnt reparsed
45 SUBDIRS
= $(SUBDIR1
) $(SUBDIR2
)
48 CLEANFILES
+= deffs.o df.o ff.o fsck.o fssnapsup.o \
49 mount.o preenlib.o switchout.o umount.o volcopy.o
52 install:= TARGET
= install
54 clobber:= TARGET
= clobber
56 _msg
:= TARGET
= catalog
58 USRSBINF
= df clri fsck volcopy ff
59 USRSBINCLRI
= dcopy fsdb fssnap labelit mkfs
62 ETC2SBIN
= mount umount
63 ETC2USRSBIN
= clri fsdb mkfs fsck labelit dcopy volcopy ff ncheck
65 USRXPG4BIN2USRSBIN
= df
69 ROOTSBINPROG
= $(ROOTFS_PROG
:%=$(ROOTSBIN
)/%)
70 ROOTUSRSBINLINKS
= $(ROOTFS_PROG
:%=$(ROOTUSRSBIN
)/%)
72 ROOTUSRSBINF
= $(USRSBINF
:%=$(ROOTUSRSBIN
)/%)
73 ROOTUSRSBINCLRI
= $(USRSBINCLRI
:%=$(ROOTUSRSBIN
)/%)
74 ROOTUSRSBINFF
= $(USRSBINFF
:%=$(ROOTUSRSBIN
)/%)
75 ROOTETCMNTTAB
= $(MNTTAB
:%=$(ROOTETC
)/%)
76 SYMETC2SBIN
= $(ETC2SBIN
:%=$(ROOTETC
)/%)
77 SYMETC2USRSBIN
= $(ETC2USRSBIN
:%=$(ROOTETC
)/%)
78 SYMUSRBIN2USRSBIN
= $(USRBIN2USRSBIN
:%=$(ROOTBIN
)/%)
79 SYMUSRXPG4BIN2USRSBIN
= $(USRXPG4BIN2USRSBIN
:%=$(ROOTXPG4BIN
)/%)
80 SYMDEVNM
= $(ROOTUSRSBIN
)/devnm
82 CPPFLAGS
+= -D_LARGEFILE64_SOURCE
84 CERRWARN
+= -_gcc
=-Wno-implicit-function-declaration
85 CERRWARN
+= -_gcc
=-Wno-parentheses
86 CERRWARN
+= -_gcc
=-Wno-unused-variable
87 CERRWARN
+= -_gcc
=-Wno-uninitialized
88 CERRWARN
+= -_gcc
=-Wno-unused-function
90 $(SPPROG
) := LDLIBS
+= -lkstat
92 $(ROOTETCMNTTAB
) := FILEMODE
= 444
94 # for messaging catalog
97 POFILES1
= $(PROG
:%=%.po
) $(ROOTFS_PROG
:%=%.po
) switchout.po fssnapsup.po
98 POFILES2
= $(I18NDIRS
:%=%/%.po
)
99 POFILES
= $(POFILES1
) $(POFILES2
)
100 volcopy.po
:= XGETFLAGS
+= -a
-x volcopy.xcl
101 $(DFPROG
).po
:= XGETFLAGS
+= -a
-x df.xcl
105 # This is too intense when building the whole world.
106 # .PARALLEL: $(SUBDIRS)
108 all: $(FSLIB
) .WAIT
$(SUBDIRS
) .WAIT all_local
110 _msg
: $(I18NDIRS
) $(POFILES1
)
112 cat
$(POFILES
) > $(POFILE
)
113 $(RM
) $(MSGDOMAIN
)/$(POFILE
)
114 cp
$(POFILE
) $(MSGDOMAIN
)
116 all_local
: $(PROG
) $(ROOTFS_PROG
) $(SPPROG
) $(MNTTAB
) \
119 ff volcopy
: deffs.o
$$(@F
).o
120 $(LINK.c
) -o
$@
$@.o deffs.o
$(LDLIBS
)
123 df
: deffs.o
$(FSLIB
) $$(@F
).o
124 $(LINK.c
) -o
$@
$@.o deffs.o
$(FSLIB
) $(LDLIBS
)
127 fsck
: fsck.o deffs.o preenlib.o
128 $(LINK.c
) -o
$@ fsck.o deffs.o preenlib.o
$(LDLIBS
)
131 mount
: deffs.o mount.o
$(FSLIB
)
132 $(LINK.c
) -o
$@ mount.o deffs.o
$(FSLIB
) $(LDLIBS
)
135 umount
: umount.o
$(FSLIB
)
136 $(LINK.c
) -o
$@ umount.o
$(FSLIB
) $(LDLIBS
)
139 $(SPPROG
): switchout.o deffs.o fssnapsup.o
140 $(LINK.c
) -o
$@ switchout.o deffs.o fssnapsup.o
$(LDLIBS
) -ldiskmgt
143 install: $(FSLIB
) .WAIT
$(SUBDIRS
) .WAIT install_local
145 install_local
: all_local
$(ROOTSBINPROG
) $(ROOTUSRSBINF
) $(ROOTUSRSBINCLRI
) \
146 $(ROOTUSRSBINFF
) $(ROOTETCMNTTAB
) $(ROOTETCDEFAULTFILES
) \
147 $(SYMETC2SBIN
) $(SYMETC2USRSBIN
) \
148 $(SYMUSRBIN2USRSBIN
) $(SYMUSRXPG4BIN2USRSBIN
) $(SYMDEVNM
) \
151 # Links from /etc to /sbin such as /etc/mount -> ../sbin/mount
153 -$(RM
) $@
; $(SYMLINK
) ..
/sbin
/$(@F
) $@
155 # Links from /etc to /usr/sbin such as /etc/clri -> ../usr/sbin/clri
157 -$(RM
) $@
; $(SYMLINK
) ..
/usr
/sbin
/$(@F
) $@
159 # Links from /usr/bin to /usr/sbin such as /usr/bin/df -> ../sbin/df
160 $(SYMUSRBIN2USRSBIN
):
161 -$(RM
) $@
; $(SYMLINK
) ..
/sbin
/$(@F
) $@
163 # Links from /usr/xpg4/bin to /usr/sbin such as /usr/xpg4/bin/df -> ../sbin/df
164 $(SYMUSRXPG4BIN2USRSBIN
):
165 -$(RM
) $@
; $(SYMLINK
) ..
/..
/sbin
/$(@F
) $@
167 # Links from /usr/sbin to /sbin such as /usr/sbin/mount -> ../../sbin/mount
169 -$(RM
) $@
; $(SYMLINK
) ..
/..
/sbin
/$(@F
) $@
171 # Symlink from devnm to df in /usr/sbin
173 -$(RM
) $@
; $(SYMLINK
) .
/df
$@
175 # Multiple names for switchout (clri, dcopy, fsdb, labelit, mkfs)
176 $(ROOTUSRSBINCLRI
): $(ROOTUSRSBIN
)/clri
177 -$(RM
) $@
; $(SYMLINK
) .
/clri
$@
183 $(RM
) $@
; $(ECHO
) "LOCAL=ufs" >$@
185 # Multiple names for ff (ncheck)
186 $(ROOTUSRSBINFF
): $(ROOTUSRSBIN
)/ff
187 -$(RM
) $@
; $(SYMLINK
) .
/ff
$@
189 clean: $(SUBDIRS
) .WAIT clean_local
193 clobber: $(SUBDIRS
) .WAIT clobber_local
194 clobber_local
: clean_local
195 $(RM
) $(PROG
) $(ROOTFS_PROG
) $(SPPROG
) $(MNTTAB
) $(DEFAULTFILES
) \
201 @cd
$@
; pwd
; $(MAKE
) $(MFLAGS
) $(TARGET
)