own.mk revision 281812
1306196Sjkim# $Id: own.mk,v 1.28 2015/04/16 16:59:00 sjg Exp $ 2110010Smarkm 3110010Smarkm.if !target(__${.PARSEFILE}__) 4160819Ssimon__${.PARSEFILE}__: 5110010Smarkm 6110010Smarkm.if !target(__init.mk__) 7110010Smarkm.include "init.mk" 8110010Smarkm.endif 9110010Smarkm 10110010Smarkm.ifndef NOMAKECONF 11110010SmarkmMAKECONF?= /etc/mk.conf 12110010Smarkm.-include "${MAKECONF}" 13110010Smarkm.endif 14110010Smarkm 15110010Smarkm.include <host-target.mk> 16110010Smarkm 17110010SmarkmTARGET_OSNAME?= ${_HOST_OSNAME} 18110010SmarkmTARGET_OSREL?= ${_HOST_OSREL} 19110010SmarkmTARGET_OSTYPE?= ${HOST_OSTYPE} 20215698SsimonTARGET_HOST?= ${HOST_TARGET} 21215698Ssimon 22215698Ssimon# these may or may not exist 23215698Ssimon.-include "${TARGET_HOST}.mk" 24215698Ssimon.-include "config.mk" 25110010Smarkm 26110010SmarkmRM?= rm 27110010SmarkmLN?= ln 28110010SmarkmINSTALL?= install 29110010Smarkm 30110010Smarkmprefix?= /usr 31110010Smarkm.if exists(${prefix}/lib) 32110010Smarkmlibprefix?= ${prefix} 33110010Smarkm.else 34110010Smarkmlibprefix?= /usr 35110010Smarkm.endif 36110010Smarkm 37110010Smarkm# FreeBSD at least does not set this 38110010SmarkmMACHINE_ARCH?=${MACHINE} 39110010Smarkm# we need to make sure these are defined too in case sys.mk fails to. 40110010SmarkmCOMPILE.s?= ${CC} ${AFLAGS} -c 41276864SjkimLINK.s?= ${CC} ${AFLAGS} ${LDFLAGS} 42276864SjkimCOMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp 43110010SmarkmLINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS} 44110010SmarkmCOMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 45215698SsimonLINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 46215698SsimonCXXFLAGS?= ${CFLAGS} 47215698SsimonCOMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c 48215698SsimonLINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 49160819SsimonCOMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 50215698SsimonLINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 51160819SsimonCOMPILE.f?= ${FC} ${FFLAGS} -c 52160819SsimonLINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 53276864SjkimCOMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 54276864SjkimLINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 55276864SjkimCOMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 56110010SmarkmLINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 57276864SjkimLEX.l?= ${LEX} ${LFLAGS} 58276864SjkimCOMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 59276864SjkimLINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 60276864SjkimYACC.y?= ${YACC} ${YFLAGS} 61276864Sjkim 62276864Sjkim# for suffix rules 63215698SsimonIMPFLAGS?= ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} 64276864Sjkim.for s in .c .cc 65276864SjkimCOMPILE.$s += ${IMPFLAGS} 66276864SjkimLINK.$s += ${IMPFLAGS} 67276864Sjkim.endfor 68276864Sjkim 69215698SsimonPRINT.VAR.MAKE = MAKESYSPATH=${MAKESYSPATH:U${.PARSEDIR}} ${.MAKE} 70276864Sjkim.if empty(.MAKEFLAGS:M-V*) 71110010Smarkm.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 72110010SmarkmPRINTOBJDIR= ${PRINT.VAR.MAKE} -r -V .OBJDIR -f /dev/null xxx 73110010Smarkm.else 74110010SmarkmPRINTOBJDIR= ${PRINT.VAR.MAKE} -V .OBJDIR 75110010Smarkm.endif 76110010Smarkm.else 77110010SmarkmPRINTOBJDIR= echo # prevent infinite recursion 78110010Smarkm.endif 79110010Smarkm 80110010Smarkm# we really like to have SRCTOP and OBJTOP defined... 81110010Smarkm.if !defined(SRCTOP) || !defined(OBJTOP) 82110010Smarkm.-include "srctop.mk" 83110010Smarkm.endif 84110010Smarkm 85110010Smarkm.if !defined(SRCTOP) || !defined(OBJTOP) 86110010Smarkm# dpadd.mk is rather pointless without these 87110010SmarkmOPTIONS_DEFAULT_NO+= DPADD_MK 88110010Smarkm.endif 89110010Smarkm 90110010Smarkm# process options 91110010SmarkmOPTIONS_DEFAULT_NO+= \ 92110010Smarkm AUTO_OBJ \ 93110010Smarkm INSTALL_AS_USER \ 94110010Smarkm GPROF \ 95110010Smarkm LIBTOOL \ 96110010Smarkm LINT \ 97110010Smarkm META_MODE \ 98110010Smarkm 99110010SmarkmOPTIONS_DEFAULT_YES+= \ 100110010Smarkm ARCHIVE \ 101110010Smarkm AUTODEP \ 102110010Smarkm CRYPTO \ 103110010Smarkm DOC \ 104110010Smarkm DPADD_MK \ 105110010Smarkm GDB \ 106110010Smarkm KERBEROS \ 107110010Smarkm LINKLIB \ 108110010Smarkm MAN \ 109110010Smarkm NLS \ 110110010Smarkm OBJ \ 111110010Smarkm PIC \ 112110010Smarkm SHARE \ 113110010Smarkm SKEY \ 114110010Smarkm YP \ 115110010Smarkm 116110010SmarkmOPTIONS_DEFAULT_DEPENDENT+= \ 117110010Smarkm CATPAGES/MAN \ 118110010Smarkm OBJDIRS/OBJ \ 119110010Smarkm PICINSTALL/LINKLIB \ 120110010Smarkm PICLIB/PIC \ 121110010Smarkm PROFILE/LINKLIB \ 122110010Smarkm 123110010Smarkm.include <options.mk> 124110010Smarkm 125110010Smarkm.if ${MK_INSTALL_AS_USER} == "yes" 126110010Smarkm# We ignore this if user is root. 127110010Smarkm_uid!= id -u 128110010Smarkm.if ${_uid} != 0 129110010Smarkm.if !defined(USERGRP) 130110010SmarkmUSERGRP!= id -g 131110010Smarkm.export USERGRP 132110010Smarkm.endif 133160819Ssimon.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE 134110010Smarkm$xOWN= ${USER} 135110010Smarkm$xGRP= ${USERGRP} 136306196Sjkim.endfor 137215698Ssimon.endif 138215698Ssimon.endif 139215698Ssimon 140215698Ssimon# override this in sys.mk 141110010SmarkmROOT_GROUP?= wheel 142160819SsimonBINGRP?= ${ROOT_GROUP} 143110010SmarkmBINOWN?= root 144110010SmarkmBINMODE?= 555 145110010SmarkmNONBINMODE?= 444 146110010Smarkm 147215698Ssimon# Define MANZ to have the man pages compressed (gzip) 148110010Smarkm#MANZ= 1 149110010Smarkm 150110010SmarkmMANTARGET?= cat 151110010SmarkmMANDIR?= ${prefix}/share/man/${MANTARGET} 152110010SmarkmMANGRP?= ${BINGRP} 153110010SmarkmMANOWN?= ${BINOWN} 154110010SmarkmMANMODE?= ${NONBINMODE} 155110010Smarkm 156110010SmarkmLIBDIR?= ${libprefix}/lib 157110010SmarkmSHLIBDIR?= ${libprefix}/lib 158110010Smarkm.if ${USE_SHLIBDIR:Uno} == "yes" 159160819Ssimon_LIBSODIR?= ${SHLIBDIR} 160110010Smarkm.else 161110010Smarkm_LIBSODIR?= ${LIBDIR} 162160819Ssimon.endif 163110010Smarkm# this is where ld.*so lives 164110010SmarkmSHLINKDIR?= /usr/libexec 165110010SmarkmLINTLIBDIR?= ${libprefix}/libdata/lint 166110010SmarkmLIBGRP?= ${BINGRP} 167160819SsimonLIBOWN?= ${BINOWN} 168LIBMODE?= ${NONBINMODE} 169 170DOCDIR?= ${prefix}/share/doc 171DOCGRP?= ${BINGRP} 172DOCOWN?= ${BINOWN} 173DOCMODE?= ${NONBINMODE} 174 175NLSDIR?= ${prefix}/share/nls 176NLSGRP?= ${BINGRP} 177NLSOWN?= ${BINOWN} 178NLSMODE?= ${NONBINMODE} 179 180KMODDIR?= ${prefix}/lkm 181KMODGRP?= ${BINGRP} 182KMODOWN?= ${BINOWN} 183KMODMODE?= ${NONBINMODE} 184 185COPY?= -c 186STRIP_FLAG?= -s 187 188.if ${TARGET_OSNAME} == "NetBSD" 189.if exists(/usr/libexec/ld.elf_so) 190OBJECT_FMT=ELF 191.endif 192OBJECT_FMT?=a.out 193.endif 194# sys.mk should set something appropriate if need be. 195OBJECT_FMT?=ELF 196 197.if (${_HOST_OSNAME} == "FreeBSD") 198CFLAGS+= ${CPPFLAGS} 199.endif 200 201# allow for per target flags 202# apply the :T:R first, so the more specific :T can override if needed 203CPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}} 204CFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}} 205 206# Define SYS_INCLUDE to indicate whether you want symbolic links to the system 207# source (``symlinks''), or a separate copy (``copies''); (latter useful 208# in environments where it's not possible to keep /sys publicly readable) 209#SYS_INCLUDE= symlinks 210 211# don't try to generate PIC versions of libraries on machines 212# which don't support PIC. 213.if (${MACHINE_ARCH} == "vax") || \ 214 ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \ 215 ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN)) 216MK_PIC=no 217.endif 218 219# No lint, for now. 220NOLINT= 221 222 223.if ${MK_LINKLIB} == "no" 224MK_PICINSTALL= no 225MK_PROFILE= no 226.endif 227 228.if ${MK_MAN} == "no" 229MK_CATPAGES= no 230.endif 231 232.if ${MK_OBJ} == "no" 233MK_OBJDIRS= no 234MK_AUTO_OBJ= no 235.endif 236 237.if ${MK_SHARE} == "no" 238MK_CATPAGES= no 239MK_DOC= no 240MK_INFO= no 241MK_MAN= no 242MK_NLS= no 243.endif 244 245.endif 246