1# $Id: own.mk,v 1.30 2015/11/14 18:09:57 sjg Exp $ 2 3.if !target(__${.PARSEFILE}__) 4__${.PARSEFILE}__: 5 6.if !target(__init.mk__) 7.include "init.mk" 8.endif 9 10.ifndef NOMAKECONF 11MAKECONF?= /etc/mk.conf 12.-include "${MAKECONF}" 13.endif 14 15.include <host-target.mk> 16 17TARGET_OSNAME?= ${_HOST_OSNAME} 18TARGET_OSREL?= ${_HOST_OSREL} 19TARGET_OSTYPE?= ${HOST_OSTYPE} 20TARGET_HOST?= ${HOST_TARGET} 21 22# these may or may not exist 23.-include "${TARGET_HOST}.mk" 24.-include "config.mk" 25 26RM?= rm 27LN?= ln 28INSTALL?= install 29 30prefix?= /usr 31.if exists(${prefix}/lib) 32libprefix?= ${prefix} 33.else 34libprefix?= /usr 35.endif 36 37# FreeBSD at least does not set this 38MACHINE_ARCH?=${MACHINE} 39# we need to make sure these are defined too in case sys.mk fails to. 40COMPILE.s?= ${CC} ${AFLAGS} -c 41LINK.s?= ${CC} ${AFLAGS} ${LDFLAGS} 42COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp 43LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS} 44COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 45LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 46CXXFLAGS?= ${CFLAGS} 47COMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c 48LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 49COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 50LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 51COMPILE.f?= ${FC} ${FFLAGS} -c 52LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 53COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 54LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 55COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 56LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 57LEX.l?= ${LEX} ${LFLAGS} 58COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 59LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 60YACC.y?= ${YACC} ${YFLAGS} 61 62# for suffix rules 63IMPFLAGS?= ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} 64.for s in .c .cc 65COMPILE.$s += ${IMPFLAGS} 66LINK.$s += ${IMPFLAGS} 67.endfor 68 69PRINT.VAR.MAKE = MAKESYSPATH=${MAKESYSPATH:U${.PARSEDIR}} ${.MAKE} 70.if empty(.MAKEFLAGS:M-V*) 71.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 72PRINTOBJDIR= ${PRINT.VAR.MAKE} -r -V .OBJDIR -f /dev/null xxx 73.else 74PRINTOBJDIR= ${PRINT.VAR.MAKE} -V .OBJDIR 75.endif 76.else 77PRINTOBJDIR= echo # prevent infinite recursion 78.endif 79 80# we really like to have SRCTOP and OBJTOP defined... 81.if !defined(SRCTOP) || !defined(OBJTOP) 82.-include "srctop.mk" 83.endif 84 85.if !defined(SRCTOP) || !defined(OBJTOP) 86# dpadd.mk is rather pointless without these 87OPTIONS_DEFAULT_NO+= DPADD_MK 88.endif 89 90# process options 91OPTIONS_DEFAULT_NO+= \ 92 INSTALL_AS_USER \ 93 GPROF \ 94 LIBTOOL \ 95 LINT \ 96 97OPTIONS_DEFAULT_YES+= \ 98 ARCHIVE \ 99 AUTODEP \ 100 CRYPTO \ 101 DOC \ 102 DPADD_MK \ 103 GDB \ 104 KERBEROS \ 105 LINKLIB \ 106 MAN \ 107 NLS \ 108 OBJ \ 109 PIC \ 110 SHARE \ 111 SKEY \ 112 YP \ 113 114OPTIONS_DEFAULT_DEPENDENT+= \ 115 CATPAGES/MAN \ 116 OBJDIRS/OBJ \ 117 PICINSTALL/LINKLIB \ 118 PICLIB/PIC \ 119 PROFILE/LINKLIB \ 120 121.include <options.mk> 122 123.if ${MK_INSTALL_AS_USER} == "yes" 124# We ignore this if user is root. 125_uid!= id -u 126.if ${_uid} != 0 127.if !defined(USERGRP) 128USERGRP!= id -g 129.export USERGRP 130.endif 131.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE 132$xOWN= ${USER} 133$xGRP= ${USERGRP} 134$x_INSTALL_OWN= 135.endfor 136PROG_INSTALL_OWN= 137.endif 138.endif 139 140# override this in sys.mk 141ROOT_GROUP?= wheel 142BINGRP?= ${ROOT_GROUP} 143BINOWN?= root 144BINMODE?= 555 145NONBINMODE?= 444 146DIRMODE?= 755 147 148# Define MANZ to have the man pages compressed (gzip) 149#MANZ= 1 150 151MANTARGET?= cat 152MANDIR?= ${prefix}/share/man/${MANTARGET} 153MANGRP?= ${BINGRP} 154MANOWN?= ${BINOWN} 155MANMODE?= ${NONBINMODE} 156 157LIBDIR?= ${libprefix}/lib 158SHLIBDIR?= ${libprefix}/lib 159.if ${USE_SHLIBDIR:Uno} == "yes" 160_LIBSODIR?= ${SHLIBDIR} 161.else 162_LIBSODIR?= ${LIBDIR} 163.endif 164# this is where ld.*so lives 165SHLINKDIR?= /usr/libexec 166LINTLIBDIR?= ${libprefix}/libdata/lint 167LIBGRP?= ${BINGRP} 168LIBOWN?= ${BINOWN} 169LIBMODE?= ${NONBINMODE} 170 171DOCDIR?= ${prefix}/share/doc 172DOCGRP?= ${BINGRP} 173DOCOWN?= ${BINOWN} 174DOCMODE?= ${NONBINMODE} 175 176NLSDIR?= ${prefix}/share/nls 177NLSGRP?= ${BINGRP} 178NLSOWN?= ${BINOWN} 179NLSMODE?= ${NONBINMODE} 180 181KMODDIR?= ${prefix}/lkm 182KMODGRP?= ${BINGRP} 183KMODOWN?= ${BINOWN} 184KMODMODE?= ${NONBINMODE} 185 186COPY?= -c 187STRIP_FLAG?= -s 188 189.if ${TARGET_OSNAME} == "NetBSD" 190.if exists(/usr/libexec/ld.elf_so) 191OBJECT_FMT=ELF 192.endif 193OBJECT_FMT?=a.out 194.endif 195# sys.mk should set something appropriate if need be. 196OBJECT_FMT?=ELF 197 198.if (${_HOST_OSNAME} == "FreeBSD") 199CFLAGS+= ${CPPFLAGS} 200.endif 201 202# allow for per target flags 203# apply the :T:R first, so the more specific :T can override if needed 204CPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}} 205CFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}} 206 207# Define SYS_INCLUDE to indicate whether you want symbolic links to the system 208# source (``symlinks''), or a separate copy (``copies''); (latter useful 209# in environments where it's not possible to keep /sys publicly readable) 210#SYS_INCLUDE= symlinks 211 212# don't try to generate PIC versions of libraries on machines 213# which don't support PIC. 214.if (${MACHINE_ARCH} == "vax") || \ 215 ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \ 216 ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN)) 217MK_PIC=no 218.endif 219 220# No lint, for now. 221NOLINT= 222 223 224.if ${MK_LINKLIB} == "no" 225MK_PICINSTALL= no 226MK_PROFILE= no 227.endif 228 229.if ${MK_MAN} == "no" 230MK_CATPAGES= no 231.endif 232 233.if ${MK_OBJ} == "no" 234MK_OBJDIRS= no 235MK_AUTO_OBJ= no 236.endif 237 238.if ${MK_SHARE} == "no" 239MK_CATPAGES= no 240MK_DOC= no 241MK_INFO= no 242MK_MAN= no 243MK_NLS= no 244.endif 245 246.endif 247