1# $MirOS: src/share/mk/bsd.cfwrap.mk,v 1.25 2013/08/19 17:35:39 tg Exp $
2
3.if !defined(BSD_CFWRAP_MK)
4BSD_CFWRAP_MK=1
5
6.if !defined(BSD_OWN_MK)
7.  include <bsd.own.mk>
8.endif
9.if !defined(BSD_SYS_MK)
10.  include <bsd.sys.mk>
11.endif
12
13.if !target(.MAIN)
14.  if exists(${.CURDIR}/../Makefile.inc)
15.    include "${.CURDIR}/../Makefile.inc"
16.  endif
17
18.MAIN: all
19.endif
20
21INSTALL_PROGRAM=	${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} \
22			    -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
23INSTALL_SCRIPT=		${INSTALL} ${INSTALL_COPY} \
24			    -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
25INSTALL_DATA=		${INSTALL} ${INSTALL_COPY} \
26			    -o ${BINOWN} -g ${BINGRP} -m ${SHAREMODE}
27INSTALL_MAN=		${INSTALL} ${INSTALL_COPY} \
28			    -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
29INSTALL_DOC=		${INSTALL} ${INSTALL_COPY} \
30			    -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE}
31
32GCCHOST?=	${OStriplet}
33GCCTARGET?=	${OStriplet}
34ALL_TARGET?=	all
35INST_TARGET?=	install
36FSFMAKEFILE?=	Makefile
37CLEANFILES+=	config.cache config.log
38FSFISLIB?=	Yes
39FSFMAKE?=	${XVARS} ${MAKE} ${FSFMARGS} ${XARGS}
40FSFSRC?=	${.CURDIR}
41.if !defined(FSFOBJDIR)
42FSFOBJDIR!=	realpath ${.OBJDIR}
43.endif
44
45.PATH: ${FSFSRC}
46
47.if ${FSFMAKEFILE} != "Makefile"
48FSFMARGS+=	-f ${FSFMAKEFILE}
49.endif
50
51HOSTCFLAGS?=	${CFLAGS} ${COPTS}
52
53FSFCFLAGS+=	${CFLAGS} ${COPTS}
54FSFCXXFLAGS+=	${CXXFLAGS} ${CXXOPTS} -fno-omit-frame-pointer
55FSFHOSTCFLAGS+=	${HOSTCFLAGS}
56
57.if ${FSFCFLAGS:M*Werror*} || ${FSFCXXFLAGS:M*Werror*}
58FSFCFLAGS+=	-Werror-maybe-reset
59FSFCXXFLAGS+=	-Werror-maybe-reset
60FSFHOSTCFLAGS+=	-Werror-maybe-reset
61.endif
62
63.if (${DEBUGLIBS:L} == "yes") && (${FSFISLIB:L} == "yes")
64FSFCDEBUG=	-g1
65FSFCFLAGS+=	${FSFCDEBUG} -fno-omit-frame-pointer
66FSFCXXFLAGS+=	${FSFCDEBUG}
67FSFHOSTCFLAGS+=	${FSFCDEBUG} -fno-omit-frame-pointer
68.endif
69.if defined(MKC_DEBG) && (${MKC_DEBG:L} != "no")
70FSFCDEBUG=	-g3
71.endif
72
73.if !defined(CFWRAP_NO_CCOM)
74XVARS+=	CC=${CC:NGCC_HONOUR_COPTS=*:M*:Q} CFLAGS=${FSFCFLAGS:M*:Q} CPP=${CPP:Q}
75.  if !defined(CFWRAP_NO_CXXCOM)
76XVARS+=	CXX=${CXX:M*:Q} CXXFLAGS=${FSFCXXFLAGS:M*:Q}
77.  endif
78XVARS+=	HOSTCFLAGS=${FSFHOSTCFLAGS:M*:Q} CC_FOR_BUILD=${HOSTCC:M*:Q}
79XVARS+=	CFLAGS_FOR_BUILD=${FSFHOSTCFLAGS:M*:Q}
80.endif
81
82XARGS+=	INSTALL_PROGRAM=${INSTALL_PROGRAM:Q} INSTALL_DATA=${INSTALL_DATA:Q} \
83	INSTALL_SCRIPT=${INSTALL_SCRIPT:Q} BSDSRCDIR=${BSDSRCDIR:Q} \
84	GNUSYSTEM_AUX_DIR=${GNUSYSTEM_AUX_DIR:Q} SHELL=${SHELL:Q} \
85	CONFIG_SHELL=${SHELL:Q} PICFLAG=${PICFLAG:Q} DESTDIR=${DESTDIR:Q}
86
87XVARS+=	CPPFLAGS=${CPPFLAGS:C/ *$//:Q} LDFLAGS=${LDFLAGS:Q}\ ${LDSTATIC:Q} \
88	INSTALL_STRIP=${INSTALL_STRIP:Q} GCC_HONOUR_COPTS=1
89
90_CFVARS+=${XVARS} ${XARGS} GCC_NO_WERROR=1 GCC_HONOUR_COPTS=0 ${CFVARS}
91
92CFARGS+=--build=${OStriplet} --host=${GCCHOST} --srcdir=${FSFSRC}
93.if ${GCCTARGET} != ${GCCHOST}
94CFARGS+=--target=${GCCTARGET}
95.endif
96.if ${NOPIC:L} != "no"
97CF_PIC=	--disable-shared
98.else
99CF_PIC=	--enable-shared
100.endif
101
102all: _SUBDIRUSE do-build
103
104prereq: config.status
105
106config: config.clean config.status
107
108config.clean:
109	rm -f config.cache config.status
110
111config.status: ${FSFMAKEFILE}.in configure
112	cd ${FSFOBJDIR} && ${_CFVARS} ${SHELL} ${FSFSRC}/configure ${CFARGS}
113
114build: config.status
115	cd ${FSFOBJDIR} && ${FSFMAKE} ${ALL_TARGET}
116
117.if !target(do-build)
118do-build: build
119.endif
120
121install: _SUBDIRUSE pre-install do-install maninstall linkinstall post-install
122
123.if !target(do-install)
124do-install:
125	cd ${FSFOBJDIR} && ${FSFMAKE} ${INST_TARGET}
126.endif
127
128pre-install:
129
130post-install:
131
132linkinstall:
133.if defined(LINKS) && !empty(LINKS)
134.  for lnk file in ${LINKS}
135	@l=${DESTDIR}${lnk}; \
136	 t=${DESTDIR}${file}; \
137	 print -r -- $$t -\> $$l; \
138	 rm -f $$t; ln $$l $$t || cp $$l $$t
139.  endfor
140.endif
141
142.if ${NOMAN:L} != "no"
143maninstall:
144.endif
145
146.for _tgt in depend lint tags
147.  if !target(${_tgt})
148${_tgt}: _SUBDIRUSE
149.  endif
150.endfor
151
152clean: _SUBDIRUSE pre-clean do-clean post-clean
153
154pre-clean:
155
156.if !target(do-clean)
157do-clean:
158	-if test -e ${FSFMAKEFILE}; then \
159		cd ${FSFOBJDIR} && ${FSFMAKE} distclean; \
160	fi
161.endif
162
163post-clean:
164	-rm -rf ${CLEANFILES}
165
166cleandir: _SUBDIRUSE clean
167
168.include <bsd.obj.mk>
169.include <bsd.subdir.mk>
170.if ${NOMAN:L} == "no"
171.  include <bsd.man.mk>
172.endif
173
174.PHONY:	all prereq config config.clean build do-build install \
175	pre-install do-install maninstall post-install depend \
176	lint tags clean pre-clean do-clean post-clean cleandir
177
178.endif
179