PSV completed. Next PLV and PSV modifiers

This commit is contained in:
2026-07-05 23:11:50 +05:30
parent a079a4184d
commit 90909a3431
+269 -3
View File
@@ -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