From abf4f1309fd7d393f545a91cbe8d6b16bbbff5e7 Mon Sep 17 00:00:00 2001 From: Markham Date: Thu, 18 Jan 2018 22:11:11 +0100 Subject: [PATCH] update/change compiler flags --- doc/config.example | 8 ++--- make/applications.mk | 6 ++-- make/environment.mk | 70 ++++++++++++++++++++++++++------------------ make/neutrino.mk | 62 ++++++++++++++++++++++++--------------- 4 files changed, 87 insertions(+), 59 deletions(-) diff --git a/doc/config.example b/doc/config.example index 47aa64f..68804f9 100755 --- a/doc/config.example +++ b/doc/config.example @@ -11,13 +11,13 @@ # BOXMODEL = neo +#DEBUG = yes + # if you want to use your precompiled toolchain, define CROSS_DIR: # this will skip the building of our own compiler/glibc combination! # if CROSS_DIR is not defined, you must first build your toolchain with "make crosstool"! -# CROSS_DIR=/opt/crosstool-ng-1.16.0-kernel-2.6.34.13-cnxt/arm-cx2450x-linux-gnueabi -# CROSS_DIR=/opt/crosstool-ng-1.16.0-kernel-2.6.34.13-cnxt/arm-pnx8400-linux-uclibcgnueabi -# CROSS_DIR=/opt/crosstool-ng-1.19.0-kernel-2.6.34.13-cnxt/arm-cx2450x-linux-gnueabi -# CROSS_DIR=/opt/crosstool-ng-1.19.0-kernel-2.6.34.13-cnxt/arm-pnx8400-linux-uclibcgnueabi +# CROSS_DIR=/opt/cross + # if /usr/share/libtool/config/config.guess does not supply a valid # build type, specify it here. THIS IS A WORKAROUND. Use with caution. diff --git a/make/applications.mk b/make/applications.mk index 83485d7..e676251 100755 --- a/make/applications.mk +++ b/make/applications.mk @@ -6,9 +6,9 @@ $(D)/procps: $(D)/libncurses $(ARCHIVE)/procps-3.2.8.tar.gz | $(TARGETPREFIX) pushd $(BUILD_TMP)/procps-3.2.8 && \ $(PATCH)/procps-3.2.7-avoid-ICE-with-gcc-4.3.2-arm.diff && \ $(PATCH)/procps-3.2.8-fix-unknown-HZ.diff && \ - $(MAKE) CC=$(TARGET)-gcc LDFLAGS="$(LD_FLAGS)" \ + $(MAKE) CC=$(TARGET)-gcc LDFLAGS="$(TARGET_LDFLAGS)" \ CPPFLAGS="-pipe -O2 -g -I$(TARGETPREFIX)/include -I$(TARGETPREFIX)/include/ncurses -D__GNU_LIBRARY__" proc/libproc-3.2.8.so && \ - $(MAKE) CC=$(TARGET)-gcc LDFLAGS="$(LD_FLAGS) proc/libproc-3.2.8.so" \ + $(MAKE) CC=$(TARGET)-gcc LDFLAGS="$(TARGET_LDFLAGS) proc/libproc-3.2.8.so" \ CPPFLAGS="-pipe -O2 -g -I$(TARGETPREFIX)/include -I$(TARGETPREFIX)/include/ncurses -D__GNU_LIBRARY__" top ps/ps && \ mkdir -p $(TARGETPREFIX)/bin && \ rm -f $(TARGETPREFIX)/bin/ps $(TARGETPREFIX)/bin/top && \ @@ -132,7 +132,7 @@ $(D)/vsftpd: $(ARCHIVE)/vsftpd-$(VSFTPD_VER).tar.gz | $(TARGETPREFIX) sed -e 's/die("config file not owned by correct user, or not a file");/\/\/die("config file not owned by correct user, or not a file");/g' $(BUILD_TMP)/vsftpd-$(VSFTPD_VER)/parseconf.tmp > $(BUILD_TMP)/vsftpd-$(VSFTPD_VER)/parseconf.c && \ cp $(PATCHES)/vsftpd-new.conf vsftpd.conf && \ $(PATCH)/vsftpd-new.diff && \ - TARGETPREFIX=$(TARGETPREFIX) $(MAKE) CC=$(TARGET)-gcc CFLAGS="-pipe -O2 -g0 -I$(TARGETPREFIX)/include" LDFLAGS="$(LD_FLAGS) -Wl,-rpath-link,$(TARGETLIB)" && \ + TARGETPREFIX=$(TARGETPREFIX) $(MAKE) CC=$(TARGET)-gcc CFLAGS="-pipe -O2 -g0 -I$(TARGETPREFIX)/include" LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath-link,$(TARGETLIB)" && \ mkdir -p $(TARGETPREFIX)/sbin && \ install -m755 vsftpd $(TARGETPREFIX)/sbin/vsftpd && \ install -m 644 vsftpd.conf $(TARGETPREFIX)/etc/vsftpd.conf && \ diff --git a/make/environment.mk b/make/environment.mk index d235d6c..aebe0b4 100755 --- a/make/environment.mk +++ b/make/environment.mk @@ -32,32 +32,32 @@ GCC = $(shell gcc -dumpversion | cut -c 1-3) ifeq ($(BOXMODEL), $(filter $(BOXMODEL), zee2 link)) - BOXTYPE = coolstream - BOXSERIES = hd2 - TARGET ?= arm-cortex-linux-uclibcgnueabi - PLATFORM = kronos - DRIVER_DIR ?= $(PLATFORM)-3.x - CST_KERNEL_VERSION ?= 3.10.70 - KVERSION_FULL = $(CST_KERNEL_VERSION) - KBRANCH ?= cst_3.10 + BOXTYPE = coolstream + BOXSERIES = hd2 + TARGET ?= arm-cortex-linux-uclibcgnueabi + PLATFORM = kronos + DRIVER_DIR ?= $(PLATFORM)-3.x + CST_KERNEL_VERSION ?= 3.10.70 + KVERSION_FULL = $(CST_KERNEL_VERSION) + KBRANCH ?= cst_3.10 else ifeq ($(BOXMODEL), $(filter $(BOXMODEL), tank trinity)) - BOXTYPE = coolstream - BOXSERIES = hd2 - TARGET ?= arm-cortex-linux-uclibcgnueabi - PLATFORM = apollo - DRIVER_DIR ?= $(PLATFORM)-3.x - CST_KERNEL_VERSION ?= 3.10.70 - KVERSION_FULL = $(CST_KERNEL_VERSION) - KBRANCH ?= cst_3.10 + BOXTYPE = coolstream + BOXSERIES = hd2 + TARGET ?= arm-cortex-linux-uclibcgnueabi + PLATFORM = apollo + DRIVER_DIR ?= $(PLATFORM)-3.x + CST_KERNEL_VERSION ?= 3.10.70 + KVERSION_FULL = $(CST_KERNEL_VERSION) + KBRANCH ?= cst_3.10 else ifeq ($(BOXMODEL), $(filter $(BOXMODEL), neo zee)) - BOXTYPE = coolstream - BOXSERIES = hd1 - TARGET ?= arm-cx2450x-linux-gnueabi - PLATFORM = nevis - DRIVER_DIR ?= $(PLATFORM) - CST_KERNEL_VERSION ?= 2.6.34.13 - KVERSION_FULL = $(CST_KERNEL_VERSION)-nevis - KBRANCH ?= $(CST_KERNEL_VERSION)-cnxt + BOXTYPE = coolstream + BOXSERIES = hd1 + TARGET ?= arm-cx2450x-linux-gnueabi + PLATFORM = nevis + DRIVER_DIR ?= $(PLATFORM) + CST_KERNEL_VERSION ?= 2.6.34.13 + KVERSION_FULL = $(CST_KERNEL_VERSION)-nevis + KBRANCH ?= $(CST_KERNEL_VERSION)-cnxt else $(error $(BOXTYPE) BOXMODEL $(BOXMODEL) not supported) endif @@ -66,13 +66,27 @@ ifeq ($(BOXTYPE), coolstream) BOXARCH = arm endif +ifeq ($(BOXSERIES), hd1) + CORTEX-STRINGS = + TARGET_MARCH_CFLAGS = -march=armv6 -mfloat-abi=soft -mlittle-endian + TARGET_EXTRA_CFLAGS = -fdata-sections -ffunction-sections + TARGET_EXTRA_LDFLAGS = -Wl,--gc-sections + CXX11_ABI = +else ifeq ($(BOXSERIES), hd2) + CORTEX-STRINGS = -lcortex-strings + TARGET_MARCH_CFLAGS = -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard -mlittle-endian + TARGET_EXTRA_CFLAGS = -fdata-sections -ffunction-sections + TARGET_EXTRA_LDFLAGS = -Wl,--gc-sections + CXX11_ABI = -D_GLIBCXX_USE_CXX11_ABI=0 +else + $(error $(BOXTYPE) BOXSERIES $(BOXSERIES) not supported) +endif + TARGETLIB = $(TARGETPREFIX)/lib -#TARGET_CFLAGS = -pipe -O2 -g -I$(TARGETPREFIX)/include -TARGET_CFLAGS = -pipe -O2 -I$(TARGETPREFIX)/include +TARGET_CFLAGS = -pipe $(TARGET_MARCH_CFLAGS) $(TARGET_EXTRA_CFLAGS) $(CXX11_ABI) -g -I$(TARGETPREFIX)/include TARGET_CPPFLAGS = $(TARGET_CFLAGS) TARGET_CXXFLAGS = $(TARGET_CFLAGS) -TARGET_LDFLAGS = -Wl,-O1 -L$(TARGETLIB) -Wl,-rpath-link,$(TARGETLIB) -LD_FLAGS = $(TARGET_LDFLAGS) +TARGET_LDFLAGS = -O1 -Wl,-rpath,$(TARGETLIB) -Wl,-rpath-link,$(TARGETLIB) -L$(TARGETLIB) $(TARGET_EXTRA_LDFLAGS) VPATH = $(D) diff --git a/make/neutrino.mk b/make/neutrino.mk index 979cd5a..0465ff1 100755 --- a/make/neutrino.mk +++ b/make/neutrino.mk @@ -1,29 +1,21 @@ #Makefile to build NEUTRINO N_CFLAGS = -Wall -Werror -Wextra -Wshadow -Wsign-compare -#N_CFLAGS += -Wconversion -#N_CFLAGS += -Wfloat-equal -OPTIMIZATION = normal - -ifeq ($(OPTIMIZATION), debug) -N_CFLAGS += -g -O1 -ggdb3 -endif -ifeq ($(OPTIMIZATION), normal) N_CFLAGS += -O2 -endif N_CFLAGS += -fmax-errors=10 -N_CFLAGS += -D__KERNEL_STRICT_NAMES +#N_CFLAGS += -D__KERNEL_STRICT_NAMES N_CFLAGS += -DNEW_LIBCURL -N_CFLAGS += -fno-strict-aliasing -N_CFLAGS += -D__STDC_FORMAT_MACROS +#N_CFLAGS += -fno-strict-aliasing +#N_CFLAGS += -D__STDC_FORMAT_MACROS N_CFLAGS += -D__STDC_CONSTANT_MACROS ifeq ($(PLATFORM), $(filter $(PLATFORM), apollo kronos)) -N_CFLAGS += -mcpu=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard +#N_CFLAGS += -mcpu=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard N_CFLAGS += -DFB_HW_ACCELERATION else -N_CFLAGS += -DUSE_NEVIS_GXA +#N_CFLAGS += -DUSE_NEVIS_GXA +N_CFLAGS += endif ifeq ($(BOXMODEL), $(filter $(BOXMODEL), zee2 link)) @@ -32,20 +24,43 @@ else HW_TYPE = --with-boxmodel=$(PLATFORM) endif -#N_CFLAGS += -I$(TARGETPREFIX)/include -#N_CFLAGS += -I$(TARGETPREFIX)/include/freetype2 +N_CFLAGS += -I$(TARGETPREFIX)/include N_CFLAGS += -I$(NEUTRINO_OBJDIR) N_CFLAGS += -I$(NEUTRINO_OBJDIR)/src/gui -N_CPPFLAGS = -I$(TARGETPREFIX)/include -N_CPPFLAGS += -Werror -Wsign-compare -N_CPPFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 +ifeq ($(DEBUG), yes) + N_CFLAGS += -O1 -ggdb3 -rdynamic +else + N_CFLAGS += $(TARGET_CFLAGS) +endif # the original build script links against openssl. # N_LDFLAGS = -L$(TARGETPREFIX)/lib -lcurl -lssl -lcrypto -ldl -# the original build script links against openssl, but it is not needed at all. -N_LDFLAGS = -L$(TARGETPREFIX)/lib -lcurl -ldl -lz -N_LDFLAGS += -Wl,-rpath-link,$(TARGETLIB) +N_LDFLAGS = -lcrypto -ldl -lz $(CORTEX-STRINGS) -L$(TARGETLIB) +ifeq ($(DEBUG), yes) + N_LDFLAGS += -Wl,-rpath-link,$(TARGETLIB) +else + N_LDFLAGS += -Wl,-O1 -Wl,-rpath-link,$(TARGETLIB) $(TARGET_EXTRA_LDFLAGS) +endif + +N_BUILDENV = \ + CC=$(TARGET)-gcc \ + CXX=$(TARGET)-g++ \ + LD=$(TARGET)-ld \ + NM=$(TARGET)-nm \ + AR=$(TARGET)-ar \ + AS=$(TARGET)-as \ + LDD=$(TARGET)-ldd \ + RANLIB=$(TARGET)-ranlib \ + STRIP=$(TARGET)-strip \ + OBJCOPY=$(TARGET)-objcopy \ + OBJDUMP=$(TARGET)-objdump \ + READELF=$(TARGET)-readelf \ + CFLAGS="$(N_CFLAGS)" \ + CPPFLAGS="$(N_CFLAGS)" \ + CXXFLAGS="$(N_CFLAGS)" \ + LDFLAGS="$(N_LDFLAGS)" + # finally we can build outside of the source directory NEUTRINO_OBJDIR = $(BUILD_TMP)/neutrino-hd @@ -85,8 +100,7 @@ $(NEUTRINO_OBJDIR)/config.status: $(NEUTRINO_DEPS) $(D)/neutrino-hd-libs pushd $(NEUTRINO_OBJDIR) && \ export PKG_CONFIG=$(PKG_CONFIG) && \ export PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) && \ - CC=$(TARGET)-gcc CFLAGS="$(N_CFLAGS)" CXXFLAGS="$(N_CFLAGS)" CPPFLAGS="$(N_CPPFLAGS)" \ - LDFLAGS="$(N_LDFLAGS)" \ + $(N_BUILDENV) \ $(SOURCE_DIR)/neutrino-hd/configure --host=$(TARGET) --build=$(BUILD) --prefix= \ --enable-maintainer-mode --with-target=cdk --with-targetprefix="" \ --with-boxtype=$(BOXTYPE) \ -- 2.39.5