aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>2016-01-06 15:28:08 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-01-15 15:46:25 +1100
commitb2649b822ab57ab06f0028d8343320ae6e11cc50 (patch)
tree2329074c3f9cc93e4f163e17567454251ce81b82
parentc20f2b4b92dcd9f49e7ee4f51081b3356136e0bf (diff)
downloadskiboot-b2649b822ab57ab06f0028d8343320ae6e11cc50.zip
skiboot-b2649b822ab57ab06f0028d8343320ae6e11cc50.tar.gz
skiboot-b2649b822ab57ab06f0028d8343320ae6e11cc50.tar.bz2
external: Add Makefile targets to install libflash
This adds a Makefile under external/shared to build libflash as a shared library and install it. This allows programs outside of the skiboot tree to link against libflash in order to access MTD devices (eg. Petitboot). Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--external/shared/Makefile57
-rw-r--r--external/shared/config.h19
2 files changed, 76 insertions, 0 deletions
diff --git a/external/shared/Makefile b/external/shared/Makefile
new file mode 100644
index 0000000..ffc049f
--- /dev/null
+++ b/external/shared/Makefile
@@ -0,0 +1,57 @@
+.DEFAULT_GOAL := all
+CC ?= $(CROSS_COMPILE)gcc
+GET_ARCH = ../../external/common/get_arch.sh
+include ../../external/common/rules.mk
+
+PREFIX ?= /usr/local/
+LIBDIR = $(PREFIX)/lib
+INCDIR = $(PREFIX)/include/libflash
+
+VERSION = $(shell ../../make_version.sh)
+
+CFLAGS += -m64 -Werror -Wall -g2 -ggdb -I. -fPIC
+
+.PHONY: links
+links: libflash ccan common
+
+libflash:
+ ln -sf ../../libflash .
+
+common:
+ ln -sf ../common .
+
+ccan:
+ ln -sf ../../ccan .
+
+LIBFLASH_OBJS = libflash-file.o libflash-libflash.o libflash-libffs.o libflash-ecc.o libflash-blocklevel.o
+ARCHFLASH_OBJS = common-arch_flash.o
+OBJS = $(LIBFLASH_OBJS) $(ARCHFLASH_OBJS)
+
+LIBFLASH_H = libflash/file.h libflash/libflash.h libflash/libffs.h libflash/ffs.h libflash/ecc.h libflash/blocklevel.h libflash/errors.h
+ARCHFLASH_H = common/arch_flash.h
+
+$(LIBFLASH_OBJS) : libflash-%.o : libflash/%.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+clean:
+ rm -f $(OBJS) common-*.o *.so*
+
+distclean: clean
+ rm -f ccan libflash common
+
+all: links arch_links $(OBJS)
+ $(CC) -shared -Wl,-soname,libflash.so -o libflash.so.$(VERSION) $(OBJS)
+
+install-lib: all
+ install -D -m 0755 libflash.so.$(VERSION) $(LIBDIR)/libflash.so.$(VERSION)
+ ln -sf libflash.so.$(VERSION) $(LIBDIR)/libflash.so
+
+install-dev: links arch_links
+ mkdir -p $(INCDIR)
+ install -m 0644 $(LIBFLASH_H) $(ARCHFLASH_H) $(INCDIR)
+
+install: install-lib install-dev
+
+uninstall:
+ rm -f $(LIBDIR)/libflash*
+ rm -rf $(INCDIR)
diff --git a/external/shared/config.h b/external/shared/config.h
new file mode 100644
index 0000000..a132a01
--- /dev/null
+++ b/external/shared/config.h
@@ -0,0 +1,19 @@
+/* For CCAN */
+
+#include <endian.h>
+#include <byteswap.h>
+
+#define HAVE_TYPEOF 1
+#define HAVE_BUILTIN_TYPES_COMPATIBLE_P 1
+
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define HAVE_BIG_ENDIAN 0
+#define HAVE_LITTLE_ENDIAN 1
+#else
+#define HAVE_BIG_ENDIAN 1
+#define HAVE_LITTLE_ENDIAN 0
+#endif
+
+#define HAVE_BYTESWAP_H 1
+#define HAVE_BSWAP_64 1