Files
openmp/runtime/cmake/MSVC/CFlags.cmake
T
Jonathan Peyton 8d85f8eca1 Apply name change to CMake build system.
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
2015-06-01 03:05:13 +00:00

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()