6 |
7u83 |
1 |
# TenDRA make install infrastructure
|
|
|
2 |
#
|
|
|
3 |
# $Id$
|
|
|
4 |
|
|
|
5 |
.if !defined(_TENDRA_INSTALL_MK_)
|
|
|
6 |
_TENDRA_INSTALL_MK_=1
|
|
|
7 |
|
|
|
8 |
.include <tendra.base.mk>
|
|
|
9 |
.include <tendra.functions.mk>
|
|
|
10 |
|
|
|
11 |
# Installation infrastructure framework. We come after tendra.build.mk.
|
|
|
12 |
|
|
|
13 |
# For {ENV, MACH, STARTUP}SUBDIR, a real Makefile should exist in each
|
|
|
14 |
# directory and control should be passed via standard SUBDIR mechanism.
|
|
|
15 |
# At the moment, we have to do all the work here, which is *ugly*.
|
|
|
16 |
|
|
|
17 |
# Real workers, mutually exclusive, follow.
|
|
|
18 |
|
|
|
19 |
.if "${API}" != ""
|
|
|
20 |
#
|
|
|
21 |
# Install API.
|
|
|
22 |
#
|
|
|
23 |
|
|
|
24 |
# Relative to .OBJDIR.
|
|
|
25 |
CAPIDIR=building/${API}.api
|
|
|
26 |
SAPIDIR=shared/${API}.api
|
|
|
27 |
HAPIDIR=${API}.api
|
|
|
28 |
|
|
|
29 |
# Absolute target dirs.
|
|
|
30 |
SINSTDIR=${INSTALL_DIR}/lib/include/${SAPIDIR}
|
|
|
31 |
HINSTDIR=${INSTALL_DIR}/lib/include/${HAPIDIR}
|
|
|
32 |
CINSTDIR=${INSTALL_DIR}/lib/${CAPIDIR}
|
|
|
33 |
LINSTDIR=${INSTALL_DIR}/lib
|
|
|
34 |
|
|
|
35 |
_REALINSTALL: .USE
|
|
|
36 |
@${ECHO} "# Installing ${API} API"
|
|
|
37 |
${CONDCREATE} "${HINSTDIR}" "${CINSTDIR}" "${LINSTDIR}";
|
|
|
38 |
${INSTALL} -m 644 ${.OBJDIR}/${API}.tl ${LINSTDIR}
|
|
|
39 |
. for file in ${:!${ECHO} ${CAPIDIR}/*.c ${CAPIDIR}/M_${API}!:T}
|
|
|
40 |
${INSTALL} -m 644 ${CAPIDIR}/${file} ${CINSTDIR}/${file}
|
|
|
41 |
. endfor
|
|
|
42 |
. for file in ${:!${ECHO} ${HAPIDIR}/*.h!:T}
|
|
|
43 |
${INSTALL} -m 644 ${HAPIDIR}/${file} ${HINSTDIR}/${file}
|
|
|
44 |
. endfor
|
|
|
45 |
. if exists(${.OBJDIR}/${SAPIDIR})
|
|
|
46 |
${CONDCREATE} "${SINSTDIR}" ;
|
|
|
47 |
. for file in ${:!${ECHO} ${SAPIDIR}/*.h!:T}
|
|
|
48 |
${INSTALL} -m 644 ${SAPIDIR}/${file} ${SINSTDIR}/${file}
|
|
|
49 |
. endfor
|
|
|
50 |
. endif
|
|
|
51 |
.elif "${ENVFILE}" != ""
|
|
|
52 |
#
|
|
|
53 |
# Install environment(s).
|
|
|
54 |
#
|
|
|
55 |
_REALINSTALL: .USE
|
|
|
56 |
@${ECHO} "# Installing ${ENVFILE} environments"
|
|
|
57 |
${CONDCREATE} "${MACH_BASE}/env" ;
|
|
|
58 |
. for entry in ${ENVFILE}
|
|
|
59 |
${INSTALL} -m 644 ${.OBJDIR}/${entry} ${MACH_BASE}/env/${entry}
|
|
|
60 |
. endfor
|
|
|
61 |
.elif "${PROG}" != ""
|
|
|
62 |
#
|
|
|
63 |
# Install a program.
|
|
|
64 |
#
|
|
|
65 |
_REALINSTALL: .USE
|
|
|
66 |
@${ECHO} "# Installing ${PROG}"
|
|
|
67 |
${CONDCREATE} "${PUBLIC_BIN}" "${MACH_BASE}/bin"
|
|
|
68 |
${INSTALL} -m 755 ${PROG} ${MACH_BASE}/bin/${PROG}
|
|
|
69 |
. if "${WRAPPER}" != ""
|
|
|
70 |
${INSTALL} -m 755 ${WRAPPER} ${PUBLIC_BIN}/${PROG}
|
|
|
71 |
. endif
|
|
|
72 |
.elif "${ENVSUBDIR}" != ""
|
|
|
73 |
#
|
|
|
74 |
# Install startup environments. (XXX: seems it's not ever used in tree)
|
|
|
75 |
#
|
|
|
76 |
_REALINSTALL: .USE
|
|
|
77 |
@${ECHO} "# Installing ${ENVSUBDIR} environment directories"
|
|
|
78 |
${CONDCREATE} "${MACH_BASE}/env" \
|
|
|
79 |
${ENVSUBDIR:S/^/${MACH_BASE}\/startup\//g}
|
|
|
80 |
. for envsub in ${ENVSUBDIR}
|
|
|
81 |
. if exists(${envsub})
|
|
|
82 |
. for file in ${:!${ECHO} ${envsub}/*!:T}
|
|
|
83 |
if [ -f ${IMACH}/${file} ]; then \
|
|
|
84 |
${INSTALL} -m 644 ${envsub}/${file} ${MACH_BASE}/env/${file}; \
|
|
|
85 |
fi
|
|
|
86 |
. endfor
|
|
|
87 |
. endif
|
|
|
88 |
. endfor
|
|
|
89 |
.elif "${STARTUPSUBDIR}" != ""
|
|
|
90 |
#
|
|
|
91 |
# Install additional startup files (?).
|
|
|
92 |
#
|
|
|
93 |
_REALINSTALL: .USE
|
|
|
94 |
@${ECHO} "# Installing ${STARTUPSUBDIR} startup directories"
|
|
|
95 |
${CONDCREATE} ${STARTUPSUBDIR:S/^/${COMMON_DIR}\/startup\//g}
|
|
|
96 |
. for startsub in ${STARTUPSUBDIR}
|
|
|
97 |
. for file in ${:!${ECHO} ${startsub}/*!:T}
|
|
|
98 |
${INSTALL} -m 644 ${startsub}/${file} \
|
|
|
99 |
${COMMON_DIR}/startup/${startsub}/${file}
|
|
|
100 |
. endfor
|
|
|
101 |
. endfor
|
|
|
102 |
.elif "${MACHSUBDIR}" != ""
|
|
|
103 |
#
|
|
|
104 |
# Install machine subdirectory data.
|
|
|
105 |
#
|
|
|
106 |
|
|
|
107 |
# Relative to .CURDIR. XXX: ok?
|
|
|
108 |
IMACH=${MACHSUBDIR}/include
|
|
|
109 |
SMACH=${MACHSUBDIR}/startup
|
|
|
110 |
|
|
|
111 |
_REALINSTALL: .USE
|
|
|
112 |
@${ECHO} "# Installing ${MACHSUBDIR} machine directories"
|
|
|
113 |
${CONDCREATE} "${MACH_BASE}/include" "${MACH_BASE}/startup"
|
|
|
114 |
# XXX: ${IMACH}/sys/* is not installed
|
|
|
115 |
. for file in ${:!${ECHO} ${IMACH}/*!:T}
|
|
|
116 |
if [ -f ${IMACH}/${file} ]; then \
|
|
|
117 |
${INSTALL} -m 644 ${IMACH}/${file} ${MACH_BASE}/include/${file}; \
|
|
|
118 |
fi
|
|
|
119 |
. endfor
|
|
|
120 |
. for file in ${:!${ECHO} ${SMACH}/*!:T}
|
|
|
121 |
${INSTALL} -m 644 ${SMACH}/${file} ${MACH_BASE}/startup/${file}
|
|
|
122 |
. endfor
|
|
|
123 |
.else
|
|
|
124 |
#
|
|
|
125 |
# Nothing to install.
|
|
|
126 |
#
|
|
|
127 |
_REALINSTALL: .USE
|
|
|
128 |
.endif
|
|
|
129 |
|
|
|
130 |
# Install manual pages, if any. See also tendra.build.mk.
|
|
|
131 |
_MANINSTALL: .USE
|
|
|
132 |
.if "${MAN}" != ""
|
|
|
133 |
@${ECHO} "# Installing ${MAN} manual pages"
|
|
|
134 |
. for man in ${MAN}
|
|
|
135 |
${CONDCREATE} "${MAN_DIR}/man${man:E}"
|
|
|
136 |
${INSTALL} -m 444 ${.CURDIR}/${man} ${MAN_DIR}/man${man:E}/${man}
|
|
|
137 |
. endfor
|
|
|
138 |
.endif
|
|
|
139 |
|
|
|
140 |
# Finally, glue all steps together.
|
|
|
141 |
|
|
|
142 |
# Make sure subdirs install after we're done.
|
|
|
143 |
.ORDER: _REALINSTALL _MANINSTALL _SUBDIR
|
|
|
144 |
|
|
|
145 |
# Depending on all not necessary but nice (verify it's not harmful!).
|
|
|
146 |
install: _REALINSTALL _MANINSTALL
|
|
|
147 |
|
|
|
148 |
.endif # !defined(_TENDRA_INSTALL_MK_)
|