X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=Makefile;h=4bbcb12bf8a3555ab659dbb0333772111557db46;hb=8df2f2d97cdd34a4b60dfb86a70d66fcc7ad674e;hp=8c33b28ab233aa92c791d8d39cc433d6fecc9e14;hpb=729b244809295dad81e0510f9d0bcd7a4c00ec00;p=libsvgtiny.git diff --git a/Makefile b/Makefile index 8c33b28..4bbcb12 100644 --- a/Makefile +++ b/Makefile @@ -1,74 +1,46 @@ -# -# This file is part of Libsvgtiny -# Licensed under the MIT License, -# http://opensource.org/licenses/mit-license.php -# Copyright 2008 James Bursa -# - -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- - endif - PREFIX = $(GCCSDK_INSTALL_ENV) +# Component settings +COMPONENT := svgtiny +COMPONENT_VERSION := 0.0.1 +# Default to a static library +COMPONENT_TYPE ?= lib-static + +# Setup the tooling +include build/makefiles/Makefile.tools + +TESTRUNNER := $(ECHO) + +# Toolchain flags +WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \ + -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \ + -Wmissing-declarations -Wnested-externs -pedantic +# BeOS/Haiku standard library headers create warnings +ifneq ($(TARGET),beos) + WARNFLAGS := $(WARNFLAGS) -Werror +endif +CFLAGS := -D_BSD_SOURCE -I$(CURDIR)/include/ \ + -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS) +ifneq ($(GCCVER),2) + CFLAGS := $(CFLAGS) -std=c99 else - CFLAGS += -g `xml2-config --cflags` -fgnu89-inline - LIBS = `xml2-config --libs` - PREFIX = /usr/local + # __inline__ is a GCCism + CFLAGS := $(CFLAGS) -Dinline="__inline__" 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 $@ $< - -%.c: %.gperf - @echo " GPERF:" $< - @gperf --output-file=$@ $< +# LibXML2 +ifneq ($(PKGCONFIG),) + CFLAGS := $(CFLAGS) \ + $(shell $(PKGCONFIG) $(PKGCONFIGFLAGS) --cflags libxml-2.0) + LDFLAGS := $(LDFLAGS) \ + $(shell $(PKGCONFIG) $(PKGCONFIGFLAGS) --libs libxml-2.0) +else + CFLAGS := $(CFLAGS) -I$(PREFIX)/include/libxml2 + LDFLAGS := $(CFLAGS) -lxml2 +endif -install: $(LIBDIR)/libsvgtiny.a - $(INSTALL) -t $(PREFIX)/lib $(LIBDIR)/libsvgtiny.a - $(INSTALL) -t $(PREFIX)/include svgtiny.h +include build/makefiles/Makefile.top -clean: - -rm -rf $(OBJDIR) $(LIBDIR) $(BINDIR) colors.c +# Extra installation rules +I := /include +INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/svgtiny.h +INSTALL_ITEMS := $(INSTALL_ITEMS) /lib/pkgconfig:lib$(COMPONENT).pc.in +INSTALL_ITEMS := $(INSTALL_ITEMS) /lib:$(OUTPUT)