set(PARALLEL_DIRS)

set(PARALLEL_DIRS Burg aha sgefa siod d spiff treecc SPASS oggenc JM viterbi SIBsim4 ClamAV sqlite3 lemon)
if(NOT DEFINED DISABLE_CXX)
  list(APPEND PARALLEL_DIRS lambda-0.1.3 hbd hexxagon minisat ALAC)
endif()
if(NOT DEFINED SMALL_PROBLEM_SIZE)
  list(APPEND PARALLEL_DIRS lua)
endif()
if("${TARGET_OS}" STREQUAL "Linux")
  list(APPEND PARALLEL_DIRS obsequi)
endif()
if(NOT "${TARGET_OS}" STREQUAL "SunOS")
  if(NOT DEFINED DISABLE_CXX)
    list(APPEND PARALLEL_DIRS kimwitu++)
  endif()
endif()
if("${TARGET_OS}" STREQUAL "SunOS")
  llvm_filter_out(TMP1 SPASS  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP1})
  llvm_filter_out(TMP2 hexxagon  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP2})
endif()
if("${ARCH}" STREQUAL "XCore")
  llvm_filter_out(TMP3 siod  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP3})
  llvm_filter_out(TMP4 ClamAV  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP4})
  llvm_filter_out(TMP5 sqlite3  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP5})
  llvm_filter_out(TMP6 obsequi  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP6})
  llvm_filter_out(TMP7 lemon  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP7})
endif()
if("${ARCH}" STREQUAL "PowerPC")
  llvm_filter_out(TMP8 sqlite3  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP8})
endif()
if(DEFINED BENCHMARKING_ONLY)
  llvm_filter_out(TMP9 Burg  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP9})
  llvm_filter_out(TMP10 treecc  ${PARALLEL_DIRS})
  set(PARALLEL_DIRS ${TMP10})
endif()

llvm_add_subdirectories(${PARALLEL_DIRS})
