CMake: Builds a native tblgen when cross-compiling and the user didn't
authorOscar Fuentes <ofv@wanadoo.es>
Mon, 10 Nov 2008 02:35:55 +0000 (02:35 +0000)
committerOscar Fuentes <ofv@wanadoo.es>
Mon, 10 Nov 2008 02:35:55 +0000 (02:35 +0000)
set LLVM_TABLEGEN.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58953 91177308-0d34-0410-b5e6-96231b3b80d8

CMakeLists.txt
cmake/modules/CrossCompileLLVM.cmake

index 7f477ad143e0a19e6bed4e13f24152552c40fa74..15dcf7fa2bf7ef9bd97df8f41b9d2cd89aaf8675 100644 (file)
@@ -139,7 +139,7 @@ add_subdirectory(lib/System)
 set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} ${LLVM_LIBS} )
 
 set(LLVM_TABLEGEN "tblgen" CACHE
-  STRING "Native TableGen executable.")
+  STRING "Native TableGen executable. Saves building one when cross-compiling.")
 
 add_subdirectory(utils/TableGen)
 
index 36ae306d01f2d353f72e747c74adacbcad1d61f2..1c00f3958e67ddce4b3a0b10b8e93b11e9e8fc29 100644 (file)
@@ -1,42 +1,31 @@
 \r
 if( ${LLVM_TABLEGEN} STREQUAL "tblgen" )\r
-  # TODO: remove this when autobuilding the native tblgen works.\r
-  message(FATAL_ERROR\r
-    "Set LLVM_TABLEGEN to the full route to a native tblgen executable")\r
-\r
-  message(STATUS "Configuring native TableGen...")\r
-  set(CX_NATIVE_TG_DIR "${CMAKE_BINARY_DIR}/native")\r
+  set(LLVM_TABLEGEN "${CX_NATIVE_TG_DIR}/bin/tblgen")\r
 \r
-  execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CX_NATIVE_TG_DIR}\r
-    RESULT_VARIABLE CX_NATIVE_TG_RV)\r
-  if( NOT CX_NATIVE_TG_RV EQUAL 0 )\r
-    message(FATAL_ERROR "Failed to create directory ${CX_NATIVE_TG_DIR}")\r
-  endif()\r
+  message(STATUS "CX_NATIVE_TG_DIR : ${CX_NATIVE_TG_DIR}")\r
+  add_custom_command(OUTPUT ${CX_NATIVE_TG_DIR}\r
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${CX_NATIVE_TG_DIR}\r
+    COMMENT "Creating ${CX_NATIVE_TG_DIR}...")\r
 \r
-  execute_process(\r
+  add_custom_command(OUTPUT ${CX_NATIVE_TG_DIR}/CMakeCache.txt\r
     COMMAND ${CMAKE_COMMAND} -UMAKE_TOOLCHAIN_FILE -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}\r
     WORKING_DIRECTORY ${CX_NATIVE_TG_DIR}\r
-    RESULT_VARIABLE CX_NATIVE_TG_RV\r
-    ERROR_VARIABLE CX_NATIVE_TG_ERROR)\r
-  if( NOT CX_NATIVE_TG_RV EQUAL 0 )\r
-    message(FATAL_ERROR\r
-      "Error while configuring native TableGen:\n${CX_NATIVE_TG_ERROR}")\r
-  endif()\r
-\r
-  message(STATUS "Native TableGen configured.")\r
-\r
-  set(LLVM_TABLEGEN "${CX_NATIVE_TG_DIR}/bin/tblgen")\r
+    DEPENDS ${CX_NATIVE_TG_DIR}\r
+    COMMENT "Configuring native TableGen...")\r
 \r
   add_custom_command(OUTPUT ${LLVM_TABLEGEN}\r
-    COMMAND ${CMAKE_BUILD_TOOL} -C ${CX_NATIVE_TG_DIR}/utils/TableGen\r
+    COMMAND ${CMAKE_BUILD_TOOL}\r
+    DEPENDS ${CX_NATIVE_TG_DIR}/CMakeCache.txt\r
+    WORKING_DIRECTORY ${CX_NATIVE_TG_DIR}/utils/TableGen\r
     COMMENT "Building native TableGen...")\r
   add_custom_target(NativeTableGen DEPENDS ${LLVM_TABLEGEN})\r
+\r
   add_dependencies(tblgen NativeTableGen)\r
 \r
   # TODO: We should clean the native build when the `clean target\r
   # is invoked. This doesn't work.\r
-#   add_custom_command(TARGET clean\r
-#     COMMAND ${CMAKE_BUILD_TOOL} -C ${CX_NATIVE_TG_DIR}/utils/TableGen clean\r
-#     POST_BUILD\r
-#     COMMENT "Cleaning native TableGen...")\r
+  # add_custom_command(TARGET clean\r
+  #   COMMAND ${CMAKE_BUILD_TOOL} -C ${CX_NATIVE_TG_DIR}/utils/TableGen clean\r
+  #   POST_BUILD\r
+  #   COMMENT "Cleaning native TableGen...")\r
 endif()\r