summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml8
-rw-r--r--CMakeLists.txt31
-rw-r--r--Makefile1
-rw-r--r--NEWS.md2
-rw-r--r--appveyor.yml35
-rw-r--r--lump.md (renamed from lump.txt)3
-rw-r--r--utf8proc.h2
-rw-r--r--utils.cmake20
9 files changed, 100 insertions, 4 deletions
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/.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
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..da6aa78
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,31 @@
+cmake_minimum_required (VERSION 2.8)
+
+include (utils.cmake)
+
+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
+)
+
+if (NOT MSVC)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -std=c99 -pedantic -Wall")
+endif ()
+
+add_library (utf8proc
+ utf8proc.c
+ utf8proc.h
+)
+
+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
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/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
+ "
diff --git a/lump.txt b/lump.md
index 442cafb..39186fb 100644
--- a/lump.txt
+++ b/lump.md
@@ -1,3 +1,4 @@
+```
U+0020 <-- all space characters (general category Zs)
U+0027 ' <-- left/right single quotation mark U+2018..2019,
modifier letter apostrophe U+02BC,
@@ -23,4 +24,4 @@ U+005F _ <-- all connector characters (general category Pc),
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()