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