Add files from parent branch HEAD:
[pkgsrc.git] / mk / platform / NetBSD.mk
1 # $NetBSD: NetBSD.mk,v 1.30 2008/04/03 14:07:51 joerg Exp $
2 #
3 # Variable definitions for the NetBSD operating system.
4
5 # Needed for 1.6.1 and earlier due to rpcgen bugs and paths
6 .if defined(CPP) && ${CPP} == "cpp"
7 CPP=            /usr/bin/cpp
8 .endif
9 ECHO_N?=        ${ECHO} -n
10 IMAKE_MAKE?=    ${MAKE}         # program which gets invoked by imake
11 PKGLOCALEDIR?=  share
12 PS?=            /bin/ps
13 SU?=            /usr/bin/su
14 TYPE?=          type                            # Shell builtin
15
16 .if exists(/usr/sbin/user)
17 USERADD?=       /usr/sbin/useradd
18 GROUPADD?=      /usr/sbin/groupadd
19 .else
20 USERADD?=       ${LOCALBASE}/sbin/useradd
21 GROUPADD?=      ${LOCALBASE}/sbin/groupadd
22 _USER_DEPENDS=  user>=20000313:../../sysutils/user
23 .endif
24
25 CPP_PRECOMP_FLAGS?=     # unset
26 DEF_UMASK?=             0022
27 .if ${OBJECT_FMT} == "ELF"
28 EXPORT_SYMBOLS_LDFLAGS?=-Wl,-E  # add symbols to the dynamic symbol table
29 .else
30 EXPORT_SYMBOLS_LDFLAGS?=-Wl,--export-dynamic
31 .endif
32 MOTIF_TYPE_DEFAULT?=    openmotif       # default 2.0 compatible libs type
33 NOLOGIN?=               /sbin/nologin
34 # This must be lazy and using :? evaluation doesn't work due to a make bugs.
35 PKG_TOOLS_BIN_cmd=      if [ -x ${LOCALBASE}/sbin/pkg_info ]; then echo ${LOCALBASE}/sbin; else echo /usr/sbin; fi
36 PKG_TOOLS_BIN?=         ${PKG_TOOLS_BIN_cmd:sh}
37 ROOT_CMD?=              ${SU} - root -c
38 ROOT_USER?=             root
39 ROOT_GROUP?=    wheel
40 ULIMIT_CMD_datasize?=   ulimit -d `ulimit -H -d`
41 ULIMIT_CMD_stacksize?=  ulimit -s `ulimit -H -s`
42 ULIMIT_CMD_memorysize?= ulimit -m `ulimit -H -m`
43
44 # imake installs manpages in weird places
45 # these values from /usr/X11R6/lib/X11/config/NetBSD.cf
46 IMAKE_MAN_SOURCE_PATH=  man/cat
47 IMAKE_MANNEWSUFFIX=     0
48 IMAKE_MAN_SUFFIX=       ${IMAKE_MANNEWSUFFIX}
49 IMAKE_LIBMAN_SUFFIX=    ${IMAKE_MANNEWSUFFIX}
50 IMAKE_KERNMAN_SUFFIX=   ${IMAKE_MANNEWSUFFIX}
51 IMAKE_FILEMAN_SUFFIX=   ${IMAKE_MANNEWSUFFIX}
52 IMAKE_GAMEMAN_SUFFIX=   ${IMAKE_MANNEWSUFFIX}
53 IMAKE_MISCMAN_SUFFIX=   ${IMAKE_MANNEWSUFFIX}
54 IMAKE_MAN_DIR=          ${IMAKE_MAN_SOURCE_PATH}1
55 IMAKE_LIBMAN_DIR=       ${IMAKE_MAN_SOURCE_PATH}3
56 IMAKE_KERNMAN_DIR=      ${IMAKE_MAN_SOURCE_PATH}4
57 IMAKE_FILEMAN_DIR=      ${IMAKE_MAN_SOURCE_PATH}5
58 IMAKE_GAMEMAN_DIR=      ${IMAKE_MAN_SOURCE_PATH}6
59 IMAKE_MISCMAN_DIR=      ${IMAKE_MAN_SOURCE_PATH}7
60 IMAKE_MANINSTALL?=      maninstall catinstall
61
62 _OPSYS_EMULDIR.aout=            /emul/aout
63 _OPSYS_EMULDIR.darwin=          /emul/darwin
64 _OPSYS_EMULDIR.freebsd=         /emul/freebsd
65 _OPSYS_EMULDIR.hpux=            /emul/hpux
66 _OPSYS_EMULDIR.irix=            /emul/irix
67 _OPSYS_EMULDIR.linux=           /emul/linux
68 _OPSYS_EMULDIR.linux32=         /emul/linux32
69 _OPSYS_EMULDIR.netbsd=          # empty
70 _OPSYS_EMULDIR.netbsd32=        /emul/netbsd32
71 _OPSYS_EMULDIR.osf1=            /emul/osf1
72 _OPSYS_EMULDIR.solaris=         /emul/svr4
73 _OPSYS_EMULDIR.solaris32=       /emul/svr4_32
74 _OPSYS_EMULDIR.sunos=           /emul/sunos
75
76 _OPSYS_SYSTEM_RPATH?=           /usr/lib
77
78 .if exists(/usr/include/netinet6)
79 _OPSYS_HAS_INET6=       yes     # IPv6 is standard
80 .else
81 _OPSYS_HAS_INET6=       no      # IPv6 is not standard
82 .endif
83 _OPSYS_HAS_JAVA=        no      # Java is not standard
84 _OPSYS_HAS_MANZ=        yes     # MANZ controls gzipping of man pages
85 _OPSYS_HAS_OSSAUDIO=    yes     # libossaudio is available
86 _OPSYS_PERL_REQD=               # no base version of perl required
87 _OPSYS_PTHREAD_AUTO=    no      # -lpthread needed for pthreads
88 _OPSYS_SHLIB_TYPE=      ELF/a.out       # shared lib type
89 _PATCH_CAN_BACKUP=      yes     # native patch(1) can make backups
90 _PATCH_BACKUP_ARG?=     -V simple --suffix # switch to patch(1) for backup suffix
91 _USE_RPATH=             yes     # add rpath to LDFLAGS
92
93 # flags passed to the linker to extract all symbols from static archives.
94 # this is GNU ld.
95 _OPSYS_WHOLE_ARCHIVE_FLAG=      -Wl,--whole-archive
96 _OPSYS_NO_WHOLE_ARCHIVE_FLAG=   -Wl,--no-whole-archive
97
98 # for programs which use dlopen()
99 # not necessary since 1.6 (shared libs are linked against libgcc_pic)
100 .if !empty(OS_VERSION:M1.5*)
101 LINK_ALL_LIBGCC_HACK=   -Wl,--whole-archive -lgcc -Wl,--no-whole-archive
102 .endif
103
104 _STRIPFLAG_CC?=         ${_INSTALL_UNSTRIPPED:D:U-s}    # cc(1) option to strip
105 _STRIPFLAG_INSTALL?=    ${_INSTALL_UNSTRIPPED:D:U-s}    # install(1) option to strip
106
107 .if (${MACHINE_ARCH} == alpha)
108 DEFAULT_SERIAL_DEVICE?= /dev/ttyC0
109 SERIAL_DEVICES?=        /dev/ttyC0 \
110                         /dev/ttyC1
111 .elif (${MACHINE_ARCH} == "i386")
112 DEFAULT_SERIAL_DEVICE?= /dev/tty00
113 SERIAL_DEVICES?=        /dev/tty00 \
114                         /dev/tty01
115 .elif (${MACHINE_ARCH} == m68k)
116 DEFAULT_SERIAL_DEVICE?= /dev/tty00
117 SERIAL_DEVICES?=        /dev/tty00 \
118                         /dev/tty01
119 .elif (${MACHINE_ARCH} == mipsel)
120 DEFAULT_SERIAL_DEVICE?= /dev/ttyC0
121 SERIAL_DEVICES?=        /dev/ttyC0 \
122                         /dev/ttyC1
123 .elif (${MACHINE_ARCH} == "sparc")
124 DEFAULT_SERIAL_DEVICE?= /dev/ttya
125 SERIAL_DEVICES?=        /dev/ttya \
126                         /dev/ttyb
127 .else
128 DEFAULT_SERIAL_DEVICE?= /dev/null
129 SERIAL_DEVICES?=        /dev/null
130 .endif
131
132 # Add -mieee to CFLAGS and FFLAGS for NetBSD->=1.5V-alpha
133 .for __tmp__ in 1.5[V-Z] 1.5[A-Z][A-Z]* 1.[6-9]* [2-9].*
134 .  if ${MACHINE_PLATFORM:MNetBSD-${__tmp__}-alpha} != ""
135 CFLAGS+=        -mieee
136 FFLAGS+=        -mieee
137 .  endif        # MACHINE_PLATFORM
138 .endfor         # __tmp__
139
140 # check for kqueue(2) support, added in NetBSD-1.6J
141 .if exists(/usr/include/sys/event.h)
142 PKG_HAVE_KQUEUE=        # defined
143 .endif
144
145 # check for maximum command line length and set it in configure's environment,
146 # to avoid a test required by the libtool script that takes forever.
147 _OPSYS_MAX_CMDLEN_CMD=  /sbin/sysctl -n kern.argmax
148
149 # If games are to be installed setgid, then SETGIDGAME is set to 'yes'
150 # (it defaults to 'no' as per defaults/mk.conf).
151 # Set the group and mode to meaningful values in that case (defaults to
152 # BINOWN, BINGRP and BINMODE as per defaults/mk.conf).
153 .if !(empty(SETGIDGAME:M[yY][eE][sS]))
154 GAMES_USER=             games
155 GAMES_GROUP=            games
156 GAMEOWN=                ${GAMES_USER}
157 GAMEGRP=                ${GAMES_GROUP}
158 GAMEMODE=               2555
159 GAMEDIRMODE=            0775
160 .endif