Browse Source

Merge pull request #28 from tkelman/tk/cmake

WIP: Minimal cmake build script
pull/27/head
Steven G. Johnson 10 years ago
parent
commit
08f101a9e8
  1. 2
      .gitignore
  2. 8
      .travis.yml
  3. 31
      CMakeLists.txt
  4. 1
      Makefile
  5. 2
      NEWS.md
  6. 35
      appveyor.yml
  7. 3
      lump.md
  8. 2
      utf8proc.h
  9. 20
      utils.cmake

2
.gitignore

@ -8,8 +8,8 @@
*.dll
*.dylib
*.dSYM
*.txt
*.out
data/*.txt
bench/bench
bench/icu
bench/unistring

8
.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

31
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}
)

1
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

2
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`

35
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
"

3
lump.txt → 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
```

2
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

20
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()
Loading…
Cancel
Save