[llvm-commits] [llvm] r58939 - in /llvm/trunk: CMakeLists.txt cmake/modules/AddPartiallyLinkedObject.cmake cmake/modules/CrossCompileLLVM.cmake cmake/modules/TableGen.cmake tools/llvm-config/CMakeLists.txt tools/llvmc2/driver/CMakeLists.txt

Oscar Fuentes ofv at wanadoo.es
Sun Nov 9 10:53:19 PST 2008


Author: ofv
Date: Sun Nov  9 12:53:19 2008
New Revision: 58939

URL: http://llvm.org/viewvc/llvm-project?rev=58939&view=rev
Log:
CMake: Support for cross-compiling. For now, requires a previously
built native tblgen which is passed to cmake in the variable
LLVM_TABLEGEN.

See

http://www.cmake.org/Wiki/CmakeMingw

for a quick example on how to cross-compile with CMake.

Added:
    llvm/trunk/cmake/modules/CrossCompileLLVM.cmake
Modified:
    llvm/trunk/CMakeLists.txt
    llvm/trunk/cmake/modules/AddPartiallyLinkedObject.cmake
    llvm/trunk/cmake/modules/TableGen.cmake
    llvm/trunk/tools/llvm-config/CMakeLists.txt
    llvm/trunk/tools/llvmc2/driver/CMakeLists.txt

Modified: llvm/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=58939&r1=58938&r2=58939&view=diff

==============================================================================
--- llvm/trunk/CMakeLists.txt (original)
+++ llvm/trunk/CMakeLists.txt Sun Nov  9 12:53:19 2008
@@ -111,10 +111,17 @@
 # Everything else depends on Support and System:
 set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} ${LLVM_LIBS} )
 
+set(LLVM_TABLEGEN "tblgen" CACHE
+  STRING "Native TableGen executable.")
+
+if( CMAKE_CROSSCOMPILING )
+  include( CrossCompileLLVM )
+endif( CMAKE_CROSSCOMPILING )
+
 add_subdirectory(utils/TableGen)
 
 add_custom_command(OUTPUT ${llvm_builded_incs_dir}/Intrinsics.gen
-  COMMAND tblgen -gen-intrinsic -I ${LLVM_MAIN_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR}/llvm/Intrinsics.td -o ${llvm_builded_incs_dir}/Intrinsics.gen
+  COMMAND ${LLVM_TABLEGEN} -gen-intrinsic -I ${LLVM_MAIN_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR}/llvm/Intrinsics.td -o ${llvm_builded_incs_dir}/Intrinsics.gen
   DEPENDS tblgen
   COMMENT "Building intrinsics.gen...")
 

Modified: llvm/trunk/cmake/modules/AddPartiallyLinkedObject.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddPartiallyLinkedObject.cmake?rev=58939&r1=58938&r2=58939&view=diff

==============================================================================
--- llvm/trunk/cmake/modules/AddPartiallyLinkedObject.cmake (original)
+++ llvm/trunk/cmake/modules/AddPartiallyLinkedObject.cmake Sun Nov  9 12:53:19 2008
@@ -24,7 +24,7 @@
       DEPENDS ${lib}
       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/temp_lib
       COMMAND ar x ${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}
-      COMMAND ld "${LLVM_PLO_FLAGS}" -r "*${CMAKE_CXX_OUTPUT_EXTENSION}" -o ${pll}
+      COMMAND ${CMAKE_LINKER} "${LLVM_PLO_FLAGS}" -r "*${CMAKE_CXX_OUTPUT_EXTENSION}" -o ${pll}
       COMMAND rm -f *${CMAKE_CXX_OUTPUT_EXTENSION}
       )
     target_name_of_partially_linked_object(${lib} tnplo)

Added: llvm/trunk/cmake/modules/CrossCompileLLVM.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/CrossCompileLLVM.cmake?rev=58939&view=auto

==============================================================================
--- llvm/trunk/cmake/modules/CrossCompileLLVM.cmake (added)
+++ llvm/trunk/cmake/modules/CrossCompileLLVM.cmake Sun Nov  9 12:53:19 2008
@@ -0,0 +1,6 @@
+# TODO: Build a native tblgen when cross-compiling, if the user
+# didn't set LLVM_TABLEGEN. Then, remove this check:
+if( CMAKE_CROSSCOMPILING AND ${LLVM_TABLEGEN} STREQUAL "tblgen" )
+  message(FATAL_ERROR
+    "Set LLVM_TABLEGEN to the full route to a native tblgen executable")
+endif()

Modified: llvm/trunk/cmake/modules/TableGen.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/TableGen.cmake?rev=58939&r1=58938&r2=58939&view=diff

==============================================================================
--- llvm/trunk/cmake/modules/TableGen.cmake (original)
+++ llvm/trunk/cmake/modules/TableGen.cmake Sun Nov  9 12:53:19 2008
@@ -4,7 +4,7 @@
 
 macro(tablegen ofn)
   add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
-    COMMAND tblgen ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CMAKE_SOURCE_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS} -o ${ofn}
+    COMMAND ${LLVM_TABLEGEN} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CMAKE_SOURCE_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS} -o ${ofn}
     DEPENDS tblgen ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS}
     COMMENT "Building ${ofn}..."
     )

Modified: llvm/trunk/tools/llvm-config/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-config/CMakeLists.txt?rev=58939&r1=58938&r2=58939&view=diff

==============================================================================
--- llvm/trunk/tools/llvm-config/CMakeLists.txt (original)
+++ llvm/trunk/tools/llvm-config/CMakeLists.txt Sun Nov  9 12:53:19 2008
@@ -63,8 +63,16 @@
 # set(LIBDEPS_TMP LibDeps.txt.tmp)
 # set(FINAL_LIBDEPS FinalLibDeps.txt)
 
+if( CMAKE_CROSSCOMPILING )
+  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+endif()
+
+if( NOT NM_PATH )
+  message(FATAL_ERROR "`nm' was not found")
+endif()
+
 add_custom_command(OUTPUT ${LIBDEPS_TMP}
-  COMMAND ${PERL_EXECUTABLE} ${LLVM_MAIN_SRC_DIR}/utils/GenLibDeps.pl -flat ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} > ${LIBDEPS_TMP}
+  COMMAND ${PERL_EXECUTABLE} ${LLVM_MAIN_SRC_DIR}/utils/GenLibDeps.pl -flat ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} ${NM_PATH} > ${LIBDEPS_TMP}
   COMMENT "Regenerating ${LIBDEPS_TMP}")
 
 add_custom_command(OUTPUT ${LIBDEPS}

Modified: llvm/trunk/tools/llvmc2/driver/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/driver/CMakeLists.txt?rev=58939&r1=58938&r2=58939&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc2/driver/CMakeLists.txt (original)
+++ llvm/trunk/tools/llvmc2/driver/CMakeLists.txt Sun Nov  9 12:53:19 2008
@@ -3,7 +3,7 @@
 
 macro(tgen ofn)
   add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
-    COMMAND tblgen ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CMAKE_SOURCE_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/Graph.td -o ${ofn}
+    COMMAND ${LLVM_TABLEGEN} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CMAKE_SOURCE_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/Graph.td -o ${ofn}
     DEPENDS
     tblgen
     ${LLVM_MAIN_INCLUDE_DIR}/llvm/CompilerDriver/Common.td





More information about the llvm-commits mailing list