From 90909a34312265db1e77cfbf61c82442a51ec184 Mon Sep 17 00:00:00 2001 From: Hizenberg469 Date: Sun, 5 Jul 2026 23:11:50 +0530 Subject: [PATCH] PSV completed. Next PLV and PSV modifiers --- Automake.lyx | 272 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 269 insertions(+), 3 deletions(-) diff --git a/Automake.lyx b/Automake.lyx index e0c1f87..1dc9a25 100644 --- a/Automake.lyx +++ b/Automake.lyx @@ -1106,9 +1106,7 @@ if test "x$(build_opt_prog)" = xyes; \end_layout \begin_layout Plain Layout - optional_programs=$(optional_programs) optprog -\lang american -### 1 ### + optional_programs=$(optional_programs) optprog ### 1 ### \end_layout \begin_layout Plain Layout @@ -1276,5 +1274,273 @@ These files can be executable, Let us see the default primaries supported by Automake. \end_layout +\begin_layout Itemize + +\series bold +PROGRAMS +\series default +: + These are binary executable programs. +\end_layout + +\begin_layout Itemize + +\series bold +LIBRARIES/LTLIBRARIES +\series default +: + The LIBRARIES primary enables Automake to generate rules for building static libraries using system compiler and librarian ( +\series bold +ar +\series default +). + The LTLIBRARIES also do the same thing but to build +\shape italic +libtool +\shape default + shared libraries which are generated by executing +\shape italic +libtool scripts +\shape default +. + The installation of these products are limited to +\family typewriter +$(libdir) +\family default + or +\family typewriter +$(pkglibdir) +\family default +. + +\end_layout + +\begin_layout Itemize + +\series bold +SCRIPTS +\series default +: + Scripts are generally handwritten which may be a part of project, + however, + Automake don't have the assumption that it will not make any rules to build the scripts or they are static files in the project. + The scripts can be generated from handwritten rules in Makefile.am files, + sometimes by processing a input file using the sed or awk utility tools. + Even if the static script are present in the project and is intended to be distributed with the project tarball, + then +\series bold +dist +\series default + modifier should be used with +\series bold +SCRIPT +\series default + primary. + The installation location for scripts includes +\family typewriter +$(bindir) +\family default +, + +\family typewriter +$(sbindir) +\family default +, + +\family typewriter +$(libexecdir) +\family default +, + and +\family typewriter +$(pkgdatadir) +\family default +. +\end_layout + +\begin_layout Itemize + +\series bold +DATA +\series default +: + Data files are similar to what scripts files are intended for and can be distributed with project tarball and for that we can use +\series bold +dist +\series default + modifier with +\series bold +DATA +\series default + primary. + The installation location for these type of files are +\family typewriter +$(datadir) +\family default +, + +\family typewriter +$(sysconfdir) +\family default +, + +\family typewriter +$(sharedstatedir) +\family default + and +\family typewriter +$(localstatedir) +\family default +. + +\end_layout + +\begin_layout Itemize + +\series bold +HEADERS +\series default +: + Headers files are just like static files but are used for building of the project. + These files generally contained the public interface of the installed libraries which can be used by other projects for using the libraries functionality. + The PLV for these type of files are pkginclude_HEADERS and include_HEADERS and the installation locations are +\family typewriter + $(includedir) +\family default + and +\family typewriter +$(pkgincludedir) +\family default +. +\end_layout + +\begin_layout Standard +There are also other types of primaries that Automake supports, + but we will currently discuss about the ones which are used the most. + The rest of the commonly used primaries are +\series bold +MANS +\series default +, + +\series bold +TEXTINFOS +\series default +, + +\series bold +PYTHON +\series default +, + +\series bold +JAVA +\series default +, + etc. +\end_layout + +\begin_layout Subsection +Product Source Variable +\end_layout + +\begin_layout Standard +If you notice, + the second line in Listing 7 is an example of Automake +\shape italic +product source variable +\shape default + (PSV). +\begin_inset CommandInset line +LatexCommand rule +offset "0.5ex" +width "100col%" +height "1pt" + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout +[modifier-list]product_SOURCES = file1 file2 ... + fileN +\end_layout + +\end_inset + + +\begin_inset CommandInset line +LatexCommand rule +offset "0.5ex" +width "100col%" +height "1pt" + +\end_inset + +Just like PLV which represent list of products, + PSV represent list of files on which the product is dependent on. + These are the source files which are used to build the products of the projects. + Only characters that are allowed in make variables (letters, + numbers, + and the at sign) are allowed in the product tag of a PSV. + So, + Automake converst illegal characters into underscores. +\begin_inset CommandInset line +LatexCommand rule +offset "0.5ex" +width "100col%" +height "1pt" + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout +lib_LIBRARIES = libc++.a +\end_layout + +\begin_layout Plain Layout +libc___a_SOURCES = ... +\begin_inset Caption Standard + +\begin_layout Plain Layout +Illegal make variable characters are converted to underscores in product tags. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset CommandInset line +LatexCommand rule +offset "0.5ex" +width "100col%" +height "1pt" + +\end_inset + + +\end_layout + +\begin_layout Subsection +PLV and PSV Modifiers +\end_layout + \end_body \end_document