[sheepdog-users] About bundling libraries (at least one library isa-l)
Hitoshi Mitake
mitake.hitoshi at lab.ntt.co.jp
Wed Dec 3 10:32:13 CET 2014
At Mon, 24 Nov 2014 17:15:33 +0100,
Marcin Mirosław wrote:
>
> It looks I solved problems with isa-l library. Build system for isa-l
> isn't friendly (or is too friendly). THis patch solves problem when
> building target "slib":
Thanks a lot for your patch! Could you submit the patch with the guideline:
https://github.com/sheepdog/sheepdog/wiki/Submit-a-patch
?
# e.g. Signed-off-by is required, and adding a message to the bottom part is not allowed
Thanks,
Hitoshi
>
> --- a/make.inc
> +++ b/make.inc
> @@ -38,7 +38,7 @@
> # trace - get simulator trace
> # clean - remove object files
>
> -CC = gcc
> +CC ?= gcc
> AS = yasm
> SIM = sde $(SIMFLAGS) --
>
> @@ -78,10 +78,9 @@ endif
>
>
> INCLUDE = $(patsubst %,-I%,$(subst :, ,$(VPATH)))
> -CFLAGS = $(CFLAGS_$(arch)) $(CFLAGS_$(CC)) $(DEBUG) -O2 $(DEFINES)
> $(INCLUDE)
> -ASFLAGS = $(ASFLAGS_$(arch)) $(ASFLAGS_$(CC)) $(DEBUG_$(AS))
> $(DEFINES) $(INCLUDE)
> +CFLAGS += $(DEFINES) $(INCLUDE)
> +ASFLAGS += $(ASFLAGS_$(arch)) $(DEFINES) $(INCLUDE)
> ARFLAGS = $(ARFLAGS_$(arch))
> -DEFINES += $(addprefix -D , $D)
>
> O = bin
> lobj += $(patsubst %.c,%.o,$(patsubst %.asm,%.o,$(lsrc$(arch))))
> @@ -138,15 +137,15 @@ msg = $(if $(DEBUG),DEBUG) $(patsubst
> 32,32-bit,$(arch)) $D
>
> $(O)/%.o: %.asm
> @echo " ---> Building $< $(msg)"
> - @$(AS) $(ASFLAGS) -o $@ $<
> + $(AS) $(ASFLAGS) -o $@ $<
>
> $(O)/%.o %.o: %.c
> @echo " ---> Building $< $(msg)"
> - @$(COMPILE.c) $(OUTPUT_OPTION) $<
> + $(COMPILE.c) $(OUTPUT_OPTION) $<
>
> $(all_tests):
> @echo " ---> Building Test $@ $(msg)"
> - @$(LINK.o) $(CFLAGS) $^ $(LDLIBS) -o $@
> + $(LINK.o) $(CFLAGS) $^ $(LDLIBS) -o $@
>
>
> # Target to build lib files
> @@ -163,8 +162,7 @@ endif
> #lib $(lib_name): $(lib_name)(${objs})
> $(lib_name): $(objs)
> @echo " ---> Creating Lib $@"
> - @$(AR) $(ARFLAGS) $^
> - @$(STRIP_$(CC))
> + $(AR) $(ARFLAGS) $^
>
>
> # Target for shared lib
> @@ -175,7 +173,7 @@ shared_objs += $(addprefix
> $(O)/shared_ver_,$(patsubst %.c,%.o,$(filter %.c,$(l
>
> $(O)/shared_ver_%.o: %.c
> @echo " ---> Building shared $< $(msg)"
> - @$(COMPILE.c) $(OUTPUT_OPTION) $<
> + $(COMPILE.c) $(OUTPUT_OPTION) $<
>
> ifneq ($(lib_debug),1)
> $(so_lib_name): DEBUG_$(AS)=
> @@ -187,7 +185,7 @@ $(shared_objs): CFLAGS += -fPIC
> $(shared_objs) $(aobjs): | $(O)
> $(so_lib_name): $(shared_objs) $(aobjs)
> @echo " ---> Creating Shared Lib $@"
> - @$(CC) $(CFLAGS) --shared $(LDFLAGS) -o $@ $^
> + $(CC) $(CFLAGS) --shared $(LDFLAGS) -Wl,-z,noexecstack -o $@ $^
>
>
> # Collect performance data
> @@ -202,7 +200,7 @@ perf_report:
>
> clean:
> @echo Cleaning up
> - @$(RM) -r $(O) *.o *.a $(all_tests) $(lib_name) $(so_lib_name)
> + $(RM) -r $(O) *.o *.a $(all_tests) $(lib_name) $(so_lib_name)
>
>
> So now I've got isa-l.so library installed in system. And with this
> patch I'm unbundling isa-l from sheepdog:
>
> --- a/dog/Makefile.am
> +++ b/dog/Makefile.am
> @@ -36,7 +36,7 @@ if BUILD_NFS
> dog_SOURCES += nfs.c
> endif
>
> -dog_LDADD = ../lib/libsheepdog.a -lpthread
> +dog_LDADD = ../lib/libsheepdog.a -lpthread -lisa-l
> dog_DEPENDENCIES = ../lib/libsheepdog.a
>
> noinst_HEADERS = treeview.h dog.h farm/farm.h
> diff --git a/include/fec.h b/include/fec.h
> index 1ae32e4..e317fcb 100644
> --- a/include/fec.h
> +++ b/include/fec.h
> @@ -64,7 +64,7 @@
>
> #include "util.h"
> #include "sheepdog_proto.h"
> -#include "../lib/isa-l/include/erasure_code.h"
> +#include "erasure_code.h"
>
> struct fec {
> unsigned long magic;
> diff --git a/lib/Makefile.am b/lib/Makefile.am
> index a43076e..5b6ac1d 100644
> --- a/lib/Makefile.am
> +++ b/lib/Makefile.am
> @@ -4,29 +4,11 @@ AM_CPPFLAGS = -I$(top_builddir)/include
> -I$(top_srcdir)/include
>
> libsheepdog_a_DEPENDENCIES =
>
> -noinst_LIBRARIES = libisa.a libsheepdog.a
> -
> -libisa_a_SOURCES = $(shell find isa-l/ -type f -regex
> ".*\.\(c\|h\|asm\)") \
> - isa-l/erasure_code/Makefile \
> - isa-l/Makefile \
> - isa-l/Makefile.nmake \
> - isa-l/make.inc
> +noinst_LIBRARIES = libsheepdog.a
>
> libsheepdog_a_SOURCES = event.c logger.c net.c util.c rbtree.c strbuf.c \
> sha1.c option.c work.c sockfd_cache.c fec.c
> sd_inode.c
>
> -libsheepdog_a_LIBADD = isa-l/bin/ec_base.o \
> - isa-l/bin/ec_highlevel_func.o \
> - isa-l/bin/ec_multibinary.o \
> - isa-l/bin/gf_2vect_dot_prod_sse.o \
> - isa-l/bin/gf_3vect_dot_prod_sse.o \
> - isa-l/bin/gf_4vect_dot_prod_sse.o \
> - isa-l/bin/gf_5vect_dot_prod_sse.o \
> - isa-l/bin/gf_6vect_dot_prod_sse.o \
> - isa-l/bin/gf_vect_dot_prod_sse.o \
> - isa-l/bin/gf_vect_mul_avx.o \
> - isa-l/bin/gf_vect_mul_sse.o
> -
> if BUILD_SHA1_HW
> libsheepdog_a_SOURCES += sha1_ssse3.S
> endif
> @@ -41,9 +23,3 @@ check-syntax:
>
> check-style:
> @$(CHECK_STYLE) $(libsheepdog_a_SOURCES)
> -
> -libisa.a:
> - cd isa-l/ && $(MAKE) && cd ..
> -
> -clean:
> - cd isa-l/ && $(MAKE) clean && cd ..
> diff --git a/sheep/Makefile.am b/sheep/Makefile.am
> index 406a4ec..e6f90c5 100644
> --- a/sheep/Makefile.am
> +++ b/sheep/Makefile.am
> @@ -53,7 +53,7 @@ AM_CPPFLAGS += -DENABLE_TRACE
> sheep_SOURCES += trace/trace.c trace/mcount.S trace/graph.c
> trace/checker.c
> endif
>
> -sheep_LDADD = ../lib/libsheepdog.a -lpthread -lm\
> +sheep_LDADD = ../lib/libsheepdog.a -lpthread -lm -lisa-l\
> $(libcpg_LIBS) $(libcfg_LIBS) $(libacrd_LIBS)
> $(LIBS)
>
> if BUILD_NFS
>
>
>
>
> # scanelf -n dog sheep
> TYPE NEEDED FILE
> ET_DYN libpthread.so.0,libisa-l.so,librt.so.1,libc.so.6 dog
> ET_DYN libpthread.so.0,libm.so.6,libisa-l.so,librt.so.1,libc.so.6 sheep
>
> And I hope sheep uses isa-l in work;)
>
> Marcin
> --
> sheepdog-users mailing lists
> sheepdog-users at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog-users
More information about the sheepdog-users
mailing list