Files
clang-p2996/openmp/runtime/cmake/Definitions.cmake
Andrey Churbanov 648467ed05 Integrate libiomp CMake into LLVM CMake build system.
This patch integrates the libiomp CMake build system into the LLVM CMake build 
system so that users can checkout libiomp into the projects directory of llvm 
and build llvm,clang, and libiomp all together.  These changes specifically 
introduce a new install target which will put libraries and headers into the 
correct locations when either a standalone build or part of llvm.
The copy_recipe() method has been removed in favor of the POST_BUILD method 
to move headers into the exports subdirectory.  And lastly, the MicroTests.cmake 
file was refactored which led to simpler target dependencies and a new target, 
make libiomp-micro-tests, which performs the 5 small tests (test-relo, 
test-touch, etc.) when called.

llvm-svn: 236534
2015-05-05 20:02:52 +00:00

161 lines
5.3 KiB
CMake

#
#//===----------------------------------------------------------------------===//
#//
#// The LLVM Compiler Infrastructure
#//
#// This file is dual licensed under the MIT and the University of Illinois Open
#// Source Licenses. See LICENSE.txt for details.
#//
#//===----------------------------------------------------------------------===//
#
# void append_definitions(string new_flag);
# - appends new_flag to cpp_flags list
macro(append_definitions new_flag)
list(APPEND local_cpp_flags "${new_flag}")
endmacro()
function(append_cpp_flags input_cpp_flags)
set(local_cpp_flags)
append_definitions("-D USE_ITT_BUILD")
append_definitions("-D KMP_ARCH_STR=\"\\\\\"${legal_arch}\\\\\"\"")
append_definitions("-D BUILD_I8")
append_definitions("-D KMP_LIBRARY_FILE=\\\\\"${lib_file}\\\\\"") # yes... you need 5 backslashes...
append_definitions("-D KMP_VERSION_MAJOR=${version}")
append_definitions("-D KMP_NESTED_HOT_TEAMS")
# customize to 128 bytes for ppc64
if(${PPC64})
append_definitions("-D CACHE_LINE=128")
else()
append_definitions("-D CACHE_LINE=64")
endif()
append_definitions("-D KMP_ADJUST_BLOCKTIME=1")
append_definitions("-D BUILD_PARALLEL_ORDERED")
append_definitions("-D KMP_ASM_INTRINS")
if(${USE_ITT_NOTIFY})
append_definitions("-D USE_ITT_NOTIFY=1")
else()
append_definitions("-D USE_ITT_NOTIFY=0")
append_definitions("-D INTEL_NO_ITTNOTIFY_API")
endif()
append_definitions("-D INTEL_ITTNOTIFY_PREFIX=__kmp_itt_")
if(${USE_VERSION_SYMBOLS})
append_definitions("-D KMP_USE_VERSION_SYMBOLS")
endif()
#####################
# Windows definitions
if(${WINDOWS})
append_definitions("-D _CRT_SECURE_NO_WARNINGS")
append_definitions("-D _CRT_SECURE_NO_DEPRECATE")
append_definitions("-D _WINDOWS")
append_definitions("-D _WINNT")
append_definitions("-D _WIN32_WINNT=0x0501")
append_definitions("-D KMP_WIN_CDECL")
append_definitions("-D _USRDLL")
if(${DEBUG_BUILD})
append_definitions("-D _ITERATOR_DEBUG_LEVEL=0")
endif()
else() # Other than windows... (Unix based systems, Intel(R) Many Integrated Core Architecture (Intel(R) MIC Architecture), and Mac)
append_definitions("-D _GNU_SOURCE")
append_definitions("-D _REENTRANT")
append_definitions("-D BUILD_TV")
append_definitions("-D USE_CBLKDATA")
if(NOT "${version}" STREQUAL "4")
append_definitions("-D KMP_GOMP_COMPAT")
endif()
endif()
# Any architecture other than Intel(R) MIC Architecture
if(NOT ${MIC})
append_definitions("-D USE_LOAD_BALANCE")
endif()
##################
# Unix definitions
if(${LINUX})
append_definitions("-D KMP_TDATA_GTID")
endif()
##################################
# Other conditional definitions
append_definitions("-D KMP_USE_ASSERT")
append_definitions("-D GUIDEDLL_EXPORTS")
if(${STUBS_LIBRARY})
append_definitions("-D KMP_STUB")
endif()
if(${DEBUG_BUILD} OR ${RELWITHDEBINFO_BUILD})
append_definitions("-D KMP_DEBUG")
endif()
if(${DEBUG_BUILD})
append_definitions("-D _DEBUG")
append_definitions("-D BUILD_DEBUG")
endif()
if(${STATS_GATHERING})
append_definitions("-D KMP_STATS_ENABLED=1")
else()
append_definitions("-D KMP_STATS_ENABLED=0")
endif()
if(${OMPT_SUPPORT})
append_definitions("-D OMPT_SUPPORT=1")
else()
append_definitions("-D OMPT_SUPPORT=0")
endif()
if(${OMPT_BLAME})
append_definitions("-D OMPT_BLAME=1")
else()
append_definitions("-D OMPT_BLAME=0")
endif()
if(${OMPT_TRACE})
append_definitions("-D OMPT_TRACE=1")
else()
append_definitions("-D OMPT_TRACE=0")
endif()
# OpenMP version flags
set(have_omp_50 0)
set(have_omp_41 0)
set(have_omp_40 0)
set(have_omp_30 0)
if(${omp_version} EQUAL 50 OR ${omp_version} GREATER 50)
set(have_omp_50 1)
endif()
if(${omp_version} EQUAL 41 OR ${omp_version} GREATER 41)
set(have_omp_41 1)
endif()
if(${omp_version} EQUAL 40 OR ${omp_version} GREATER 40)
set(have_omp_40 1)
endif()
if(${omp_version} EQUAL 30 OR ${omp_version} GREATER 30)
set(have_omp_30 1)
endif()
append_definitions("-D OMP_50_ENABLED=${have_omp_50}")
append_definitions("-D OMP_41_ENABLED=${have_omp_41}")
append_definitions("-D OMP_40_ENABLED=${have_omp_40}")
append_definitions("-D OMP_30_ENABLED=${have_omp_30}")
# Architectural definitions
if(${INTEL64} OR ${IA32})
if(${USE_ADAPTIVE_LOCKS})
append_definitions("-D KMP_USE_ADAPTIVE_LOCKS=1")
else()
append_definitions("-D KMP_USE_ADAPTIVE_LOCKS=0")
endif()
append_definitions("-D KMP_DEBUG_ADAPTIVE_LOCKS=0")
else()
append_definitions("-D KMP_USE_ADAPTIVE_LOCKS=0")
append_definitions("-D KMP_DEBUG_ADAPTIVE_LOCKS=0")
endif()
if(${USE_INTERNODE_ALIGNMENT})
append_definitions("-D KMP_USE_INTERNODE_ALIGNMENT=1")
else()
append_definitions("-D KMP_USE_INTERNODE_ALIGNMENT=0")
endif()
set(${input_cpp_flags} "${${input_cpp_flags}}" "${local_cpp_flags}" "${LIBIOMP_CPPFLAGS}" "$ENV{CPPFLAGS}" PARENT_SCOPE)
endfunction()