From a0a6dec5069b9d9b281d22b586048f7b673bc769 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Wed, 27 Feb 2019 11:56:57 +0000 Subject: [PATCH] defs.mk: Some cleanup in target platform variables Signed-off-by: Jan Lindemann --- make/defs.mk | 115 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 80 insertions(+), 35 deletions(-) diff --git a/make/defs.mk b/make/defs.mk index 35331b08..18c3e466 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -39,6 +39,7 @@ PWD := $(shell which pwd) CWD := $(shell $(PWD)) BIN_INSTALL := /usr/bin/install SUDO ?= /usr/bin/sudo +GET_OS_SH ?= $(SHELL) $(MOD_SCRIPT_DIR)/get-os.sh # ----- standard variables ifneq ($(wildcard $(TOPDIR)/.git),) @@ -53,25 +54,88 @@ ifeq ($(PROJECT),) PROJECT := $(shell echo $(patsubst $(FLAVOUR_PREFIX)%,%,$(notdir $(realpath $(TOPDIR)))) | $(SED) 's/-[0-9].*//') endif -GET_OS_SH ?= /bin/bash $(MOD_SCRIPT_DIR)/get-os.sh +# ----- host and target variables + +OS_TUPLE ?= $(shell $(GET_OS_SH) tuple) + +ifneq ($(TARGET_TUPLE),) + TARGET_ARCH ?= $(word 1,$(TARGET_TUPLE)) + TARGET_VENDOR ?= $(word 2,$(TARGET_TUPLE)) + TARGET_OS ?= $(word 3,$(TARGET_TUPLE)) + TARGET_ABI ?= $(word 4,$(TARGET_TUPLE)) + TARGET_TRIPLET ?= $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI) +else ifneq ($(TARGET_TRIPLET),) + TARGET_ARCH ?= $(word 1,$(TARGET_TRIPLET)) + TARGET_VENDOR ?= unknown + TARGET_OS ?= $(word 2,$(TARGET_TRIPLET)) + TARGET_ABI ?= $(word 3,$(TARGET_TRIPLET)) + TARGET_TUPLE ?= $(TARGET_ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(TARGET_ABI) +else + TARGET_TUPLE ?= $(OS_TUPLE) + TARGET_VENDOR ?= $(word 2,$(TARGET_TUPLE)) + TARGET_OS ?= $(word 3,$(TARGET_TUPLE)) + TARGET_ABI ?= $(word 4,$(TARGET_TUPLE)) + TARGET_TRIPLET ?= $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI) +endif + +ifeq ($(TARGET_TUPLE),) + $(error TARGET_TUPLE is undefined) +endif + +# - support legacy jw-build target variables +ifeq ($(TARGET_ABI),mingw32) + TARGET ?= mingw +else ifeq ($(TARGET_ABI),mingw64) + TARGET ?= mingw +else + TARGET ?= $(TARGET_OS) +endif + OS_NAME_VERSION ?= $(shell $(GET_OS_SH)) OS_NAME ?= $(shell $(GET_OS_SH) name) -OSTYPE ?= $(shell $(GET_OS_SH) type) +ARCH ?= $(TARGET_ARCH) -CREATE_DEVEL ?= true -#COMPILER_SUITE ?= clang -COMPILER_SUITE ?= gcc +ifndef ARCH + # TODO unreached code, test and fix this + ifeq ($(shell uname -m),armv7l) + ARCH = armv7hl + SYSTEM_LIBDIR_NAME = lib + else ifeq ($(shell uname -m),armv6l) + ARCH = armv6hl + SYSTEM_LIBDIR_NAME = lib + else ifeq ($(shell uname -m),aarch64) + ARCH = aarch64 + SYSTEM_LIBDIR_NAME = lib + else ifeq ($(shell uname -m),x86_64) + ARCH = x86_64 + SYSTEM_LIBDIR_NAME = lib64 + else + ARCH_32 = i586 + ARCH = $(ARCH_32) + SYSTEM_LIBDIR_NAME = lib + endif + SYSTEM_LIBDIR = /usr/$(SYSTEM_LIBDIR_NAME) +endif -ifeq ($(TARGET),mingw) -FLAVOUR_PREFIX ?= win32- -FLAVOUR_SUFFIX ?= -win32 -FLAVOUR_PATH_PREFIX ?= win32/ -FLAVOUR_PATH_SUFFIX ?= /win32 - ifneq ($(wildcard /usr/bin/i686-w64-mingw32-gcc),) - MINGW_SYS_ROOT ?= /usr/i686-w64-mingw32/sys-root/mingw +ifneq ($(TARGET_TUPLE),$(OS_TUPLE)) + ifeq ($(TARGET),mingw) + FLAVOUR_PREFIX ?= win32- + FLAVOUR_SUFFIX ?= -win32 + FLAVOUR_PATH_PREFIX ?= win32/ + FLAVOUR_PATH_SUFFIX ?= /win32 + ifneq ($(wildcard /usr/bin/i686-w64-mingw32-gcc),) + MINGW_SYS_ROOT ?= /usr/i686-w64-mingw32/sys-root/mingw + endif + else + FLAVOUR_PREFIX ?= $(TARGET_TRIPLET)- + FLAVOUR_SUFFIX ?= -$(TARGET_TRIPLET) + FLAVOUR_PATH_PREFIX ?= $(TARGET_TRIPLET)/ + FLAVOUR_PATH_SUFFIX ?= /$(TARGET_TRIPLET) endif endif +# ----- packaging variables + ifneq ($(filter debian%,$(OS_NAME_VERSION)),) PKG_FORMAT ?= debian else @@ -143,28 +207,9 @@ PCKG_DEPS_DIR = $(MODDIR)/make/deps.d PCKG_DEFS_DIR = $(MODDIR)/make/defs.d # ----- compilation options -TARGET ?= Linux - -ifndef ARCH - ifeq ($(shell uname -m),armv7l) - ARCH = armv7hl - SYSTEM_LIBDIR_NAME = lib - else ifeq ($(shell uname -m),armv6l) - ARCH = armv6hl - SYSTEM_LIBDIR_NAME = lib - else ifeq ($(shell uname -m),aarch64) - ARCH = aarch64 - SYSTEM_LIBDIR_NAME = lib - else ifeq ($(shell uname -m),x86_64) - ARCH = x86_64 - SYSTEM_LIBDIR_NAME = lib64 - else - ARCH_32 = i586 - ARCH = $(ARCH_32) - SYSTEM_LIBDIR_NAME = lib - endif - SYSTEM_LIBDIR = /usr/$(SYSTEM_LIBDIR_NAME) -endif +CREATE_DEVEL ?= true +#COMPILER_SUITE ?= clang +COMPILER_SUITE ?= gcc ifeq ($(ARCH),$(ARCH_32)) PROJECT_CFLAGS += -m32 @@ -193,7 +238,7 @@ PKG_VENDOR ?= janware GmbH FULL_NAME ?= $(shell id -nu | xargs getent passwd | cut -d: -f5) USE_PROJECT_LIB ?= true EXPORT_PROJECT_LIB ?= $(USE_PROJECT_LIB) -USE_JW_BUILD ?= true +USE_JW_BUILD ?= true USE_EXCEPTIONS_IN_C ?= true REENTRANT ?= true