The cmake file expects the parent folder to be named "utf8proc", otherwise the target_include_directories won't work, as it references an unknown path. This deviates from the install targets (both cmake and makefile) in putting the include file into a subfolder in contrast to the top level folder. This also prevents using the library with the recent cmake addition of FetchContent. This change unifies the include file handling by using the local path for cmake as well. This might break existing uses. As a workaround, we could add a dummy include file in the old location (new utf8proc subfolder). I'm not sure if that is necessary. Co-authored-by: Stefan Floeren <stefan-floeren@users.noreply.github.com>
102 lines
3.4 KiB
CMake
102 lines
3.4 KiB
CMake
cmake_minimum_required (VERSION 2.8.12)
|
|
|
|
include (utils.cmake)
|
|
|
|
disallow_intree_builds()
|
|
|
|
project (utf8proc C)
|
|
|
|
# This is the ABI version number, which may differ from the
|
|
# API version number (defined in utf8proc.h).
|
|
# Be sure to also update these in Makefile and MANIFEST!
|
|
set(SO_MAJOR 2)
|
|
set(SO_MINOR 3)
|
|
set(SO_PATCH 2)
|
|
|
|
option(UTF8PROC_INSTALL "Enable installation of utf8proc" On)
|
|
option(UTF8PROC_ENABLE_TESTING "Enable testing of utf8proc" 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)
|
|
install(TARGETS utf8proc
|
|
RUNTIME DESTINATION bin
|
|
LIBRARY DESTINATION lib
|
|
ARCHIVE DESTINATION lib)
|
|
|
|
install(
|
|
FILES
|
|
"${PROJECT_SOURCE_DIR}/utf8proc.h"
|
|
DESTINATION include)
|
|
endif()
|
|
|
|
if(UTF8PROC_ENABLE_TESTING)
|
|
enable_testing()
|
|
file(MAKE_DIRECTORY data)
|
|
set(UNICODE_VERSION 13.0.0)
|
|
file(DOWNLOAD http://www.unicode.org/Public/${UNICODE_VERSION}/ucd/NormalizationTest.txt data/NormalizationTest.txt SHOW_PROGRESS)
|
|
file(DOWNLOAD http://www.unicode.org/Public/${UNICODE_VERSION}/ucd/auxiliary/GraphemeBreakTest.txt 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)
|
|
endif()
|