* Add: tests to CMakeLists.txt * Disable compilation of charwidth, graphemetest and normtest because of missing getline * Refactoring: UTF8PROC_ENABLE_TESTING default Off, move tests that don't compile on windows to NOT MSVC section, add testing to appveyor.yml * Add: testing to travis * Changed: flag to WIN32 because MinGW has the same problem as MSVC * Commented out graphemetest and normtest because they fail. * Re-added: graphemetest and normtest added missing data to the path of the text files. * Fix: last commit was party wrong normtest failed. * * Commented out graphemetest and normtest because they fail, because in CMakeLists is missing building of data. * Add: mingw_static, mingw_shared, msvc_shared, msvc_static to ignore list * Add: downloading data and executing enabled tests that depend on the downloaded data. * Fix: windows line endings CRLF replaced with linux LF * Refactoring: (major) set UNICODE_VERSION to 13.0.0, replace curl with file DOWNLOAD, removed downloading unnecessary files, enabled normtest. * Fix: woodhead error in revision adeac82ec9941667e3c3ad7f50769793547218c3 readded calling execute_process to strip GraphemeBreakTest.txt file * Add: removing no more used file data/GraphemeBreakTestOrg.txt after stripping. * Add: testing folder to ignore list * Add: enabled graphemetest * Update .gitignore Co-authored-by: Andreas-Schniertshauer <Andreas-Schniertshauer@users.noreply.github.com> Co-authored-by: Steven G. Johnson <stevenj@mit.edu>
103 lines
3.6 KiB
CMake
103 lines
3.6 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 ../utf8proc)
|
||
|
||
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/GraphemeBreakTestOrg.txt SHOW_PROGRESS)
|
||
execute_process(COMMAND bash -c "cat data/GraphemeBreakTestOrg.txt | /usr/bin/perl -pe 's,÷,/,g;s,×,+,g' && rm -f data/GraphemeBreakTestOrg.txt" OUTPUT_FILE data/GraphemeBreakTest.txt)
|
||
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()
|