blob: 66a41d7b6202232647f8b4a46f99c3ef1ef95e03 [file] [log] [blame]
#===-- Makefile.common ---------------------------------------------------===##
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===----------------------------------------------------------------------===##
#------------------------------------------------------------------------------
# Define common parts for Parallel STL
#------------------------------------------------------------------------------
.SUFFIXES:
goals = $(or $(MAKECMDGOALS),all)
ifneq (, $(filter-out clean clean_all,$(goals)))
ifeq (, $(filter $(backend), tbb))
$(info Threading backend was not specified; using TBB)
backend=tbb
endif
endif
ifndef os_name
# Windows sets environment variable OS; for other systems, ask uname
ifeq ($(OS),)
OS:=$(shell uname)
ifeq ($(OS),)
$(error "Cannot detect operating system")
endif
os_name=$(OS)
endif
ifeq ($(OS), Windows_NT)
os_name=windows
endif
ifeq ($(OS), Linux)
os_name=linux
endif
ifeq ($(OS), Darwin)
os_name=macos
endif
endif # !os_name
cfg ?= release
stdver ?= c++11
override INCLUDES += -I$(proj_root)/include -I$(proj_root)/test
TEST_MACRO += -D__PSTL_TEST_SUCCESSFUL_KEYWORD=1
ifeq ($(backend), tbb)
BACKEND_MACRO += -D__PSTL_PAR_BACKEND_TBB
endif
target ?= $(os_name)
#OS specific keys
ifeq ($(target),windows)
ifneq (, $(filter $(compiler), gcc g++))
include $(proj_root)/build/mingw.inc
else
include $(proj_root)/build/windows.inc
endif
else
include $(proj_root)/build/unix.inc
ifneq (,$(wildcard $(proj_root)/build/$(target).inc))
include $(proj_root)/build/$(target).inc
$(info included additional file $(proj_root)/build/$(target).inc)
endif
endif
# compiler specific keys
ifneq (, $(filter $(compiler), gcc g++))
include $(proj_root)/build/gcc.inc
endif
ifneq (, $(filter $(compiler), clang clang++))
include $(proj_root)/build/clang.inc
endif
ifneq (, $(filter $(compiler), icc icpc icx))
include $(proj_root)/build/icc.inc
endif
ifneq (, $(filter $(compiler), icl))
include $(proj_root)/build/icl.inc
endif
OPTIMIZATION_ENABLED_FLAGS += $(XHOST_FLAG)
OPTIMIZATION_DISABLED_FLAGS += $(XHOST_FLAG)
ifeq ($(cfg), debug)
TBB_LIB_NAME = tbb_debug
BACKEND_MACRO += -DTBB_USE_DEBUG=1
DEBUG_MACRO += -DPSTL_USE_DEBUG
OPTIMIZATION_KEYS = $(OPTIMIZATION_DISABLED_FLAGS)
else
OPTIMIZATION_KEYS = $(OPTIMIZATION_ENABLED_FLAGS)
endif
DYN_LDFLAGS += $(PSTL_ARCH)
CPLUS_FLAGS += $(TEST_MACRO)
CPLUS_FLAGS += $(INCLUDES)
CPLUS_FLAGS += $(BACKEND_MACRO)
CPLUS_FLAGS += $(DEBUG_MACRO)
CPLUS_FLAGS += $(CXXFLAGS)
CPLUS_FLAGS += $(OPTIMIZATION_KEYS)
CPLUS_FLAGS += $(DISABLED_WARNINGS)
CPLUS_FLAGS += $(PSTL_ARCH)