Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – tendra.SVN – Blame – /branches/algol60/mk/tendra.bootstrap.mk – Rev 38

Subversion Repositories tendra.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 7u83 1
# TenDRA make bootstrap infrastructure
2
#
3
# $Id$
4
 
5
.if !defined(_TENDRA_BOOTSTRAP_MK_)
6
_TENDRA_BOOTSTRAP_MK_=1
7
 
8
.include <tendra.base.mk>
9
.include <tendra.rules.mk>
10
 
11
# Do some pretty-printing.
12
WRKDIR=		${.CURDIR:C/^${BASE_DIR}\///1}
13
 
14
# The main target is synthetised based upon actual needs.
15
.if !target(.MAIN)
16
.MAIN: all
17
.endif
18
 
19
# Do it all. Real workers, mutually exclusive, follow.
20
 
21
.if "${API}" != ""
22
#
23
# Build API dependencies.
24
#
25
 
26
api-depend:
27
	@${ECHO} "# Creating API source for ${API}"
28
	${TSPEC} -I${BASE_DIR}/${APIS} -O./ -S./building ${API}
29
 
30
# Include Makefile generated by tspec during api-depend.
31
.sinclude "./building/${API}.api/Makefile"
32
 
33
#
34
# Build API.
35
#
36
_REALWORK: api-depend
37
	cd ${BASE_DIR}/${APIS}/${API}/ && ${.MAKE} makeapi
38
makeapi: ${APILIB}
39
 
40
${APILIB}: ${APIOBJS}
41
	@${ECHO} "# Linking ${API} API"
42
	${TLD} -mc -o ${APILIB} ${APIOBJS}
43
 
44
CLEAN_EXTRA+= ${APILIB} ${APIOBJS} ${APIOBJS:S/.j/.c/} \
45
              ./building/${API}.api/Makefile
46
 
47
_objdir=	${OBJ_DIR}/${APIS}
48
.elif "${ENVFILE}" != ""
49
#
50
# Build environments.
51
#
52
fixenv.sed:
53
	@${ECHO} "# Create ${.TARGET}"
54
	@${ECHO} "1,\$$s%-MACH-%${OSFAM}/${BLDARCH}%g" 		\
55
		> ${OBJ_DIR}/${.TARGET}
56
	@${ECHO} "1,\$$s%-BLDARCH-%${BLDARCH}%g" 		\
57
		>> ${OBJ_DIR}/${.TARGET}
58
	@${ECHO} "1,\$$s%-OSFAM-%${OSFAM}%g" 			\
59
		>> ${OBJ_DIR}/${.TARGET}
60
	@${ECHO} "1,\$$s%-MACHDIR-%${MACH_BASE}%g" 		\
61
		>> ${OBJ_DIR}/${.TARGET}
62
	@${ECHO} "1,\$$s%-BINDIR-%${MACH_BASE}/bin%g" 		\
63
		>> ${OBJ_DIR}/${.TARGET}
64
	@${ECHO} "1,\$$s%-ENVDIR-%${MACH_BASE}/env%g" 		\
65
		>> ${OBJ_DIR}/${.TARGET}
66
	@${ECHO} "1,\$$s%-LIBDIR-%${MACH_BASE}/lib%g" 		\
67
		>> ${OBJ_DIR}/${.TARGET}
68
	@${ECHO} "1,\$$s%-INCLDIR-%${COMMON_DIR}/include%g" 	\
69
		>> ${OBJ_DIR}/${.TARGET}
70
	@${ECHO} "1,\$$s%-STARTUPDIR-%${COMMON_DIR}/startup%g" 	\
71
		>> ${OBJ_DIR}/${.TARGET}
72
	@${ECHO} "1,\$$s%-TMPDIR-%${TMP_DIR}%g" 		\
73
		>> ${OBJ_DIR}/${.TARGET}
74
 
75
_REALWORK: fixenv.sed .USE
76
	@${ECHO} "# Fixing paths for ${ENVFILE} environments"
77
. for entry in ${ENVFILE}
78
	sed -f ${OBJ_DIR}/fixenv.sed ${.CURDIR}/${entry} > ${OBJ_DIR}/${ENVIRONMENT}/${entry}
79
. endfor
80
. if "${ENVEXTRA}" != ""
81
	cat ${.CURDIR}/${ENVEXTRA} >> ${OBJ_DIR}/${ENVIRONMENT}/build
82
	cat ${.CURDIR}/${ENVEXTRA} >> ${OBJ_DIR}/${ENVIRONMENT}/bootstrap
83
. endif
84
 
85
_objdir=	${OBJ_DIR}/${ENVIRONMENT}
86
.elif "${SYS_FILES}" || "${TDFLIB}" != ""
87
#
88
# Build token definition.
89
#
90
_REALWORK: .USE
91
	@${ECHO} "# Building ${TDFLIB} token definition"
92
 
93
_objdir=        ${OBJ_SDIR}
94
.elif "${PROG}" != ""
95
#
96
# Build a program.
97
#
98
. if !defined(MAN) && exists(${.CURDIR}/${PROG}.1)
99
MAN=	${PROG}.1
100
. endif
101
 
102
${PROG}: ${OBJS}
38 7u83 103
	echo "PROG Maker !!!!!!!!!!!!!!!!!"
6 7u83 104
	@${ECHO} "# Linking ${WRKDIR}/${PROG}"
105
	${CC} ${LDOPTS} -o ${PROG} ${OBJS} ${LIBS}
106
 
107
_REALWORK: ${PROG} .USE
108
. if defined(WRAPPER)
109
	@${ECHO} "# Adjusting paths for ${WRAPPER}"
110
	sed -e 1,\$$s%@@MACH_BASE@@%${MACH_BASE}%g \
111
		-e 1,\$$s%@@PREFIX@@%${PREFIX}%g \
112
		${.CURDIR}/${WRAPPER} > ${WRAPPER}
113
. endif
114
 
115
CLEAN_EXTRA+=	${PROG} ${PROG}.core core ${OBJS}
116
_objdir=	${OBJ_SDIR}
117
.elif "${LIB}" != ""
118
#
119
# Build a library
120
#
121
_REALWORK: lib${LIB}.a
122
 
123
lib${LIB}.a: ${OBJS}
124
	${AR} cr ${.TARGET} ${OBJS}
125
	${RANLIB} ${.TARGET}
126
 
127
_objdir=	${OBJ_SDIR}
128
.else
129
#
130
# Nothing to do here.
131
#
132
_REALWORK:
133
.endif
134
 
135
# Suppport targets.
136
 
137
# Remove registered garbage.
138
clean:
139
.if "${CLEAN_EXTRA}" != ""
140
	@${ECHO} "# Cleaning ${.CURDIR}"
141
	${REMOVE} ${CLEAN_EXTRA}
142
.endif
143
 
144
# Clean objdir blindly.
145
cleandir:
146
.if "${_objdir}" != ""
147
	${REMOVE} ${_objdir}/* 2> /dev/null
148
.endif
149
 
150
# Remove obj symlink from curdir.
151
cleanobj:
152
.if "${_objdir}" != ""
153
	@if ${TEST} -h ${.CURDIR}/obj ; then \
154
		${ECHO} "# Removing obj link ${WRKDIR}/obj" ; \
155
		${REMOVE} ${.CURDIR}/obj ; \
156
		${REMOVE} ${OBJ_DIR_INDICATOR} 2> /dev/null ; \
157
	fi
158
.endif
159
 
160
# Create objdir and its symlink.
161
obj:
162
.if "${_objdir}" != "" && (!exists(${_objdir}) || !exists(obj))
163
. if !exists(${_objdir})
164
	@${ECHO} "# Creating objdir ${_objdir}"
165
	@${MKDIR} -p ${_objdir}
166
. endif
167
.endif
168
.if "${_objdir}" != ""
169
	@${REMOVE} ${.CURDIR}/obj
170
	@${LN} -sf ${_objdir} ${.CURDIR}/obj
171
.endif
172
 
173
# Glue all the steps together.
174
 
175
all: _REALWORK
176
 
177
# Make sure subdirs are walked after real work is done.
178
.ORDER: _REALWORK _SUBDIR
179
 
180
# Proceed to subdirs.
181
_SUBDIR: .USE
182
.if defined(SUBDIR) && !empty(SUBDIR)
183
. for entry in ${SUBDIR}
184
	@cd ${.CURDIR}/${entry}; ${MAKE} ${.TARGET}
185
. endfor
186
.endif
187
 
188
# Ensure existence of basic targets.
189
.for target in obj all clean install cleanobj cleandir
190
${target}: _SUBDIR .PHONY
191
.endfor
192
 
193
.endif	# !defined(_TENDRA_BOOTSTRAP_MK_)