Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/nccl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Alvarez <462213+sl1pkn07@users.noreply.github.com>2019-04-08 19:16:54 +0300
committerSylvain Jeaugey <sjeaugey@nvidia.com>2019-04-08 19:16:54 +0300
commit9db4b1d801624a00591b7aafd426d6dd23547443 (patch)
tree3d538c2ff74577fc1b0e005557d7fedae077d8fa
parentf40ce73e8987d2990e4b9ef6c75f4b3423acce78 (diff)
Add pkgconfig file (#190)
-rw-r--r--src/Makefile28
-rwxr-xr-xsrc/nccl.pc.in10
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}