diff options
author | Gustavo Alvarez <462213+sl1pkn07@users.noreply.github.com> | 2019-04-08 19:16:54 +0300 |
---|---|---|
committer | Sylvain Jeaugey <sjeaugey@nvidia.com> | 2019-04-08 19:16:54 +0300 |
commit | 9db4b1d801624a00591b7aafd426d6dd23547443 (patch) | |
tree | 3d538c2ff74577fc1b0e005557d7fedae077d8fa | |
parent | f40ce73e8987d2990e4b9ef6c75f4b3423acce78 (diff) |
Add pkgconfig file (#190)
-rw-r--r-- | src/Makefile | 28 | ||||
-rwxr-xr-x | src/nccl.pc.in | 10 |
2 files changed, 34 insertions, 4 deletions
diff --git a/src/Makefile b/src/Makefile index 2d32dca..b5baa29 100644 --- a/src/Makefile +++ b/src/Makefile @@ -17,16 +17,20 @@ LIBSRCFILES := init.cc channel.cc bootstrap.cc transport.cc enqueue.cc \ ##### lib files LIBNAME := libnccl.so STATICLIBNAME := libnccl_static.a +##### pkgconfig files +PKGCONFIGFILE := nccl.pc ##### dirs BUILDDIR ?= $(abspath ../build) INCDIR := $(BUILDDIR)/include LIBDIR := $(BUILDDIR)/lib OBJDIR := $(BUILDDIR)/obj +PKGDIR := $(BUILDDIR)/lib/pkgconfig ##### target files INCTARGETS := $(INCEXPORTS:%=$(INCDIR)/%) LIBSONAME := $(LIBNAME:%=%.$(NCCL_MAJOR)) LIBTARGET := $(LIBNAME:%=%.$(NCCL_MAJOR).$(NCCL_MINOR).$(NCCL_PATCH)) STATICLIBTARGET := $(STATICLIBNAME) +PKGTARGET := $(PKGCONFIGFILE) LIBOBJ := $(LIBSRCFILES:%.cc=$(OBJDIR)/%.o) DEPFILES := $(LIBOBJ:%.o=%.d) LDFLAGS += -L${CUDA_LIB} -lcudart_static -lpthread -lrt -ldl @@ -36,7 +40,7 @@ DEVICELIB := $(BUILDDIR)/obj/collectives/device/colldevice.a ##### rules build : lib staticlib -lib : $(INCTARGETS) $(LIBDIR)/$(LIBTARGET) +lib : $(INCTARGETS) $(LIBDIR)/$(LIBTARGET) $(PKGDIR)/$(PKGTARGET) staticlib : $(LIBDIR)/$(STATICLIBTARGET) @@ -53,7 +57,7 @@ $(INCDIR)/nccl.h : nccl.h.in # NCCL_VERSION(X,Y,Z) ((X) * 1000 + (Y) * 100 + (Z)) @$(eval NCCL_VERSION := $(shell printf "%d%d%02d" $(NCCL_MAJOR) $(NCCL_MINOR) $(NCCL_PATCH))) mkdir -p $(INCDIR) - printf "Generating %-35s > %s\n" $< $@ + @printf "Generating %-35s > %s\n" $< $@ sed -e "s/\$${nccl:Major}/$(NCCL_MAJOR)/g" \ -e "s/\$${nccl:Minor}/$(NCCL_MINOR)/g" \ -e "s/\$${nccl:Patch}/$(NCCL_PATCH)/g" \ @@ -77,6 +81,15 @@ $(LIBDIR)/$(STATICLIBTARGET): $(LIBOBJ) $(DEVICELIB) ar cr $@ $(LIBOBJ) $(TMP)/*.o rm -Rf $(TMP) +$(PKGDIR)/nccl.pc : nccl.pc.in + mkdir -p $(PKGDIR) + @printf "Generating %-35s > %s\n" $< $@ + sed -e 's|$${nccl:Prefix}|\$(PREFIX)|g' \ + -e "s/\$${nccl:Major}/$(NCCL_MAJOR)/g" \ + -e "s/\$${nccl:Minor}/$(NCCL_MINOR)/g" \ + -e "s/\$${nccl:Patch}/$(NCCL_PATCH)/g" \ + $< > $@ + $(INCDIR)/%.h : %.h @printf "Grabbing %-35s > %s\n" $< $@ mkdir -p $(INCDIR) @@ -87,6 +100,11 @@ $(INCDIR)/nccl_%.h : include/nccl_%.h mkdir -p $(INCDIR) cp -f $< $@ +$(PKGDIR)/%.pc : %.pc + @printf "Grabbing %-35s > %s\n" $< $@ + mkdir -p $(PKGDIR) + cp -f $< $@ + $(OBJDIR)/%.o : %.cc @printf "Compiling %-35s > %s\n" $< $@ mkdir -p `dirname $@` @@ -98,13 +116,15 @@ $(OBJDIR)/%.o : %.cc @rm -f $(@:%.o=%.d.tmp) clean : - rm -rf ${INCDIR} ${LIBDIR} ${OBJDIR} + rm -rf ${INCDIR} ${LIBDIR} ${PKGDIR} ${OBJDIR} $(MAKE) -C collectives/device clean install : lib mkdir -p $(PREFIX)/lib + mkdir -p $(PREFIX)/lib/pkgconfig mkdir -p $(PREFIX)/include - cp -P -v $(BUILDDIR)/lib/* $(PREFIX)/lib/ + cp -P -v $(BUILDDIR)/lib/lib* $(PREFIX)/lib/ + cp -P -v $(BUILDDIR)/lib/pkgconfig/* $(PREFIX)/lib/pkgconfig/ cp -v $(BUILDDIR)/include/* $(PREFIX)/include/ FILESTOFORMAT := $(shell find . -name ".\#*" -prune -o \( -name "*.cc" -o -name "*.h" \) -print | grep -v -E 'ibvwrap.h|nvmlwrap.h|nccl.h') diff --git a/src/nccl.pc.in b/src/nccl.pc.in new file mode 100755 index 0000000..0d98494 --- /dev/null +++ b/src/nccl.pc.in @@ -0,0 +1,10 @@ +prefix=${nccl:Prefix} +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: nccl +Description: Optimized primitives for collective multi-GPU communication +Version: ${nccl:Major}.${nccl:Minor}.${nccl:Patch} +Libs: -L${libdir} -lnccl +Cflags: -I${includedir} |