diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -22,5 +22,10 @@ add_subdirectory(src) add_subdirectory(config) add_subdirectory(include) -add_subdirectory(lib) add_subdirectory(utils) + +# The lib and test directories are added at the very end as tests +# and libraries potentially draw from the components present in all +# of the other directories. +add_subdirectory(lib) +add_subdirectory(test) diff --git a/libc/config/linux/x86_64/CMakeLists.txt b/libc/config/linux/x86_64/CMakeLists.txt --- a/libc/config/linux/x86_64/CMakeLists.txt +++ b/libc/config/linux/x86_64/CMakeLists.txt @@ -1,10 +0,0 @@ -add_custom_target(libc_linux_x86_64_unittests) - -add_libc_unittest( - libc_linux_x86_64_syscall_unittest - SUITE libc_linux_x86_64_unittests - SRCS syscall_test.cpp - DEPENDS - syscall_impl_h - support_common_h -) diff --git a/libc/docs/source_layout.rst b/libc/docs/source_layout.rst --- a/libc/docs/source_layout.rst +++ b/libc/docs/source_layout.rst @@ -11,6 +11,7 @@ - lib - loader - src + - test + utils - build_scripts - testing @@ -69,6 +70,15 @@ implementation standard document explains more about the *header* directories. +The ``test`` directory +---------------------- + +This directory contains tests for the various components of llvm-libc. The +directory structure within this directory mirrors the directory structure of the +toplevel ``libc`` directory itself. A test for, say the ``mmap`` function, lives +in the directory ``test/src/sys/mman/`` as implementation of ``mmap`` lives in +``src/sys/mman``. + The ``www`` directory --------------------- diff --git a/libc/src/errno/CMakeLists.txt b/libc/src/errno/CMakeLists.txt --- a/libc/src/errno/CMakeLists.txt +++ b/libc/src/errno/CMakeLists.txt @@ -5,15 +5,3 @@ HDRS llvmlibc_errno.h ) - -add_custom_target(libc_errno_unittests) - -add_libc_unittest( - errno_test - SUITE - libc_errno_unittests - SRCS - errno_test.cpp - DEPENDS - __errno_location -) diff --git a/libc/src/string/CMakeLists.txt b/libc/src/string/CMakeLists.txt --- a/libc/src/string/CMakeLists.txt +++ b/libc/src/string/CMakeLists.txt @@ -1,4 +1,2 @@ -add_custom_target(libc_string_unittests) - add_subdirectory(strcpy) add_subdirectory(strcat) diff --git a/libc/src/string/strcat/CMakeLists.txt b/libc/src/string/strcat/CMakeLists.txt --- a/libc/src/string/strcat/CMakeLists.txt +++ b/libc/src/string/strcat/CMakeLists.txt @@ -8,14 +8,3 @@ strcpy string_h ) - -add_libc_unittest( - strcat_test - SUITE - libc_string_unittests - SRCS - strcat_test.cpp - DEPENDS - strcat - strcpy -) diff --git a/libc/src/string/strcpy/CMakeLists.txt b/libc/src/string/strcpy/CMakeLists.txt --- a/libc/src/string/strcpy/CMakeLists.txt +++ b/libc/src/string/strcpy/CMakeLists.txt @@ -7,13 +7,3 @@ DEPENDS string_h ) - -add_libc_unittest( - strcpy_test - SUITE - libc_string_unittests - SRCS - strcpy_test.cpp - DEPENDS - strcpy -) diff --git a/libc/src/sys/mman/CMakeLists.txt b/libc/src/sys/mman/CMakeLists.txt --- a/libc/src/sys/mman/CMakeLists.txt +++ b/libc/src/sys/mman/CMakeLists.txt @@ -25,17 +25,3 @@ syscall_impl_h __errno_location ) - -add_custom_target(libc_sys_mman_unittests) - -add_libc_unittest( - mmap_test - SUITE - libc_sys_mman_unittests - SRCS - mmap_test.cpp - DEPENDS - mmap - munmap - __errno_location -) diff --git a/libc/test/CMakeLists.txt b/libc/test/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/CMakeLists.txt @@ -0,0 +1,4 @@ +add_custom_target(check_libc) + +add_subdirectory(config) +add_subdirectory(src) diff --git a/libc/test/config/CMakeLists.txt b/libc/test/config/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/config/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(linux) diff --git a/libc/test/config/linux/CMakeLists.txt b/libc/test/config/linux/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/config/linux/CMakeLists.txt @@ -0,0 +1,4 @@ +add_custom_target(libc_linux_tests) +add_dependencies(check_libc libc_linux_tests) + +add_subdirectory(x86_64) diff --git a/libc/test/config/linux/x86_64/CMakeLists.txt b/libc/test/config/linux/x86_64/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/config/linux/x86_64/CMakeLists.txt @@ -0,0 +1,11 @@ +add_custom_target(libc_linux_x86_64_tests) +add_dependencies(libc_linux_tests libc_linux_x86_64_tests) + +add_libc_unittest( + libc_linux_x86_64_syscall_unittest + SUITE libc_linux_x86_64_tests + SRCS syscall_test.cpp + DEPENDS + syscall_impl_h + support_common_h +) diff --git a/libc/config/linux/x86_64/syscall_test.cpp b/libc/test/config/linux/x86_64/syscall_test.cpp rename from libc/config/linux/x86_64/syscall_test.cpp rename to libc/test/config/linux/x86_64/syscall_test.cpp diff --git a/libc/test/src/CMakeLists.txt b/libc/test/src/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/src/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(errno) +add_subdirectory(string) +add_subdirectory(sys) diff --git a/libc/src/errno/CMakeLists.txt b/libc/test/src/errno/CMakeLists.txt copy from libc/src/errno/CMakeLists.txt copy to libc/test/src/errno/CMakeLists.txt --- a/libc/src/errno/CMakeLists.txt +++ b/libc/test/src/errno/CMakeLists.txt @@ -1,12 +1,5 @@ -add_entrypoint_object( - __errno_location - SRCS - errno_location.cpp - HDRS - llvmlibc_errno.h -) - add_custom_target(libc_errno_unittests) +add_dependencies(check_libc libc_errno_unittests) add_libc_unittest( errno_test diff --git a/libc/src/errno/errno_test.cpp b/libc/test/src/errno/errno_test.cpp rename from libc/src/errno/errno_test.cpp rename to libc/test/src/errno/errno_test.cpp diff --git a/libc/test/src/string/CMakeLists.txt b/libc/test/src/string/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/src/string/CMakeLists.txt @@ -0,0 +1,23 @@ +add_custom_target(libc_string_unittests) +add_dependencies(check_libc libc_string_unittests) + +add_libc_unittest( + strcat_test + SUITE + libc_string_unittests + SRCS + strcat_test.cpp + DEPENDS + strcat + strcpy +) + +add_libc_unittest( + strcpy_test + SUITE + libc_string_unittests + SRCS + strcpy_test.cpp + DEPENDS + strcpy +) diff --git a/libc/src/string/strcat/strcat_test.cpp b/libc/test/src/string/strcat_test.cpp rename from libc/src/string/strcat/strcat_test.cpp rename to libc/test/src/string/strcat_test.cpp diff --git a/libc/src/string/strcpy/strcpy_test.cpp b/libc/test/src/string/strcpy_test.cpp rename from libc/src/string/strcpy/strcpy_test.cpp rename to libc/test/src/string/strcpy_test.cpp diff --git a/libc/test/src/sys/CMakeLists.txt b/libc/test/src/sys/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/src/sys/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(mman) diff --git a/libc/test/src/sys/mman/CMakeLists.txt b/libc/test/src/sys/mman/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/libc/test/src/sys/mman/CMakeLists.txt @@ -0,0 +1,14 @@ +add_custom_target(libc_sys_mman_unittests) +add_dependencies(check_libc libc_sys_mman_unittests) + +add_libc_unittest( + mmap_test + SUITE + libc_sys_mman_unittests + SRCS + mmap_test.cpp + DEPENDS + mmap + munmap + __errno_location +) diff --git a/libc/src/sys/mman/mmap_test.cpp b/libc/test/src/sys/mman/mmap_test.cpp rename from libc/src/sys/mman/mmap_test.cpp rename to libc/test/src/sys/mman/mmap_test.cpp