From e422bcb9b9e3aea5117f76711c9fb336e6fc8a0d Mon Sep 17 00:00:00 2001 From: baujc <baujc@cwe-513-vol554.cern.ch> Date: Mon, 25 Feb 2019 16:42:43 +0100 Subject: [PATCH] Add in Kconfig the selection of the optimization compilation flags --- Kconfig | 34 +++++++++++++++++++++++++++++++++ userspace/libsdb/Makefile | 8 +++++++- userspace/libwr/Makefile | 10 ++++++++-- userspace/tools/Makefile | 9 ++++++++- userspace/wrs_watchdog/Makefile | 8 +++++++- userspace/wrsw_hal/Makefile | 9 ++++++++- userspace/wrsw_rtud/Makefile | 8 +++++++- 7 files changed, 79 insertions(+), 7 deletions(-) diff --git a/Kconfig b/Kconfig index 43c7819d1..f46774e9d 100644 --- a/Kconfig +++ b/Kconfig @@ -1064,3 +1064,37 @@ config RTU_HP_MASK_VAL endmenu source Kconfig_vlans.in + +choice + prompt "Compilation optimization" + + config OPTIMIZATION_SPEED + boolean "Execution time (-O2)" + help + GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. + + config OPTIMIZATION_SIZE_SPEED + boolean "Size and execution time (-Os)" + help + Optimize for size. Enables all -O2 optimizations except those that often increase code size. + + config OPTIMIZATION_DEBUGGING + boolean "Debugging (-Og -ggdb)" + help + Should be the optimization level of choice for the standard edit-compile-debug cycle + + config OPTIMIZATION_NONE_DEBUGGING + boolean "Debugging without optimization(-ggdb)" + help + Compile without optimization and with debug informations +endchoice + +config OPTIMIZATION + string + default "-Os" if OPTIMIZATION_SIZE_SPEED + default "-O2" if OPTIMIZATION_SPEED + default "-Og -ggdb" if OPTIMIZATION_DEBUGGING + default "-ggdb" if OPTIMIZATION_NONE_DEBUGGING + default "" + + diff --git a/userspace/libsdb/Makefile b/userspace/libsdb/Makefile index 469967349..919e60c8c 100644 --- a/userspace/libsdb/Makefile +++ b/userspace/libsdb/Makefile @@ -1,4 +1,7 @@ +# We are now Kconfig-based +-include ../../.config + LINUX ?= /lib/modules/$(shell uname -r)/build # If we compile for the kernel, we need to include real kernel headers. @@ -19,7 +22,10 @@ OBJDUMP = $(CROSS_COMPILE)objdump # calculate endianness at compile time ENDIAN := $(shell ./check-endian $(CC)) -CFLAGS = -Wall -ggdb -O2 +export CFLAGS_OPTIMIZATION:= ${shell echo $(CONFIG_OPTIMIZATION)} + +CFLAGS += $(CFLAGS_OPTIMIZATION) +CFLAGS += -Wall CFLAGS += -I../include/linux -I../include # for <sdb.h> CFLAGS += -ffunction-sections -fdata-sections CFLAGS += -Wno-pointer-sign diff --git a/userspace/libwr/Makefile b/userspace/libwr/Makefile index 33eef1467..d3ae6145d 100644 --- a/userspace/libwr/Makefile +++ b/userspace/libwr/Makefile @@ -1,3 +1,7 @@ + +# We are now Kconfig-based +-include ../../.config + OBJS = init.o fpga_io.o util.o pps_gen.o i2c.o shw_io.o i2c_bitbang.o \ i2c_fpga_reg.o pio.o libshw_i2c.o i2c_sfp.o fan.o i2c_io.o hwiu.o \ ptpd_netif.o hal_client.o hal_minirpc.o\ @@ -21,8 +25,10 @@ STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump -CFLAGS = -Wall -I. -O2 -ggdb \ - -Wstrict-prototypes \ +export CFLAGS_OPTIMIZATION:= ${shell echo $(CONFIG_OPTIMIZATION)} + +CFLAGS += $(CFLAGS_OPTIMIZATION) +CFLAGS += -Wall -I. -Wstrict-prototypes \ -DLIBWR_INTERNAL \ -I./include \ -I../include \ diff --git a/userspace/tools/Makefile b/userspace/tools/Makefile index 0e2bfd094..c48f58bac 100644 --- a/userspace/tools/Makefile +++ b/userspace/tools/Makefile @@ -1,3 +1,7 @@ + +# We are now Kconfig-based +-include ../../.config + TOOLS = rtu_stat wr_mon wr_phytool wrs_pps_control spll_dbg_proxy load-lm32 load-virtex com TOOLS += mapper wmapper TOOLS += wrs_version wr_date lm32-vuart wrs_pstats @@ -28,7 +32,10 @@ OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump # LOTs of includes -CFLAGS = -O2 -g -Wall \ +export CFLAGS_OPTIMIZATION:= ${shell echo $(CONFIG_OPTIMIZATION)} + +CFLAGS += $(CFLAGS_OPTIMIZATION) +CFLAGS += -Wall \ -Wstrict-prototypes \ -I$(LINUX)/arch/arm/mach-at91/include \ -I../wrsw_rtud \ diff --git a/userspace/wrs_watchdog/Makefile b/userspace/wrs_watchdog/Makefile index 99a034093..f7654a8ad 100644 --- a/userspace/wrs_watchdog/Makefile +++ b/userspace/wrs_watchdog/Makefile @@ -1,4 +1,7 @@ +# We are now Kconfig-based +-include ../../.config + OBJS = wrs_watchdog.o BINARY = wrs_watchdog @@ -16,7 +19,10 @@ STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump -CFLAGS = -O -g -Wall \ +export CFLAGS_OPTIMIZATION:= ${shell echo $(CONFIG_OPTIMIZATION)} + +CFLAGS += $(CFLAGS_OPTIMIZATION) +CFLAGS = -Wall \ -Wstrict-prototypes \ -I../include \ -I../libwr/include \ diff --git a/userspace/wrsw_hal/Makefile b/userspace/wrsw_hal/Makefile index edbb95dcd..784b6a38d 100644 --- a/userspace/wrsw_hal/Makefile +++ b/userspace/wrsw_hal/Makefile @@ -1,4 +1,7 @@ +# We are now Kconfig-based +-include ../../.config + OBJS = hal_exports.o hal_main.o hal_ports.o hal_timing.o BINARY = wrsw_hal @@ -16,7 +19,10 @@ STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump -CFLAGS = -O -g -Wall \ +export CFLAGS_OPTIMIZATION:= ${shell echo $(CONFIG_OPTIMIZATION)} + +CFLAGS += $(CFLAGS_OPTIMIZATION) +CFLAGS += -Wall \ -Wstrict-prototypes \ -I../include \ -I../libwr/include \ @@ -34,6 +40,7 @@ LDFLAGS = -L../libwr -L../mini-rpc \ all: $(BINARY) $(BINARY): $(OBJS) + pwd $(CC) -o $@ $^ $(LDFLAGS) install: all diff --git a/userspace/wrsw_rtud/Makefile b/userspace/wrsw_rtud/Makefile index 34378d9e3..419be91ab 100644 --- a/userspace/wrsw_rtud/Makefile +++ b/userspace/wrsw_rtud/Makefile @@ -1,4 +1,7 @@ +# We are now Kconfig-based +-include ../../.config + PROGRAM = wrsw_rtud SRCFILES = rtu_drv.c rtu_ext_drv.c rtu_hash.c rtu_fd.c rtud.c \ rtud_exports.c utils.c @@ -17,7 +20,10 @@ STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump -CFLAGS = -O2 -Wall -ggdb \ +export CFLAGS_OPTIMIZATION:= ${shell echo $(CONFIG_OPTIMIZATION)} + +CFLAGS += $(CFLAGS_OPTIMIZATION) +CFLAGS = -Wall \ -Wstrict-prototypes \ -I../mini-rpc \ -I../include \ -- GitLab