summaryrefslogtreecommitdiff
path: root/cmake/modules/AddPartiallyLinkedObject.cmake
diff options
context:
space:
mode:
authorOscar Fuentes <ofv@wanadoo.es>2008-09-22 01:08:49 +0000
committerOscar Fuentes <ofv@wanadoo.es>2008-09-22 01:08:49 +0000
commit3d01fc7de86c75926e4e5ac7cc49f0116018893d (patch)
tree2ea49e2f904dd479a4b941454b776dee762921dd /cmake/modules/AddPartiallyLinkedObject.cmake
parentcd4c73aa708d9ecf5d7e0a711dbf359d22b6dd3a (diff)
downloadllvm-3d01fc7de86c75926e4e5ac7cc49f0116018893d.tar.gz
llvm-3d01fc7de86c75926e4e5ac7cc49f0116018893d.tar.bz2
llvm-3d01fc7de86c75926e4e5ac7cc49f0116018893d.tar.xz
Initial support for the CMake build system.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake/modules/AddPartiallyLinkedObject.cmake')
-rwxr-xr-xcmake/modules/AddPartiallyLinkedObject.cmake21
1 files changed, 21 insertions, 0 deletions
diff --git a/cmake/modules/AddPartiallyLinkedObject.cmake b/cmake/modules/AddPartiallyLinkedObject.cmake
new file mode 100755
index 0000000000..b985b3eb28
--- /dev/null
+++ b/cmake/modules/AddPartiallyLinkedObject.cmake
@@ -0,0 +1,21 @@
+
+macro(add_partially_linked_object lib)
+ if( MSVC )
+ add_llvm_library( ${lib} ${ARGN})
+ else( MSVC )
+ set(pll ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${lib}.o)
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib)
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib)
+ add_library( ${lib} STATIC ${ARGN})
+ add_custom_command(OUTPUT ${pll}
+ MESSAGE "Building ${lib}.o..."
+ DEPENDS ${lib}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib
+ COMMAND ar x ${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}
+ COMMAND ld -r *${CMAKE_CXX_OUTPUT_EXTENSION} -o ${pll}
+ COMMAND rm -f *${CMAKE_CXX_OUTPUT_EXTENSION}
+ )
+ add_custom_target(${lib}_pll ALL DEPENDS ${pll})
+ set( llvm_libs ${llvm_libs} ${pll} PARENT_SCOPE)
+ endif( MSVC )
+endmacro(add_partially_linked_object lib)