cmake_minimum_required (VERSION 2.6)
project(SUBDIR)
subdirs(Executable EXCLUDE_FROM_ALL Examples)
write_file(${SUBDIR_BINARY_DIR}/ShouldBeHere "This file should exist.")
#WATCOM WMAKE does not support + in the name of a file!
if(WATCOM)
  set(PLUS_NAME_FILES
    AnotherSubdir/pair_int.int.c
    vcl_algorithm_vcl_pair_double.foo.c)
else()
    set(PLUS_NAME_FILES
    AnotherSubdir/pair+int.int.c
    vcl_algorithm+vcl_pair+double.foo.c)
endif()

add_executable(TestFromSubdir
  AnotherSubdir/testfromsubdir.c
  AnotherSubdir/secondone
  ${PLUS_NAME_FILES}
  )

aux_source_directory(ThirdSubDir SOURCES)
if(WATCOM)
  foreach(f ${SOURCES})
    if("${f}" STREQUAL "ThirdSubDir/pair+int.int1.c")
    else()
      set(SOURCES2 ${f} ${SOURCES2})
    endif()
  endforeach()
  set(SOURCES ${SOURCES2})
  set(SOURCES ${SOURCES}
    vcl_algorithm_vcl_pair_double.foo.c)
else()
  foreach(f ${SOURCES})
    if("${f}" STREQUAL "ThirdSubDir/pair_int.int1.c")
    else()
      set(SOURCES2 ${f} ${SOURCES2})
      message("${f}")
    endif()
  endforeach()
  set(SOURCES ${SOURCES2})
  set(SOURCES ${SOURCES}
    vcl_algorithm+vcl_pair+double.foo.c)
endif()
message("Sources: ${SOURCES}")
add_executable(TestWithAuxSourceDir ${SOURCES})
