if(NOT MSVC) # Use the same trick as with the other import libs. See gcc.cmake --> generate_import_lib function set(LIBRARY_PRIVATE_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/oldnames.dir) add_custom_command( OUTPUT ${LIBRARY_PRIVATE_DIR}/oldnames.a # ar just puts stuff into the archive, without looking twice. Just delete the lib, we're going to rebuild it anyway COMMAND ${CMAKE_COMMAND} -E rm -f $ COMMAND ${CMAKE_DLLTOOL} --def ${CMAKE_CURRENT_SOURCE_DIR}/moldname-msvcrt.def --kill-at --output-lib=oldnames.a -t oldnames DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/moldname-msvcrt.def WORKING_DIRECTORY ${LIBRARY_PRIVATE_DIR}) set_source_files_properties( ${LIBRARY_PRIVATE_DIR}/oldnames.a PROPERTIES EXTERNAL_OBJECT TRUE) _add_library(oldnames STATIC EXCLUDE_FROM_ALL ${LIBRARY_PRIVATE_DIR}/oldnames.a) set_target_properties(oldnames PROPERTIES LINKER_LANGUAGE "C") else() add_asm_files(oldnames_asm oldnames-msvcrt.S) add_library(oldnames ${oldnames_asm}) set_target_properties(oldnames PROPERTIES LINKER_LANGUAGE "C") endif()