diff options
-rw-r--r-- | .gitattributes | 2 | ||||
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile | 211 | ||||
-rw-r--r-- | README | 15 | ||||
-rw-r--r-- | bench/Makefile | 40 | ||||
-rw-r--r-- | data/Makefile | 59 | ||||
-rw-r--r-- | include/libutf8proc/utf8proc.h (renamed from utf8proc.h) | 0 | ||||
-rw-r--r-- | src/Makefile | 3 | ||||
-rw-r--r-- | src/utf8proc.c (renamed from utf8proc.c) | 0 | ||||
-rw-r--r-- | src/utf8proc_data.c (renamed from utf8proc_data.c) | 0 |
10 files changed, 69 insertions, 264 deletions
diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..de2f316 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +.gitignore export-ignore +.gitattributes export-ignore @@ -28,3 +28,6 @@ test/iterate test/case test/custom /tmp/ +build-* +Makefile.config.override + @@ -1,171 +1,52 @@ -# libutf8proc Makefile - -# programs -AR?=ar -CC?=gcc -INSTALL=install -FIND=find -PERL=perl - -# compiler settings -CFLAGS ?= -O2 -PICFLAG = -fPIC -C99FLAG = -std=c99 -WCFLAGS = -Wall -pedantic -UCFLAGS = $(CPPFLAGS) $(CFLAGS) $(PICFLAG) $(C99FLAG) $(WCFLAGS) -DUTF8PROC_EXPORTS $(UTF8PROC_DEFINES) -LDFLAG_SHARED = -shared -SOFLAG = -Wl,-soname - -# shared-library version MAJOR.MINOR.PATCH ... this may be *different* -# 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. -# The API version number is defined in utf8proc.h. -# Be sure to also update these ABI versions in MANIFEST and CMakeLists.txt! -MAJOR=2 -MINOR=3 -PATCH=1 - -OS := $(shell uname) -ifeq ($(OS),Darwin) # MacOS X - SHLIB_EXT = dylib - SHLIB_VERS_EXT = $(MAJOR).dylib -else # GNU/Linux, at least (Windows should probably use cmake) - SHLIB_EXT = so - SHLIB_VERS_EXT = so.$(MAJOR).$(MINOR).$(PATCH) +#!/bin/make +# +# Makefile for libutf8proc +# +# Copyright 2009-2015 John-Mark Bell <jmb@netsurf-browser.org> + +# Component settings +COMPONENT := utf8proc +COMPONENT_VERSION := 2.4.0-1 +# Default to a static library +COMPONENT_TYPE ?= lib-static + +# Setup the tooling +PREFIX ?= /opt/netsurf +NSSHARED ?= $(PREFIX)/share/netsurf-buildsystem +include $(NSSHARED)/makefiles/Makefile.tools + +# Reevaluate when used, as BUILDDIR won't be defined yet +TESTRUNNER = $(BUILDDIR)/test_testrunner$(EXEEXT) + +# Toolchain flags +WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \ + -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \ + -Wmissing-declarations -Wnested-externs + +CFLAGS := -I$(CURDIR)/include/libutf8proc/ -I$(CURDIR)/src \ + -DUTF8PROC_EXPORTS \ + $(WARNFLAGS) $(CFLAGS) +ifneq ($(GCCVER),2) + CFLAGS := $(CFLAGS) -std=c99 +else + # __inline__ is a GCCism + CFLAGS := $(CFLAGS) -Dinline="__inline__" endif -# installation directories (for 'make install') -prefix=/usr/local -libdir=$(prefix)/lib -includedir=$(prefix)/include -pkgconfigdir=$(libdir)/pkgconfig - -pkglibdir=$(libdir:$(prefix)/%=%) -pkgincludedir=$(includedir:$(prefix)/%=%) +include $(NSBUILD)/Makefile.top -# meta targets - -.PHONY: all clean data update manifest install - -all: libutf8proc.a libutf8proc.$(SHLIB_EXT) - -clean: - rm -f utf8proc.o libutf8proc.a libutf8proc.$(SHLIB_VERS_EXT) libutf8proc.$(SHLIB_EXT) - rm -f libutf8proc.pc -ifneq ($(OS),Darwin) - rm -f libutf8proc.so.$(MAJOR) +ifeq ($(WANT_TEST),yes) + ifneq ($(PKGCONFIG),) + TESTCFLAGS := $(TESTCFLAGS) $(shell $(PKGCONFIG) --cflags check) + TESTLDFLAGS := $(TESTLDFLAGS) $(shell $(PKGCONFIG) --libs check) + else + TESTLDFLAGS := $(TESTLDFLAGS) -lcheck + endif endif - rm -f test/tests.o test/normtest test/graphemetest test/printproperty test/charwidth test/valid test/iterate test/case test/custom test/misc - rm -rf MANIFEST.new tmp - $(MAKE) -C bench clean - $(MAKE) -C data clean - -data: data/utf8proc_data.c.new - -update: data/utf8proc_data.c.new - cp -f data/utf8proc_data.c.new utf8proc_data.c - -manifest: MANIFEST.new - -# real targets - -data/utf8proc_data.c.new: libutf8proc.$(SHLIB_EXT) data/data_generator.rb data/charwidths.jl - $(MAKE) -C data utf8proc_data.c.new - -utf8proc.o: utf8proc.h utf8proc.c utf8proc_data.c - $(CC) $(UCFLAGS) -c -o utf8proc.o utf8proc.c - -libutf8proc.a: utf8proc.o - rm -f libutf8proc.a - $(AR) rs libutf8proc.a utf8proc.o - -libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH): utf8proc.o - $(CC) $(LDFLAGS) $(LDFLAG_SHARED) -o $@ $(SOFLAG) -Wl,libutf8proc.so.$(MAJOR) utf8proc.o - chmod a-x $@ - -libutf8proc.so: libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) - ln -f -s libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) $@ - ln -f -s libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH) $@.$(MAJOR) - -libutf8proc.$(MAJOR).dylib: utf8proc.o - $(CC) $(LDFLAGS) -dynamiclib -o $@ $^ -install_name $(libdir)/$@ -Wl,-compatibility_version -Wl,$(MAJOR) -Wl,-current_version -Wl,$(MAJOR).$(MINOR).$(PATCH) - -libutf8proc.dylib: libutf8proc.$(MAJOR).dylib - ln -f -s libutf8proc.$(MAJOR).dylib $@ - -libutf8proc.pc: libutf8proc.pc.in - sed \ - -e 's#PREFIX#$(prefix)#' \ - -e 's#LIBDIR#$(pkglibdir)#' \ - -e 's#INCLUDEDIR#$(pkgincludedir)#' \ - -e 's#VERSION#$(MAJOR).$(MINOR).$(PATCH)#' \ - libutf8proc.pc.in > libutf8proc.pc - -install: libutf8proc.a libutf8proc.$(SHLIB_EXT) libutf8proc.$(SHLIB_VERS_EXT) libutf8proc.pc - mkdir -m 755 -p $(DESTDIR)$(includedir) - $(INSTALL) -m 644 utf8proc.h $(DESTDIR)$(includedir) - mkdir -m 755 -p $(DESTDIR)$(libdir) - $(INSTALL) -m 644 libutf8proc.a $(DESTDIR)$(libdir) - $(INSTALL) -m 755 libutf8proc.$(SHLIB_VERS_EXT) $(DESTDIR)$(libdir) - mkdir -m 755 -p $(DESTDIR)$(pkgconfigdir) - $(INSTALL) -m 644 libutf8proc.pc $(DESTDIR)$(pkgconfigdir)/libutf8proc.pc - ln -f -s libutf8proc.$(SHLIB_VERS_EXT) $(DESTDIR)$(libdir)/libutf8proc.$(SHLIB_EXT) -ifneq ($(OS),Darwin) - ln -f -s libutf8proc.$(SHLIB_VERS_EXT) $(DESTDIR)$(libdir)/libutf8proc.so.$(MAJOR) -endif - -MANIFEST.new: - rm -rf tmp - $(MAKE) install prefix=/usr DESTDIR=$(PWD)/tmp - $(FIND) tmp/usr -mindepth 1 -type l -printf "%P -> %l\n" -or -type f -printf "%P\n" -or -type d -printf "%P/\n" | LC_ALL=C sort > $@ - rm -rf tmp - -# Test programs - -data/NormalizationTest.txt: - $(MAKE) -C data NormalizationTest.txt - -data/GraphemeBreakTest.txt: - $(MAKE) -C data GraphemeBreakTest.txt - -test/tests.o: test/tests.c test/tests.h utf8proc.h - $(CC) $(UCFLAGS) -c -o test/tests.o test/tests.c - -test/normtest: test/normtest.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/normtest.c test/tests.o utf8proc.o -o $@ - -test/graphemetest: test/graphemetest.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/graphemetest.c test/tests.o utf8proc.o -o $@ - -test/printproperty: test/printproperty.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/printproperty.c test/tests.o utf8proc.o -o $@ - -test/charwidth: test/charwidth.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/charwidth.c test/tests.o utf8proc.o -o $@ - -test/valid: test/valid.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/valid.c test/tests.o utf8proc.o -o $@ - -test/iterate: test/iterate.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/iterate.c test/tests.o utf8proc.o -o $@ - -test/case: test/case.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/case.c test/tests.o utf8proc.o -o $@ - -test/custom: test/custom.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) test/custom.c test/tests.o utf8proc.o -o $@ -test/misc: test/misc.c test/tests.o utf8proc.o utf8proc.h test/tests.h - $(CC) $(UCFLAGS) $(LDFLAGS) -DUNICODE_VERSION='"'`$(PERL) -ne "/^UNICODE_VERSION=/ and print $$';" data/Makefile`'"' test/misc.c test/tests.o utf8proc.o -o $@ +# Extra installation rules +I := /$(INCLUDEDIR)/libutf8proc +INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/libutf8proc/utf8proc.h +INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR)/pkgconfig:lib$(COMPONENT).pc.in +INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR):$(OUTPUT) -check: test/normtest data/NormalizationTest.txt test/graphemetest data/GraphemeBreakTest.txt test/printproperty test/case test/custom test/charwidth test/misc test/valid test/iterate bench/bench.c bench/util.c bench/util.h utf8proc.o - $(MAKE) -C bench - test/normtest data/NormalizationTest.txt - test/graphemetest data/GraphemeBreakTest.txt - test/charwidth - test/misc - test/valid - test/iterate - test/case - test/custom @@ -0,0 +1,15 @@ +libutf8proc +=========== + +This is the Public software group utf8proc library [1] repackaged as a +conveniance library for NetSurf. Previously this library was simply +copied into the NetSurf sources. + +This takes the unicode 11 capable version 2.2.0 of the library and +converts it to the NetSurf build system which adds the generation of a +pkg-config file. There are no code changes from upstream. + +All the Makefiles and changes are licenced as per the utf8proc +source using the MIT "expat" licence. + +[1] https://github.com/JuliaStrings/utf8proc diff --git a/bench/Makefile b/bench/Makefile deleted file mode 100644 index 8b82be2..0000000 --- a/bench/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -CURL=curl - -CC = cc -CFLAGS ?= -O2 -CFLAGS += -std=c99 -pedantic -Wall - -all: bench - -LIBUTF8PROC = ../utf8proc.o - -bench: bench.o util.o $(LIBUTF8PROC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ bench.o util.o $(LIBUTF8PROC) - -DATAURL = https://raw.githubusercontent.com/duerst/eprun/master/benchmark -DATAFILES = Deutsch_.txt Japanese_.txt Korean_.txt Vietnamese_.txt - -$(DATAFILES): - $(CURL) -O $(DATAURL)/$@ - -bench.out: $(DATAFILES) bench - ./bench -nfkc $(DATAFILES) > $@ - -# you may need make CPPFLAGS=... LDFLAGS=... to help it find ICU -icu: icu.o util.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ icu.o util.o -licuuc - -icu.out: $(DATAFILES) icu - ./icu $(DATAFILES) > $@ - -unistring: unistring.o util.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ unistring.o util.o -lunistring - -unistring.out: $(DATAFILES) unistring - ./unistring $(DATAFILES) > $@ - -.c.o: - $(CC) $(CPPFLAGS) -I.. $(CFLAGS) -c -o $@ $< - -clean: - rm -rf *.o *.txt bench *.out icu unistring diff --git a/data/Makefile b/data/Makefile deleted file mode 100644 index fc420e3..0000000 --- a/data/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -# Unicode data generation rules. Except for the test data files, most -# users will not use these Makefile rules, which are primarily to re-generate -# unicode_data.c when we get a new Unicode version or charwidth data; they -# require ruby and julia to be installed. - -# programs -CURL=curl -RUBY=ruby -PERL=perl -MAKE=make -JULIA=julia -CURLFLAGS = --retry 5 --location - -.PHONY: clean - -.DELETE_ON_ERROR: - -utf8proc_data.c.new: data_generator.rb UnicodeData.txt GraphemeBreakProperty.txt DerivedCoreProperties.txt CompositionExclusions.txt CaseFolding.txt CharWidths.txt emoji-data.txt - $(RUBY) data_generator.rb < UnicodeData.txt > $@ - -CharWidths.txt: charwidths.jl EastAsianWidth.txt - $(JULIA) charwidths.jl > $@ - -# Unicode data version (must also update utf8proc_unicode_version function) -UNICODE_VERSION=12.1.0 - -# Unicode emoji version (managed separately from UNICODE_VERSION) -UNICODE_EMOJI_VERSION=12.0 - -UnicodeData.txt: - $(CURL) $(CURLFLAGS) -o $@ -O http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/UnicodeData.txt - -EastAsianWidth.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/EastAsianWidth.txt - -GraphemeBreakProperty.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/GraphemeBreakProperty.txt - -DerivedCoreProperties.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/DerivedCoreProperties.txt - -CompositionExclusions.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/CompositionExclusions.txt - -CaseFolding.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/CaseFolding.txt - -NormalizationTest.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/NormalizationTest.txt - -GraphemeBreakTest.txt: - $(CURL) $(CURLFLAGS) $(URLCACHE)http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/GraphemeBreakTest.txt | $(PERL) -pe 's,÷,/,g;s,×,+,g' > $@ - -emoji-data.txt: - $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://unicode.org/Public/emoji/$(UNICODE_EMOJI_VERSION)/emoji-data.txt - -clean: - rm -f UnicodeData.txt EastAsianWidth.txt GraphemeBreakProperty.txt DerivedCoreProperties.txt CompositionExclusions.txt CaseFolding.txt NormalizationTest.txt GraphemeBreakTest.txt CharWidths.txt emoji-data.txt - rm -f utf8proc_data.c.new diff --git a/utf8proc.h b/include/libutf8proc/utf8proc.h index b25e063..b25e063 100644 --- a/utf8proc.h +++ b/include/libutf8proc/utf8proc.h diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..5e80c79 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,3 @@ +DIR_SOURCES := utf8proc.c + +include $(NSBUILD)/Makefile.subdir diff --git a/utf8proc.c b/src/utf8proc.c index 297c1dc..297c1dc 100644 --- a/utf8proc.c +++ b/src/utf8proc.c diff --git a/utf8proc_data.c b/src/utf8proc_data.c index 8b18c4b..8b18c4b 100644 --- a/utf8proc_data.c +++ b/src/utf8proc_data.c |