diff options
author | Steven G. Johnson <stevenj@mit.edu> | 2015-03-09 22:40:51 -0400 |
---|---|---|
committer | Steven G. Johnson <stevenj@mit.edu> | 2015-03-09 22:40:51 -0400 |
commit | 08f101a9e8c6a72dfdb1c9b913df880e13a36333 (patch) | |
tree | c41b2b235ec82be729b434092bd2faeb2724014f | |
parent | 50381b951a2b156c1c236c77d34ac0fddbc0ea46 (diff) | |
parent | 263421f9e89aafd8ad339c496c9fb6c6bdd5a52f (diff) | |
download | libutf8proc-08f101a9e8c6a72dfdb1c9b913df880e13a36333.tar.gz libutf8proc-08f101a9e8c6a72dfdb1c9b913df880e13a36333.tar.bz2 |
Merge pull request #28 from tkelman/tk/cmake
WIP: Minimal cmake build script
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | .travis.yml | 8 | ||||
-rw-r--r-- | CMakeLists.txt | 31 | ||||
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | NEWS.md | 2 | ||||
-rw-r--r-- | appveyor.yml | 35 | ||||
-rw-r--r-- | lump.md (renamed from lump.txt) | 3 | ||||
-rw-r--r-- | utf8proc.h | 2 | ||||
-rw-r--r-- | utils.cmake | 20 |
9 files changed, 100 insertions, 4 deletions
@@ -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} +) @@ -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 @@ -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 + " @@ -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 - +``` @@ -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() |