Home | History | Annotate | Line # | Download | only in mk
bsd.obj.mk revision 1.44
      1 #	$NetBSD: bsd.obj.mk,v 1.44 2003/07/28 02:38:33 lukem 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 		echo "${__curdir} -> ${__objdir}"; \
     36 	fi
     37 .else
     38 PAWD?=		/bin/pwd
     39 
     40 __objdir=	obj${OBJMACHINE:D.${MACHINE}}
     41 
     42 __usrobjdir=	${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}}
     43 __usrobjdirpf=	${USR_OBJMACHINE:D:U${OBJMACHINE:D.${MACHINE}}}
     44 
     45 .if defined(BUILDID)
     46 __objdir:=	${__objdir}.${BUILDID}
     47 __usrobjdirpf:=	${__usrobjdirpf}.${BUILDID}
     48 __need_objdir_target=yes
     49 .endif
     50 
     51 .if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no")
     52 # In case .CURDIR has been twiddled by a .mk file and is now relative,
     53 # make it absolute again.
     54 .if ${__curdir:M/*} == ""
     55 __curdir!=	cd ${__curdir} && ${PAWD}
     56 .endif
     57 
     58 __objdir:=	${__objdir}.${HOST_OSTYPE}
     59 __usrobjdirpf:=	${__usrobjdirpf}.${HOST_OSTYPE}
     60 __need_objdir_target=yes
     61 .endif
     62 
     63 .if defined(__need_objdir_target)
     64 .OBJDIR:	${__objdir}
     65 .endif
     66 
     67 obj:
     68 	@cd ${__curdir}; \
     69 	here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
     70 	if [ "$$here" != "$$subdir" ]; then \
     71 		if [ ! -d ${__usrobjdir} ]; then \
     72 			echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
     73 			exit 1; \
     74 		fi; \
     75 		subdir=$${subdir%/}; \
     76 		dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
     77 		if  ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \
     78 		    [ "$$dest" = "$$ttarg" ]; then \
     79 			: ; \
     80 		else \
     81 			echo "$${here}${__objdir} -> $$dest"; \
     82 			rm -rf ${__objdir}; \
     83 			ln -s $$dest ${__objdir}; \
     84 		fi; \
     85 		if [ ! -d $$dest ]; then \
     86 			mkdir -p $$dest; \
     87 		else \
     88 			true; \
     89 		fi; \
     90 	else \
     91 		true ; \
     92 		dest=$${here}${__objdir} ; \
     93 		if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
     94 			echo "making $$dest" ; \
     95 			rm -f ${__objdir}; \
     96 			mkdir $$dest; \
     97 		fi ; \
     98 	fi;
     99 .endif
    100 .endif
    101 
    102 print-objdir:
    103 	@echo ${.OBJDIR}
    104 
    105 .include <bsd.sys.mk>
    106 
    107 .endif	# !defined(_BSD_OBJ_MK_)
    108