You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

431 lines
13 KiB

#
# set up build environment for other makefiles
#
# -----------------------------------------------------------------------------
7 years ago
LD_LIBRARY_PATH =
export LD_LIBRARY_PATH
SHELL := /bin/bash
# -----------------------------------------------------------------------------
4 years ago
ifndef MAKE
MAKE := make
endif
ifndef HOSTMAKE
HOSTMAKE = $(MAKE)
endif
HOSTMAKE := $(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make)
4 years ago
PARALLEL_JOBS := $(shell echo \
$$((1 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`)))
MAKE1 := $(HOSTMAKE) -j1
override MAKE = $(HOSTMAKE) \
$(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS))
MAKEFLAGS += --no-print-directory
#MAKEFLAGS += --silent
4 years ago
TARGET_VENDOR = NI-Buildsystem
TARGET_OS = linux
# -----------------------------------------------------------------------------
ifeq ($(BOXSERIES),hd1)
4 years ago
DRIVERS_BIN_DIR = $(BOXTYPE)/$(BOXFAMILY)
CORTEX_STRINGS_LDFLAG =
TARGET = arm-cx2450x-linux-gnueabi
TARGET_OPTIMIZATION = -Os
TARGET_DEBUGGING = -g
TARGET_ARCH = arm
TARGET_CPU = armv6
TARGET_ABI = -march=$(TARGET_CPU) -mfloat-abi=soft -mlittle-endian
TARGET_ENDIAN = little
TARGET_EXTRA_CFLAGS = -fdata-sections -ffunction-sections
TARGET_EXTRA_LDFLAGS = -Wl,--gc-sections
CXX11_ABI =
else ifeq ($(BOXSERIES),hd2)
4 years ago
DRIVERS_BIN_DIR = $(BOXTYPE)/$(BOXFAMILY)
CORTEX_STRINGS_LDFLAG = -lcortex-strings
TARGET = arm-cortex-linux-uclibcgnueabi
TARGET_OPTIMIZATION = -O2
TARGET_DEBUGGING = -g
TARGET_ARCH = arm
TARGET_CPU = armv7-a
TARGET_ABI = -march=$(TARGET_CPU) -mtune=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard -mlittle-endian
TARGET_ENDIAN = little
TARGET_EXTRA_CFLAGS =
TARGET_EXTRA_LDFLAGS =
ifeq ($(BOXMODEL),kronos_v2)
TARGET_OPTIMIZATION = -Os
TARGET_EXTRA_CFLAGS = -fdata-sections -ffunction-sections
TARGET_EXTRA_LDFLAGS = -Wl,--gc-sections
endif
CXX11_ABI = -D_GLIBCXX_USE_CXX11_ABI=0
else ifeq ($(BOXSERIES),$(filter $(BOXSERIES),hd5x hd6x vusolo4k vuduo4k vuduo4kse vuultimo4k vuzero4k vuuno4k vuuno4kse))
4 years ago
DRIVERS_BIN_DIR = $(BOXTYPE)/$(BOXMODEL)
CORTEX_STRINGS_LDFLAG = -lcortex-strings
TARGET = arm-cortex-linux-gnueabihf
TARGET_OPTIMIZATION = -O2
TARGET_DEBUGGING = -g
TARGET_ARCH = arm
TARGET_CPU = armv7ve
TARGET_ABI = -march=$(TARGET_CPU) -mtune=cortex-a15 -mfpu=neon-vfpv4 -mfloat-abi=hard
TARGET_ENDIAN = little
TARGET_EXTRA_CFLAGS =
TARGET_EXTRA_LDFLAGS =
CXX11_ABI =
else ifeq ($(BOXSERIES),$(filter $(BOXSERIES),vuduo))
4 years ago
DRIVERS_BIN_DIR = $(BOXTYPE)/$(BOXMODEL)
CORTEX_STRINGS_LDFLAG =
TARGET = mipsel-unknown-linux-gnu
TARGET_OPTIMIZATION = -O2
TARGET_DEBUGGING = -g
TARGET_ARCH = mips
TARGET_CPU = mips32
TARGET_ABI = -march=$(TARGET_CPU) -mtune=mips32
TARGET_ENDIAN = little
TARGET_EXTRA_CFLAGS =
TARGET_EXTRA_LDFLAGS =
CXX11_ABI =
endif
# -----------------------------------------------------------------------------
BASE_DIR := $(shell pwd)
MAINTAINER ?= unknown
7 years ago
WHOAMI := $(shell id -un)
DL_DIR = $(BASE_DIR)/download
BUILD_DIR = $(BASE_DIR)/build_tmp
ROOTFS = $(BUILD_DIR)/rootfs
ifeq ($(BOXSERIES),$(filter $(BOXSERIES),hd5x))
ROOTFS = $(BUILD_DIR)/rootfs/linuxrootfs1
endif
DEPS_DIR = $(BASE_DIR)/deps
D = $(DEPS_DIR)
SOURCE_DIR ?= $(BASE_DIR)/source
MAKE_DIR = $(BASE_DIR)/make
LOCAL_DIR = $(BASE_DIR)/local
STAGING_DIR = $(BASE_DIR)/staging
IMAGE_DIR = $(STAGING_DIR)/images
UPDATE_DIR = $(STAGING_DIR)/updates
HELPERS_DIR = $(BASE_DIR)/helpers
CROSS_BASE = $(BASE_DIR)/cross
CROSS_DIR ?= $(CROSS_BASE)/$(TARGET_ARCH)-linux-$(KERNEL_VER)
STATIC_BASE = $(BASE_DIR)/static
STATIC_DIR = $(STATIC_BASE)/$(TARGET_ARCH)-linux-$(KERNEL_VER)
CONFIGS = $(BASE_DIR)/configs
PATCHES = $(BASE_DIR)/patches
4 years ago
SKEL_ROOT = $(BASE_DIR)/skel-root/$(BOXSERIES)
ifeq ($(BOXMODEL),$(filter $(BOXMODEL),vusolo4k vuduo4k vuduo4kse vuultimo4k vuzero4k vuuno4k vuuno4kse))
4 years ago
SKEL_ROOT = $(BASE_DIR)/skel-root/vuplus
endif
TARGET_FILES = $(BASE_DIR)/skel-root/general
4 years ago
PACKAGE_DIR = $(BASE_DIR)/package
BUILD ?= $(shell /usr/share/libtool/config/config.guess 2>/dev/null || /usr/share/misc/config.guess 2>/dev/null)
# -----------------------------------------------------------------------------
include make/environment-host.mk
# -----------------------------------------------------------------------------
CCACHE = /usr/bin/ccache
CCACHE_DIR = $(HOME)/.ccache-ni-buildsystem-$(TARGET_ARCH)-linux-$(KERNEL_VER)
export CCACHE_DIR
7 years ago
# -----------------------------------------------------------------------------
7 years ago
# create debug image
DEBUG ?= no
# -----------------------------------------------------------------------------
include make/environment-target.mk
# -----------------------------------------------------------------------------
STATIC_libdir = $(STATIC_DIR)/$(prefix)/lib
TARGET_CFLAGS = -pipe $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_ABI) $(TARGET_EXTRA_CFLAGS) $(CXX11_ABI) -I$(TARGET_includedir)
TARGET_CPPFLAGS = $(TARGET_CFLAGS)
TARGET_CXXFLAGS = $(TARGET_CFLAGS)
4 years ago
TARGET_LDFLAGS = $(CORTEX_STRINGS_LDFLAG) $(TARGET_EXTRA_LDFLAGS)
TARGET_LDFLAGS += -L$(TARGET_base_libdir) -L$(TARGET_libdir)
TARGET_LDFLAGS += -Wl,-rpath,$(TARGET_libdir) -Wl,-rpath-link,$(TARGET_libdir)
TARGET_LDFLAGS += -Wl,-O1
7 years ago
TARGET_CROSS = $(TARGET)-
# Define TARGET_xx variables for all common binutils/gcc
TARGET_AR = $(TARGET_CROSS)ar
TARGET_AS = $(TARGET_CROSS)as
TARGET_CC = $(TARGET_CROSS)gcc
TARGET_CPP = $(TARGET_CROSS)cpp
TARGET_CXX = $(TARGET_CROSS)g++
TARGET_LD = $(TARGET_CROSS)ld
TARGET_NM = $(TARGET_CROSS)nm
TARGET_RANLIB = $(TARGET_CROSS)ranlib
TARGET_READELF = $(TARGET_CROSS)readelf
4 years ago
TARGET_OBJCOPY = $(TARGET_CROSS)objcopy
TARGET_OBJDUMP = $(TARGET_CROSS)objdump
TARGET_STRIP = $(TARGET_CROSS)strip
# -----------------------------------------------------------------------------
# search path(s) for all prerequisites
VPATH = $(DEPS_DIR) $(HOST_DEPS_DIR)
PATH := $(HOST_DIR)/bin:$(HOST_DIR)/sbin:$(CROSS_DIR)/bin:$(PATH)
7 years ago
# -----------------------------------------------------------------------------
PKG_CONFIG = $(HOST_DIR)/bin/$(TARGET)-pkg-config
PKG_CONFIG_LIBDIR = $(TARGET_base_libdir):$(TARGET_libdir)
PKG_CONFIG_PATH = $(TARGET_base_libdir)/pkgconfig:$(TARGET_libdir)/pkgconfig
PKG_CONFIG_SYSROOT_DIR=$(TARGET_DIR)
7 years ago
# -----------------------------------------------------------------------------
4 years ago
PKG_NAME = $(basename $(@F))
PKG_UPPER = $(call UPPERCASE,$(PKG_NAME))
PKG_LOWER = $(call LOWERCASE,$(PKG_NAME))
PKG = $(PKG_UPPER)
PKG_VER = $($(PKG)_VER)
PKG_DIR = $($(PKG)_DIR)
PKG_SOURCE = $($(PKG)_SOURCE)
PKG_SITE = $($(PKG)_SITE)
PKG_PATCH = $($(PKG)_PATCH)
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_DIR)
PKG_FILES_DIR = $(PACKAGE_DIR)/$(subst host-,,$(PKG_NAME))/files
PKG_PATCHES_DIR = $(PACKAGE_DIR)/$(subst host-,,$(PKG_NAME))/patches
4 years ago
PKG_CHDIR = $(CD) $(PKG_BUILD_DIR)
# -----------------------------------------------------------------------------
4 years ago
#TARGET_MAKE_ENV = \
# $($(PKG)_MAKE_ENV)
TARGET_MAKE_OPTS = \
CROSS_COMPILE="$(TARGET_CROSS)" \
CC="$(TARGET_CC)" \
GCC="$(TARGET_CC)" \
CPP="$(TARGET_CPP)" \
CXX="$(TARGET_CXX)" \
LD="$(TARGET_LD)" \
AR="$(TARGET_AR)" \
AS="$(TARGET_AS)" \
NM="$(TARGET_NM)" \
OBJCOPY="$(TARGET_OBJCOPY)" \
OBJDUMP="$(TARGET_OBJDUMP)" \
RANLIB="$(TARGET_RANLIB)" \
READELF="$(TARGET_READELF)" \
STRIP="$(TARGET_STRIP)" \
ARCH=$(TARGET_ARCH)
4 years ago
#TARGET_MAKE_OPTS += \
# $($(PKG)_MAKE_OPTS)
#HOST_MAKE_ENV = \
# $($(PKG)_MAKE_ENV)
#HOST_MAKE_OPTS += \
# $($(PKG)_MAKE_OPTS)
# -----------------------------------------------------------------------------
TARGET_CONFIGURE_ENV = \
$(TARGET_MAKE_OPTS) \
7 years ago
CFLAGS="$(TARGET_CFLAGS)" \
CPPFLAGS="$(TARGET_CPPFLAGS)" \
CXXFLAGS="$(TARGET_CXXFLAGS)" \
4 years ago
LDFLAGS="$(TARGET_LDFLAGS)"
4 years ago
TARGET_CONFIGURE_ENV += \
PKG_CONFIG=$(PKG_CONFIG) \
PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" \
PKG_CONFIG_SYSROOT_DIR=$(PKG_CONFIG_SYSROOT_DIR)
4 years ago
TARGET_CONFIGURE_ENV += \
$($(PKG)_CONF_ENV)
TARGET_CONFIGURE_OPTS = \
--build=$(BUILD) \
--host=$(TARGET) \
--target=$(TARGET) \
\
4 years ago
--program-prefix="" \
--program-suffix="" \
\
--prefix=$(prefix) \
--exec_prefix=$(exec_prefix) \
--sysconfdir=$(sysconfdir) \
--localstatedir=$(localstatedir) \
\
--mandir=$(REMOVE_mandir) \
--infodir=$(REMOVE_infodir)
TARGET_CONFIGURE_OPTS += \
$($(PKG)_CONF_OPTS)
#HOST_CONFIGURE_ENV = \
# $($(PKG)_CONF_ENV)
#HOST_CONFIGURE_OPTS = \
# $($(PKG)_CONF_OPTS)
7 years ago
CONFIGURE = \
4 years ago
if [ "$($(PKG)_AUTORECONF)" == "YES" ]; then \
$(call MESSAGE,"Autoreconfiguring"); \
$($(PKG)_AUTORECONF_ENV) autoreconf -fi $($(PKG)_AUTORECONF_OPTS); \
fi; \
7 years ago
test -f ./configure || ./autogen.sh && \
4 years ago
CONFIG_SITE=/dev/null \
$(TARGET_CONFIGURE_ENV) ./configure $(TARGET_CONFIGURE_OPTS)
# -----------------------------------------------------------------------------
TARGET_CMAKE_ENV = \
$($(PKG)_CONF_ENV)
TARGET_CMAKE_OPTS = \
--no-warn-unused-cli
TARGET_CMAKE_OPTS += \
-DENABLE_STATIC=OFF \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_DOC=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLE=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TEST=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE="None" \
-DCMAKE_SYSTEM_NAME="Linux" \
-DCMAKE_SYSTEM_PROCESSOR="$(TARGET_ARCH)" \
-DCMAKE_INSTALL_PREFIX="$(prefix)" \
-DCMAKE_INSTALL_DOCDIR="$(REMOVE_docdir)" \
-DCMAKE_INSTALL_MANDIR="$(REMOVE_mandir)" \
-DCMAKE_PREFIX_PATH="$(TARGET_DIR)" \
-DCMAKE_INCLUDE_PATH="$(TARGET_includedir)" \
-DCMAKE_C_COMPILER="$(TARGET_CC)" \
-DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -DNDEBUG" \
-DCMAKE_CPP_COMPILER="$(TARGET_CPP)" \
-DCMAKE_CPP_FLAGS="$(TARGET_CFLAGS) -DNDEBUG" \
-DCMAKE_CXX_COMPILER="$(TARGET_CXX)" \
-DCMAKE_CXX_FLAGS="$(TARGET_CFLAGS) -DNDEBUG" \
-DCMAKE_LINKER="$(TARGET_LD)" \
-DCMAKE_AR="$(TARGET_AR)" \
-DCMAKE_AS="$(TARGET_AS)" \
-DCMAKE_NM="$(TARGET_NM)" \
-DCMAKE_OBJCOPY="$(TARGET_OBJCOPY)" \
-DCMAKE_OBJDUMP="$(TARGET_OBJDUMP)" \
-DCMAKE_RANLIB="$(TARGET_RANLIB)" \
-DCMAKE_READELF="$(TARGET_READELF)" \
-DCMAKE_STRIP="$(TARGET_STRIP)"
TARGET_CMAKE_OPTS += \
$($(PKG)_CONF_OPTS)
#HOST_CMAKE_ENV = \
# $($(PKG)_CONF_ENV)
#HOST_CMAKE_OPTS = \
# $($(PKG)_CONF_OPTS)
CMAKE = \
rm -f CMakeCache.txt; \
$(TARGET_CMAKE_ENV) cmake $(TARGET_CMAKE_OPTS)
# -----------------------------------------------------------------------------
7 years ago
define meson-cross-config # (dest dir)
mkdir -p $(1)
( \
echo "# Note: Buildsystems's and Meson's terminologies differ about the meaning"; \
echo "# of 'build', 'host' and 'target':"; \
echo "# - Buildsystems's 'host' is Meson's 'build'"; \
echo "# - Buildsystems's 'target' is Meson's 'host'"; \
echo ""; \
echo "[binaries]"; \
echo "c = '$(TARGET_CC)'"; \
echo "cpp = '$(TARGET_CXX)'"; \
echo "ar = '$(TARGET_AR)'"; \
echo "strip = '$(TARGET_STRIP)'"; \
echo "pkgconfig = '$(PKG_CONFIG)'"; \
echo ""; \
echo "[built-in options]"; \
echo "c_args = '$(TARGET_CFLAGS)'"; \
echo "c_link_args = '$(TARGET_LDFLAGS)'"; \
echo "cpp_args = '$(TARGET_CXXFLAGS)'"; \
echo "cpp_link_args = '$(TARGET_LDFLAGS)'"; \
echo ""; \
echo "[properties]"; \
echo "needs_exe_wrapper = true"; \
echo "sys_root = '$(TARGET_DIR)'"; \
echo "pkg_config_libdir = '$(PKG_CONFIG_LIBDIR)'"; \
echo ""; \
echo "[host_machine]"; \
echo "system = 'linux'"; \
echo "cpu_family = '$(TARGET_ARCH)'"; \
echo "cpu = '$(TARGET_CPU)'"; \
echo "endian = '$(TARGET_ENDIAN)'" \
) > $(1)/meson-cross.config
endef
MESON_CONFIGURE = \
$(call meson-cross-config,$(PKG_BUILD_DIR)/build); \
unset CC CXX CPP LD AR NM STRIP; \
PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" \
$(HOST_MESON) \
--buildtype=release \
--cross-file $(PKG_BUILD_DIR)/build/meson-cross.config \
-Dstrip=false \
$(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/build
NINJA = \
$(HOST_NINJA) -C $(PKG_BUILD_DIR)/build
NINJA_INSTALL = DESTDIR=$(TARGET_DIR) \
$(HOST_NINJA) -C $(PKG_BUILD_DIR)/build install
# -----------------------------------------------------------------------------
7 years ago
GITHUB = https://github.com
GITHUB_SSH = git@github.com
7 years ago
BITBUCKET = https://bitbucket.org
BITBUCKET_SSH = git@bitbucket.org
GNU_MIRROR = http://ftp.gnu.org/pub/gnu
KERNEL_MIRROR = https://cdn.kernel.org/pub
4 years ago
NI_PUBLIC = $(GITHUB)/neutrino-images
NI_PRIVATE = $(BITBUCKET_SSH):neutrino-images
NI_NEUTRINO = ni-neutrino
NI_NEUTRINO_PLUGINS = ni-neutrino-plugins
BUILD_GENERIC_PC = build-generic-pc
NI_BUILD_GENERIC_PC = ni-build-generic-pc
NI_DRIVERS_BIN = ni-drivers-bin
NI_FFMPEG = ni-ffmpeg
NI_LIBSTB_HAL = ni-libstb-hal
NI_LINUX_KERNEL = ni-linux-kernel
NI_LOGO_STUFF = ni-logo-stuff
NI_OFGWRITE = ni-ofgwrite
NI_OPENTHREADS = ni-openthreads
NI_RTMPDUMP = ni-rtmpdump
NI_STREAMRIPPER = ni-streamripper