mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
Clear `CMAKE_SHARED_LIBRARY_CREATE_<LANG>_FLAGS` since no special link flags are needed to create a DLL with these toolchains. Our shared library creation rules do not reference the placeholder, so this variable was never used. However, we may soon teach the generators to look it up directly.
126 lines
4.5 KiB
CMake
126 lines
4.5 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
# This module is shared by multiple languages; use include blocker.
|
|
include_guard()
|
|
|
|
set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
|
|
set(CMAKE_LINK_LIBRARY_FLAG "library ")
|
|
set(CMAKE_LINK_LIBRARY_FILE_FLAG "library ")
|
|
set(CMAKE_LINK_OBJECT_FILE_FLAG "file ")
|
|
|
|
if(CMAKE_VERBOSE_MAKEFILE)
|
|
set(CMAKE_WCL_QUIET)
|
|
set(CMAKE_WLINK_QUIET)
|
|
set(CMAKE_LIB_QUIET)
|
|
else()
|
|
set(CMAKE_WCL_QUIET "-zq")
|
|
set(CMAKE_WLINK_QUIET "option quiet")
|
|
set(CMAKE_LIB_QUIET "-q")
|
|
endif()
|
|
|
|
foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
|
|
set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1)
|
|
set(CMAKE_CXX_${type}_USE_WATCOM_QUOTE 1)
|
|
endforeach()
|
|
|
|
foreach(type SHARED MODULE EXE)
|
|
# linker map file creation directives
|
|
string(APPEND CMAKE_${type}_LINKER_FLAGS_INIT " opt map")
|
|
# linker debug directives
|
|
string(APPEND CMAKE_${type}_LINKER_FLAGS_DEBUG_INIT " debug all")
|
|
string(APPEND CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO_INIT " debug all")
|
|
endforeach()
|
|
|
|
foreach(lang C CXX)
|
|
# warning level
|
|
string(APPEND CMAKE_${lang}_FLAGS_INIT " -w3")
|
|
# debug options
|
|
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -d2")
|
|
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -s -os -d0 -dNDEBUG")
|
|
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -s -ot -d0 -dNDEBUG")
|
|
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -s -ot -d1 -dNDEBUG")
|
|
|
|
set(CMAKE_${lang}_LINK_MODE LINKER)
|
|
endforeach()
|
|
|
|
# C create import library
|
|
set(CMAKE_C_CREATE_IMPORT_LIBRARY
|
|
"<CMAKE_AR> -c -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>")
|
|
# C++ create import library
|
|
set(CMAKE_CXX_CREATE_IMPORT_LIBRARY ${CMAKE_C_CREATE_IMPORT_LIBRARY})
|
|
|
|
# C link a object files into an executable file
|
|
set(CMAKE_C_LINK_EXECUTABLE
|
|
"<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>")
|
|
# C++ link a object files into an executable file
|
|
set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_C_LINK_EXECUTABLE})
|
|
|
|
# C compile a file into an object file
|
|
set(CMAKE_C_COMPILE_OBJECT
|
|
"<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc <SOURCE>")
|
|
# C++ compile a file into an object file
|
|
set(CMAKE_CXX_COMPILE_OBJECT
|
|
"<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc++ <SOURCE>")
|
|
|
|
# C preprocess a source file
|
|
set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
|
|
"<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc <SOURCE>")
|
|
# C++ preprocess a source file
|
|
set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE
|
|
"<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc++ <SOURCE>")
|
|
|
|
# C create a shared library
|
|
set(CMAKE_C_CREATE_SHARED_LIBRARY
|
|
"<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> option implib=<TARGET_IMPLIB> file {<OBJECTS>} <LINK_LIBRARIES>")
|
|
# C++ create a shared library
|
|
set(CMAKE_CXX_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY})
|
|
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "")
|
|
set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "")
|
|
|
|
# C create a shared module
|
|
set(CMAKE_C_CREATE_SHARED_MODULE
|
|
"<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>")
|
|
# C++ create a shared module
|
|
set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_MODULE})
|
|
set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "")
|
|
set(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "")
|
|
|
|
# C create a static library
|
|
set(CMAKE_C_CREATE_STATIC_LIBRARY
|
|
"<CMAKE_AR> ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ")
|
|
# C++ create a static library
|
|
set(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
|
|
|
|
|
|
# old CMake internally used OpenWatcom version macros
|
|
# for backward compatibility
|
|
if(NOT _CMAKE_WATCOM_VERSION)
|
|
set(_CMAKE_WATCOM_VERSION 1)
|
|
if(CMAKE_C_COMPILER_VERSION)
|
|
set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
|
|
set(_compiler_id ${CMAKE_C_COMPILER_ID})
|
|
else()
|
|
set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
|
|
set(_compiler_id ${CMAKE_CXX_COMPILER_ID})
|
|
endif()
|
|
set(WATCOM16)
|
|
set(WATCOM17)
|
|
set(WATCOM18)
|
|
set(WATCOM19)
|
|
if("${_compiler_id}" STREQUAL "OpenWatcom")
|
|
if("${_compiler_version}" VERSION_LESS 1.7)
|
|
set(WATCOM16 1)
|
|
endif()
|
|
if("${_compiler_version}" VERSION_EQUAL 1.7)
|
|
set(WATCOM17 1)
|
|
endif()
|
|
if("${_compiler_version}" VERSION_EQUAL 1.8)
|
|
set(WATCOM18 1)
|
|
endif()
|
|
if("${_compiler_version}" VERSION_EQUAL 1.9)
|
|
set(WATCOM19 1)
|
|
endif()
|
|
endif()
|
|
endif()
|