1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4# This module is shared by multiple languages; use include blocker. 5include_guard() 6 7set(CMAKE_LIBRARY_PATH_FLAG "libpath ") 8set(CMAKE_LINK_LIBRARY_FLAG "library ") 9set(CMAKE_LINK_LIBRARY_FILE_FLAG "library ") 10set(CMAKE_LINK_OBJECT_FILE_FLAG "file ") 11 12if(CMAKE_VERBOSE_MAKEFILE) 13 set(CMAKE_WCL_QUIET) 14 set(CMAKE_WLINK_QUIET) 15 set(CMAKE_LIB_QUIET) 16else() 17 set(CMAKE_WCL_QUIET "-zq") 18 set(CMAKE_WLINK_QUIET "option quiet") 19 set(CMAKE_LIB_QUIET "-q") 20endif() 21 22foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE) 23 set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1) 24 set(CMAKE_CXX_${type}_USE_WATCOM_QUOTE 1) 25endforeach() 26 27foreach(type SHARED MODULE EXE) 28 # linker map file creation directives 29 string(APPEND CMAKE_${type}_LINKER_FLAGS_INIT " opt map") 30 # linker debug directives 31 string(APPEND CMAKE_${type}_LINKER_FLAGS_DEBUG_INIT " debug all") 32 string(APPEND CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO_INIT " debug all") 33endforeach() 34 35foreach(lang C CXX) 36 # warning level 37 string(APPEND CMAKE_${lang}_FLAGS_INIT " -w3") 38 # debug options 39 string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -d2") 40 string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -s -os -d0 -dNDEBUG") 41 string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -s -ot -d0 -dNDEBUG") 42 string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -s -ot -d1 -dNDEBUG") 43endforeach() 44 45# C create import library 46set(CMAKE_C_CREATE_IMPORT_LIBRARY 47 "<CMAKE_AR> -c -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>") 48# C++ create import library 49set(CMAKE_CXX_CREATE_IMPORT_LIBRARY ${CMAKE_C_CREATE_IMPORT_LIBRARY}) 50 51# C link a object files into an executable file 52set(CMAKE_C_LINK_EXECUTABLE 53 "<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>") 54# C++ link a object files into an executable file 55set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_C_LINK_EXECUTABLE}) 56 57# C compile a file into an object file 58set(CMAKE_C_COMPILE_OBJECT 59 "<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc <SOURCE>") 60# C++ compile a file into an object file 61set(CMAKE_CXX_COMPILE_OBJECT 62 "<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc++ <SOURCE>") 63 64# C preprocess a source file 65set(CMAKE_C_CREATE_PREPROCESSED_SOURCE 66 "<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc <SOURCE>") 67# C++ preprocess a source file 68set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE 69 "<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc++ <SOURCE>") 70 71# C create a shared library 72set(CMAKE_C_CREATE_SHARED_LIBRARY 73 "<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> option implib=<TARGET_IMPLIB> file {<OBJECTS>} <LINK_LIBRARIES>") 74# C++ create a shared library 75set(CMAKE_CXX_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY}) 76 77# C create a shared module 78set(CMAKE_C_CREATE_SHARED_MODULE 79 "<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>") 80# C++ create a shared module 81set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_MODULE}) 82 83# C create a static library 84set(CMAKE_C_CREATE_STATIC_LIBRARY 85 "<CMAKE_AR> ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ") 86# C++ create a static library 87set(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY}) 88 89 90# old CMake internally used OpenWatcom version macros 91# for backward compatibility 92if(NOT _CMAKE_WATCOM_VERSION) 93 set(_CMAKE_WATCOM_VERSION 1) 94 if(CMAKE_C_COMPILER_VERSION) 95 set(_compiler_version ${CMAKE_C_COMPILER_VERSION}) 96 set(_compiler_id ${CMAKE_C_COMPILER_ID}) 97 else() 98 set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION}) 99 set(_compiler_id ${CMAKE_CXX_COMPILER_ID}) 100 endif() 101 set(WATCOM16) 102 set(WATCOM17) 103 set(WATCOM18) 104 set(WATCOM19) 105 if("${_compiler_id}" STREQUAL "OpenWatcom") 106 if("${_compiler_version}" VERSION_LESS 1.7) 107 set(WATCOM16 1) 108 endif() 109 if("${_compiler_version}" VERSION_EQUAL 1.7) 110 set(WATCOM17 1) 111 endif() 112 if("${_compiler_version}" VERSION_EQUAL 1.8) 113 set(WATCOM18 1) 114 endif() 115 if("${_compiler_version}" VERSION_EQUAL 1.9) 116 set(WATCOM19 1) 117 endif() 118 endif() 119endif() 120