]> gitweb.michael.orlitzky.com - libsvgtiny.git/blobdiff - Makefile
examples/svgtiny_display_x11.c: include the system copy of svgtiny.h
[libsvgtiny.git] / Makefile
index 8c33b28ab233aa92c791d8d39cc433d6fecc9e14..6511191fd38f92511187f2dd20f00fc754a7d58e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,74 +1,59 @@
+#!/bin/make
 #
-# This file is part of Libsvgtiny
-# Licensed under the MIT License,
-#                http://opensource.org/licenses/mit-license.php
-# Copyright 2008 James Bursa <james@semichrome.net>
+# Makefile for libsvgtiny
 #
-
-SOURCE = svgtiny.c svgtiny_gradient.c svgtiny_list.c colors.c
-HDRS = svgtiny.h svgtiny_internal.h
-
-CFLAGS = -std=c99 -W -Wall -Wundef -Wpointer-arith -Wcast-qual \
-       -Wcast-align -Wwrite-strings -Wstrict-prototypes \
-       -Wmissing-prototypes -Wmissing-declarations \
-       -Wnested-externs -Winline -Wno-cast-align
-ARFLAGS = cr
-INSTALL = install
-
-ifeq ($(TARGET),riscos)
-  GCCSDK_INSTALL_CROSSBIN ?= /home/riscos/cross/bin
-  GCCSDK_INSTALL_ENV ?= /home/riscos/env
-  CC := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*gcc)
-  AR := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*ar)
-  CFLAGS += -Driscos -mpoke-function-name -I$(GCCSDK_INSTALL_ENV)/include \
-       -I$(GCCSDK_INSTALL_ENV)/include/libxml2
-  LIBS = -L$(GCCSDK_INSTALL_ENV)/lib -lxml2 -lz
-  ifneq (,$(findstring arm-unknown-riscos-gcc,$(CC)))
-    EXEEXT := ,e1f
-    SUBTARGET := -elf-
-  else
-    EXEEXT := ,ff8
-    SUBTARGET := -aof-
+# Copyright 2009-2015 John-Mark Bell <jmb@netsurf-browser.org>
+
+# Component settings
+COMPONENT := svgtiny
+COMPONENT_VERSION := 0.1.7
+# 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 = test/runtest.sh $(BUILDDIR) $(EXEEXT)
+
+# Toolchain flags
+WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \
+       -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
+       -Wmissing-declarations -Wnested-externs -pedantic
+# BeOS/Haiku/AmigaOS standard library headers create warnings
+ifneq ($(BUILD),i586-pc-haiku)
+  ifneq ($(findstring amigaos,$(BUILD)),amigaos)
+    WARNFLAGS := $(WARNFLAGS) -Werror
   endif
-  PREFIX = $(GCCSDK_INSTALL_ENV)
-else
-  CFLAGS += -g `xml2-config --cflags` -fgnu89-inline
-  LIBS = `xml2-config --libs`
-  PREFIX = /usr/local
 endif
 
-OBJDIR = build-$(TARGET)$(SUBTARGET)objects
-LIBDIR = build-$(TARGET)$(SUBTARGET)lib
-BINDIR = build-$(TARGET)$(SUBTARGET)bin
-
-OBJS = $(addprefix $(OBJDIR)/, $(SOURCE:.c=.o))
-
-.PHONY: all install clean
-
-all: $(LIBDIR)/libsvgtiny.a $(BINDIR)/svgtiny_test$(EXEEXT) colors.c
-
-$(LIBDIR)/libsvgtiny.a: $(OBJS)
-       @echo "    LINK:" $@
-       @mkdir -p $(LIBDIR)
-       @$(AR) $(ARFLAGS) $@ $(OBJS)
-
-$(BINDIR)/svgtiny_test$(EXEEXT): svgtiny_test.c $(LIBDIR)/libsvgtiny.a
-       @echo "    LINK:" $@
-       @mkdir -p $(BINDIR)
-       @$(CC) $(CFLAGS) $(LIBS) -o $@ $^
-
-$(OBJDIR)/%.o: %.c $(HDRS)
-       @echo " COMPILE:" $<
-       @mkdir -p $(OBJDIR)
-       @$(CC) $(CFLAGS) -c -o $@ $<
+CFLAGS := -D_BSD_SOURCE -D_DEFAULT_SOURCE \
+       -I$(CURDIR)/include/ -I$(CURDIR)/src \
+       $(WARNFLAGS) $(CFLAGS)
+ifneq ($(GCCVER),2)
+  CFLAGS := $(CFLAGS) -std=c99
+else
+  # __inline__ is a GCCism
+  CFLAGS := $(CFLAGS) -Dinline="__inline__"
+endif
 
-%.c: %.gperf
-       @echo "   GPERF:" $<
-       @gperf --output-file=$@ $<
+# libdom
+ifneq ($(PKGCONFIG),)
+  CFLAGS := $(CFLAGS) \
+               $(shell $(PKGCONFIG) $(PKGCONFIGFLAGS) --cflags libdom libwapcaplet)
+  LDFLAGS := $(LDFLAGS) -lm \
+               $(shell $(PKGCONFIG) $(PKGCONFIGFLAGS) --libs libdom libwapcaplet)
+else
+  CFLAGS := $(CFLAGS) -I$(PREFIX)/include
+  LDFLAGS := $(CFLAGS) -ldom -lwapcaplet -lexpat -lm
+endif
 
-install: $(LIBDIR)/libsvgtiny.a
-       $(INSTALL) -t $(PREFIX)/lib $(LIBDIR)/libsvgtiny.a
-       $(INSTALL) -t $(PREFIX)/include svgtiny.h
+include $(NSBUILD)/Makefile.top
 
-clean:
-       -rm -rf $(OBJDIR) $(LIBDIR) $(BINDIR) colors.c
+# Extra installation rules
+I := /$(INCLUDEDIR)
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/svgtiny.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR)/pkgconfig:lib$(COMPONENT).pc.in
+INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR):$(OUTPUT)