]> git.llucax.com Git - software/posixx.git/commitdiff
Add pkg-config support
authorLeandro Lucarella <llucarella@integratech.com.ar>
Wed, 12 Nov 2008 17:21:51 +0000 (15:21 -0200)
committerLeandro Lucarella <llucarella@integratech.com.ar>
Thu, 13 Nov 2008 21:18:37 +0000 (19:18 -0200)
Generate and install a pkg-config .pc definition file to ease compilation
and linking of programs depending on posixx.

src/.gitignore
src/Makefile
src/posixx.pc.template [new file with mode: 0644]

index d1943c253b2a38b358edb29e19de07753dc19538..d930f6693fdbb2cb13acdca8466d137f94910385 100644 (file)
@@ -1 +1,2 @@
+posixx.pc
 .*-stamp
 .*-stamp
index 1a8fb03ed96eee0afc20dafecc4d68fe5f33ddc6..cfea6e64d38b836282671c28d9c4e4e3b87453e7 100644 (file)
@@ -1,15 +1,37 @@
 
 
+# Build flags (include general stuff in the .pc file instead)
+LOCAL_CFLAGS =
+LOCAL_LDFLAGS =
+
 # XXX: The cut pipe is to strip the leading "./" from find results. It's
 #      a little ugly but I couldn't find a better way to get a list of all
 #      headers in the directory (recursively).
 HEADERS = $(shell find -name '*.hpp' | cut -b3-)
 HDRPATH = posixx
 # XXX: The cut pipe is to strip the leading "./" from find results. It's
 #      a little ugly but I couldn't find a better way to get a list of all
 #      headers in the directory (recursively).
 HEADERS = $(shell find -name '*.hpp' | cut -b3-)
 HDRPATH = posixx
-
+PCFILE = posixx.pc
+PCTEMPLATE = $(PCFILE).template
 
 # prefix for installing the binaries
 prefix = /usr/local
 
 
 
 # prefix for installing the binaries
 prefix = /usr/local
 
 
+# Flags fetched from pkg-config .pc file
+ifneq ($(PCTEMPLATE), )
+PKG_LIB = $(shell grep Libs.private: $(PCTEMPLATE) | cut -d' ' -f2-)
+PKG_REQ = $(shell grep Requires: $(PCTEMPLATE) | cut -d' ' -f2-)
+ifneq ($(PKG_REQ), )
+PKG_REQ_CFLAGS = $(shell pkg-config --cflags $(PKG_REQ))
+PKG_REQ_LDFLAGS = $(shell pkg-config --libs $(PKG_REQ))
+endif
+endif
+
+# XXX: LI_* variables are for internal use only
+# (for the super-repository local-install target)
+ALL_CFLAGS = $(LOCAL_CFLAGS) $(PKG_REQ_CFLAGS) $(LI_CFLAGS) $(CFLAGS)
+ALL_LDFLAGS = $(LOCAL_LDFLAGS) $(PKG_LIB) $(PKG_REQ_LDFLAGS) $(LI_LDFLAGS) \
+               $(LDFLAGS)
+
+
 # install command
 INSTALL = install -p -m 0644 -D
 
 # install command
 INSTALL = install -p -m 0644 -D
 
@@ -36,15 +58,23 @@ default: all
 
 all:
 
 
 all:
 
-install: install-headers
+$(PCFILE): $(PCTEMPLATE)
+       @sed 's|PREFIX|$(prefix)|' $< > $@
+
+install: install-headers install-pc
 
 install-headers: .install-headers-stamp
 
 .install-headers-stamp: $(HEADERS)
        $(call install_files,$^,$(prefix)/include/$(HDRPATH))
 
 
 install-headers: .install-headers-stamp
 
 .install-headers-stamp: $(HEADERS)
        $(call install_files,$^,$(prefix)/include/$(HDRPATH))
 
+install-pc: .install-pc-stamp
+
+.install-pc-stamp: $(PCFILE)
+       $(call install_files,$^,$(prefix)/lib/pkgconfig)
+
 clean:
 clean:
-       $(NICE_CLEAN) .*-stamp
+       $(NICE_CLEAN) $(PCFILE) .*-stamp
 
 
-.PHONY: default all install install-headers clean
+.PHONY: default all install install-headers install-pc clean
 
 
diff --git a/src/posixx.pc.template b/src/posixx.pc.template
new file mode 100644 (file)
index 0000000..a288288
--- /dev/null
@@ -0,0 +1,12 @@
+
+prefix=PREFIX
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: posixx
+Description: Thin C++ wrapper for POSIX API
+URL: https://spec-dev.integratech.net/redmine/projects/show/posixx
+Version: 0.1
+Cflags: -I${includedir}
+