jw-pkg/make/platform.mk
Jan Lindemann 59da607e12 defs.mk, platform.mk: Include pre-local.mk and cache.mk from platform.mk
platform.mk is sometimes included before defs.mk, e.g. from
$(TOPDIR)/make/proj.mk, then these definitions are necessary

Signed-off-by: Jan Lindemann <jan@janware.com>
2019-03-03 09:56:11 +00:00

120 lines
3.7 KiB
Makefile

# ----- 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,$(MODDIR)/make/.cache.mk))
$(eval $(call try_include,$(TOPDIR)/make/.cache.mk))
$(eval $(call try_include,$(MODDIR)/make/pre-local.mk))
$(eval $(call try_include,$(TOPDIR)/make/pre-local.mk))
$(eval $(call try_include,pre-local.mk))
ifndef TARGET
ifneq ($(subst mingw,,$(CWD)),$(CWD))
TARGET := mingw
endif
endif
MOD_SCRIPT_DIR := $(firstword $(wildcard $(MODDIR)/scripts $(MODDIR)/bin))
ifndef GET_OS_SH
GET_OS_SH := $(SHELL) $(MOD_SCRIPT_DIR)/get-os.sh
endif
ifeq ($(OS_TUPLE),)
OS_TUPLE := $(shell $(GET_OS_SH) tuple)
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 := $(OS_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
# - 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
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 = $(ARCH_32)
SYSTEM_LIBDIR_NAME = lib
endif
SYSTEM_LIBDIR = /usr/$(SYSTEM_LIBDIR_NAME)
endif
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),)
TC_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
endif # ifndef PLATFORM_MK_INCLUDED