# ----- host and target variables ifndef PLATFORM_MK_INCLUDED PLATFORM_MK_INCLUDED = true # "-include" tries search path, we don't want that define try_include ifneq ($$(wildcard $(1)),) include $(1) endif endef $(eval $(call try_include,$(JWBDIR)/make/.cache.mk)) $(eval $(call try_include,$(TOPDIR)/make/.cache.mk)) $(eval $(call try_include,$(JWBDIR)/make/pre-local.mk)) $(eval $(call try_include,$(TOPDIR)/make/pre-local.mk)) $(eval $(call try_include,pre-local.mk)) ifeq ($(MAKE_BENCHMARK),true) export SHELL := /bin/bash $(JWB_SCRIPT_DIR)/timed-make-shell.sh else export SHELL := /bin/bash endif JWB_SCRIPT_DIR := $(firstword $(wildcard $(JWBDIR)/scripts $(JWBDIR)/bin)) ifndef GET_OS_SH GET_OS_SH := $(SHELL) $(JWB_SCRIPT_DIR)/get-os.sh endif # -- product TARGET_PRODUCTS_ARM_NONE_EABI = \ st-nucleo-f103rb \ st-disc1-f429i \ st-disco-f769i TAGGED_TMPL_TAGS_ARM_NONE_EABI ?= $(TARGET_PRODUCTS_ARM_NONE_EABI) TARGET_PRODUCTS += \ $(TARGET_PRODUCTS_ARM_NONE_EABI) TARGET_PRODUCT = $(firstword $(foreach t,$(TAGGED_TMPL_TAGS),$(filter $(t),$(TARGET_PRODUCTS)))) TAGGED_TMPL_MAKEFILES = $(wildcard $(addsuffix .mk,$(foreach t,$(TAGGED_TMPL_DIRS),$(addprefix $(t)/,$(TAGGED_TMPL_TAGS))))) ifneq ($(foreach t,$(TAGGED_TMPL_TAGS),$(filter $(t),$(TAGGED_TMPL_TAGS_ARM_NONE_EABI))),) TARGET_TRIPLET ?= arm-none-eabi endif # -- arch, vendor, os, libc ifeq ($(HOST_TUPLE),) HOST_TUPLE := $(shell $(GET_OS_SH) tuple) HOST_TUPLE_WORDS := $(subst -, ,$(HOST_TUPLE)) HOST_ARCH := $(word 1,$(HOST_TUPLE_WORDS)) HOST_VENDOR := $(word 2,$(HOST_TUPLE_WORDS)) HOST_OS := $(word 3,$(HOST_TUPLE_WORDS)) HOST_ABI := $(word 4,$(HOST_TUPLE_WORDS)) HOST_TRIPLET := $(HOST_ARCH)-$(HOST_OS)-$(HOST_ABI) else HOST_TUPLE_WORDS := $(subst -, ,$(HOST_TUPLE)) HOST_ARCH := $(word 1,$(HOST_TUPLE_WORDS)) HOST_VENDOR := $(word 2,$(HOST_TUPLE_WORDS)) HOST_OS := $(word 3,$(HOST_TUPLE_WORDS)) HOST_ABI := $(word 4,$(HOST_TUPLE_WORDS)) HOST_TRIPLET := $(HOST_ARCH)-$(HOST_OS)-$(HOST_ABI) endif ifndef TARGET ifneq ($(subst mingw,,$(CWD)),$(CWD)) TARGET := mingw endif endif DEFINE_FROM_TARGET := false ifdef TARGET ifndef TARGET_TUPLE ifndef TARGET_TRIPLET DEFINE_FROM_TARGET := true endif else ifndef TARGET_TRIPLET ifndef TARGET_TUPLE DEFINE_FROM_TARGET := true endif endif ifeq ($(DEFINE_FROM_TARGET),true) ifeq ($(TARGET),mingw) TARGET_ARCH ?= i686 TARGET_ABI := mingw32 TARGET_OS ?= w64 else ifeq ($(TARGET),mingw32) TARGET_ARCH ?= i686 TARGET_ABI := mingw32 TARGET_OS ?= w64 else ifeq ($(TARGET),mingw64) TARGET_ARCH ?= x86_64 TARGET_ABI := mingw64 TARGET_OS := w64 else ifeq ($(TARGET),linux) endif # -- fall back on defaults TARGET_ARCH ?= $(HOST_ARCH) TARGET_VENDOR ?= $(HOST_VENDOR) TARGET_OS ?= $(HOST_OS) TARGET_ABI ?= $(HOST_ABI) endif TARGET_TUPLE := $(TARGET_ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(TARGET_ABI) endif ifneq ($(TARGET_TUPLE),) TARGET_TUPLE_WORDS ?= $(subst -, ,$(TARGET_TUPLE)) TARGET_ARCH ?= $(word 1,$(TARGET_TUPLE_WORDS)) TARGET_VENDOR ?= $(word 2,$(TARGET_TUPLE_WORDS)) TARGET_OS ?= $(word 3,$(TARGET_TUPLE_WORDS)) TARGET_ABI ?= $(word 4,$(TARGET_TUPLE_WORDS)) TARGET_TRIPLET ?= $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI) else ifneq ($(TARGET_TRIPLET),) TARGET_TRIPLET_WORDS ?= $(subst -, ,$(TARGET_TRIPLET)) TARGET_ARCH ?= $(word 1,$(TARGET_TRIPLET_WORDS)) TARGET_VENDOR ?= unknown TARGET_OS ?= $(word 2,$(TARGET_TRIPLET_WORDS)) TARGET_ABI ?= $(word 3,$(TARGET_TRIPLET_WORDS)) TARGET_TUPLE ?= $(TARGET_ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(TARGET_ABI) TARGET_TUPLE_WORDS ?= $(subst -, ,$(TARGET_TUPLE)) else TARGET_TUPLE ?= $(HOST_TUPLE) TARGET_TUPLE_WORDS ?= $(subst -, ,$(TARGET_TUPLE)) TARGET_ARCH ?= $(word 1,$(TARGET_TUPLE_WORDS)) TARGET_VENDOR ?= $(word 2,$(TARGET_TUPLE_WORDS)) TARGET_OS ?= $(word 3,$(TARGET_TUPLE_WORDS)) TARGET_ABI ?= $(word 4,$(TARGET_TUPLE_WORDS)) TARGET_TRIPLET ?= $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI) TARGET_TRIPLET_WORDS ?= $(subst -, ,$(TARGET_TRIPLET)) endif ifeq ($(TARGET_TUPLE),) $(error TARGET_TUPLE is empty) endif ifeq ($(TARGET_ARCH),armv7l) SYSTEM_LIBDIR_NAME = lib else ifeq ($(TARGET_ARCH),armv6l) SYSTEM_LIBDIR_NAME = lib else ifeq ($(TARGET_ARCH),aarch64) SYSTEM_LIBDIR_NAME = lib else ifeq ($(TARGET_ARCH),x86_64) SYSTEM_LIBDIR_NAME = lib64 else SYSTEM_LIBDIR_NAME = lib endif SYSTEM_LIBDIR = /usr/$(SYSTEM_LIBDIR_NAME) # - support legacy jw-build target variables ifneq ($(findstring $(TARGET_ABI),mingw mingw32 mingw64),) TARGET ?= mingw else TARGET ?= $(TARGET_OS) endif ifeq ($(OS_NAME_VERSION),) OS_NAME_VERSION := $(shell $(GET_OS_SH)) endif ifeq ($(OS_NAME),) OS_NAME := $(shell $(GET_OS_SH) name) endif ARCH ?= $(TARGET_ARCH) ARCH_32 = i586 ifndef ARCH # TODO unreached code, test and fix this ifeq ($(shell uname -m),armv7l) ARCH = armv7hl else ifeq ($(shell uname -m),armv6l) ARCH = armv6hl else ifeq ($(shell uname -m),aarch64) ARCH = aarch64 else ifeq ($(shell uname -m),x86_64) ARCH = x86_64 else ARCH = $(ARCH_32) endif endif ifneq ($(TARGET_TRIPLET),$(HOST_TRIPLET)) ifeq ($(TARGET),mingw) FLAVOUR_PREFIX ?= win32- FLAVOUR_SUFFIX ?= -win32 FLAVOUR_PATH_PREFIX ?= win32/ FLAVOUR_PATH_SUFFIX ?= /win32 else FLAVOUR_PREFIX ?= $(TARGET_TRIPLET)- FLAVOUR_SUFFIX ?= -$(TARGET_TRIPLET) FLAVOUR_PATH_PREFIX ?= $(TARGET_TRIPLET)/ FLAVOUR_PATH_SUFFIX ?= /$(TARGET_TRIPLET) endif endif TARGET_CPU ?= $(TARGET_ARCH) endif # ifndef PLATFORM_MK_INCLUDED