1#!/bin/make
2#
3# Makefile for libnsutils
4#
5# Copyright 2014-2020 Vincent Sanders <vince@netsurf-browser.org>
6
7# Component settings
8COMPONENT := nsutils
9COMPONENT_VERSION := 0.1.0
10# Default to a static library
11COMPONENT_TYPE ?= lib-static
12
13# Setup the tooling
14PREFIX ?= /opt/netsurf
15NSSHARED ?= $(PREFIX)/share/netsurf-buildsystem
16include $(NSSHARED)/makefiles/Makefile.tools
17
18# Reevaluate when used, as BUILDDIR won't be defined yet
19TESTRUNNER = test/runtest.sh $(BUILDDIR) $(EXEEXT)
20
21# Toolchain flags
22WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \
23	-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
24	-Wmissing-declarations -Wnested-externs
25
26CFLAGS := -D_GNU_SOURCE -D_DEFAULT_SOURCE \
27	-I$(CURDIR)/include/ -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS)
28ifneq ($(GCCVER),2)
29  CFLAGS := $(CFLAGS) -std=c99
30else
31  # __inline__ is a GCCism
32  CFLAGS := $(CFLAGS) -Dinline="__inline__"
33endif
34CFLAGS := $(CFLAGS) -D_POSIX_C_SOURCE=200809L
35
36REQUIRED_LIBS := nsutils
37
38# Strictly the requirement for rt is dependant on both the clib and if
39# the build is using rt features like clock_gettime() but this check
40# will suffice
41ifeq ($(HOST),x86_64-linux-gnu)
42  REQUIRED_LIBS := $(REQUIRED_LIBS) rt
43endif
44
45TESTCFLAGS := -g -O2
46TESTLDFLAGS := -lm -l$(COMPONENT) $(TESTLDFLAGS)
47
48include $(NSBUILD)/Makefile.top
49
50# Extra installation rules
51I := /$(INCLUDEDIR)/nsutils
52INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/nsutils/errors.h
53INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/nsutils/base64.h
54INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/nsutils/endian.h
55INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/nsutils/time.h
56INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/nsutils/unistd.h
57INSTALL_ITEMS := $(INSTALL_ITEMS) /libdata/pkgconfig:lib$(COMPONENT).pc.in
58INSTALL_ITEMS := $(INSTALL_ITEMS) /lib:$(OUTPUT)
59