diff options
author | Rory Bradford <roryrjb@gmail.com> | 2022-11-19 11:11:26 +0000 |
---|---|---|
committer | Rory Bradford <roryrjb@gmail.com> | 2022-11-19 11:18:40 +0000 |
commit | 0f92f7352d1964a9859868439e8ded2c4de2111e (patch) | |
tree | 14c690402fa28c3b465ec00d2fe767054a1a3331 /dirent/CMakeLists.txt | |
parent | fbb7c479de91b197c6c501c2023bf564a6a7610f (diff) | |
download | rf-0f92f7352d1964a9859868439e8ded2c4de2111e.tar.gz |
Full native win32 support
This will now compile with MSVC using the make.bat batch file. It does however bring in some additional third party dependencies: ports of dirent and getopt (something I'd ideally like to work on in the future). Signed-off-by: Rory Bradford <roryrjb@gmail.com>
Diffstat (limited to 'dirent/CMakeLists.txt')
-rw-r--r-- | dirent/CMakeLists.txt | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/dirent/CMakeLists.txt b/dirent/CMakeLists.txt new file mode 100644 index 0000000..0e002c8 --- /dev/null +++ b/dirent/CMakeLists.txt @@ -0,0 +1,64 @@ +cmake_minimum_required(VERSION 2.8.12) +project(dirent LANGUAGES C CXX) + +# User options +option(DIRENT_BUILD_TESTS "Build bundled tests" ON) +message(STATUS "Build test and example programs: ${DIRENT_BUILD_TESTS}") + +# Initialize C and C++ compilers +enable_language(C CXX) + +# Compile in debug mode by default +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Debug + CACHE STRING + "Type of build: None Debug Release RelWithDebInfo MinSizeRel." + FORCE + ) +endif(NOT CMAKE_BUILD_TYPE) + +# Use the include directory only on Windows +if(WIN32) + include_directories(${CMAKE_SOURCE_DIR}/include) +endif(WIN32) + +# Install dirent.h +if(WIN32) + install(FILES include/dirent.h DESTINATION include) +endif(WIN32) + +# Add distclean target +add_custom_target(distclean + COMMAND ${CMAKE_BUILD_TOOL} clean + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/distclean.cmake +) + +# Build example programs +if(DIRENT_BUILD_TESTS) + add_executable(find examples/find.c) + add_executable(ls examples/ls.c) + add_executable(locate examples/locate.c) + add_executable(updatedb examples/updatedb.c) + add_executable(scandir examples/scandir.c) + add_executable(cat examples/cat.c) + add_executable(dir examples/dir.c) + add_executable(du examples/du.c) + + # Build test programs + include(CTest) + add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C ${CMAKE_CFG_INTDIR}) + function(add_test_executable TEST_NAME) + add_executable(${TEST_NAME} EXCLUDE_FROM_ALL ${ARGN}) + add_test(NAME ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND $<TARGET_FILE:${TEST_NAME}>) + add_dependencies(check ${TEST_NAME}) + endfunction(add_test_executable) + + add_test_executable(t-compile tests/t-compile.c) + add_test_executable(t-dirent tests/t-dirent.c) + add_test_executable(t-scandir tests/t-scandir.c) + add_test_executable(t-unicode tests/t-unicode.c) + add_test_executable(t-cplusplus tests/t-cplusplus.cpp) + add_test_executable(t-telldir tests/t-telldir.c) + add_test_executable(t-strverscmp tests/t-strverscmp.c) + add_test_executable(t-utf8 tests/t-utf8.c) +endif(DIRENT_BUILD_TESTS) |