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
161 lines
5.3 KiB
CMake
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()
|
|
|