aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile111
-rw-r--r--Makefile.custom22
-rw-r--r--Makefile.flags25
3 files changed, 135 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index 9550c391a..3109e4fcf 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,10 @@ SUBLEVEL = 0
4EXTRAVERSION = .git 4EXTRAVERSION = .git
5NAME = Unnamed 5NAME = Unnamed
6 6
7# Colon is used as a separator in makefiles. Strip any drive prefix
8# from the current directory to avoid confusion.
9CURDIR := $(lastword $(subst :, ,$(CURDIR)))
10
7# *DOCUMENTATION* 11# *DOCUMENTATION*
8# To see a list of typical targets execute "make help" 12# To see a list of typical targets execute "make help"
9# More info can be located in ./README 13# More info can be located in ./README
@@ -192,6 +196,28 @@ ARCH ?= $(SUBARCH)
192# Architecture as present in compile.h 196# Architecture as present in compile.h
193UTS_MACHINE := $(ARCH) 197UTS_MACHINE := $(ARCH)
194 198
199HOST_COMPILER ?=
200ifeq ($(HOST_COMPILER),)
201HOST_COMPILER := $(shell grep ^CONFIG_HOST_COMPILER= .config 2>/dev/null)
202HOST_COMPILER := $(subst CONFIG_HOST_COMPILER=,,$(HOST_COMPILER))
203HOST_COMPILER := $(subst ",,$(HOST_COMPILER))
204#")
205endif
206ifeq ($(HOST_COMPILER),)
207HOST_COMPILER := gcc
208endif
209
210CROSS_COMPILER ?=
211ifeq ($(CROSS_COMPILER),)
212CROSS_COMPILER := $(shell grep ^CONFIG_CROSS_COMPILER= .config 2>/dev/null)
213CROSS_COMPILER := $(subst CONFIG_CROSS_COMPILER=,,$(CROSS_COMPILER))
214CROSS_COMPILER := $(subst ",,$(CROSS_COMPILER))
215#")
216endif
217ifeq ($(CROSS_COMPILER),)
218CROSS_COMPILER := gcc
219endif
220
195# SHELL used by kbuild 221# SHELL used by kbuild
196CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 222CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
197 else if [ -x /bin/bash ]; then echo /bin/bash; \ 223 else if [ -x /bin/bash ]; then echo /bin/bash; \
@@ -260,8 +286,15 @@ endif
260 286
261# If the user is running make -s (silent mode), suppress echoing of 287# If the user is running make -s (silent mode), suppress echoing of
262# commands 288# commands
289# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
290
291ifeq ($(filter 3.%,$(MAKE_VERSION)),)
292short-opts := $(firstword -$(MAKEFLAGS))
293else
294short-opts := $(filter-out --%,$(MAKEFLAGS))
295endif
263 296
264ifneq ($(findstring s,$(MAKEFLAGS)),) 297ifneq ($(findstring s,$(short-opts)),)
265 quiet=silent_ 298 quiet=silent_
266endif 299endif
267 300
@@ -271,7 +304,7 @@ export quiet Q KBUILD_VERBOSE
271# Look for make include files relative to root of kernel src 304# Look for make include files relative to root of kernel src
272MAKEFLAGS += --include-dir=$(srctree) 305MAKEFLAGS += --include-dir=$(srctree)
273 306
274HOSTCC = gcc 307HOSTCC = $(HOST_COMPILER)
275HOSTCXX = g++ 308HOSTCXX = g++
276HOSTCFLAGS := 309HOSTCFLAGS :=
277HOSTCXXFLAGS := 310HOSTCXXFLAGS :=
@@ -289,7 +322,7 @@ MAKEFLAGS += -rR
289# Make variables (CC, etc...) 322# Make variables (CC, etc...)
290 323
291AS = $(CROSS_COMPILE)as 324AS = $(CROSS_COMPILE)as
292CC = $(CROSS_COMPILE)gcc 325CC = $(CROSS_COMPILE)$(CROSS_COMPILER)
293LD = $(CC) -nostdlib 326LD = $(CC) -nostdlib
294CPP = $(CC) -E 327CPP = $(CC) -E
295AR = $(CROSS_COMPILE)ar 328AR = $(CROSS_COMPILE)ar
@@ -297,6 +330,7 @@ NM = $(CROSS_COMPILE)nm
297STRIP = $(CROSS_COMPILE)strip 330STRIP = $(CROSS_COMPILE)strip
298OBJCOPY = $(CROSS_COMPILE)objcopy 331OBJCOPY = $(CROSS_COMPILE)objcopy
299OBJDUMP = $(CROSS_COMPILE)objdump 332OBJDUMP = $(CROSS_COMPILE)objdump
333WINDRES = $(CROSS_COMPILE)windres
300PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config 334PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
301AWK = awk 335AWK = awk
302GENKSYMS = scripts/genksyms/genksyms 336GENKSYMS = scripts/genksyms/genksyms
@@ -305,6 +339,15 @@ KALLSYMS = scripts/kallsyms
305PERL = perl 339PERL = perl
306CHECK = sparse 340CHECK = sparse
307 341
342# Handle MSYS2 weirdness
343ifneq ($(CROSS_COMPILE),)
344ifeq ($(shell _= command -v $(AR)),)
345AR := $(CROSS_COMPILE)gcc-ar
346STRIP := strip
347WINDRES := windres
348endif
349endif
350
308CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(CF) 351CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(CF)
309MODFLAGS = -DMODULE 352MODFLAGS = -DMODULE
310CFLAGS_MODULE = $(MODFLAGS) 353CFLAGS_MODULE = $(MODFLAGS)
@@ -312,6 +355,7 @@ AFLAGS_MODULE = $(MODFLAGS)
312LDFLAGS_MODULE = -r 355LDFLAGS_MODULE = -r
313CFLAGS_KERNEL = 356CFLAGS_KERNEL =
314AFLAGS_KERNEL = 357AFLAGS_KERNEL =
358EXEEXT =
315 359
316 360
317# Use LINUXINCLUDE when you must reference the include/ directory. 361# Use LINUXINCLUDE when you must reference the include/ directory.
@@ -324,13 +368,43 @@ AFLAGS := $(AFLAGS)
324LDFLAGS := $(LDFLAGS) 368LDFLAGS := $(LDFLAGS)
325LDLIBS := 369LDLIBS :=
326 370
371CONFIG_PLATFORM_MINGW32 ?=
372ifeq ($(CONFIG_PLATFORM_MINGW32),)
373CONFIG_PLATFORM_MINGW32 := $(shell grep ^CONFIG_PLATFORM_MINGW32= .config 2>/dev/null)
374CONFIG_PLATFORM_MINGW32 := $(subst CONFIG_PLATFORM_MINGW32=,,$(CONFIG_PLATFORM_MINGW32))
375CONFIG_PLATFORM_MINGW32 := $(subst ",,$(CONFIG_PLATFORM_MINGW32))
376#")
377endif
378
379# Try various methods to get a more specific EXTRAVERSION, but only
380# for MINGW32 platform and if EXTRAVERSION is default '.git'
381ifeq ($(CONFIG_PLATFORM_MINGW32)$(EXTRAVERSION),y.git)
382# Ask git
383extraversion := $(shell cd $(srctree) && git describe --match FRP 2>/dev/null)
384ifeq ($(strip $(extraversion)),)
385# That didn't work, look for a .frp_describe file
386extraversion := $(shell grep '^FRP-' $(srctree)/.frp_describe 2>/dev/null)
387ifeq ($(strip $(extraversion)),)
388# That didn't work either, look at name of source directory
389e1 := $(shell basename $(srctree) | grep '^busybox-w32-FRP-')
390ifneq ($(strip $(e1)),)
391extraversion := $(subst busybox-w32-,,$(e1))
392endif
393endif
394endif
395
396ifneq ($(strip $(extraversion)),)
397EXTRAVERSION := .$(subst FRP,git,$(extraversion))
398endif
399endif
400
327# Read KERNELRELEASE from .kernelrelease (if it exists) 401# Read KERNELRELEASE from .kernelrelease (if it exists)
328KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null) 402KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null)
329KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 403KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
330 404
331export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION \ 405export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION \
332 ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \ 406 ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
333 CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \ 407 CPP AR NM STRIP OBJCOPY OBJDUMP WINDRES MAKE AWK GENKSYMS PERL UTS_MACHINE \
334 HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS 408 HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
335 409
336export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS 410export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
@@ -462,6 +536,7 @@ scripts_basic: include/autoconf.h
462# Objects we will link into busybox / subdirs we need to visit 536# Objects we will link into busybox / subdirs we need to visit
463core-y := \ 537core-y := \
464 applets/ \ 538 applets/ \
539 win32/resources/ \
465 540
466libs-y := \ 541libs-y := \
467 archival/ \ 542 archival/ \
@@ -492,6 +567,7 @@ libs-y := \
492 sysklogd/ \ 567 sysklogd/ \
493 util-linux/ \ 568 util-linux/ \
494 util-linux/volume_id/ \ 569 util-linux/volume_id/ \
570 win32/ \
495 571
496endif # KBUILD_EXTMOD 572endif # KBUILD_EXTMOD
497 573
@@ -532,7 +608,7 @@ endif
532# command line. 608# command line.
533# This allow a user to issue only 'make' to build a kernel including modules 609# This allow a user to issue only 'make' to build a kernel including modules
534# Defaults busybox but it is usually overridden in the arch makefile 610# Defaults busybox but it is usually overridden in the arch makefile
535all: busybox doc 611all: busybox$(EXEEXT) doc
536 612
537# arch Makefile may override CC so keep this after arch Makefile is included 613# arch Makefile may override CC so keep this after arch Makefile is included
538#bbox# NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 614#bbox# NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
@@ -612,8 +688,12 @@ quiet_cmd_busybox__ ?= LINK $@
612 "$(core-y)" \ 688 "$(core-y)" \
613 "$(libs-y)" \ 689 "$(libs-y)" \
614 "$(LDLIBS)" \ 690 "$(LDLIBS)" \
615 "$(CONFIG_EXTRA_LDLIBS)" \ 691 $(CONFIG_EXTRA_LDLIBS) \
616 && $(srctree)/scripts/generate_BUFSIZ.sh --post include/common_bufsiz.h 692 && $(srctree)/scripts/generate_BUFSIZ.sh --post include/common_bufsiz.h
693# ^^^ note: CONFIG_xyz strings already have double quotes: their value
694# is '"LIB LIB2"', therefore $(CONFIG_EXTRA_LDLIBS) above must NOT be written
695# as "$(CONFIG_EXTRA_LDLIBS)", it would be passed as ""LIB LIB2"",
696# and LIB2 would end up in $9, not $8 (and lost or misinterpreted).
617 697
618# Generate System.map 698# Generate System.map
619quiet_cmd_sysmap = SYSMAP 699quiet_cmd_sysmap = SYSMAP
@@ -715,16 +795,16 @@ debug_kallsyms: .tmp_map$(last_kallsyms)
715endif # ifdef CONFIG_KALLSYMS 795endif # ifdef CONFIG_KALLSYMS
716 796
717# busybox image - including updated kernel symbols 797# busybox image - including updated kernel symbols
718busybox_unstripped: $(busybox-all) FORCE 798busybox_unstripped$(EXEEXT): $(busybox-all) FORCE
719 $(call if_changed_rule,busybox__) 799 $(call if_changed_rule,busybox__)
720 $(Q)rm -f .old_version 800 $(Q)rm -f .old_version
721 801
722busybox: busybox_unstripped 802busybox$(EXEEXT): busybox_unstripped$(EXEEXT)
723ifeq ($(SKIP_STRIP),y) 803ifeq ($(SKIP_STRIP),y)
724 $(Q)cp $< $@ 804 $(Q)cp $< $@
725else 805else
726 $(Q)$(STRIP) -s --remove-section=.note --remove-section=.comment \ 806 $(Q)$(STRIP) -s --remove-section=.note --remove-section=.comment \
727 busybox_unstripped -o $@ 807 busybox_unstripped$(EXEEXT) -o $@
728# strip is confused by PIE executable and does not set exec bits 808# strip is confused by PIE executable and does not set exec bits
729 $(Q)chmod a+x $@ 809 $(Q)chmod a+x $@
730endif 810endif
@@ -816,7 +896,7 @@ endif
816# prepare2 creates a makefile if using a separate output directory 896# prepare2 creates a makefile if using a separate output directory
817prepare2: prepare3 outputmakefile 897prepare2: prepare3 outputmakefile
818 898
819prepare1: prepare2 include/config/MARKER 899prepare1: prepare2 include/config/MARKER include/BB_VER.h
820ifneq ($(KBUILD_MODULES),) 900ifneq ($(KBUILD_MODULES),)
821 $(Q)mkdir -p $(MODVERDIR) 901 $(Q)mkdir -p $(MODVERDIR)
822 $(Q)rm -f $(MODVERDIR)/* 902 $(Q)rm -f $(MODVERDIR)/*
@@ -880,6 +960,13 @@ define filechk_version.h
880 ) 960 )
881endef 961endef
882 962
963define filechk_BB_VER.h
964 (echo \#define BB_VER \"$(KERNELRELEASE)\";)
965endef
966
967include/BB_VER.h: $(srctree)/Makefile .config .kernelrelease FORCE
968 $(call filechk,BB_VER.h)
969
883# --------------------------------------------------------------------------- 970# ---------------------------------------------------------------------------
884 971
885PHONY += depend dep 972PHONY += depend dep
@@ -966,7 +1053,7 @@ endif # CONFIG_MODULES
966 1053
967# Directories & files removed with 'make clean' 1054# Directories & files removed with 'make clean'
968CLEAN_DIRS += $(MODVERDIR) _install 0_lib 1055CLEAN_DIRS += $(MODVERDIR) _install 0_lib
969CLEAN_FILES += busybox busybox_unstripped* busybox.links \ 1056CLEAN_FILES += busybox$(EXEEXT) busybox_unstripped* busybox.links \
970 busybox*.suid busybox*.nosuid \ 1057 busybox*.suid busybox*.nosuid \
971 System.map .kernelrelease \ 1058 System.map .kernelrelease \
972 .tmp_kallsyms* .tmp_version .tmp_busybox* .tmp_System.map 1059 .tmp_kallsyms* .tmp_version .tmp_busybox* .tmp_System.map
@@ -975,6 +1062,7 @@ CLEAN_FILES += busybox busybox_unstripped* busybox.links \
975MRPROPER_DIRS += include/config include2 1062MRPROPER_DIRS += include/config include2
976MRPROPER_FILES += .config .config.old include/asm .version .old_version \ 1063MRPROPER_FILES += .config .config.old include/asm .version .old_version \
977 include/NUM_APPLETS.h \ 1064 include/NUM_APPLETS.h \
1065 include/BB_VER.h \
978 include/common_bufsiz.h \ 1066 include/common_bufsiz.h \
979 include/autoconf.h \ 1067 include/autoconf.h \
980 include/bbconfigopts.h \ 1068 include/bbconfigopts.h \
@@ -985,6 +1073,7 @@ MRPROPER_FILES += .config .config.old include/asm .version .old_version \
985 include/applets.h \ 1073 include/applets.h \
986 include/usage.h \ 1074 include/usage.h \
987 applets/usage \ 1075 applets/usage \
1076 win32/resources/busybox-w32.manifest \
988 .kernelrelease Module.symvers tags TAGS cscope* \ 1077 .kernelrelease Module.symvers tags TAGS cscope* \
989 busybox_old 1078 busybox_old
990 1079
diff --git a/Makefile.custom b/Makefile.custom
index 6f679c4e1..e2f6d1c2f 100644
--- a/Makefile.custom
+++ b/Makefile.custom
@@ -104,29 +104,29 @@ checkhelp:
104 $(patsubst %,$(srctree)/%,$(wildcard $(patsubst %,%/Config.in,$(busybox-dirs) ./))) 104 $(patsubst %,$(srctree)/%,$(wildcard $(patsubst %,%/Config.in,$(busybox-dirs) ./)))
105 105
106.PHONY: sizes 106.PHONY: sizes
107sizes: busybox_unstripped 107sizes: busybox_unstripped$(EXEEXT)
108 $(NM) --size-sort $(<) 108 $(NM) --size-sort $(<)
109 109
110.PHONY: bloatcheck 110.PHONY: bloatcheck
111bloatcheck: busybox_old busybox_unstripped 111bloatcheck: busybox_old$(EXEEXT) busybox_unstripped$(EXEEXT)
112 @$(srctree)/scripts/bloat-o-meter busybox_old busybox_unstripped 112 @$(srctree)/scripts/bloat-o-meter busybox_old$(EXEEXT) busybox_unstripped$(EXEEXT)
113 @$(CROSS_COMPILE)size busybox_old busybox_unstripped 113 @$(CROSS_COMPILE)size busybox_old$(EXEEXT) busybox_unstripped$(EXEEXT)
114 114
115.PHONY: baseline 115.PHONY: baseline
116baseline: busybox_unstripped 116baseline: busybox_unstripped$(EXEEXT)
117 @mv busybox_unstripped busybox_old 117 @mv busybox_unstripped$(EXEEXT) busybox_old$(EXEEXT)
118 118
119.PHONY: objsizes 119.PHONY: objsizes
120objsizes: busybox_unstripped 120objsizes: busybox_unstripped$(EXEEXT)
121 $(srctree)/scripts/objsizes 121 $(srctree)/scripts/objsizes
122 122
123.PHONY: stksizes 123.PHONY: stksizes
124stksizes: busybox_unstripped 124stksizes: busybox_unstripped$(EXEEXT)
125 $(CROSS_COMPILE)objdump -d busybox_unstripped | $(srctree)/scripts/checkstack.pl $(ARCH) | uniq 125 $(CROSS_COMPILE)objdump -d busybox_unstripped$(EXEEXT) | $(srctree)/scripts/checkstack.pl $(ARCH) | uniq
126 126
127.PHONY: bigdata 127.PHONY: bigdata
128bigdata: busybox_unstripped 128bigdata: busybox_unstripped$(EXEEXT)
129 $(CROSS_COMPILE)nm --size-sort busybox_unstripped | grep -vi ' [trw] ' 129 $(CROSS_COMPILE)nm --size-sort busybox_unstripped$(EXEEXT) | grep -vi ' [trw] '
130 130
131# Documentation Targets 131# Documentation Targets
132.PHONY: doc 132.PHONY: doc
diff --git a/Makefile.flags b/Makefile.flags
index 97cb4dca2..bf094ec5e 100644
--- a/Makefile.flags
+++ b/Makefile.flags
@@ -16,7 +16,8 @@ CPPFLAGS += \
16 -D_GNU_SOURCE -DNDEBUG \ 16 -D_GNU_SOURCE -DNDEBUG \
17 $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \ 17 $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \
18 $(if $(CONFIG_TIME64),-D_TIME_BITS=64) \ 18 $(if $(CONFIG_TIME64),-D_TIME_BITS=64) \
19 -DBB_VER=$(squote)$(quote)$(BB_VER)$(quote)$(squote) 19 -DMINGW_VER=$(squote)$(quote)$(MINGW_VER)$(quote)$(squote) \
20 $(if $(CONFIG_PLATFORM_MINGW32),,-DBB_VER=$(squote)$(quote)$(BB_VER)$(quote)$(squote))
20 21
21CFLAGS += $(call cc-option,-Wall,) 22CFLAGS += $(call cc-option,-Wall,)
22CFLAGS += $(call cc-option,-Wshadow,) 23CFLAGS += $(call cc-option,-Wshadow,)
@@ -72,8 +73,13 @@ CFLAGS += $(call cc-option,-falign-jumps=1 -falign-labels=1 -falign-loops=1,)
72endif 73endif
73 74
74# Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary): 75# Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary):
76ifneq ($(CONFIG_UNWIND_TABLES),y)
75CFLAGS += $(call cc-option,-fno-unwind-tables,) 77CFLAGS += $(call cc-option,-fno-unwind-tables,)
76CFLAGS += $(call cc-option,-fno-asynchronous-unwind-tables,) 78CFLAGS += $(call cc-option,-fno-asynchronous-unwind-tables,)
79else
80CFLAGS += $(call cc-option,-funwind-tables,)
81CFLAGS += $(call cc-option,-fasynchronous-unwind-tables,)
82endif
77# No automatic printf->puts,putchar conversions 83# No automatic printf->puts,putchar conversions
78# (try disabling this and comparing assembly, it's instructive) 84# (try disabling this and comparing assembly, it's instructive)
79CFLAGS += $(call cc-option,-fno-builtin-printf,) 85CFLAGS += $(call cc-option,-fno-builtin-printf,)
@@ -146,6 +152,22 @@ CFLAGS += --sysroot=$(CONFIG_SYSROOT)
146export SYSROOT=$(CONFIG_SYSROOT) 152export SYSROOT=$(CONFIG_SYSROOT)
147endif 153endif
148 154
155ifeq ($(CONFIG_PLATFORM_MINGW32),y)
156CFLAGS += -Iwin32 -DHAVE_STRING_H=1 -DHAVE_CONFIG_H=0 -fno-builtin-stpcpy -fno-builtin-stpncpy -fno-ident -fno-builtin-strndup
157# this seems to be necessary for setjmp/longjmp to work with clang
158ifeq ($(lastword $(subst -, ,$(CC))),clang)
159ifeq ($(CONFIG_UNWIND_TABLES),y)
160CFLAGS += $(call cc-option,-fexceptions,)
161else
162CFLAGS += $(call cc-option,-fsjlj-exceptions,)
163endif
164endif
165
166EXEEXT = .exe
167LDLIBS += ws2_32
168endif
169
170ifneq ($(CONFIG_PLATFORM_MINGW32),y)
149# libm may be needed for dc, awk, ntpd 171# libm may be needed for dc, awk, ntpd
150LDLIBS += m 172LDLIBS += m
151# Android has no separate crypt library 173# Android has no separate crypt library
@@ -161,6 +183,7 @@ endif
161ifeq ($(RT_AVAILABLE),y) 183ifeq ($(RT_AVAILABLE),y)
162LDLIBS += rt 184LDLIBS += rt
163endif 185endif
186endif
164 187
165# libpam may use libpthread, libdl and/or libaudit. 188# libpam may use libpthread, libdl and/or libaudit.
166# On some platforms that requires an explicit -lpthread, -ldl, -laudit. 189# On some platforms that requires an explicit -lpthread, -ldl, -laudit.