#
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.
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 && \
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 && \
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
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)
#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))
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
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) \