Mercurial > minori
diff dep/utf8proc/CMakeLists.txt @ 343:1faa72660932
*: transfer back to cmake from autotools
autotools just made lots of things more complicated than
they should have and many things broke (i.e. translations)
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Thu, 20 Jun 2024 05:56:06 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dep/utf8proc/CMakeLists.txt Thu Jun 20 05:56:06 2024 -0400 @@ -0,0 +1,113 @@ +cmake_minimum_required (VERSION 3.0.0) + +include (utils.cmake) + +disallow_intree_builds() + +if (POLICY CMP0048) + cmake_policy (SET CMP0048 NEW) +endif () +project (utf8proc VERSION 2.9.0 LANGUAGES C) + +# This is the ABI version number, which may differ from the +# API version number (defined in utf8proc.h and above). +# Be sure to also update these in Makefile and MANIFEST! +set(SO_MAJOR 3) +set(SO_MINOR 0) +set(SO_PATCH 0) + +option(UTF8PROC_INSTALL "Enable installation of utf8proc" On) +option(UTF8PROC_ENABLE_TESTING "Enable testing of utf8proc" Off) +option(LIB_FUZZING_ENGINE "Fuzzing engine to link against" Off) + +add_library (utf8proc + utf8proc.c + utf8proc.h +) + +# expose header path, for when this is part of a larger cmake project +target_include_directories(utf8proc PUBLIC .) + +if (BUILD_SHARED_LIBS) + # Building shared library +else() + # Building static library + target_compile_definitions(utf8proc PUBLIC "UTF8PROC_STATIC") + if (MSVC) + set_target_properties(utf8proc PROPERTIES OUTPUT_NAME "utf8proc_static") + endif() +endif() + +target_compile_definitions(utf8proc PRIVATE "UTF8PROC_EXPORTS") + +if (NOT MSVC) + set_target_properties( + utf8proc PROPERTIES + COMPILE_FLAGS "-O2 -std=c99 -pedantic -Wall" + ) +endif () + +set_target_properties (utf8proc PROPERTIES + POSITION_INDEPENDENT_CODE ON + VERSION "${SO_MAJOR}.${SO_MINOR}.${SO_PATCH}" + SOVERSION ${SO_MAJOR} +) + +if (UTF8PROC_INSTALL) + include(GNUInstallDirs) + install(FILES utf8proc.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}") + install(TARGETS utf8proc + ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}" + ) + configure_file(libutf8proc.pc.cmakein libutf8proc.pc @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libutf8proc.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") +endif() + +if(UTF8PROC_ENABLE_TESTING) + enable_testing() + file(MAKE_DIRECTORY data) + set(UNICODE_VERSION 15.1.0) + file(DOWNLOAD https://www.unicode.org/Public/${UNICODE_VERSION}/ucd/NormalizationTest.txt ${CMAKE_BINARY_DIR}/data/NormalizationTest.txt SHOW_PROGRESS) + file(DOWNLOAD https://www.unicode.org/Public/${UNICODE_VERSION}/ucd/auxiliary/GraphemeBreakTest.txt ${CMAKE_BINARY_DIR}/data/GraphemeBreakTest.txt SHOW_PROGRESS) + add_executable(case test/tests.h test/tests.c utf8proc.h test/case.c) + target_link_libraries(case utf8proc) + add_executable(custom test/tests.h test/tests.c utf8proc.h test/custom.c) + target_link_libraries(custom utf8proc) + add_executable(iterate test/tests.h test/tests.c utf8proc.h test/iterate.c) + target_link_libraries(iterate utf8proc) + add_executable(misc test/tests.h test/tests.c utf8proc.h test/misc.c) + target_link_libraries(misc utf8proc) + add_executable(printproperty test/tests.h test/tests.c utf8proc.h test/printproperty.c) + target_link_libraries(printproperty utf8proc) + add_executable(valid test/tests.h test/tests.c utf8proc.h test/valid.c) + target_link_libraries(valid utf8proc) + add_test(utf8proc.testcase case) + add_test(utf8proc.testcustom custom) + add_test(utf8proc.testiterate iterate) + add_test(utf8proc.testmisc misc) + add_test(utf8proc.testprintproperty printproperty) + add_test(utf8proc.testvalid valid) + + if (NOT WIN32) + # no wcwidth function on Windows + add_executable(charwidth test/tests.h test/tests.c utf8proc.h test/charwidth.c) + target_link_libraries(charwidth utf8proc) + add_test(utf8proc.testcharwidth charwidth) + endif() + add_executable(graphemetest test/tests.h test/tests.c utf8proc.h test/graphemetest.c) + target_link_libraries(graphemetest utf8proc) + add_executable(normtest test/tests.h test/tests.c utf8proc.h test/normtest.c) + target_link_libraries(normtest utf8proc) + add_test(utf8proc.testgraphemetest graphemetest data/GraphemeBreakTest.txt) + add_test(utf8proc.testnormtest normtest data/NormalizationTest.txt) + + if(LIB_FUZZING_ENGINE) + add_executable(fuzzer utf8proc.h test/fuzzer.c) + target_link_libraries(fuzzer ${LIB_FUZZING_ENGINE} utf8proc) + else() + add_executable(fuzzer utf8proc.h test/fuzz_main.c test/fuzzer.c) + target_link_libraries(fuzzer utf8proc) + endif() +endif()