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
55 _msg
:= TARGET
= catalog
57 USRSBINF
= df clri fsck volcopy ff
58 USRSBINCLRI
= dcopy fsdb fssnap labelit mkfs
61 ETC2SBIN
= mount umount
62 ETC2USRSBIN
= clri fsdb mkfs fsck labelit dcopy volcopy ff ncheck
67 ROOTSBINPROG
= $(ROOTFS_PROG
:%=$(ROOTSBIN
)/%)
68 ROOTUSRSBINLINKS
= $(ROOTFS_PROG
:%=$(ROOTUSRSBIN
)/%)
70 ROOTUSRSBINF
= $(USRSBINF
:%=$(ROOTUSRSBIN
)/%)
71 ROOTUSRSBINCLRI
= $(USRSBINCLRI
:%=$(ROOTUSRSBIN
)/%)
72 ROOTUSRSBINFF
= $(USRSBINFF
:%=$(ROOTUSRSBIN
)/%)
73 ROOTETCMNTTAB
= $(MNTTAB
:%=$(ROOTETC
)/%)
74 SYMETC2SBIN
= $(ETC2SBIN
:%=$(ROOTETC
)/%)
75 SYMETC2USRSBIN
= $(ETC2USRSBIN
:%=$(ROOTETC
)/%)
76 SYMUSRBIN2USRSBIN
= $(USRBIN2USRSBIN
:%=$(ROOTBIN
)/%)
77 SYMDEVNM
= $(ROOTUSRSBIN
)/devnm
79 CPPFLAGS
+= -D_LARGEFILE64_SOURCE
81 CERRWARN
+= -Wno-implicit-function-declaration
82 CERRWARN
+= -Wno-parentheses
83 CERRWARN
+= -Wno-unused-variable
84 CERRWARN
+= -Wno-uninitialized
85 CERRWARN
+= -Wno-unused-function
87 $(SPPROG
) := LDLIBS
+= -lkstat
89 $(ROOTETCMNTTAB
) := FILEMODE
= 444
91 # for messaging catalog
94 POFILES1
= $(PROG
:%=%.po
) $(ROOTFS_PROG
:%=%.po
) switchout.po fssnapsup.po
95 POFILES2
= $(I18NDIRS
:%=%/%.po
)
96 POFILES
= $(POFILES1
) $(POFILES2
)
97 volcopy.po
:= XGETFLAGS
+= -a
-x volcopy.xcl
98 $(DFPROG
).po
:= XGETFLAGS
+= -a
-x df.xcl
102 # This is too intense when building the whole world.
103 # .PARALLEL: $(SUBDIRS)
105 all: $(FSLIB
) .WAIT
$(SUBDIRS
) .WAIT all_local
107 _msg
: $(I18NDIRS
) $(POFILES1
)
109 cat
$(POFILES
) > $(POFILE
)
110 $(RM
) $(MSGDOMAIN
)/$(POFILE
)
111 cp
$(POFILE
) $(MSGDOMAIN
)
113 all_local
: $(PROG
) $(ROOTFS_PROG
) $(SPPROG
) $(MNTTAB
) \
116 ff volcopy
: deffs.o
$$(@F
).o
117 $(LINK.c
) -o
$@
$@.o deffs.o
$(LDLIBS
)
120 df
: deffs.o
$(FSLIB
) $$(@F
).o
121 $(LINK.c
) -o
$@
$@.o deffs.o
$(FSLIB
) $(LDLIBS
)
124 fsck
: fsck.o deffs.o preenlib.o
125 $(LINK.c
) -o
$@ fsck.o deffs.o preenlib.o
$(LDLIBS
)
128 mount
: deffs.o mount.o
$(FSLIB
)
129 $(LINK.c
) -o
$@ mount.o deffs.o
$(FSLIB
) $(LDLIBS
)
132 umount
: umount.o
$(FSLIB
)
133 $(LINK.c
) -o
$@ umount.o
$(FSLIB
) $(LDLIBS
)
136 $(SPPROG
): switchout.o deffs.o fssnapsup.o
137 $(LINK.c
) -o
$@ switchout.o deffs.o fssnapsup.o
$(LDLIBS
) -ldiskmgt
140 install: $(FSLIB
) .WAIT
$(SUBDIRS
) .WAIT install_local
142 install_local
: all_local
$(ROOTSBINPROG
) $(ROOTUSRSBINF
) $(ROOTUSRSBINCLRI
) \
143 $(ROOTUSRSBINFF
) $(ROOTETCMNTTAB
) $(ROOTETCDEFAULTFILES
) \
144 $(SYMETC2SBIN
) $(SYMETC2USRSBIN
) \
145 $(SYMUSRBIN2USRSBIN
) $(SYMDEVNM
) \
148 # Links from /etc to /sbin such as /etc/mount -> ../sbin/mount
150 -$(RM
) $@
; $(SYMLINK
) ..
/sbin
/$(@F
) $@
152 # Links from /etc to /usr/sbin such as /etc/clri -> ../usr/sbin/clri
154 -$(RM
) $@
; $(SYMLINK
) ..
/usr
/sbin
/$(@F
) $@
156 # Links from /usr/bin to /usr/sbin such as /usr/bin/df -> ../sbin/df
157 $(SYMUSRBIN2USRSBIN
):
158 -$(RM
) $@
; $(SYMLINK
) ..
/sbin
/$(@F
) $@
160 # Links from /usr/sbin to /sbin such as /usr/sbin/mount -> ../../sbin/mount
162 -$(RM
) $@
; $(SYMLINK
) ..
/..
/sbin
/$(@F
) $@
164 # Symlink from devnm to df in /usr/sbin
166 -$(RM
) $@
; $(SYMLINK
) .
/df
$@
168 # Multiple names for switchout (clri, dcopy, fsdb, labelit, mkfs)
169 $(ROOTUSRSBINCLRI
): $(ROOTUSRSBIN
)/clri
170 -$(RM
) $@
; $(SYMLINK
) .
/clri
$@
176 $(RM
) $@
; $(ECHO
) "LOCAL=ufs" >$@
178 # Multiple names for ff (ncheck)
179 $(ROOTUSRSBINFF
): $(ROOTUSRSBIN
)/ff
180 -$(RM
) $@
; $(SYMLINK
) .
/ff
$@
182 clean: $(SUBDIRS
) .WAIT clean_local
186 clobber: $(SUBDIRS
) .WAIT clobber_local
187 clobber_local
: clean_local
188 $(RM
) $(PROG
) $(ROOTFS_PROG
) $(SPPROG
) $(MNTTAB
) $(DEFAULTFILES
) \
193 @cd
$@
; pwd
; $(MAKE
) $(MFLAGS
) $(TARGET
)