mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-10-07 04:02:23 +03:00
1 parent
dac8665889
commit
1ca1095736
20 files changed
+64
-18
No files matched your search
@@ -8,6 +8,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_LINKER "@_CMAKE_ASM_COMPILER_LINKER@")
|
||||
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_LINKER_ARCHITECTURE_FLAGS "@_CMAKE_ASM_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_LINKER_ID "@_CMAKE_ASM_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_LINKER_VERSION "@_CMAKE_ASM_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_ASM@ASM_DIALECT@_COMPILER_LINKER_FRONTEND_VARIANT "@_CMAKE_ASM_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -32,6 +32,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_C_COMPILER_LINKER "@CMAKE_C_COMPILER_LINKER@")
|
||||
set(CMAKE_C_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_C_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_C_COMPILER_LINKER_ID "@CMAKE_C_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_C_COMPILER_LINKER_VERSION "@CMAKE_C_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -82,6 +82,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_CUDA_COMPILER_LINKER "@CMAKE_CUDA_COMPILER_LINKER@")
|
||||
set(CMAKE_CUDA_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_CUDA_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_CUDA_COMPILER_LINKER_ID "@CMAKE_CUDA_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_CUDA_COMPILER_LINKER_VERSION "@CMAKE_CUDA_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_CUDA_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_CUDA_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -34,6 +34,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_CXX_COMPILER_LINKER "@CMAKE_CXX_COMPILER_LINKER@")
|
||||
set(CMAKE_CXX_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_CXX_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_CXX_COMPILER_LINKER_ID "@CMAKE_CXX_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_CXX_COMPILER_LINKER_VERSION "@CMAKE_CXX_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -24,6 +24,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
||||
CMAKE_${lang}_LIBRARY_ARCHITECTURE)
|
||||
if (CMAKE_${lang}_COMPILER_LINKER)
|
||||
list(APPEND abi_variables
|
||||
CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS
|
||||
CMAKE_${lang}_COMPILER_LINKER_ID
|
||||
CMAKE_${lang}_COMPILER_LINKER_VERSION
|
||||
CMAKE_${lang}_COMPILER_LINKER_FRONTEND_VARIANT)
|
||||
@@ -331,6 +332,11 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
||||
|
||||
set(CMAKE_${lang}_COMPILER_LINKER "${linker_tool}" PARENT_SCOPE)
|
||||
cmake_determine_linker_id(${lang} "${linker_tool}")
|
||||
if(CMAKE_${lang}_COMPILER_LINKER_ID MATCHES "GNU|LLD|MOLD|WILD")
|
||||
set(CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS "${linker_tool_ARCH_FLAGS}" PARENT_SCOPE)
|
||||
else()
|
||||
set(CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS "" PARENT_SCOPE)
|
||||
endif()
|
||||
set(CMAKE_${lang}_COMPILER_LINKER_ID "${CMAKE_${lang}_COMPILER_LINKER_ID}" PARENT_SCOPE)
|
||||
set(CMAKE_${lang}_COMPILER_LINKER_VERSION ${CMAKE_${lang}_COMPILER_LINKER_VERSION} PARENT_SCOPE)
|
||||
set(CMAKE_${lang}_COMPILER_LINKER_FRONTEND_VARIANT ${CMAKE_${lang}_COMPILER_LINKER_FRONTEND_VARIANT} PARENT_SCOPE)
|
||||
|
||||
@@ -16,6 +16,7 @@ set(CMAKE_Fortran_COMPILER_AR "@CMAKE_Fortran_COMPILER_AR@")
|
||||
set(CMAKE_RANLIB "@CMAKE_RANLIB@")
|
||||
set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_Fortran_COMPILER_LINKER "@CMAKE_Fortran_COMPILER_LINKER@")
|
||||
set(CMAKE_Fortran_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_Fortran_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_Fortran_COMPILER_LINKER_ID "@CMAKE_Fortran_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_Fortran_COMPILER_LINKER_VERSION "@CMAKE_Fortran_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_Fortran_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_Fortran_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -84,6 +84,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_HIP_COMPILER_LINKER "@CMAKE_HIP_COMPILER_LINKER@")
|
||||
set(CMAKE_HIP_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_HIP_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_HIP_COMPILER_LINKER_ID "@CMAKE_HIP_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_HIP_COMPILER_LINKER_VERSION "@CMAKE_HIP_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_HIP_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_HIP_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -29,6 +29,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_OBJC_COMPILER_LINKER "@CMAKE_OBJC_COMPILER_LINKER@")
|
||||
set(CMAKE_OBJC_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_OBJC_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_OBJC_COMPILER_LINKER_ID "@CMAKE_OBJC_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_OBJC_COMPILER_LINKER_VERSION "@CMAKE_OBJC_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_OBJC_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_OBJC_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -30,6 +30,7 @@ set(CMAKE_LINKER "@CMAKE_LINKER@")
|
||||
set(CMAKE_LINKER_LINK "@CMAKE_LINKER_LINK@")
|
||||
set(CMAKE_LINKER_LLD "@CMAKE_LINKER_LLD@")
|
||||
set(CMAKE_OBJCXX_COMPILER_LINKER "@CMAKE_OBJCXX_COMPILER_LINKER@")
|
||||
set(CMAKE_OBJCXX_COMPILER_LINKER_ARCHITECTURE_FLAGS "@CMAKE_OBJCXX_COMPILER_LINKER_ARCHITECTURE_FLAGS@")
|
||||
set(CMAKE_OBJCXX_COMPILER_LINKER_ID "@CMAKE_OBJCXX_COMPILER_LINKER_ID@")
|
||||
set(CMAKE_OBJCXX_COMPILER_LINKER_VERSION "@CMAKE_OBJCXX_COMPILER_LINKER_VERSION@")
|
||||
set(CMAKE_OBJCXX_COMPILER_LINKER_FRONTEND_VARIANT "@CMAKE_OBJCXX_COMPILER_LINKER_FRONTEND_VARIANT@")
|
||||
|
||||
@@ -108,6 +108,7 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
string(APPEND linker_tool_exclude_regex "|^clang |^gcc ")
|
||||
endif()
|
||||
set(linker_tool "NOTFOUND")
|
||||
set(linker_tool_arch)
|
||||
set(linker_tool_fallback "")
|
||||
set(link_line_parsed 0)
|
||||
string(APPEND log " link line regex: [${linker_regex}]\n")
|
||||
@@ -120,18 +121,31 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
NOT linker_tool AND NOT "${line}" MATCHES "${linker_tool_exclude_regex}")
|
||||
if("${line}" MATCHES "exec: ([^()]*/(${linker}))") # IBM XL as nvcc host compiler
|
||||
set(linker_tool "${CMAKE_MATCH_1}")
|
||||
string(APPEND log " link line: [${line}] ==> linker [${linker_tool}]\n")
|
||||
elseif("${line}" MATCHES "^export XL_LINKER=(.*/${linker})[ \t]*$") # IBM XL
|
||||
set(linker_tool "${CMAKE_MATCH_1}")
|
||||
string(APPEND log " link line: [${line}] ==> linker [${linker_tool}]\n")
|
||||
elseif("${line}" MATCHES "--with-ld=") # GNU
|
||||
# The GNU compiler reports how it was configured.
|
||||
# This does not account for -fuse-ld= so use it only as a fallback.
|
||||
if("${line}" MATCHES " --with-ld=([^ ]+/${linker})( |$)")
|
||||
set(linker_tool_fallback "${CMAKE_MATCH_1}")
|
||||
string(APPEND log " link line: [${line}] ==> linker (fallback) [${linker_tool_fallback}]\n")
|
||||
endif()
|
||||
elseif("${line}" MATCHES "vs_link.*-- +\"?([^\"]*[/\\](${linker}))\"? ") # cmake -E vs_link_exe
|
||||
set(linker_tool "${CMAKE_MATCH_1}")
|
||||
string(APPEND log " link line: [${line}] ==> linker [${linker_tool}]\n")
|
||||
elseif("${line}" MATCHES "${linker_tool_regex}")
|
||||
set(linker_tool "${CMAKE_MATCH_2}")
|
||||
string(APPEND log " link line: [${line}] ==> linker [${linker_tool}]\n")
|
||||
endif()
|
||||
endif()
|
||||
if(linker_tool)
|
||||
# pick-up useful flags influencing linker behavior
|
||||
# these flags are meaningful only for LLVM and GNU linkers. Check will be done later
|
||||
if("${line}" MATCHES "-m ([a-zA-Z0-9]+)")
|
||||
list(APPEND linker_tool_arch -m "${CMAKE_MATCH_1}")
|
||||
string(APPEND log " link line: [${line}] ==> linker architecture flags [${linker_tool_arch}]\n")
|
||||
endif()
|
||||
endif()
|
||||
if(NOT (EXTRA_PARSE_COMPUTE_IMPLICIT_LIBS OR EXTRA_PARSE_COMPUTE_IMPLICIT_DIRS
|
||||
@@ -305,7 +319,7 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
cmake_path(NORMAL_PATH linker_tool)
|
||||
endif()
|
||||
string(APPEND log " linker tool for '${EXTRA_PARSE_LANGUAGE}': ${linker_tool}\n")
|
||||
string(APPEND log " linker tool for '${EXTRA_PARSE_LANGUAGE}': ${linker_tool} ${linker_tool_arch}\n")
|
||||
endif()
|
||||
|
||||
# Look for library search paths reported by linker.
|
||||
@@ -401,6 +415,7 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
# Return results.
|
||||
if(EXTRA_PARSE_COMPUTE_LINKER)
|
||||
set(${EXTRA_PARSE_COMPUTE_LINKER} "${linker_tool}" PARENT_SCOPE)
|
||||
set(${EXTRA_PARSE_COMPUTE_LINKER}_ARCH_FLAGS "${linker_tool_arch}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
set(${log_var} "${log}" PARENT_SCOPE)
|
||||
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__cygwin_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__freebsd_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__gnu_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -7,10 +7,10 @@ include_guard()
|
||||
|
||||
# WHOLE_ARCHIVE Feature for LINK_LIBRARY generator expression
|
||||
## check linker capabilities
|
||||
function(__cmake_set_whole_archive_feature __linker)
|
||||
function(__cmake_set_whole_archive_feature __linker __linker_options)
|
||||
unset(__lang)
|
||||
if(ARGC EQUAL "2")
|
||||
set(__lang "${ARGV1}_")
|
||||
if(ARGC EQUAL "3")
|
||||
set(__lang "${ARGV2}_")
|
||||
endif()
|
||||
|
||||
if(NOT __linker)
|
||||
@@ -19,12 +19,11 @@ function(__cmake_set_whole_archive_feature __linker)
|
||||
|
||||
if(NOT DEFINED CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED)
|
||||
# launch linker to check if push_state/pop_state options are supported
|
||||
execute_process(COMMAND "${__linker}" --push-state --pop-state
|
||||
execute_process(COMMAND "${__linker}" ${__linker_options} --push-state --pop-state
|
||||
OUTPUT_VARIABLE __linker_log
|
||||
ERROR_VARIABLE __linker_log
|
||||
COMMAND_ERROR_IS_FATAL NONE
|
||||
RESULT_VARIABLE __linker_result)
|
||||
if(__linker_result EQUAL 0 AND (__linker_log MATCHES "--push-state" OR __linker_log MATCHES "--pop-state"))
|
||||
COMMAND_ERROR_IS_FATAL NONE)
|
||||
if(__linker_log MATCHES "--push-state" OR __linker_log MATCHES "--pop-state")
|
||||
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED FALSE)
|
||||
else()
|
||||
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED TRUE)
|
||||
@@ -47,4 +46,4 @@ endfunction()
|
||||
|
||||
|
||||
## Configure system linker
|
||||
__cmake_set_whole_archive_feature("${CMAKE_LINKER}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_LINKER}" "")
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__linux_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__netbsd_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__openbsd_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__serenityos_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__sunos_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -10,6 +10,8 @@ include(Platform/Linker/GNU)
|
||||
macro(__windows_linker_gnu lang)
|
||||
set(CMAKE_${lang}_PLATFORM_LINKER_ID GNU)
|
||||
if(CMAKE_${lang}_COMPILER_LINKER)
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}" "${lang}")
|
||||
__cmake_set_whole_archive_feature("${CMAKE_${lang}_COMPILER_LINKER}"
|
||||
"${CMAKE_${lang}_COMPILER_LINKER_ARCHITECTURE_FLAGS}"
|
||||
"${lang}")
|
||||
endif()
|
||||
endmacro()
|
||||
Reference in new issue
Block a user