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