CMake: Implement magic word `all' for selecting all targets. Check
authorOscar Fuentes <ofv@wanadoo.es>
Mon, 10 Nov 2008 01:47:07 +0000 (01:47 +0000)
committerOscar Fuentes <ofv@wanadoo.es>
Mon, 10 Nov 2008 01:47:07 +0000 (01:47 +0000)
that specified targets are known.

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

CMakeLists.txt

index ac7da6554d2f5133f46c7b92c5cd6f762003af67..7f477ad143e0a19e6bed4e13f24152552c40fa74 100644 (file)
@@ -13,15 +13,42 @@ set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 set(LLVM_TOOLS_BINARY_DIR ${LLVM_BINARY_DIR}/bin)
 set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)
 
+set(LLVM_ALL_TARGETS
+  Alpha
+  ARM
+  CBackend
+  CellSPU
+  CppBackend
+  IA64
+  Mips
+  MSIL
+  PIC16
+  PowerPC
+  Sparc
+  X86
+  XCore
+  )
+
 if( MSVC )
   set(LLVM_TARGETS_TO_BUILD X86
-    CACHE STRING "Semicolon-separated list of targets to build")
+    CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
 else( MSVC )
-  set(LLVM_TARGETS_TO_BUILD
-    Alpha ARM CBackend CellSPU CppBackend IA64 Mips MSIL PIC16 PowerPC Sparc X86 XCore
-    CACHE STRING "Semicolon-separated list of targets to build")
+  set(LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS}
+    CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
 endif( MSVC )
 
+if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )
+  set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )
+endif()
+
+foreach(c ${LLVM_TARGETS_TO_BUILD})
+  list(FIND LLVM_ALL_TARGETS ${c} idx)
+  if( idx LESS 0 )
+    message(FATAL_ERROR "The target `${c}' does not exists.
+    It should be one of\n${LLVM_ALL_TARGETS}")
+  endif()
+endforeach(c)
+
 set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
 
 # Add path for custom modules