blob: d607306dfe2cf18c3aab13d18ec771bfc124b739 [file] [log] [blame]
Oscar Fuentes3d01fc72008-09-22 01:08:49 +00001
Oscar Fuentes1d8e4cf2008-09-22 18:21:51 +00002macro(target_name_of_partially_linked_object lib var)
3 if( MSVC )
4 set(${var} ${lib})
5 else( MSVC )
6 set(${var} ${lib}_pll)
7 endif( MSVC )
8endmacro(target_name_of_partially_linked_object lib var)
9
10
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000011macro(add_partially_linked_object lib)
12 if( MSVC )
13 add_llvm_library( ${lib} ${ARGN})
14 else( MSVC )
15 set(pll ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${lib}.o)
16 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib)
17 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib)
18 add_library( ${lib} STATIC ${ARGN})
Oscar Fuentes1d8e4cf2008-09-22 18:21:51 +000019 if( LLVM_COMMON_DEPENDS )
20 add_dependencies( ${lib} ${LLVM_COMMON_DEPENDS} )
21 endif( LLVM_COMMON_DEPENDS )
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000022 add_custom_command(OUTPUT ${pll}
Oscar Fuentesb3334b62008-09-22 02:33:43 +000023 COMMENT "Building ${lib}.o..."
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000024 DEPENDS ${lib}
25 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib
26 COMMAND ar x ${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}
Oscar Fuentes3ab40ca2008-11-09 18:53:19 +000027 COMMAND ${CMAKE_LINKER} "${LLVM_PLO_FLAGS}" -r "*${CMAKE_CXX_OUTPUT_EXTENSION}" -o ${pll}
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000028 COMMAND rm -f *${CMAKE_CXX_OUTPUT_EXTENSION}
29 )
Oscar Fuentes1d8e4cf2008-09-22 18:21:51 +000030 target_name_of_partially_linked_object(${lib} tnplo)
31 add_custom_target(${tnplo} ALL DEPENDS ${pll})
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000032 set( llvm_libs ${llvm_libs} ${pll} PARENT_SCOPE)
Oscar Fuentes1d8e4cf2008-09-22 18:21:51 +000033 set( llvm_lib_targets ${llvm_lib_targets} ${tnplo} PARENT_SCOPE )
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000034 endif( MSVC )
Oscar Fuentes1dc97162008-10-22 02:56:07 +000035 install(FILES ${pll}
36 DESTINATION lib)
Oscar Fuentes3d01fc72008-09-22 01:08:49 +000037endmacro(add_partially_linked_object lib)