summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile115
1 files 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