Message ID | 1447132389-14153-1-git-send-email-sam.mj@au1.ibm.com |
---|---|
State | Superseded |
Headers | show |
On Tue, 10 Nov 2015 16:13:09 +1100 Samuel Mendoza-Jonas <sam.mj@au1.ibm.com> wrote: Hey Sam, Looks good to me. I'd actually like to find some time to play with it to solve the powerpc libflash vs host libflash in the same dir problem... > This adds a Makefile under external/shared to build a shared library of > libflash 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> > --- > external/shared/Makefile | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ > external/shared/config.h | 19 +++++++++++++++ > 2 files changed, 80 insertions(+) > create mode 100644 external/shared/Makefile > create mode 100644 external/shared/config.h > > diff --git a/external/shared/Makefile b/external/shared/Makefile > new file mode 100644 > index 0000000..80b144d > --- /dev/null > +++ b/external/shared/Makefile > @@ -0,0 +1,61 @@ > +.DEFAULT_GOAL := all > +GET_ARCH = ../../external/common/get_arch.sh > +include ../../external/common/rules.mk > + > +ifndef PREFIX > +PREFIX = /usr/local/ > +endif > +LIBDIR = $(PREFIX)/lib > +INCDIR = $(PREFIX)/include/libflash > + > +VERSION = 1.0 > + > +CC = $(CROSS_COMPILE)gcc > +CFLAGS += -m64 -Werror -Wall -g2 -ggdb -I. -fPIC > +LDFLAGS += -m64 > +ASFLAGS = -m64 > + > +.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 > + > +%.o: %.c > + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ > + > +clean: > + rm -f $(OBJS) *.so.$(VERSION) > + > +distclean: clean > + rm -f ccan libflash common > + I was kind of thinking that external/common could maybe be the place to actually make the .so, might save on duplication of Makefile logic. > +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) > + ldconfig -n $(LIBDIR) > + > +install-dev: > + 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
diff --git a/external/shared/Makefile b/external/shared/Makefile new file mode 100644 index 0000000..80b144d --- /dev/null +++ b/external/shared/Makefile @@ -0,0 +1,61 @@ +.DEFAULT_GOAL := all +GET_ARCH = ../../external/common/get_arch.sh +include ../../external/common/rules.mk + +ifndef PREFIX +PREFIX = /usr/local/ +endif +LIBDIR = $(PREFIX)/lib +INCDIR = $(PREFIX)/include/libflash + +VERSION = 1.0 + +CC = $(CROSS_COMPILE)gcc +CFLAGS += -m64 -Werror -Wall -g2 -ggdb -I. -fPIC +LDFLAGS += -m64 +ASFLAGS = -m64 + +.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 + +%.o: %.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ + +clean: + rm -f $(OBJS) *.so.$(VERSION) + +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) + ldconfig -n $(LIBDIR) + +install-dev: + 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
This adds a Makefile under external/shared to build a shared library of libflash 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> --- external/shared/Makefile | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ external/shared/config.h | 19 +++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 external/shared/Makefile create mode 100644 external/shared/config.h