From a8b688c734d6dac677f7c68a2d915f85baf41b2b Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Sun, 8 Mar 2015 15:33:27 -0700 Subject: Minimal cmake build script move flags for MSVC rename lump.txt to lump.md, add data/*.txt to .gitignore --- .gitignore | 2 +- CMakeLists.txt | 22 ++++++++++++++++++++++ NEWS.md | 2 +- lump.md | 27 +++++++++++++++++++++++++++ lump.txt | 26 -------------------------- utf8proc.h | 2 +- utils.cmake | 20 ++++++++++++++++++++ 7 files changed, 72 insertions(+), 29 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 lump.md delete mode 100644 lump.txt create mode 100644 utils.cmake diff --git a/.gitignore b/.gitignore index 58d7ad6..c516642 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,8 @@ *.dll *.dylib *.dSYM -*.txt *.out +data/*.txt bench/bench bench/icu bench/unistring diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4d0c1c3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required (VERSION 2.8) + +include (utils.cmake) + +disallow_intree_builds() + +project (utf8proc C) + +add_definitions ( + -DUTF8PROC_EXPORTS +) + +if (NOT MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -std=c99 -pedantic -Wall") +endif () + +add_library (utf8proc + utf8proc.c + utf8proc.h +) + +set_property (TARGET utf8proc PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/NEWS.md b/NEWS.md index ead7f6b..989aba5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -105,7 +105,7 @@ Release of version 1.0.1 2006-09-17: -- added the `LUMP` option, which lumps certain characters together (see `lump.txt`) (also used for the PostgreSQL `unifold` function) +- added the `LUMP` option, which lumps certain characters together (see `lump.md`) (also used for the PostgreSQL `unifold` function) - added the `STRIPMARK` option, which strips marking characters (or marks of composed characters) - deprecated ruby method `String#char_ary` in favour of `String#utf8chars` diff --git a/lump.md b/lump.md new file mode 100644 index 0000000..39186fb --- /dev/null +++ b/lump.md @@ -0,0 +1,27 @@ +``` +U+0020 <-- all space characters (general category Zs) +U+0027 ' <-- left/right single quotation mark U+2018..2019, + modifier letter apostrophe U+02BC, + modifier letter vertical line U+02C8 +U+002D - <-- all dash characters (general category Pd), + minus U+2212 +U+002F / <-- fraction slash U+2044, + division slash U+2215 +U+003A : <-- ratio U+2236 +U+003C < <-- single left-pointing angle quotation mark U+2039, + left-pointing angle bracket U+2329, + left angle bracket U+3008 +U+003E > <-- single right-pointing angle quotation mark U+203A, + right-pointing angle bracket U+232A, + right angle bracket U+3009 +U+005C \ <-- set minus U+2216 +U+005E ^ <-- modifier letter up arrowhead U+02C4, + modifier letter circumflex accent U+02C6, + caret U+2038, + up arrowhead U+2303 +U+005F _ <-- all connector characters (general category Pc), + modifier letter low macron U+02CD +U+0060 ` <-- modifier letter grave accent U+02CB +U+007C | <-- divides U+2223 +U+007E ~ <-- tilde operator U+223C +``` diff --git a/lump.txt b/lump.txt deleted file mode 100644 index 442cafb..0000000 --- a/lump.txt +++ /dev/null @@ -1,26 +0,0 @@ -U+0020 <-- all space characters (general category Zs) -U+0027 ' <-- left/right single quotation mark U+2018..2019, - modifier letter apostrophe U+02BC, - modifier letter vertical line U+02C8 -U+002D - <-- all dash characters (general category Pd), - minus U+2212 -U+002F / <-- fraction slash U+2044, - division slash U+2215 -U+003A : <-- ratio U+2236 -U+003C < <-- single left-pointing angle quotation mark U+2039, - left-pointing angle bracket U+2329, - left angle bracket U+3008 -U+003E > <-- single right-pointing angle quotation mark U+203A, - right-pointing angle bracket U+232A, - right angle bracket U+3009 -U+005C \ <-- set minus U+2216 -U+005E ^ <-- modifier letter up arrowhead U+02C4, - modifier letter circumflex accent U+02C6, - caret U+2038, - up arrowhead U+2303 -U+005F _ <-- all connector characters (general category Pc), - modifier letter low macron U+02CD -U+0060 ` <-- modifier letter grave accent U+02CB -U+007C | <-- divides U+2223 -U+007E ~ <-- tilde operator U+223C - diff --git a/utf8proc.h b/utf8proc.h index 06346c8..0d647db 100644 --- a/utf8proc.h +++ b/utf8proc.h @@ -140,7 +140,7 @@ extern "C" { * is representing a single grapheme cluster (see UAX#29). * LUMP: Lumps certain characters together * (e.g. HYPHEN U+2010 and MINUS U+2212 to ASCII "-"). - * (See lump.txt for details.) + * (See lump.md for details.) * If NLF2LF is set, this includes a transformation of * paragraph and line separators to ASCII line-feed (LF). * STRIPMARK: Strips all character markings diff --git a/utils.cmake b/utils.cmake new file mode 100644 index 0000000..63fc426 --- /dev/null +++ b/utils.cmake @@ -0,0 +1,20 @@ + +function (disallow_intree_builds) + # Adapted from LLVM's toplevel CMakeLists.txt file + if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE ) + message(FATAL_ERROR " + In-source builds are not allowed. CMake would overwrite the + makefiles distributed with utf8proc. Please create a directory + and run cmake from there. Building in a subdirectory is + fine, e.g.: + + mkdir build + cd build + cmake .. + + This process created the file `CMakeCache.txt' and the + directory `CMakeFiles'. Please delete them. + + ") + endif() +endfunction() -- cgit v1.2.3 From d93070dca43974b9572905b805477794c22e46be Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Sun, 8 Mar 2015 16:23:56 -0700 Subject: test cmake on travis --- .travis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.travis.yml b/.travis.yml index df424ad..3031894 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,3 +8,11 @@ script: - make prefix=`pwd`/local install - make check - make utf8proc_data.c.new && (diff utf8proc_data.c.new utf8proc_data.c > /dev/null) + - mkdir build_static + - cd build_static + - cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON + - make + - mkdir ../build_shared + - cd ../build_shared + - cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=ON + - make -- cgit v1.2.3 From 86f90194e1e7d359bbe3a751e2d407b33f2f7550 Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Sun, 8 Mar 2015 16:43:50 -0700 Subject: Create appveyor.yml only testing with default 32 bit MSVC and mingw.org at the moment add semicolons, fix quoting add fast fail functionality for redundant PR builds need separate folders for msvc vs mingw need to add path to mingw to /etc/fstab --- appveyor.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..96c0188 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,35 @@ +branches: + only: + - master + +notifications: + - provider: Email + on_build_success: false + on_build_failure: false + on_build_status_changed: false + +build_script: + - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod ` + https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | ` + Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { ` + throw "There are newer queued builds for this pull request, failing early." } + - mkdir msvc_static + - cd msvc_static + - cmake .. + - cmake --build . + - mkdir ..\msvc_shared + - cd ..\msvc_shared + - cmake .. -DBUILD_SHARED_LIBS=ON + - cmake --build . + - C:\MinGW\msys\1.0\bin\sh --login -c " + echo 'C:\MinGW\ /MinGW' > /etc/fstab; + cd /c/projects/utf8proc; + mkdir mingw_static; + cd mingw_static; + cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -G'MSYS Makefiles'; + make; + mkdir ../mingw_shared; + cd ../mingw_shared; + cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=ON -G'MSYS Makefiles'; + make + " -- cgit v1.2.3 From 263421f9e89aafd8ad339c496c9fb6c6bdd5a52f Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Sun, 8 Mar 2015 18:09:35 -0700 Subject: Temporary fix for getting VERSION and SOVERSION into cmake only use ${SO_MAJOR} for cmake SOVERSION use 1.2.0 for version in cmake use only abi version for VERSION property in cmake --- CMakeLists.txt | 11 ++++++++++- Makefile | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d0c1c3..da6aa78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,11 @@ disallow_intree_builds() project (utf8proc C) +# Be sure to also update these in Makefile! +set(SO_MAJOR 1) +set(SO_MINOR 2) +set(SO_PATCH 0) + add_definitions ( -DUTF8PROC_EXPORTS ) @@ -19,4 +24,8 @@ add_library (utf8proc utf8proc.h ) -set_property (TARGET utf8proc PROPERTY POSITION_INDEPENDENT_CODE ON) +set_target_properties (utf8proc PROPERTIES + POSITION_INDEPENDENT_CODE ON + VERSION "${SO_MAJOR}.${SO_MINOR}.${SO_PATCH}" + SOVERSION ${SO_MAJOR} +) diff --git a/Makefile b/Makefile index 99571e3..f40a116 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ cc = $(CC) $(cflags) # from the utf8proc version number because it indicates ABI compatibility, # not API compatibility: MAJOR should be incremented whenever *binary* # compatibility is broken, even if the API is backward-compatible +# Be sure to also update these in CMakeLists.txt! MAJOR=1 MINOR=2 PATCH=0 -- cgit v1.2.3