[Skiboot] [RFC PATCH] external: Add Makefile targets to install libflash

Cyril Bur cyril.bur at au1.ibm.com
Thu Nov 12 17:34:36 AEDT 2015


On Tue, 10 Nov 2015 16:13:09 +1100
Samuel Mendoza-Jonas <sam.mj at 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 at 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



More information about the Skiboot mailing list