add_libc_integration_test_suite(libc-pthread-integration-tests)

add_integration_test(
  pthread_mutex_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_mutex_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.pthread
    libc.src.errno.errno
    libc.src.pthread.pthread_mutex_destroy
    libc.src.pthread.pthread_mutex_init
    libc.src.pthread.pthread_mutex_lock
    libc.src.pthread.pthread_mutex_unlock
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_join
)

add_integration_test(
  pthread_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.pthread
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_join
)

add_integration_test(
  pthread_equal_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_equal_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.pthread
    libc.src.errno.errno
    libc.src.pthread.pthread_mutex_destroy
    libc.src.pthread.pthread_mutex_init
    libc.src.pthread.pthread_mutex_lock
    libc.src.pthread.pthread_mutex_unlock
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_equal
    libc.src.pthread.pthread_join
    libc.src.pthread.pthread_self
)

add_integration_test(
  pthread_name_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_name_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.errno
    libc.include.pthread
    libc.src.errno.errno
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_getname_np
    libc.src.pthread.pthread_join
    libc.src.pthread.pthread_mutex_destroy
    libc.src.pthread.pthread_mutex_init
    libc.src.pthread.pthread_mutex_lock
    libc.src.pthread.pthread_mutex_unlock
    libc.src.pthread.pthread_self
    libc.src.pthread.pthread_setname_np
)

add_integration_test(
  pthread_exit_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_exit_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.pthread
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_exit
    libc.src.pthread.pthread_join
)

add_integration_test(
  pthread_tss_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_tss_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.pthread
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_exit
    libc.src.pthread.pthread_join
    libc.src.pthread.pthread_key_create
    libc.src.pthread.pthread_key_delete
    libc.src.pthread.pthread_getspecific
    libc.src.pthread.pthread_setspecific
)

add_integration_test(
  pthread_once_test
  SUITE
    libc-pthread-integration-tests
  SRCS
    pthread_once_test.cpp
  STARTUP
    libc.startup.linux.crt1
  DEPENDS
    libc.include.pthread
    libc.src.pthread.pthread_once
    libc.src.pthread.pthread_mutex_destroy
    libc.src.pthread.pthread_mutex_init
    libc.src.pthread.pthread_mutex_lock
    libc.src.pthread.pthread_mutex_unlock
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_join
    libc.src.__support.CPP.atomic
)
