[CMAKE] Use an INTERFACE library to perform the msvcrt <-> msvcrtex binding

This commit is contained in:
Jérôme Gardou 2020-10-22 16:29:40 +02:00 committed by Jérôme Gardou
parent bada20a361
commit 23e04ae1ee
3 changed files with 14 additions and 9 deletions

View file

@ -531,13 +531,7 @@ endif()
function(add_importlibs _module)
add_dependency_node(${_module})
foreach(LIB ${ARGN})
if("${LIB}" MATCHES "msvcrt")
target_compile_definitions(${_module} PRIVATE _DLL __USE_CRTIMP)
# set_module_type might not have been called at this point, so use a generator expression
target_link_libraries(${_module} "$<$<IN_LIST:$<TARGET_PROPERTY:${_module},REACTOS_MODULE_TYPE>,win32gui;win32cui;win32dll;win32ocx;cpl>:msvcrtex>")
endif()
target_link_libraries(${_module} lib${LIB})
add_dependencies(${_module} lib${LIB})
add_dependency_edge(${_module} ${LIB})
endforeach()
endfunction()

View file

@ -96,6 +96,9 @@ add_asm_files(msvcrtex_asm ${MSVCRTEX_ASM_SOURCE})
add_library(msvcrtex ${MSVCRTEX_SOURCE} ${msvcrtex_asm})
target_compile_definitions(msvcrtex PRIVATE _DLL _MSVCRTEX_)
# Link msvcrtex to the "real" msvcrt.dll library. See msvcrt.dll CMakeLists.txt to see what really happens here
target_link_libraries(msvcrtex libmsvcrt_real libkernel32)
if(GCC OR CLANG)
target_compile_options(msvcrtex PRIVATE $<$<COMPILE_LANGUAGE:C>:-Wno-main>)
if(LTCG)