1331246Ssjg# $Id: own.mk,v 1.39 2018/01/26 20:08:16 sjg Exp $ 2246149Ssjg 3246149Ssjg.if !target(__${.PARSEFILE}__) 4246149Ssjg__${.PARSEFILE}__: 5246149Ssjg 6246149Ssjg.if !target(__init.mk__) 7246149Ssjg.include "init.mk" 8246149Ssjg.endif 9246149Ssjg 10321653Ssjg.if !defined(NOMAKECONF) && !defined(NO_MAKECONF) 11246149SsjgMAKECONF?= /etc/mk.conf 12246149Ssjg.-include "${MAKECONF}" 13246149Ssjg.endif 14246149Ssjg 15246149Ssjg.include <host-target.mk> 16246149Ssjg 17246149SsjgTARGET_OSNAME?= ${_HOST_OSNAME} 18246149SsjgTARGET_OSREL?= ${_HOST_OSREL} 19246149SsjgTARGET_OSTYPE?= ${HOST_OSTYPE} 20246149SsjgTARGET_HOST?= ${HOST_TARGET} 21246149Ssjg 22246149Ssjg# these may or may not exist 23300313Ssjg.-include <${TARGET_HOST}.mk> 24300313Ssjg.-include <config.mk> 25246149Ssjg 26246149SsjgRM?= rm 27246149SsjgLN?= ln 28246149SsjgINSTALL?= install 29246149Ssjg 30246149Ssjgprefix?= /usr 31246149Ssjg.if exists(${prefix}/lib) 32246149Ssjglibprefix?= ${prefix} 33246149Ssjg.else 34246149Ssjglibprefix?= /usr 35246149Ssjg.endif 36246149Ssjg 37246149Ssjg# FreeBSD at least does not set this 38321653SsjgMACHINE_ARCH?= ${MACHINE} 39246149Ssjg# we need to make sure these are defined too in case sys.mk fails to. 40246149SsjgCOMPILE.s?= ${CC} ${AFLAGS} -c 41246149SsjgLINK.s?= ${CC} ${AFLAGS} ${LDFLAGS} 42246149SsjgCOMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp 43246149SsjgLINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS} 44246149SsjgCOMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 45246149SsjgLINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 46246149SsjgCXXFLAGS?= ${CFLAGS} 47246149SsjgCOMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c 48246149SsjgLINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 49246149SsjgCOMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 50246149SsjgLINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 51246149SsjgCOMPILE.f?= ${FC} ${FFLAGS} -c 52246149SsjgLINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 53246149SsjgCOMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 54246149SsjgLINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 55246149SsjgCOMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 56246149SsjgLINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 57246149SsjgLEX.l?= ${LEX} ${LFLAGS} 58246149SsjgCOMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 59246149SsjgLINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 60246149SsjgYACC.y?= ${YACC} ${YFLAGS} 61246149Ssjg 62246149Ssjg# for suffix rules 63246149SsjgIMPFLAGS?= ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} 64246149Ssjg.for s in .c .cc 65246149SsjgCOMPILE.$s += ${IMPFLAGS} 66246149SsjgLINK.$s += ${IMPFLAGS} 67246149Ssjg.endfor 68246149Ssjg 69246149SsjgPRINT.VAR.MAKE = MAKESYSPATH=${MAKESYSPATH:U${.PARSEDIR}} ${.MAKE} 70246149Ssjg.if empty(.MAKEFLAGS:M-V*) 71246149Ssjg.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 72246149SsjgPRINTOBJDIR= ${PRINT.VAR.MAKE} -r -V .OBJDIR -f /dev/null xxx 73246149Ssjg.else 74246149SsjgPRINTOBJDIR= ${PRINT.VAR.MAKE} -V .OBJDIR 75246149Ssjg.endif 76246149Ssjg.else 77246149SsjgPRINTOBJDIR= echo # prevent infinite recursion 78246149Ssjg.endif 79246149Ssjg 80246149Ssjg# we really like to have SRCTOP and OBJTOP defined... 81246149Ssjg.if !defined(SRCTOP) || !defined(OBJTOP) 82300313Ssjg.-include <srctop.mk> 83246149Ssjg.endif 84246149Ssjg 85246149Ssjg.if !defined(SRCTOP) || !defined(OBJTOP) 86246149Ssjg# dpadd.mk is rather pointless without these 87246149SsjgOPTIONS_DEFAULT_NO+= DPADD_MK 88246149Ssjg.endif 89246149Ssjg 90246149Ssjg# process options 91246149SsjgOPTIONS_DEFAULT_NO+= \ 92246149Ssjg INSTALL_AS_USER \ 93253883Ssjg GPROF \ 94331246Ssjg LDORDER_MK \ 95246149Ssjg LIBTOOL \ 96246149Ssjg LINT \ 97246149Ssjg 98246149SsjgOPTIONS_DEFAULT_YES+= \ 99246149Ssjg ARCHIVE \ 100246149Ssjg AUTODEP \ 101246149Ssjg CRYPTO \ 102246149Ssjg DOC \ 103246149Ssjg DPADD_MK \ 104246149Ssjg GDB \ 105246149Ssjg KERBEROS \ 106246149Ssjg LINKLIB \ 107246149Ssjg MAN \ 108246149Ssjg NLS \ 109246149Ssjg OBJ \ 110246149Ssjg PIC \ 111246149Ssjg SHARE \ 112246149Ssjg SKEY \ 113246149Ssjg YP \ 114246149Ssjg 115246149SsjgOPTIONS_DEFAULT_DEPENDENT+= \ 116246149Ssjg CATPAGES/MAN \ 117331246Ssjg PROG_LDORDER_MK/LDORDER_MK \ 118246149Ssjg OBJDIRS/OBJ \ 119246149Ssjg PICINSTALL/LINKLIB \ 120246149Ssjg PICLIB/PIC \ 121246149Ssjg PROFILE/LINKLIB \ 122319884Ssjg STAGING_PROG/STAGING \ 123246149Ssjg 124246149Ssjg.include <options.mk> 125246149Ssjg 126246149Ssjg.if ${MK_INSTALL_AS_USER} == "yes" 127246149Ssjg# We ignore this if user is root. 128246149Ssjg_uid!= id -u 129246149Ssjg.if ${_uid} != 0 130246149Ssjg.if !defined(USERGRP) 131246149SsjgUSERGRP!= id -g 132246149Ssjg.export USERGRP 133246149Ssjg.endif 134321653Ssjg.for x in BIN CONF DOC INC INFO FILES KMOD LIB MAN NLS PROG SHARE 135246149Ssjg$xOWN= ${USER} 136246149Ssjg$xGRP= ${USERGRP} 137289842Ssjg$x_INSTALL_OWN= 138246149Ssjg.endfor 139246149Ssjg.endif 140246149Ssjg.endif 141246149Ssjg 142246149Ssjg# override this in sys.mk 143246149SsjgROOT_GROUP?= wheel 144246149SsjgBINGRP?= ${ROOT_GROUP} 145246149SsjgBINOWN?= root 146246149SsjgBINMODE?= 555 147246149SsjgNONBINMODE?= 444 148289842SsjgDIRMODE?= 755 149246149Ssjg 150319884SsjgINCLUDEDIR?= ${prefix}/include 151319884SsjgINCDIR?= ${INCLUDEDIR} 152319884Ssjg 153246149Ssjg# Define MANZ to have the man pages compressed (gzip) 154246149Ssjg#MANZ= 1 155246149Ssjg 156246149SsjgMANTARGET?= cat 157246149SsjgMANDIR?= ${prefix}/share/man/${MANTARGET} 158246149SsjgMANGRP?= ${BINGRP} 159246149SsjgMANOWN?= ${BINOWN} 160246149SsjgMANMODE?= ${NONBINMODE} 161246149Ssjg 162300313SsjgINCLUDEDIR?= ${libprefix}/include 163246149SsjgLIBDIR?= ${libprefix}/lib 164246149SsjgSHLIBDIR?= ${libprefix}/lib 165246149Ssjg.if ${USE_SHLIBDIR:Uno} == "yes" 166246149Ssjg_LIBSODIR?= ${SHLIBDIR} 167246149Ssjg.else 168246149Ssjg_LIBSODIR?= ${LIBDIR} 169246149Ssjg.endif 170246149Ssjg# this is where ld.*so lives 171246149SsjgSHLINKDIR?= /usr/libexec 172246149SsjgLINTLIBDIR?= ${libprefix}/libdata/lint 173246149SsjgLIBGRP?= ${BINGRP} 174246149SsjgLIBOWN?= ${BINOWN} 175246149SsjgLIBMODE?= ${NONBINMODE} 176246149Ssjg 177246149SsjgDOCDIR?= ${prefix}/share/doc 178246149SsjgDOCGRP?= ${BINGRP} 179246149SsjgDOCOWN?= ${BINOWN} 180246149SsjgDOCMODE?= ${NONBINMODE} 181246149Ssjg 182246149SsjgNLSDIR?= ${prefix}/share/nls 183246149SsjgNLSGRP?= ${BINGRP} 184246149SsjgNLSOWN?= ${BINOWN} 185246149SsjgNLSMODE?= ${NONBINMODE} 186246149Ssjg 187246149SsjgKMODDIR?= ${prefix}/lkm 188246149SsjgKMODGRP?= ${BINGRP} 189246149SsjgKMODOWN?= ${BINOWN} 190246149SsjgKMODMODE?= ${NONBINMODE} 191246149Ssjg 192319884SsjgSHAREGRP?= ${BINGRP} 193319884SsjgSHAREOWN?= ${BINOWN} 194319884SsjgSHAREMODE?= ${NONBINMODE} 195319884Ssjg 196246149SsjgCOPY?= -c 197246149SsjgSTRIP_FLAG?= -s 198246149Ssjg 199246149Ssjg.if ${TARGET_OSNAME} == "NetBSD" 200246149Ssjg.if exists(/usr/libexec/ld.elf_so) 201246149SsjgOBJECT_FMT=ELF 202246149Ssjg.endif 203246149SsjgOBJECT_FMT?=a.out 204246149Ssjg.endif 205246149Ssjg# sys.mk should set something appropriate if need be. 206246149SsjgOBJECT_FMT?=ELF 207246149Ssjg 208246149Ssjg.if (${_HOST_OSNAME} == "FreeBSD") 209246149SsjgCFLAGS+= ${CPPFLAGS} 210246149Ssjg.endif 211246149Ssjg 212246149Ssjg# allow for per target flags 213246149Ssjg# apply the :T:R first, so the more specific :T can override if needed 214246149SsjgCPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}} 215246149SsjgCFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}} 216246149Ssjg 217246149Ssjg# Define SYS_INCLUDE to indicate whether you want symbolic links to the system 218246149Ssjg# source (``symlinks''), or a separate copy (``copies''); (latter useful 219246149Ssjg# in environments where it's not possible to keep /sys publicly readable) 220246149Ssjg#SYS_INCLUDE= symlinks 221246149Ssjg 222246149Ssjg# don't try to generate PIC versions of libraries on machines 223246149Ssjg# which don't support PIC. 224246149Ssjg.if (${MACHINE_ARCH} == "vax") || \ 225246149Ssjg ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \ 226246149Ssjg ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN)) 227246149SsjgMK_PIC=no 228246149Ssjg.endif 229246149Ssjg 230246149Ssjg# No lint, for now. 231246149SsjgNOLINT= 232246149Ssjg 233246149Ssjg 234246149Ssjg.if ${MK_LINKLIB} == "no" 235246149SsjgMK_PICINSTALL= no 236246149SsjgMK_PROFILE= no 237246149Ssjg.endif 238246149Ssjg 239246149Ssjg.if ${MK_MAN} == "no" 240246149SsjgMK_CATPAGES= no 241246149Ssjg.endif 242246149Ssjg 243246149Ssjg.if ${MK_OBJ} == "no" 244246149SsjgMK_OBJDIRS= no 245246149SsjgMK_AUTO_OBJ= no 246246149Ssjg.endif 247246149Ssjg 248246149Ssjg.if ${MK_SHARE} == "no" 249246149SsjgMK_CATPAGES= no 250246149SsjgMK_DOC= no 251246149SsjgMK_INFO= no 252246149SsjgMK_MAN= no 253246149SsjgMK_NLS= no 254246149Ssjg.endif 255246149Ssjg 256319884Ssjg# :U incase not using our sys.mk 257319884Ssjg.if ${MK_META_MODE:Uno} == "yes" 258319884Ssjg# should all be set by sys.mk if not default 259319884SsjgTARGET_SPEC_VARS ?= MACHINE 260319884Ssjg.if ${TARGET_SPEC_VARS:[#]} > 1 261319884SsjgTARGET_SPEC_VARS_REV := ${TARGET_SPEC_VARS:[-1..1]} 262319884Ssjg.else 263319884SsjgTARGET_SPEC_VARS_REV = ${TARGET_SPEC_VARS} 264246149Ssjg.endif 265319884Ssjg.if ${MK_STAGING} == "yes" 266319884SsjgSTAGE_ROOT?= ${OBJROOT}/stage 267319884SsjgSTAGE_OBJTOP?= ${STAGE_ROOT}/${TARGET_SPEC_VARS_REV:ts/} 268319884Ssjg.endif 269319884Ssjg.endif 270319884Ssjg 271319884Ssjg.endif 272