From a783495a127b7d4cc1a4abae25aba658b38110b4 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Mon, 4 Jan 2016 00:35:53 +0000 Subject: Build with NetSurf core buildsystem --- Makefile | 185 ++++++++++++++++----------------------------------------------- 1 file changed, 45 insertions(+), 140 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index be50a85..716d9fa 100644 --- a/Makefile +++ b/Makefile @@ -1,145 +1,50 @@ -# libutf8proc Makefile - -# programs -MAKE=make -AR?=ar -CC?=gcc -INSTALL=install -FIND=find - -# compiler settings -CFLAGS ?= -O2 -PICFLAG = -fPIC -C99FLAG = -std=c99 -WCFLAGS = -Wall -Wmissing-prototypes -pedantic -UCFLAGS = $(CFLAGS) $(PICFLAG) $(C99FLAG) $(WCFLAGS) -DUTF8PROC_EXPORTS - -# 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 -# Be sure to also update these in MANIFEST and CMakeLists.txt! -MAJOR=1 -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) -endif - -# installation directories (for 'make install') -prefix=/usr/local -libdir=$(prefix)/lib -includedir=$(prefix)/include - -# 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) -ifneq ($(OS),Darwin) - rm -f libutf8proc.so.$(MAJOR) +#!/bin/make +# +# Makefile for libutf8proc +# +# Copyright 2009-2015 John-Mark Bell + +# Component settings +COMPONENT := utf8proc +COMPONENT_VERSION := 1.3.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 \ + $(WARNFLAGS) $(CFLAGS) +ifneq ($(GCCVER),2) + CFLAGS := $(CFLAGS) -std=c99 +else + # __inline__ is a GCCism + CFLAGS := $(CFLAGS) -Dinline="__inline__" endif - rm -f test/tests.o test/normtest test/graphemetest test/printproperty test/charwidth test/valid test/iterate test/case - 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 +include $(NSBUILD)/Makefile.top -libutf8proc.so.$(MAJOR).$(MINOR).$(PATCH): utf8proc.o - $(CC) $(LDFLAGS) -shared -o $@ -Wl,-soname -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) -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 $@ - -install: libutf8proc.a libutf8proc.$(SHLIB_EXT) libutf8proc.$(SHLIB_VERS_EXT) - 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) - 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) +ifeq ($(WANT_TEST),yes) + ifneq ($(PKGCONFIG),) + TESTCFLAGS := $(TESTCFLAGS) $(shell $(PKGCONFIG) --cflags check) + TESTLDFLAGS := $(TESTLDFLAGS) $(shell $(PKGCONFIG) --libs check) + else + TESTLDFLAGS := $(TESTLDFLAGS) -lcheck + endif 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) 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) 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) 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) 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) 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) 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) test/case.c test/tests.o utf8proc.o -o $@ - -check: test/normtest data/NormalizationTest.txt test/graphemetest data/GraphemeBreakTest.txt test/printproperty test/case test/charwidth 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/valid - test/iterate - test/case +# 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) -- cgit v1.2.3