Add pkgconfig file (#190)
This commit is contained in:
parent
f40ce73e89
commit
9db4b1d801
28
src/Makefile
28
src/Makefile
@ -17,16 +17,20 @@ LIBSRCFILES := init.cc channel.cc bootstrap.cc transport.cc enqueue.cc \
|
|||||||
##### lib files
|
##### lib files
|
||||||
LIBNAME := libnccl.so
|
LIBNAME := libnccl.so
|
||||||
STATICLIBNAME := libnccl_static.a
|
STATICLIBNAME := libnccl_static.a
|
||||||
|
##### pkgconfig files
|
||||||
|
PKGCONFIGFILE := nccl.pc
|
||||||
##### dirs
|
##### dirs
|
||||||
BUILDDIR ?= $(abspath ../build)
|
BUILDDIR ?= $(abspath ../build)
|
||||||
INCDIR := $(BUILDDIR)/include
|
INCDIR := $(BUILDDIR)/include
|
||||||
LIBDIR := $(BUILDDIR)/lib
|
LIBDIR := $(BUILDDIR)/lib
|
||||||
OBJDIR := $(BUILDDIR)/obj
|
OBJDIR := $(BUILDDIR)/obj
|
||||||
|
PKGDIR := $(BUILDDIR)/lib/pkgconfig
|
||||||
##### target files
|
##### target files
|
||||||
INCTARGETS := $(INCEXPORTS:%=$(INCDIR)/%)
|
INCTARGETS := $(INCEXPORTS:%=$(INCDIR)/%)
|
||||||
LIBSONAME := $(LIBNAME:%=%.$(NCCL_MAJOR))
|
LIBSONAME := $(LIBNAME:%=%.$(NCCL_MAJOR))
|
||||||
LIBTARGET := $(LIBNAME:%=%.$(NCCL_MAJOR).$(NCCL_MINOR).$(NCCL_PATCH))
|
LIBTARGET := $(LIBNAME:%=%.$(NCCL_MAJOR).$(NCCL_MINOR).$(NCCL_PATCH))
|
||||||
STATICLIBTARGET := $(STATICLIBNAME)
|
STATICLIBTARGET := $(STATICLIBNAME)
|
||||||
|
PKGTARGET := $(PKGCONFIGFILE)
|
||||||
LIBOBJ := $(LIBSRCFILES:%.cc=$(OBJDIR)/%.o)
|
LIBOBJ := $(LIBSRCFILES:%.cc=$(OBJDIR)/%.o)
|
||||||
DEPFILES := $(LIBOBJ:%.o=%.d)
|
DEPFILES := $(LIBOBJ:%.o=%.d)
|
||||||
LDFLAGS += -L${CUDA_LIB} -lcudart_static -lpthread -lrt -ldl
|
LDFLAGS += -L${CUDA_LIB} -lcudart_static -lpthread -lrt -ldl
|
||||||
@ -36,7 +40,7 @@ DEVICELIB := $(BUILDDIR)/obj/collectives/device/colldevice.a
|
|||||||
##### rules
|
##### rules
|
||||||
build : lib staticlib
|
build : lib staticlib
|
||||||
|
|
||||||
lib : $(INCTARGETS) $(LIBDIR)/$(LIBTARGET)
|
lib : $(INCTARGETS) $(LIBDIR)/$(LIBTARGET) $(PKGDIR)/$(PKGTARGET)
|
||||||
|
|
||||||
staticlib : $(LIBDIR)/$(STATICLIBTARGET)
|
staticlib : $(LIBDIR)/$(STATICLIBTARGET)
|
||||||
|
|
||||||
@ -53,7 +57,7 @@ $(INCDIR)/nccl.h : nccl.h.in
|
|||||||
# NCCL_VERSION(X,Y,Z) ((X) * 1000 + (Y) * 100 + (Z))
|
# NCCL_VERSION(X,Y,Z) ((X) * 1000 + (Y) * 100 + (Z))
|
||||||
@$(eval NCCL_VERSION := $(shell printf "%d%d%02d" $(NCCL_MAJOR) $(NCCL_MINOR) $(NCCL_PATCH)))
|
@$(eval NCCL_VERSION := $(shell printf "%d%d%02d" $(NCCL_MAJOR) $(NCCL_MINOR) $(NCCL_PATCH)))
|
||||||
mkdir -p $(INCDIR)
|
mkdir -p $(INCDIR)
|
||||||
printf "Generating %-35s > %s\n" $< $@
|
@printf "Generating %-35s > %s\n" $< $@
|
||||||
sed -e "s/\$${nccl:Major}/$(NCCL_MAJOR)/g" \
|
sed -e "s/\$${nccl:Major}/$(NCCL_MAJOR)/g" \
|
||||||
-e "s/\$${nccl:Minor}/$(NCCL_MINOR)/g" \
|
-e "s/\$${nccl:Minor}/$(NCCL_MINOR)/g" \
|
||||||
-e "s/\$${nccl:Patch}/$(NCCL_PATCH)/g" \
|
-e "s/\$${nccl:Patch}/$(NCCL_PATCH)/g" \
|
||||||
@ -77,6 +81,15 @@ $(LIBDIR)/$(STATICLIBTARGET): $(LIBOBJ) $(DEVICELIB)
|
|||||||
ar cr $@ $(LIBOBJ) $(TMP)/*.o
|
ar cr $@ $(LIBOBJ) $(TMP)/*.o
|
||||||
rm -Rf $(TMP)
|
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
|
$(INCDIR)/%.h : %.h
|
||||||
@printf "Grabbing %-35s > %s\n" $< $@
|
@printf "Grabbing %-35s > %s\n" $< $@
|
||||||
mkdir -p $(INCDIR)
|
mkdir -p $(INCDIR)
|
||||||
@ -87,6 +100,11 @@ $(INCDIR)/nccl_%.h : include/nccl_%.h
|
|||||||
mkdir -p $(INCDIR)
|
mkdir -p $(INCDIR)
|
||||||
cp -f $< $@
|
cp -f $< $@
|
||||||
|
|
||||||
|
$(PKGDIR)/%.pc : %.pc
|
||||||
|
@printf "Grabbing %-35s > %s\n" $< $@
|
||||||
|
mkdir -p $(PKGDIR)
|
||||||
|
cp -f $< $@
|
||||||
|
|
||||||
$(OBJDIR)/%.o : %.cc
|
$(OBJDIR)/%.o : %.cc
|
||||||
@printf "Compiling %-35s > %s\n" $< $@
|
@printf "Compiling %-35s > %s\n" $< $@
|
||||||
mkdir -p `dirname $@`
|
mkdir -p `dirname $@`
|
||||||
@ -98,13 +116,15 @@ $(OBJDIR)/%.o : %.cc
|
|||||||
@rm -f $(@:%.o=%.d.tmp)
|
@rm -f $(@:%.o=%.d.tmp)
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
rm -rf ${INCDIR} ${LIBDIR} ${OBJDIR}
|
rm -rf ${INCDIR} ${LIBDIR} ${PKGDIR} ${OBJDIR}
|
||||||
$(MAKE) -C collectives/device clean
|
$(MAKE) -C collectives/device clean
|
||||||
|
|
||||||
install : lib
|
install : lib
|
||||||
mkdir -p $(PREFIX)/lib
|
mkdir -p $(PREFIX)/lib
|
||||||
|
mkdir -p $(PREFIX)/lib/pkgconfig
|
||||||
mkdir -p $(PREFIX)/include
|
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/
|
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')
|
FILESTOFORMAT := $(shell find . -name ".\#*" -prune -o \( -name "*.cc" -o -name "*.h" \) -print | grep -v -E 'ibvwrap.h|nvmlwrap.h|nccl.h')
|
||||||
|
10
src/nccl.pc.in
Executable file
10
src/nccl.pc.in
Executable file
@ -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}
|
Loading…
x
Reference in New Issue
Block a user