| #===-- 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) |