This change has the CMake build system create a dynamic library named libomp instead of libiomp5. Also any reference to libiomp is replaced with libomp. One can still use the LIBOMP_LIB_NAME variable to enforce a different name, and everything will still work as expected. An important note is that libiomp5 and libgomp symlinks are created at install time when on Unix systems. On Windows, copies are created with the legacy names. git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@238715 91177308-0d34-0410-b5e6-96231b3b80d8
76 lines
3.7 KiB
CMake
76 lines
3.7 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.
|
|
#//
|
|
#//===----------------------------------------------------------------------===//
|
|
#
|
|
|
|
# This file holds Microsoft Visual Studio dependent flags
|
|
# The flag types are:
|
|
# 1) C/C++ Compiler flags
|
|
# 2) Fortran Compiler flags
|
|
|
|
#########################################################
|
|
# Visual Studio C/C++ Compiler flags
|
|
function(append_compiler_specific_c_and_cxx_flags input_c_flags input_cxx_flags)
|
|
set(local_c_flags)
|
|
set(local_cxx_flags)
|
|
append_c_flags("-TP") # Tells the compiler to process a file as a C++ source file.
|
|
append_cxx_flags("-EHsc") # Enable C++ exception handling.
|
|
append_c_and_cxx_flags("-W3") # Enables diagnostics for remarks, warnings, and errors.
|
|
# Additional warnings are also enabled above level 2 warnings.
|
|
append_c_and_cxx_flags("-GS") # Lets you control the threshold at which the stack checking routine is called or not called.
|
|
if(${IA32})
|
|
append_c_and_cxx_flags("-arch:ia32") # Tells the compiler which features it may target (ia32)
|
|
append_c_and_cxx_flags("-Oy-") # equivalent to -fno-omit-frame-pointer
|
|
endif()
|
|
# CMake prefers the /MD flags when compiling Windows sources, but libomp needs to use /MT instead
|
|
# So we replace these /MD instances with /MT within the CMAKE_*_FLAGS variables and put that out to the CACHE.
|
|
# replace_md_with_mt() is in HelperFunctions.cmake
|
|
replace_md_with_mt(CMAKE_C_FLAGS)
|
|
replace_md_with_mt(CMAKE_C_FLAGS_RELEASE)
|
|
replace_md_with_mt(CMAKE_C_FLAGS_RELWITHDEBINFO)
|
|
replace_md_with_mt(CMAKE_C_FLAGS_DEBUG)
|
|
replace_md_with_mt(CMAKE_CXX_FLAGS)
|
|
replace_md_with_mt(CMAKE_CXX_FLAGS_RELEASE)
|
|
replace_md_with_mt(CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
replace_md_with_mt(CMAKE_CXX_FLAGS_DEBUG)
|
|
replace_md_with_mt(CMAKE_ASM_MASM_FLAGS)
|
|
replace_md_with_mt(CMAKE_ASM_MASM_FLAGS_RELEASE)
|
|
replace_md_with_mt(CMAKE_ASM_MASM_FLAGS_RELWITHDEBINFO)
|
|
replace_md_with_mt(CMAKE_ASM_MASM_FLAGS_DEBUG)
|
|
set(${input_c_flags} ${${input_c_flags}} "${local_c_flags}" PARENT_SCOPE)
|
|
set(${input_cxx_flags} ${${input_cxx_flags}} "${local_cxx_flags}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
#########################################################
|
|
# Visual Studio Linker flags
|
|
function(append_compiler_specific_linker_flags input_ld_flags input_ld_flags_libs)
|
|
set(local_ld_flags)
|
|
set(local_ld_flags_libs)
|
|
append_linker_flags("-WX:NO")
|
|
append_linker_flags("-version:${LIBOMP_VERSION}.0")
|
|
append_linker_flags("-NXCompat")
|
|
append_linker_flags("-DynamicBase") # This option modifies the header of an executable to indicate
|
|
# whether the application should be randomly rebased at load time.
|
|
if(${IA32})
|
|
append_linker_flags("-machine:i386")
|
|
append_linker_flags("-safeseh")
|
|
elseif(${INTEL64})
|
|
append_linker_flags("-machine:amd64")
|
|
endif()
|
|
if(NOT "${def_file}" STREQUAL "")
|
|
append_linker_flags("-def:${def_file}")
|
|
endif()
|
|
# Have Visual Studio use link.exe directly
|
|
#set(CMAKE_C_CREATE_SHARED_LIBRARY "link.exe /out:<TARGET> <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES>" PARENT_SCOPE)
|
|
#set(CMAKE_SHARED_LINKER_FLAGS "$ENV{LDLFAGS}" CACHE STRING "Linker Flags" FORCE)
|
|
set(${input_ld_flags} ${${input_ld_flags}} "${local_ld_flags}" PARENT_SCOPE)
|
|
set(${input_ld_flags_libs} ${${input_ld_flags_libs}} "${local_ld_flags_libs}" PARENT_SCOPE)
|
|
endfunction()
|
|
|