move .pc file generation from Makefile.am to configure.ac This change moves the logic for generating pkg-config (.pc) files from Makefile.am to configure.ac using AC_CONFIG_COMMANDS. This ensures that these files are generated at configure time. The generation logic preserves the "echo" approach to maintain control over the output content and avoid standard template instantiation if it was desired to keep the script-like behavior. Also updated Makefile.am to remove the generation rules and moved the .pc files from CLEANFILES to DISTCLEANFILES so they are cleaned up by `make distclean` rather than `make clean`. [alkondratenko@gmail.com: made trivial comment update] Signed-off-by: Aliaksei Kandratsenka <alkondratenko@gmail.com>
diff --git a/Makefile.am b/Makefile.am index db1106d..f9beb13 100644 --- a/Makefile.am +++ b/Makefile.am
@@ -847,48 +847,7 @@ if WITH_CPU_PROFILER pkgconfig_DATA += libprofiler.pc endif WITH_CPU_PROFILER -CLEANFILES = $(pkgconfig_DATA) - -libtcmalloc.pc: Makefile - echo 'prefix=$(prefix)' > "$@".tmp - echo 'exec_prefix='`echo '$(exec_prefix)' | sed 's@^$(prefix)@$${prefix}@'` >> "$@".tmp - echo 'libdir='`echo '$(libdir)' | sed 's@^$(exec_prefix)@$${exec_prefix}@'` >> "$@".tmp - echo 'includedir='`echo '$(includedir)' | sed 's@^$(prefix)@$${prefix}@'` >> "$@".tmp - echo '' >> "$@".tmp - echo 'Name: $(PACKAGE)' >> "$@".tmp - echo 'Version: $(VERSION)' >> "$@".tmp - echo 'Description: Performance tools for C++' >> "$@".tmp - echo 'URL: https://github.com/gperftools/gperftools' >> "$@".tmp - echo 'Requires: $(UNWIND_PC_DEP)' >> "$@".tmp - echo 'Libs: -L$${libdir} -ltcmalloc' >> "$@".tmp - echo 'Libs.private: $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)' >> "$@".tmp - echo 'Cflags: -I$${includedir}' >> "$@".tmp - mv -f "$@".tmp "$@" - -libtcmalloc_minimal.pc: libtcmalloc.pc - echo 'prefix=$(prefix)' > "$@".tmp - echo 'exec_prefix='`echo '$(exec_prefix)' | sed 's@^$(prefix)@$${prefix}@'` >> "$@".tmp - echo 'libdir='`echo '$(libdir)' | sed 's@^$(exec_prefix)@$${exec_prefix}@'` >> "$@".tmp - echo 'includedir='`echo '$(includedir)' | sed 's@^$(prefix)@$${prefix}@'` >> "$@".tmp - echo '' >> "$@".tmp - echo 'Name: $(PACKAGE)' >> "$@".tmp - echo 'Version: $(VERSION)' >> "$@".tmp - echo 'Description: Performance tools for C++' >> "$@".tmp - echo 'URL: https://github.com/gperftools/gperftools' >> "$@".tmp - echo 'Requires:' >> "$@".tmp - echo 'Libs: -L$${libdir} -ltcmalloc_minimal' >> "$@".tmp - echo 'Libs.private: $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)' >> "$@".tmp - echo 'Cflags: -I$${includedir}' >> "$@".tmp - mv -f "$@".tmp "$@" - -libtcmalloc_debug.pc: libtcmalloc.pc - cat libtcmalloc.pc | sed s/-ltcmalloc/-ltcmalloc_debug/ > "$@" - -libtcmalloc_minimal_debug.pc: libtcmalloc_minimal.pc - cat libtcmalloc_minimal.pc | sed s/-ltcmalloc_minimal/-ltcmalloc_minimal_debug/ > "$@" - -libprofiler.pc: libtcmalloc.pc - cat libtcmalloc.pc | sed s/-ltcmalloc/-lprofiler/ > "$@" +DISTCLEANFILES = $(pkgconfig_DATA) $(top_distdir)/ChangeLog: if test ! -f $(top_srcdir)/ChangeLog ; \
diff --git a/configure.ac b/configure.ac index 7d0c7ca..378a068 100644 --- a/configure.ac +++ b/configure.ac
@@ -508,6 +508,55 @@ [AC_MSG_WARN([asciidoctor tool not found. Will skip building .html documentation from .adoc])]) AC_ARG_VAR(ASCIIDOCTOR_FLAGS, [flags to pass to asciidoctor]) -# Write generated configuration file +# Generate pkgconfig files to inform others how to compile/link with +# us. +AC_CONFIG_COMMANDS([pkgconfig-generator], [ + cat > libtcmalloc.pc <<EOF +prefix=$prefix +exec_prefix=`echo "$exec_prefix" | sed "s@^$prefix@\\\${prefix}@"` +libdir=`echo "$libdir" | sed "s@^$exec_prefix@\\\${exec_prefix}@"` +includedir=`echo "$includedir" | sed "s@^$prefix@\\\${prefix}@"` + +Name: $PACKAGE +Version: $VERSION +Description: Performance tools for C++ +URL: https://github.com/gperftools/gperftools +Requires: $UNWIND_PC_DEP +Libs: -L\${libdir} -ltcmalloc +Libs.private: $PTHREAD_CFLAGS $PTHREAD_LIBS +Cflags: -I\${includedir} +EOF + + cat > libtcmalloc_minimal.pc <<EOF +prefix=$prefix +exec_prefix=`echo "$exec_prefix" | sed "s@^$prefix@\\\${prefix}@"` +libdir=`echo "$libdir" | sed "s@^$exec_prefix@\\\${exec_prefix}@"` +includedir=`echo "$includedir" | sed "s@^$prefix@\\\${prefix}@"` + +Name: $PACKAGE +Version: $VERSION +Description: Performance tools for C++ +URL: https://github.com/gperftools/gperftools +Requires: +Libs: -L\${libdir} -ltcmalloc_minimal +Libs.private: $PTHREAD_CFLAGS $PTHREAD_LIBS +Cflags: -I\${includedir} +EOF + + cat libtcmalloc.pc | sed s/-ltcmalloc/-ltcmalloc_debug/ > libtcmalloc_debug.pc + cat libtcmalloc_minimal.pc | sed s/-ltcmalloc_minimal/-ltcmalloc_minimal_debug/ > libtcmalloc_minimal_debug.pc + cat libtcmalloc.pc | sed s/-ltcmalloc/-lprofiler/ > libprofiler.pc +], [ + PACKAGE="$PACKAGE_NAME" + VERSION="$PACKAGE_VERSION" + UNWIND_PC_DEP="$UNWIND_PC_DEP" + PTHREAD_CFLAGS="$PTHREAD_CFLAGS" + PTHREAD_LIBS="$PTHREAD_LIBS" + prefix="$prefix" + exec_prefix="$exec_prefix" + libdir="$libdir" + includedir="$includedir" +]) + AC_CONFIG_FILES([Makefile]) AC_OUTPUT