busybox/Makefile.flags
<<
>>
Prefs
   1# ==========================================================================
   2# Build system
   3# ==========================================================================
   4
   5BB_VER = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
   6export BB_VER
   7SKIP_STRIP = n
   8
   9# -std=gnu99 needed for [U]LLONG_MAX on some systems
  10CPPFLAGS += $(call cc-option,-std=gnu99,)
  11
  12CPPFLAGS += \
  13        -Iinclude -Ilibbb \
  14        $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include -I$(srctree)/libbb) \
  15        -include include/autoconf.h \
  16        -D_GNU_SOURCE -DNDEBUG \
  17        $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \
  18        -D"BB_VER=KBUILD_STR($(BB_VER))" -DBB_BT=AUTOCONF_TIMESTAMP
  19
  20CFLAGS += $(call cc-option,-Wall,)
  21CFLAGS += $(call cc-option,-Wshadow,)
  22CFLAGS += $(call cc-option,-Wwrite-strings,)
  23CFLAGS += $(call cc-option,-Wundef,)
  24CFLAGS += $(call cc-option,-Wstrict-prototypes,)
  25CFLAGS += $(call cc-option,-Wunused -Wunused-parameter,)
  26CFLAGS += $(call cc-option,-Wunused-function -Wunused-value,)
  27CFLAGS += $(call cc-option,-Wmissing-prototypes -Wmissing-declarations,)
  28# warn about C99 declaration after statement
  29CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
  30# If you want to add more -Wsomething above, make sure that it is
  31# still possible to build bbox without warnings.
  32
  33ifeq ($(CONFIG_WERROR),y)
  34CFLAGS += $(call cc-option,-Werror,)
  35endif
  36# gcc 3.x emits bogus "old style proto" warning on find.c:alloc_action()
  37CFLAGS += $(call cc-ifversion, -ge, 0400, -Wold-style-definition)
  38
  39CFLAGS += $(call cc-option,-fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections,)
  40# -fno-guess-branch-probability: prohibit pseudo-random guessing
  41# of branch probabilities (hopefully makes bloatcheck more stable):
  42CFLAGS += $(call cc-option,-fno-guess-branch-probability,)
  43CFLAGS += $(call cc-option,-funsigned-char -static-libgcc,)
  44CFLAGS += $(call cc-option,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,)
  45
  46# FIXME: These warnings are at least partially to be concerned about and should
  47# be fixed..
  48#CFLAGS += $(call cc-option,-Wconversion,)
  49
  50ifneq ($(CONFIG_DEBUG),y)
  51CFLAGS += $(call cc-option,-Os,)
  52else
  53CFLAGS += $(call cc-option,-g,)
  54#CFLAGS += "-D_FORTIFY_SOURCE=2"
  55ifeq ($(CONFIG_DEBUG_PESSIMIZE),y)
  56CFLAGS += $(call cc-option,-O0,)
  57else
  58CFLAGS += $(call cc-option,-Os,)
  59endif
  60endif
  61
  62# If arch/$(ARCH)/Makefile did not override it (with, say, -fPIC)...
  63ARCH_FPIC ?= -fpic
  64ARCH_FPIE ?= -fpie
  65ARCH_PIE ?= -pie
  66
  67ifeq ($(CONFIG_BUILD_LIBBUSYBOX),y)
  68# on i386: 14% smaller libbusybox.so
  69# (code itself is 9% bigger, we save on relocs/PLT/GOT)
  70CFLAGS += $(ARCH_FPIC)
  71# and another 4% reduction of libbusybox.so:
  72# (external entry points must be marked EXTERNALLY_VISIBLE)
  73CFLAGS += $(call cc-option,-fvisibility=hidden)
  74endif
  75
  76ifeq ($(CONFIG_STATIC),y)
  77CFLAGS_busybox += -static
  78endif
  79
  80ifeq ($(CONFIG_PIE),y)
  81CFLAGS_busybox += $(ARCH_PIE)
  82CFLAGS += $(ARCH_FPIE)
  83endif
  84
  85ifneq ($(CONFIG_EXTRA_CFLAGS),)
  86CFLAGS += $(strip $(subst ",,$(CONFIG_EXTRA_CFLAGS)))
  87#"))
  88endif
  89
  90LDLIBS += m crypt
  91
  92ifeq ($(CONFIG_PAM),y)
  93LDLIBS += pam pam_misc
  94endif
  95
  96ifeq ($(CONFIG_SELINUX),y)
  97LDLIBS += selinux sepol
  98endif
  99
 100ifeq ($(CONFIG_EFENCE),y)
 101LDLIBS += efence
 102endif
 103
 104ifeq ($(CONFIG_DMALLOC),y)
 105LDLIBS += dmalloc
 106endif
 107
 108# If a flat binary should be built, CFLAGS_busybox="-elf2flt"
 109# env var should be set for make invocation.
 110# Here we check whether CFLAGS_busybox indeed contains that flag.
 111# (For historical reasons, we also check LDFLAGS, which doesn't
 112# seem to be entirely correct variable to put "-elf2flt" into).
 113W_ELF2FLT = -elf2flt
 114ifneq (,$(findstring $(W_ELF2FLT),$(LDFLAGS) $(CFLAGS_busybox)))
 115SKIP_STRIP = y
 116endif
 117
 118# Busybox is a stack-fatty so make sure we increase default size
 119# TODO: use "make stksizes" to find & fix big stack users
 120# (we stole scripts/checkstack.pl from the kernel... thanks guys!)
 121# Reduced from 20k to 16k in 1.9.0.
 122FLTFLAGS += -s 16000
 123