From 45c46db8b48fb85e0b0368bc647a6949cb19014b Mon Sep 17 00:00:00 2001 From: James Bursa Date: Tue, 12 Aug 2008 03:26:17 +0000 Subject: Add support for cross-compiling using TARGET=riscos. svn path=/trunk/libnsbmp/; revision=5070 --- Makefile | 115 ++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 74 insertions(+), 41 deletions(-) diff --git a/Makefile b/Makefile index e664bbf..3db204b 100644 --- a/Makefile +++ b/Makefile @@ -1,61 +1,94 @@ -AR = ar -CC = gcc -LD = gcc -DOXYGEN = doxygen -INSTALL = install -SED = sed -MKDIR = mkdir -PKG_CONFIG = pkg-config +# +# This file is part of Libnsbmp +# + +SOURCE = libnsbmp.c +HDRS = libnsbmp.h utils/log.h -ARFLAGS = -cru -CFLAGS = -g -Wall -Wextra -Wundef -Wpointer-arith -Wcast-align \ +CFLAGS = -Wall -Wextra -Wundef -Wpointer-arith -Wcast-align \ -Wwrite-strings -Wstrict-prototypes \ - -Wnested-externs -Werror -pedantic -std=c99 \ + -Wnested-externs -pedantic -std=c99 \ -Wno-format-zero-length -Wformat-security -Wstrict-aliasing=2 \ -Wmissing-format-attribute -Wunused -Wunreachable-code \ -Wformat=2 -Werror-implicit-function-declaration \ -Wmissing-declarations -Wmissing-prototypes -LDFLAGS = -g -L./ +ARFLAGS = -cr +INSTALL = install +SED = sed +DOXYGEN = doxygen -# Installation prefix, if not already defined (e.g. on command line) -PREFIX ?= /usr/local -DESTDIR ?= +ifeq ($(TARGET),riscos) +GCCSDK_INSTALL_CROSSBIN ?= /home/riscos/cross/bin +GCCSDK_INSTALL_ENV ?= /home/riscos/env +CC = $(GCCSDK_INSTALL_CROSSBIN)/gcc +AR = $(GCCSDK_INSTALL_CROSSBIN)/ar +CFLAGS += -Driscos -mpoke-function-name -I$(GCCSDK_INSTALL_ENV)/include +LIBS = -L$(GCCSDK_INSTALL_ENV)/lib +EXEEXT ?= ,ff8 +PREFIX = $(GCCSDK_INSTALL_ENV) +else +CFLAGS += -g +LIBS = +PREFIX = /usr/local +endif + +ifeq ($(TARGET),) +OBJDIR = objects +LIBDIR = lib +BINDIR = bin +else +OBJDIR = $(TARGET)-objects +LIBDIR = $(TARGET)-lib +BINDIR = $(TARGET)-bin +endif + +OBJS = $(addprefix $(OBJDIR)/, $(SOURCE:.c=.o)) .PHONY: all clean docs install uninstall -all: libnsbmp.a bin/decode_bmp bin/decode_ico - -libnsbmp.a: libnsbmp.o libnsbmp.pc - ${AR} ${ARFLAGS} libnsbmp.a libnsbmp.o +all: $(LIBDIR)/libnsbmp.a $(BINDIR)/decode_bmp$(EXEEXT) $(BINDIR)/decode_ico$(EXEEXT) -libnsbmp.pc: libnsbmp.pc.in - $(SED) -e 's#PREFIX#$(PREFIX)#' libnsbmp.pc.in > libnsbmp.pc +$(LIBDIR)/libnsbmp.a: $(OBJS) $(LIBDIR)/libnsbmp.pc + @echo " LINK:" $@ + @mkdir -p $(LIBDIR) + @$(AR) $(ARFLAGS) $@ $(OBJS) -%.o: %.c - ${CC} -c ${CFLAGS} -o $@ $< +$(LIBDIR)/libnsbmp.pc: libnsbmp.pc.in + @echo " SED:" $@ + @mkdir -p $(LIBDIR) + @$(SED) -e 's#PREFIX#$(PREFIX)#' $^ > $@ -bin/decode_bmp: examples/decode_bmp.c libnsbmp.a - ${CC} ${CFLAGS} -o $@ $< libnsbmp.a +$(BINDIR)/decode_bmp$(EXEEXT): examples/decode_bmp.c $(LIBDIR)/libnsbmp.a + @echo " LINK:" $@ + @mkdir -p $(BINDIR) + @$(CC) $(CFLAGS) -I. -o $@ $^ -bin/decode_ico: examples/decode_ico.c libnsbmp.a - ${CC} ${CFLAGS} -o $@ $< libnsbmp.a +$(BINDIR)/decode_ico$(EXEEXT): examples/decode_ico.c $(LIBDIR)/libnsbmp.a + @echo " LINK:" $@ + @mkdir -p $(BINDIR) + @$(CC) $(CFLAGS) -I. -o $@ $^ + +$(OBJDIR)/%.o: %.c $(HDRS) + @echo " COMPILE:" $< + @mkdir -p $(OBJDIR) + @$(CC) $(CFLAGS) -c -o $@ $< docs: ${DOXYGEN} -clean: - rm -f $(wildcard *.o) $(wildcard *.a) libnsbmp.pc - rm -rf doc - -install: libnsbmp.a libnsbmp.pc - $(MKDIR) -p $(DESTDIR)$(PREFIX)/lib/pkgconfig - $(MKDIR) -p $(DESTDIR)$(PREFIX)/lib - $(MKDIR) -p $(DESTDIR)$(PREFIX)/include - $(INSTALL) --mode=644 -t $(DESTDIR)$(PREFIX)/lib libnsbmp.a - $(INSTALL) --mode=644 -t $(DESTDIR)$(PREFIX)/include libnsbmp.h - $(INSTALL) --mode=644 -t $(DESTDIR)$(PREFIX)/lib/pkgconfig libnsbmp.pc +install: $(LIBDIR)/libnsbmp.a $(LIBDIR)/libnsbmp.pc + mkdir -p $(PREFIX)/lib/pkgconfig + mkdir -p $(PREFIX)/lib + mkdir -p $(PREFIX)/include + $(INSTALL) --mode=644 -t $(PREFIX)/lib $(LIBDIR)/libnsbmp.a + $(INSTALL) --mode=644 -t $(PREFIX)/include libnsbmp.h + $(INSTALL) --mode=644 -t $(PREFIX)/lib/pkgconfig $(LIBDIR)/libnsbmp.pc uninstall: - rm $(DESTDIR)$(PREFIX)/lib/libnsbmp.a - rm $(DESTDIR)$(PREFIX)/include/libnsbmp.h - rm $(DESTDIR)$(PREFIX)/lib/pkgconfig/libnsbmp.pc + rm $(PREFIX)/lib/libnsbmp.a + rm $(PREFIX)/include/libnsbmp.h + rm $(PREFIX)/lib/pkgconfig/libnsbmp.pc + +clean: + -rm $(OBJS) $(LIBDIR)/libnsbmp.a $(LIBDIR)/libnsbmp.pc $(BINDIR)/decode_bmp$(EXEEXT) $(BINDIR)/decode_ico$(EXEEXT) + -rm -rf doc -- cgit v1.2.3