Home | History | Annotate | Line # | Download | only in mk
bsd.obj.mk revision 1.51
      1  1.51  christos #	$NetBSD: bsd.obj.mk,v 1.51 2016/12/10 23:12:39 christos Exp $
      2  1.44     lukem 
      3  1.44     lukem .if !defined(_BSD_OBJ_MK_)
      4  1.44     lukem _BSD_OBJ_MK_=1
      5  1.17     lukem 
      6  1.17     lukem .include <bsd.own.mk>
      7   1.1   mycroft 
      8  1.29        tv __curdir:=	${.CURDIR}
      9  1.29        tv 
     10  1.16     lukem .if ${MKOBJ} == "no"
     11   1.1   mycroft obj:
     12   1.1   mycroft .else
     13  1.24     itohy .if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
     14  1.23       sjg .if defined(MAKEOBJDIRPREFIX)
     15  1.34        tv __objdir:= ${MAKEOBJDIRPREFIX}${__curdir}
     16  1.23       sjg .else
     17  1.23       sjg __objdir:= ${MAKEOBJDIR}
     18  1.23       sjg .endif
     19  1.23       sjg # MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported
     20  1.23       sjg # by make(1).  We simply mkdir -p the specified path.
     21  1.23       sjg # If that fails - we do a mkdir to get the appropriate error message
     22  1.23       sjg # before bailing out.
     23  1.23       sjg obj:
     24  1.37       jmc .if defined(MAKEOBJDIRPREFIX)
     25  1.37       jmc 	@if [ ! -d ${MAKEOBJDIRPREFIX} ]; then \
     26  1.37       jmc 		echo "MAKEOBJDIRPREFIX ${MAKEOBJDIRPREFIX} does not exist, bailing..."; \
     27  1.37       jmc 		exit 1; \
     28  1.41     lukem 	fi;
     29  1.37       jmc .endif
     30  1.30        tv 	@if [ ! -d ${__objdir} ]; then \
     31  1.23       sjg 		mkdir -p ${__objdir}; \
     32  1.30        tv 		if [ ! -d ${__objdir} ]; then \
     33  1.23       sjg 			mkdir ${__objdir}; exit 1; \
     34  1.23       sjg 		fi; \
     35  1.45     lukem 		${_MKSHMSG} " objdir  ${__objdir}"; \
     36  1.23       sjg 	fi
     37  1.23       sjg .else
     38  1.32        tv PAWD?=		/bin/pwd
     39  1.32        tv 
     40  1.51  christos __objdirsuffix=	${OBJMACHINE:D.${MACHINE}${OBJMACHINE_ARCH:D-${MACHINE_ARCH}}}
     41  1.50  christos __objdir=	obj${__objdirsuffix}
     42   1.3       cgd 
     43  1.33        tv __usrobjdir=	${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}}
     44  1.50  christos __usrobjdirpf=	${USR_OBJMACHINE:D:U${__objdirsuffix}}
     45  1.32        tv 
     46  1.40   thorpej .if defined(BUILDID)
     47  1.40   thorpej __objdir:=	${__objdir}.${BUILDID}
     48  1.40   thorpej __usrobjdirpf:=	${__usrobjdirpf}.${BUILDID}
     49  1.40   thorpej __need_objdir_target=yes
     50  1.40   thorpej .endif
     51  1.40   thorpej 
     52  1.35        tv .if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no")
     53  1.32        tv # In case .CURDIR has been twiddled by a .mk file and is now relative,
     54  1.32        tv # make it absolute again.
     55  1.34        tv .if ${__curdir:M/*} == ""
     56  1.49  christos __curdir!=	cd "${__curdir}" && ${PAWD}
     57   1.3       cgd .endif
     58   1.3       cgd 
     59  1.32        tv __objdir:=	${__objdir}.${HOST_OSTYPE}
     60  1.32        tv __usrobjdirpf:=	${__usrobjdirpf}.${HOST_OSTYPE}
     61  1.40   thorpej __need_objdir_target=yes
     62  1.40   thorpej .endif
     63  1.40   thorpej 
     64  1.40   thorpej .if defined(__need_objdir_target)
     65  1.48     lukem # Get make to change its internal definition of .OBJDIR
     66  1.32        tv .OBJDIR:	${__objdir}
     67  1.32        tv .endif
     68  1.18       kim 
     69  1.12   mycroft obj:
     70  1.49  christos 	@cd "${__curdir}"; \
     71  1.30        tv 	here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
     72  1.31        tv 	if [ "$$here" != "$$subdir" ]; then \
     73  1.30        tv 		if [ ! -d ${__usrobjdir} ]; then \
     74  1.27       mrg 			echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
     75  1.27       mrg 			exit 1; \
     76  1.27       mrg 		fi; \
     77  1.30        tv 		subdir=$${subdir%/}; \
     78  1.30        tv 		dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
     79  1.46     lukem 		if  [ -x ${TOOL_STAT} ] && \
     80  1.46     lukem 		    ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \
     81  1.42     lukem 		    [ "$$dest" = "$$ttarg" ]; then \
     82  1.42     lukem 			: ; \
     83  1.22  sommerfe 		else \
     84  1.45     lukem 			${_MKSHMSG} " objdir  $$dest"; \
     85  1.22  sommerfe 			rm -rf ${__objdir}; \
     86  1.22  sommerfe 			ln -s $$dest ${__objdir}; \
     87  1.22  sommerfe 		fi; \
     88  1.30        tv 		if [ ! -d $$dest ]; then \
     89   1.1   mycroft 			mkdir -p $$dest; \
     90   1.1   mycroft 		else \
     91   1.1   mycroft 			true; \
     92   1.1   mycroft 		fi; \
     93   1.1   mycroft 	else \
     94   1.1   mycroft 		true ; \
     95  1.31        tv 		dest=$${here}${__objdir} ; \
     96  1.30        tv 		if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
     97  1.45     lukem 			${_MKSHMSG} " objdir  $$dest"; \
     98  1.22  sommerfe 			rm -f ${__objdir}; \
     99   1.1   mycroft 			mkdir $$dest; \
    100   1.1   mycroft 		fi ; \
    101   1.1   mycroft 	fi;
    102  1.23       sjg .endif
    103   1.1   mycroft .endif
    104  1.14        tv 
    105  1.15        tv print-objdir:
    106  1.14        tv 	@echo ${.OBJDIR}
    107  1.43     lukem 
    108  1.43     lukem .include <bsd.sys.mk>
    109  1.44     lukem 
    110  1.44     lukem .endif	# !defined(_BSD_OBJ_MK_)
    111