From ee10c4c2c7c5b8f625c165901a7910c7bc75521d Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 31 Oct 2010 17:31:05 +0000 Subject: [PATCH] [CMAKE] Implement add_importlib_target macro to build importlibs for MSVC. We can't use MSVC's libraries, as they are incomplete. gcc version does nothing. svn path=/branches/cmake-bringup/; revision=49377 --- gcc.cmake | 6 +++++- msc.cmake | 29 ++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/gcc.cmake b/gcc.cmake index 40bb66643e5..0317fa8a1ed 100644 --- a/gcc.cmake +++ b/gcc.cmake @@ -157,4 +157,8 @@ set(IDL_TYPELIB_ARG -t -T) #.tlb set(IDL_SERVER_ARG -s -S) #.c for server library set(IDL_CLIENT_ARG -c -C) #.c for stub client library -endif() \ No newline at end of file +macro(add_importlib_target _name) + # empty for now, while import libs are shipped +endmacro() + +endif() diff --git a/msc.cmake b/msc.cmake index 5304db02483..fe0d7b6963e 100644 --- a/msc.cmake +++ b/msc.cmake @@ -48,12 +48,6 @@ macro(set_image_base MODULE IMAGE_BASE) set_target_properties(${MODULE} PROPERTIES LINK_FLAGS ${NEW_LINKER_FLAGS}) endmacro() -macro(add_importlibs MODULE) - foreach(LIB ${ARGN}) - target_link_libraries(${MODULE} ${LIB}.LIB) - endforeach() -endmacro() - macro(set_module_type MODULE TYPE) add_dependencies(${MODULE} psdk buildno_header) if(${TYPE} MATCHES nativecui) @@ -87,4 +81,25 @@ set(IDL_TYPELIB_ARG /tlb) #.tlb set(IDL_SERVER_ARG /sstub) #.c for stub server library set(IDL_CLIENT_ARG /cstub) #.c for stub client library -endif() \ No newline at end of file + +macro(add_importlib_target _name) + add_custom_command( + OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib + COMMAND LINK /LIB /MACHINE:X86 /DEF:${CMAKE_CURRENT_BINARY_DIR}/${_name}.def /OUT:${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_name}.def + ) + add_custom_target(lib${_name} + DEPENDS ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib + ) +endmacro() + +macro(add_importlibs MODULE) + foreach(LIB ${ARGN}) + target_link_libraries(${MODULE} ${CMAKE_BINARY_DIR}/importlibs/lib${LIB}.lib) + endforeach() +endmacro() + +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs) + +endif() +