Adding upstream version 1.9.14.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
ddf4b25f8f
commit
49fcf7364a
88 changed files with 62468 additions and 0 deletions
19
.github/workflows/ci.yaml
vendored
Normal file
19
.github/workflows/ci.yaml
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
name: Continuous Integration
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: reconfigure
|
||||
run: autoreconf -fi
|
||||
- name: configure
|
||||
run: ./configure --prefix="/usr"
|
||||
- name: make
|
||||
run: make
|
||||
- name: make check
|
||||
run: make check
|
||||
- name: make install
|
||||
run: sudo make install
|
5
AUTHORS
Normal file
5
AUTHORS
Normal file
|
@ -0,0 +1,5 @@
|
|||
Contact Information:
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Gary Wuertz (gary_at_issiweb_com)
|
||||
http://www.issihosts.com/haveged
|
674
COPYING
Normal file
674
COPYING
Normal file
|
@ -0,0 +1,674 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
178
ChangeLog
Normal file
178
ChangeLog
Normal file
|
@ -0,0 +1,178 @@
|
|||
v1.9.14 (Jan 01, 2021)
|
||||
* made enttest configurable
|
||||
* havegecmd.c - new command added to close the communication socket [Werner Fink]
|
||||
|
||||
v1.9.13 (Jun 28, 2020)
|
||||
* added support for --version [Jirka Hladky]
|
||||
* updated systemd service file [Jirka Hladky]
|
||||
|
||||
v1.9.12 (Jun 18, 2020)
|
||||
* fix a memory leak in havege_destroy [Anakin Zhang]
|
||||
|
||||
v1.9.11 (Jun 11, 2020)
|
||||
* updated version reported by program [Jirka Hladky]
|
||||
|
||||
v1.9.10 (Jun 11, 2020)
|
||||
* fix ordering cycle with private tmp [Christian Hesse]
|
||||
|
||||
v1.9.9 (Jun 9, 2020)
|
||||
* Updated systemd service file [nicoo]
|
||||
* Bump soname [nicoo]
|
||||
* Fix crash on shutdown in threaded mode [Sergei Trofimovich]
|
||||
* Fix compilation with --enable-threads [Lars Wendler]
|
||||
|
||||
v1.9.8 (Sep 30, 2019)
|
||||
* Fix for Unresolved symbol error_exit in libhavege #20 by pld-gitsync [Jirka Hladky]
|
||||
* order after systemd-tmpfiles-setup-dev.service (origin/pr/21) [Christian Hesse]
|
||||
* use systemd security features [Christian Hesse]
|
||||
* do not run in container [Christian Hesse]
|
||||
* do not use carriage return in line break [Christian Hesse]
|
||||
* Fixed invalid UTF-8 codes in ChangeLog [Jirka Hladky]
|
||||
|
||||
|
||||
v1.9.5 (Aug 20, 2019)
|
||||
* Added test for /dev/random symlink [Jirka Hladky]
|
||||
* Update to automake 1.16 [Jirka Hladky]
|
||||
* Fix segv at start [Andrew]
|
||||
* Fixed built issue on Cygwin [jbaker6953]
|
||||
* Fix segfault on arm machines (origin/pr/7) [Natanael Copa]
|
||||
* init.d/Makefile.am - add missing dependency [Jackie Huang]
|
||||
* service.redhat - update PIDFile [Pierre-Jean Texier]
|
||||
* Fix type mismatch in get_poolsize [Andreas Schwab]
|
||||
* Fixup upstream changelog [Nicolas Braud-Santoni]
|
||||
* Remove support for CPUID on ia64 (origin/pr/19) [Jeremy Bobbio]
|
||||
* Output some progress during CUSUM and RANDOM EXCURSION test [Sven Hartge]
|
||||
* Diagnostics capture mode now works correctly [Ethan Rahn]
|
||||
|
||||
v1.9.4 (Aug 11, 2018)
|
||||
* Avoid misleading message if cmd socket is in use
|
||||
|
||||
v1.9.3 (Aug 10, 2018)
|
||||
* Implemented a command mode and use it for chroot - contributed Dr. Werner Fink
|
||||
|
||||
v1.9.2 (Nov 16, 2017)
|
||||
* Add cross compile fixes contributed by Robert Schwebel
|
||||
* Limit watermark max to less than pool size to avoid 100% cpu condition
|
||||
* Add service.suse init script contributed by Tomas Chvatal
|
||||
|
||||
v1.9.1 (Feb 11, 2014)
|
||||
* Documentation and sample file touch-up for v1.9.
|
||||
|
||||
v1.9 (Feb 10, 2014)
|
||||
* Fix dead man limit in test procedure B. Fix broken AIS retry logic.
|
||||
* Correct online test defaults
|
||||
* Improve diagnostic display of test results, output summary, testing retries
|
||||
* Add test/output summary to all abnormal app terminations
|
||||
* Add required <stddef.h> include to havege.h. Add quick version check for lib users.
|
||||
* Improve diagnostic build for testing online tests. Fix broken inject features.
|
||||
* Rework major portions of havegetest,c for better performance with -fpic
|
||||
* Correct test procedure B to match independent clean room implementation of reference
|
||||
* Tweak configure.ac for arm build, make --disable-clock_gettime consistent
|
||||
* Major edit of man pages, haveged.8 and libhavege.3
|
||||
* Many other documentation changes: havege.h, README, etc...
|
||||
|
||||
v1.8 (Jan 02, 2014)
|
||||
* Fix return code for signalled termination.
|
||||
* Update init.d/service.fedora - new return code + simple, not forking
|
||||
* Add --enable_unitdir as DESTDIR for systemd install
|
||||
|
||||
v1.7c (Jun 08, 2013)
|
||||
* Fix alignment fault on mips in havegetest.c, procedure B.
|
||||
|
||||
v1.7b (Jun 06, 2013)
|
||||
* Fix alignment fault on sparc in havegetest.c, procedure A, test5XOR().
|
||||
* Fix build ppc detection in configure.ac
|
||||
|
||||
v1.7a (Feb 13, 2013)
|
||||
* Fix parallel build (LDADD fix + VPATH fixes to test programs)
|
||||
* Fix check target for automake v1.13 and previous (use check-local)
|
||||
* Add option to suppress tuning code build
|
||||
* Improve sample spec file for library
|
||||
|
||||
v1.7 (Jan 15, 2013)
|
||||
* Add havege_status_dump() as basis for haveged diagnostics
|
||||
* Provide sample spec to build haveged and haveged-devel
|
||||
* Add contrib/build to provide build support
|
||||
* Modify build to use libtool
|
||||
* Rename base types to alias stdint.h types to allow 'fixes' if necessary
|
||||
* Rename all public functions to follow havege_* naming convention
|
||||
* Sanitize havege.h to be include file for devel package
|
||||
* Add destroy() to havege for library use.
|
||||
* Move all remaining static vars to allocated memory.
|
||||
* Rework include file structure to eliminate include sequence errors.
|
||||
* Fix (rare) segfault in test0 caused by 1.6 alignment fix
|
||||
|
||||
v1.6a (Dec 18, 2012)
|
||||
* Fix typo in configure.ac
|
||||
|
||||
v1.6 (Dec 15, 2012)
|
||||
* Correct makefile encoding and defaults description
|
||||
* Make clock_gettime a build option and correct dependencies when used.
|
||||
* Fix alignment fault on arm64 in procedure A test0.
|
||||
|
||||
v1.5 (Aug 12, 2012)
|
||||
* Add online tests based on AIS-31 controlled by --enable-olt build option
|
||||
* Add -o option to specify online tests to perform
|
||||
* Add -p option to specify the pid location.
|
||||
* Fix -F option to not take argument - i.e. now a switch
|
||||
* Factor diagnostic methods for capture and inject for better performance
|
||||
* Fix install target, move to bin and eliminate script if not daemon, now use sysv and systemd templates
|
||||
|
||||
v1.4 (Feb 07, 2012)
|
||||
* Add s390 architecture. Thanks to Dan Horak and Jiri Hladky
|
||||
* Add generic architecture with clock_gettime() timer.
|
||||
* Rewrite collection loop to support multiple instances and new diagnostics
|
||||
* Rewrite tuning mechanism to add virtual file system mining and correct cpuid bugs
|
||||
* Add prototype multi-thread collection option
|
||||
* Reduce collection buffer size to .5MB
|
||||
* Improve/correct build and install
|
||||
* Add new invocation options to support new features.
|
||||
|
||||
v1.3 (Oct 23, 2011)
|
||||
* Integrate contributions by Jirka Hladky to fine tune collection implementation.
|
||||
* Add non-daemon interface with option to send continuous stream of output to stdout.
|
||||
|
||||
v1.2 (June 26, 2011))
|
||||
* Address compiler issues by using compiler intrinsics.
|
||||
* Fix cpuid pic issues once again.
|
||||
|
||||
v1.01 (Jan 04,2011)
|
||||
* Add detached option for those who use a supervising daemon
|
||||
* Build cleanup for non-cpuid environments
|
||||
|
||||
v1.0 (Nov 28,2010)
|
||||
* Fix gcc 4.5 optimization of HARDCLOCK
|
||||
* Add contrib section
|
||||
|
||||
v0.9 (Sep 01, 2009)
|
||||
* Refine collection for gcc 4.4 on Intel i7 (gentoo)
|
||||
* Update auto tune to Intel latest cpuid spec
|
||||
* Add check for cpuid instruction on i386
|
||||
* Add man(8) page
|
||||
* Cleanup check target to build with -Wall
|
||||
|
||||
v0.8 (Jul 30, 2009)
|
||||
* Correct pool size related calculations.
|
||||
|
||||
v0.7 (May 1, 2009)
|
||||
* More package contents confusion.
|
||||
|
||||
v0.6 (Apr 29, 2009)
|
||||
* Correct mix up in package contents
|
||||
|
||||
v0.5 (Apr 28, 2009)
|
||||
* Migrated project to GNU build
|
||||
|
||||
v04 (Apr 26, 2009)
|
||||
* Fix documentation typos!
|
||||
|
||||
v03 (Apr 24, 2009)
|
||||
* Reworked build/test for more general install.
|
||||
* Integrate init script changes from A Bartlett
|
||||
|
||||
v02 (Jan 19, 2009)
|
||||
* Reworked daemon with run-time loop tuning.
|
||||
* Submitted to freshmeat
|
||||
|
||||
v (Jan 10, 2009)
|
||||
* Original daemon based on libhavege.
|
368
INSTALL
Normal file
368
INSTALL
Normal file
|
@ -0,0 +1,368 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell command './configure && make && make install'
|
||||
should configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the 'README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
'INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The 'configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a 'Makefile' in each directory of the package.
|
||||
It may also create one or more '.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script 'config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file 'config.log' containing compiler output (useful mainly for
|
||||
debugging 'configure').
|
||||
|
||||
It can also use an optional file (typically called 'config.cache' and
|
||||
enabled with '--cache-file=config.cache' or simply '-C') that saves the
|
||||
results of its tests to speed up reconfiguring. Caching is disabled by
|
||||
default to prevent problems with accidental use of stale cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how 'configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the 'README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point 'config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file 'configure.ac' (or 'configure.in') is used to create
|
||||
'configure' by a program called 'autoconf'. You need 'configure.ac' if
|
||||
you want to change it or regenerate 'configure' using a newer version of
|
||||
'autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. 'cd' to the directory containing the package's source code and type
|
||||
'./configure' to configure the package for your system.
|
||||
|
||||
Running 'configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type 'make' to compile the package.
|
||||
|
||||
3. Optionally, type 'make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type 'make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the 'make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type 'make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior 'make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing 'make clean'. To also remove the
|
||||
files that 'configure' created (so you can compile the package for
|
||||
a different kind of computer), type 'make distclean'. There is
|
||||
also a 'make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type 'make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide 'make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like 'make install' and 'make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the 'configure' script does not know about. Run './configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give 'configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here is
|
||||
an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU 'make'. 'cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the 'configure' script. 'configure' automatically checks for the source
|
||||
code in the directory that 'configure' is in and in '..'. This is known
|
||||
as a "VPATH" build.
|
||||
|
||||
With a non-GNU 'make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use 'make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple '-arch' options to the
|
||||
compiler but only a single '-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the 'lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, 'make install' installs the package's commands under
|
||||
'/usr/local/bin', include files under '/usr/local/include', etc. You
|
||||
can specify an installation prefix other than '/usr/local' by giving
|
||||
'configure' the option '--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like '--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run 'configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the default
|
||||
for these options is expressed in terms of '${prefix}', so that
|
||||
specifying just '--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to 'configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
'make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, 'make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
'${prefix}'. Any directories that were specified during 'configure',
|
||||
but not in terms of '${prefix}', must each be overridden at install time
|
||||
for the entire installation to be relocated. The approach of makefile
|
||||
variable overrides for each directory variable is required by the GNU
|
||||
Coding Standards, and ideally causes no recompilation. However, some
|
||||
platforms have known limitations with the semantics of shared libraries
|
||||
that end up requiring recompilation when using this method, particularly
|
||||
noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the 'DESTDIR' variable. For
|
||||
example, 'make install DESTDIR=/alternate/directory' will prepend
|
||||
'/alternate/directory' before all installation names. The approach of
|
||||
'DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of '${prefix}'
|
||||
at 'configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving 'configure' the
|
||||
option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to '--enable-FEATURE' options to
|
||||
'configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to '--with-PACKAGE' options, where PACKAGE
|
||||
is something like 'gnu-as' or 'x' (for the X Window System). The
|
||||
'README' should mention any '--enable-' and '--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, 'configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the 'configure' options '--x-includes=DIR' and
|
||||
'--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of 'make' will be. For these packages, running './configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with 'make V=1'; while running './configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with 'make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
|
||||
is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
HP-UX 'make' updates targets which have the same time stamps as their
|
||||
prerequisites, which makes it generally unusable when shipped generated
|
||||
files such as 'configure' are involved. Use GNU 'make' instead.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
|
||||
workaround. If GNU CC is not installed, it is therefore recommended to
|
||||
try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
|
||||
in your 'PATH', put it _after_ '/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in '/boot/common',
|
||||
not '/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features 'configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, 'configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
'--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as 'sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file 'config.sub' for the possible values of each field. If
|
||||
'config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option '--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with '--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for 'configure' scripts to share,
|
||||
you can create a site shell script called 'config.site' that gives
|
||||
default values for variables like 'CC', 'cache_file', and 'prefix'.
|
||||
'configure' looks for 'PREFIX/share/config.site' if it exists, then
|
||||
'PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
'CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all 'configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to 'configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the 'configure' command line, using 'VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified 'gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
|
||||
Autoconf limitation. Until the limitation is lifted, you can use this
|
||||
workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
'configure' Invocation
|
||||
======================
|
||||
|
||||
'configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
'--help'
|
||||
'-h'
|
||||
Print a summary of all of the options to 'configure', and exit.
|
||||
|
||||
'--help=short'
|
||||
'--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
'configure', and exit. The 'short' variant lists options used only
|
||||
in the top level, while the 'recursive' variant lists options also
|
||||
present in any nested packages.
|
||||
|
||||
'--version'
|
||||
'-V'
|
||||
Print the version of Autoconf used to generate the 'configure'
|
||||
script, and exit.
|
||||
|
||||
'--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally 'config.cache'. FILE defaults to '/dev/null' to
|
||||
disable caching.
|
||||
|
||||
'--config-cache'
|
||||
'-C'
|
||||
Alias for '--cache-file=config.cache'.
|
||||
|
||||
'--quiet'
|
||||
'--silent'
|
||||
'-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to '/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
'--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
'configure' can determine that directory automatically.
|
||||
|
||||
'--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names:: for
|
||||
more details, including other options available for fine-tuning the
|
||||
installation locations.
|
||||
|
||||
'--no-create'
|
||||
'-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
'configure' also accepts some other, not widely useful, options. Run
|
||||
'configure --help' for more details.
|
18
Makefile.am
Normal file
18
Makefile.am
Normal file
|
@ -0,0 +1,18 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
# Files to be included in distribution
|
||||
EXTRA_DIST = ent/entitle.gif init.d/service.fedora init.d/service.redhat \
|
||||
init.d/sysv.lsb init.d/sysv.redhat nist/template9 \
|
||||
contrib/diags/data_prep.c contrib/diags/bins.p contrib/diags/inc.p \
|
||||
contrib/diags/lognorm.r contrib/diags/lognorm.sh \
|
||||
haveged.spec contrib/build/build.sh contrib/build/lib.spec contrib/build/nolib.spec \
|
||||
contrib/build/havege_sample.c contrib/build/fedora.spec
|
||||
|
||||
# programs used in check targets
|
||||
EXTRA_PROGRAMS = ent/entest nist/nist
|
||||
|
||||
# Build install script and tests as necessary
|
||||
SUBDIRS = src init.d man ent nist
|
||||
|
||||
# check entire package
|
||||
DISTCHECK_CONFIGURE_FLAGS = "--enable-nistest"
|
900
Makefile.in
Normal file
900
Makefile.in
Normal file
|
@ -0,0 +1,900 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = ent/entest$(EXEEXT) nist/nist$(EXEEXT)
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
ent_entest_SOURCES = ent/entest.c
|
||||
am__dirstamp = $(am__leading_dot)dirstamp
|
||||
ent_entest_OBJECTS = ent/entest.$(OBJEXT)
|
||||
ent_entest_LDADD = $(LDADD)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
nist_nist_SOURCES = nist/nist.c
|
||||
nist_nist_OBJECTS = nist/nist.$(OBJEXT)
|
||||
nist_nist_LDADD = $(LDADD)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||
depcomp =
|
||||
am__maybe_remake_depfiles =
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = ent/entest.c nist/nist.c
|
||||
DIST_SOURCES = ent/entest.c nist/nist.c
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir distdir-am dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/config/compile $(top_srcdir)/config/config.guess \
|
||||
$(top_srcdir)/config/config.sub \
|
||||
$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
|
||||
$(top_srcdir)/config/missing AUTHORS COPYING ChangeLog INSTALL \
|
||||
NEWS README config/compile config/config.guess \
|
||||
config/config.sub config/install-sh config/ltmain.sh \
|
||||
config/missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVEGE_LT_VERSION = @HAVEGE_LT_VERSION@
|
||||
HA_DISTRO = @HA_DISTRO@
|
||||
HA_LDFLAGS = @HA_LDFLAGS@
|
||||
HA_UNITD = @HA_UNITD@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
# Files to be included in distribution
|
||||
EXTRA_DIST = ent/entitle.gif init.d/service.fedora init.d/service.redhat \
|
||||
init.d/sysv.lsb init.d/sysv.redhat nist/template9 \
|
||||
contrib/diags/data_prep.c contrib/diags/bins.p contrib/diags/inc.p \
|
||||
contrib/diags/lognorm.r contrib/diags/lognorm.sh \
|
||||
haveged.spec contrib/build/build.sh contrib/build/lib.spec contrib/build/nolib.spec \
|
||||
contrib/build/havege_sample.c contrib/build/fedora.spec
|
||||
|
||||
|
||||
# Build install script and tests as necessary
|
||||
SUBDIRS = src init.d man ent nist
|
||||
|
||||
# check entire package
|
||||
DISTCHECK_CONFIGURE_FLAGS = "--enable-nistest"
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu --ignore-deps Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
ent/$(am__dirstamp):
|
||||
@$(MKDIR_P) ent
|
||||
@: > ent/$(am__dirstamp)
|
||||
ent/entest.$(OBJEXT): ent/$(am__dirstamp)
|
||||
|
||||
ent/entest$(EXEEXT): $(ent_entest_OBJECTS) $(ent_entest_DEPENDENCIES) $(EXTRA_ent_entest_DEPENDENCIES) ent/$(am__dirstamp)
|
||||
@rm -f ent/entest$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(ent_entest_OBJECTS) $(ent_entest_LDADD) $(LIBS)
|
||||
nist/$(am__dirstamp):
|
||||
@$(MKDIR_P) nist
|
||||
@: > nist/$(am__dirstamp)
|
||||
nist/nist.$(OBJEXT): nist/$(am__dirstamp)
|
||||
|
||||
nist/nist$(EXEEXT): $(nist_nist_OBJECTS) $(nist_nist_DEPENDENCIES) $(EXTRA_nist_nist_DEPENDENCIES) nist/$(am__dirstamp)
|
||||
@rm -f nist/nist$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(nist_nist_OBJECTS) $(nist_nist_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
-rm -f ent/*.$(OBJEXT)
|
||||
-rm -f nist/*.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
.c.o:
|
||||
$(AM_V_CC)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
-rm -rf ent/.libs ent/_libs
|
||||
-rm -rf nist/.libs nist/_libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
-rm -f ent/$(am__dirstamp)
|
||||
-rm -f nist/$(am__dirstamp)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-hdr distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) all install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
clean-libtool cscope cscopelist-am ctags ctags-am dist \
|
||||
dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
|
||||
dist-xz dist-zip distcheck distclean distclean-compile \
|
||||
distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
81
NEWS
Normal file
81
NEWS
Normal file
|
@ -0,0 +1,81 @@
|
|||
v1.9.8 (Sep 30, 2019)
|
||||
* Various bug fixes - please see ChangeLog for the detailed list of changes
|
||||
|
||||
v1.9.5 (Aug 11, 2018)
|
||||
* Various bug fixes - please see ChangeLog for the detailed list of changes
|
||||
|
||||
v1.9.4 (Aug 11, 2018)
|
||||
* Avoid misleading message if cmd socket is in use
|
||||
|
||||
v1.9.3 (Aug 10, 2018)
|
||||
I (Jirka Hladky) took over haveged upstream development and moved it to GiHub
|
||||
https://github.com/jirka-h/haveged
|
||||
This version implements a command mode and use it for chroot -it was
|
||||
contributed by Dr. Werner Fink.
|
||||
|
||||
v1.9.2 (Nov 16, 2017)
|
||||
|
||||
This release cleans up issues that have accumulated since the last release. I retired
|
||||
several years ago, and haveged is no longer under active development. This release only
|
||||
attempts to collect and document the downstream reports I have received.
|
||||
|
||||
v1.9.1 (Feb 11, 2014)
|
||||
Documentation and sample file touch-up for v1.9.
|
||||
|
||||
v1.9 (Feb 10, 2014)
|
||||
|
||||
A Fedora bugzilla request was received to harden the haveged build. Since haveged has
|
||||
traditionally been fussy with compiler options, Jirka Hladky set up a large scale test
|
||||
using using TestU01's BigCrush and PractRand. A normally harmless bug inadvertently sent
|
||||
the 8TB data sets through the haveged run-time continuous test. This accident revealed
|
||||
many problems with the run-time test implementation, including incorrect test defaults
|
||||
based on app/daemon selection, broken dead man limit in test procedure B, broken retry
|
||||
logic, and implementation bugs in both test procedure A and B. Attempting to diagnose
|
||||
these problems also revealed the injection feature of the diagnostic build was also
|
||||
broken.
|
||||
|
||||
Once the injection facility was fixed, an independent implementation of the AIS reference
|
||||
for procedure B was used to verify the haveged implementation down to bit level. Portions
|
||||
of the run-time test suite were rewritten to correct defects and improve performance of the
|
||||
run-time test suite in PIE builds. The procedure A tests were rewritten to remove the need
|
||||
to overlap the previous test to attain byte alignment - all test procedures are now bit
|
||||
oriented. Unrelated changes included in the release include adding a quick version check
|
||||
for libhavege use, many small improvements to diagnostics, and more cleanup man pages,
|
||||
sample files, and other documentation.
|
||||
|
||||
Special thanks to Jirka Hladky for help in sorting out the procedure B bugs, verifying
|
||||
the haveged RNG is statistically comparable to RDRAND, and the first formal testing of
|
||||
haveged on ARM.
|
||||
|
||||
v1.8 (Jan 02, 2014)
|
||||
|
||||
Fix return code for signaled termination. Update init.d/service.fedora to use new
|
||||
return code and simple service type. Add --enable_unitdir as DESTDIR for systemd
|
||||
install. Cleanup documentation and man file.
|
||||
|
||||
v1.7c (Jun 08, 2013)
|
||||
|
||||
Additional fix for run-time test alignment problems on mips.
|
||||
|
||||
v1.7b (Jun 06, 2013)
|
||||
|
||||
Fix run-time test alignment problems on sparc and mips. Fix ppc detection in build.
|
||||
|
||||
v1.7a (Feb 13, 2013)
|
||||
|
||||
Fix broken parallel builds - fix LDADD problem in build, VPATH problems in check targets.
|
||||
Move to check-local for check target to work with automake v1.13 but retain backward
|
||||
compatibility. Modify build to make tuning component optional in build. Improve sample
|
||||
spec file and docs.
|
||||
|
||||
v1.7 (Jan 15, 2013)
|
||||
|
||||
The build has been restructured to provide a devel package. This introduces a new libtool
|
||||
dependency. The new contrib/build/build.sh script is intended to toggle this requirement
|
||||
as well as providing a bootstrap to recover from automake mismatches. The script will also
|
||||
build and run devel sample code for those interested in using the devel package.
|
||||
|
||||
Other build related changes include updating AC_PREQ to a more reasonable, 2.59 and changing
|
||||
the build option for init scripts to default to --enable-init=none. The format of the
|
||||
haveged diagnostic display has changed to provided more information and the output is now
|
||||
displayed after output is generated in the non-daemon case.
|
474
README
Normal file
474
README
Normal file
|
@ -0,0 +1,474 @@
|
|||
Haveged, an entropy source
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
Complete documentation on haveged can be found at http://www.issihosts.com/haveged/
|
||||
|
||||
Linux provides device interfaces (/dev/random and /dev/urandom) to a pool of
|
||||
random numbers collected from system interrupt service routines. On some
|
||||
systems, especially on those systems with high needs or limited user
|
||||
interaction, the standard collection mechanism cannot meet demand. In those
|
||||
cases, an adequate supply of random numbers can be maintained by feeding
|
||||
additional entropy into /dev/random pool via a file system interface. The
|
||||
haveged daemon was created to fulfill this function using random data generated
|
||||
by the HAVEGE algorithm.
|
||||
|
||||
The HAVEGE algorithm is based upon the indirect effects of unrelated hardware
|
||||
events on the instruction timing of a calculation that is sensitive to processor
|
||||
features such as branch predictors and instruction/data access mechanisms.
|
||||
Samples from a high-resolution timer are input into the algorithm to produce a
|
||||
stream of random data in a collection buffer. The algorithm requires no special
|
||||
privilege other than access to a high resolution timer, as provided by hardware
|
||||
instruction or a system call.
|
||||
|
||||
The HAVEGE mechanism is implemented in C using in-line assembly only where
|
||||
direct hardware access is needed. On modern compilers, compiler intrinsics are
|
||||
used to replace much if not all in-line assembly. The haveged implementation of
|
||||
HAVEGE adds two crucial features: automated tuning of the algorithm to an
|
||||
environment and a run time facility to verify the data generated in the
|
||||
collection buffer.
|
||||
|
||||
The haveged collection loop is tuned at run-time to match the size of the hosts
|
||||
L1 data and instruction caches. The size determination is made on the basis of
|
||||
the best fit to the following (low to high):
|
||||
|
||||
1. as a compiled default
|
||||
2. as determined by cpuid, if available
|
||||
3. as determined by the /sys file system, if available
|
||||
4. as specified by initialization parameters.
|
||||
|
||||
Run-time verification of collection buffer contents is based upon the
|
||||
methodology from the proposed AIS-31 standard from BSI, the German Federal
|
||||
Office for Information Security (Bundesamt für Sicherheit in der
|
||||
Informationstechnik). In the suggested configuration, haveged passes most of the
|
||||
requirements for a NTG.1 class device described in version two of the AIS-31
|
||||
specification.
|
||||
|
||||
The haveged implementation also provides an experimental feature to multiplex
|
||||
havege collections over multiple cpu cores. Interprocess coordination in this
|
||||
configuration sacrifices a significant fraction of haveged throughput in
|
||||
exchange for a cpu load spread over a number of processors.
|
||||
|
||||
All of the above features are contained within the haveged-devel sub package of
|
||||
haveged. The haveged package can be built with libtool to expose the devel sub
|
||||
package or without libtool if the devel library is not needed. In either case,
|
||||
the executable built contains a file system interface to haveged-devel features
|
||||
and an optional facility to feed havege output into the random device. The build
|
||||
system also provides "check" targets to test the output of the executable's
|
||||
random number generator through the file system interface.
|
||||
|
||||
TESTING haveged
|
||||
|
||||
Testing via build check targets has been part of the haveged distribution since
|
||||
the project moved to automake. Original tests were limited to a quick evaluation
|
||||
implemented as an adaptation of the open source ent tool from Fourmilab and a
|
||||
more thorough evaluation based upon the NIST SP800 test suite. Run time testing
|
||||
was added to haveged version 1.5 as part of an effort to loosely follow the RNG
|
||||
testing AIS-31 framework of the German Common Criteria organization, BSI.
|
||||
|
||||
The significant features of the AIS-31 framework are:
|
||||
|
||||
Run-time tests are broken into 2 groups, Procedure A containing 5 tests, and
|
||||
Procedure B containing 3 tests. Procedure A consists of performing a 48-bit
|
||||
disjointedness test on 64K sequences, followed by 257 repetitions of the four
|
||||
FIPS-140-1 tests and an auto-correlation test on successive 2000 bit sequences.
|
||||
Procedure B performs distribution tests for 10,000 occurrences of 1, 2, 3, 4 bit
|
||||
runs in successive samples, followed by a entropy estimate based upon on another
|
||||
256000+2560 bit sample. A sample must pass all individual tests to pass the
|
||||
procedure. An ideal RNG is expected to pass Procedure A with a probability of
|
||||
0.9987 and pass Procedure B with with a probability of 0.9998. One retry will be
|
||||
attempted to recover from the the failure of a single test in either procedure.
|
||||
The probability an ideal generator would fail the retry is nill.
|
||||
|
||||
Special features of the haveged implementation:
|
||||
|
||||
1) A failure of either procedure is a fatal error. In the case of haveged, the
|
||||
instance will terminate.
|
||||
2) The tests operate directly on the collection buffer after a fill. Performance
|
||||
costs are acceptable except for the auto-correlation test, test5. An option
|
||||
to skip test5 on some repetitions mitigates this problem.
|
||||
3) Tests can take place at start up (a "tot" test) or continuously as specified
|
||||
by a haveged parameter. In the continuous case, there is no implied alignment
|
||||
between the collection buffer and the testing context. Collection buffer
|
||||
contents will be released for consumption provided the buffer does not contain
|
||||
a failed individual test.
|
||||
4) The size of the input required to complete procedure B depends on the content.
|
||||
This means there is no fixed alignment of the test input in the collection
|
||||
buffer.
|
||||
5) Procedure retries are logged. Extended information is available with -v3. Retries
|
||||
are expected (see failure rates above) but normally only seen with output
|
||||
ranges north of a few GB.
|
||||
|
||||
More detailed information on the adaptation of the BIS framework can be found
|
||||
at http://www.issihosts.com/haveged/ais31.html
|
||||
|
||||
BUILDING haveged
|
||||
|
||||
This package originated on "Enterprise Linux 5" systems (RHEL 5 / CentOS 5 / SL
|
||||
5), but every effort has been made to retain and broaden the hardware support of
|
||||
the original HAVEGE implementation. The package uses the automake build system.
|
||||
By default, the build uses a libtool build to expose haveged-devel. The
|
||||
contrib/build directory contains a build.sh script to toggle the libtool
|
||||
requirement and recover from some autotools failures. Change directory to the
|
||||
build directory and type ./build.sh for options.
|
||||
|
||||
The configure process uses hardware detection via config.sub or the configure
|
||||
"-host" command line argument. The configure "host" variable is used to select
|
||||
in-line assembly or compiler intrinsics appropriate to the build target.
|
||||
|
||||
Currently supported hosts are:
|
||||
|
||||
1. x86 (x86_64 and i686)
|
||||
2. aarch64
|
||||
3. armv7hl
|
||||
4. ppc64le
|
||||
5. ia64
|
||||
6. powerpc
|
||||
7. s390
|
||||
|
||||
|
||||
The generic host type is provided for those systems without user level access to
|
||||
a high-resolution system timer. In this case, the --enable-clock_gettime option
|
||||
is set to 'yes'.
|
||||
|
||||
The following build options are available to "./configure":
|
||||
|
||||
1. --enable-clock_gettime (default 'no' for recognized hosts)
|
||||
2. --enable-daemon (default 'yes' if Linux)
|
||||
3. --enable-diagnostic (default 'no')
|
||||
4. --enable-init (type, default 'no')
|
||||
5. --enable-initdir (default '' unless enable--init="service.*")
|
||||
6. --enable-nistest (default 'no' but recommended)
|
||||
7. --enable-olt (default 'yes')
|
||||
8. --enable-threads (experimental)
|
||||
9. --enable-tune (default 'yes')
|
||||
|
||||
Detailed option information is available by typing "./configure --help". For
|
||||
options xxx that take "yes/no" arguments, --disable-xxx may be used as the
|
||||
inverse of --enable-xxx.
|
||||
|
||||
If --enable-clock_gettime() is 'yes', the clock_gettime(CLOCK_MONOTONIC) system
|
||||
call will be used as a timer source. This option defaults to 'yes' for generic
|
||||
host builds and 'no' otherwise. This option may proved useful if access to time
|
||||
hardware is privileged. Due to variability of clock_gettime() implementations,
|
||||
the adequacy of the clock_gettime() resolution cannot be known until run time.
|
||||
It is strongly advised to use run-time testing if this option is used.
|
||||
|
||||
If --enable-daemon is 'yes', ioctl access required to the random device and
|
||||
read-write access to the /proc virtual file system is required. The daemon may
|
||||
be run in the foreground or fork into the background based upon a command line
|
||||
argument. The daemon interface targets the 2.6 and later kernel and may not work
|
||||
on 2.4 kernels due to difference in the random interface between those two
|
||||
kernel versions. The change in the proc file system from pool size expressed in
|
||||
bytes to pool size expressed in bits has been taken into account, other changes
|
||||
may be required. This option is 'no' when diagnostic modes are enabled. If
|
||||
the option is no the executable is installed in the user bin directory instead
|
||||
of the sbin directory.
|
||||
|
||||
If --enable-diagnostic is 'yes', the capture and inject diagnostic interfaces
|
||||
are enabled. The capture or inject diagnostic may be enabled singly by setting
|
||||
the option to 'capture' or 'inject'. A setting for any value other than 'no'
|
||||
for this option forces --enable-daemon=no. See DIAGNOSTICS below for details.
|
||||
|
||||
The --enable-init option is active only when --enable-daemon is 'yes'. This
|
||||
value can specify a template to be used in the installation of an init method
|
||||
by the build's install target. The default value, 'no', disables the feature.
|
||||
Other values can be used to install a traditional systemv init script or
|
||||
systemd unit definition. See INSTALLATION for details.
|
||||
|
||||
The --enable-initdir is active only when --enable-init='service.*', i.e. a
|
||||
systemd install. See INSTALLATION for details.
|
||||
|
||||
The --enable-nistest option enables more thorough testing for the check target.
|
||||
See CHECKING for details.
|
||||
|
||||
The --enable-olt option is provided to suppress the entire online test facility.
|
||||
This option is provided for systems with a very limited resource budget and the
|
||||
ability to thoroughly test the RNG output by other means. When enabled, the online
|
||||
test system tests the output of the haveged random number generator using AIS-31
|
||||
test procedures A and B. Either or both tests may be run as a total failure check
|
||||
(a "tot" test) at initialization and/or continuously during all subsequent haveged
|
||||
operation - See the man page and the description at
|
||||
http://www.issihosts.com/haveged/ais31.html for further information.
|
||||
|
||||
The --enable-threads option is an experimental prototype for running multiple
|
||||
collection threads in a single haveged instance. The goal is to create a
|
||||
multi-core haveged that would spread collection overhead more evenly over the
|
||||
available cpu resources.
|
||||
|
||||
The --enable-tune option allows the on-line tuning facility to be suppressed.
|
||||
This is intended for systems with special needs and or a limited resource budget.
|
||||
Setting the option to 'yes' enables both the cpuid and virtual file system methods,
|
||||
a value of 'no' suppresses both methods. Individual tuning methods can be selected
|
||||
by setting the option to either 'cpuid' or 'vfs'. Note that the 'cpuid' method
|
||||
is always conditional on host type and will not be present if the hardware
|
||||
architecture does not support the instruction.
|
||||
|
||||
The haveged build does not modify CFLAGS and DFLAGS, so for example:
|
||||
|
||||
CFLAGS="-fpic -DGENERIC_DCACHE=32" LDFLAGS="-z now" ./configure --disable-tune
|
||||
|
||||
would configure the build for a manually-tuned, hardened daemon with a default
|
||||
data cache size of 32kb.
|
||||
|
||||
|
||||
CHECKING haveged
|
||||
|
||||
The build check target provides two test procedures for the build.
|
||||
|
||||
1. A "quick" check based upon and adaptation of the public domain ENT program.
|
||||
The "entest" program uses the ENT sources to subject a sample to the following:
|
||||
|
||||
a) The Chi-Square result must fall within acceptable bounds (>1% and <99 %)
|
||||
b) The entropy/character must exceed a minimum (7.5)
|
||||
c) The arithmetic mean must exceed a minimum (127.0)
|
||||
d) The monte-carlo approximation of PI must lie within error bounds (.5%)
|
||||
e) The Sequential Correlation Coefficient must be below a minimum (.8)
|
||||
|
||||
The program provides a pass-fail indication and an optional display of the
|
||||
results to stdout. The entest checks are quite weak and intended only as a
|
||||
quick sanity check.
|
||||
|
||||
2. An adaptation of the NIST Statistical Test Suite as adapted by Oliver
|
||||
Rochecouste of irisa.fr as part of the original havege project. More that 400
|
||||
tests are performed in a typical run. The program provides as pass-fail
|
||||
indication with detailed results reported in the nist.out file in the
|
||||
nist directory. You will need sit down with SP800-*.pdf available from the
|
||||
NIST to review the detailed results. AIS31 provides recommendations for the
|
||||
NIST test suite as 'additional tests'. See testing documentation at
|
||||
http://www.issihosts.com/haveged/ais31.html for further information.
|
||||
|
||||
The "quick" test is always part of the check target. The NIST suite is run only
|
||||
when --enable-nistest is 'yes'.
|
||||
|
||||
Both checks function the same way, haveged is run to collect a sample file in
|
||||
the test directory which is then analyzed by the test program. A pass-fail return
|
||||
is given in both cases, additional information is written to stdout. The input
|
||||
samples and the nist.out report are deleted by the clean make target.
|
||||
|
||||
Both test mechanisms are statistical and even a fully functional random number
|
||||
generator will experience occasional failures. It is not uncommon to see one or
|
||||
two failures in the NIST suite and the entest will occasionally fail with a small
|
||||
sample size (usually the Chi-Square test barks). Early haveged releases used a
|
||||
entest sample size of 1MB, this has been increased to 16MB because failures with
|
||||
that sample size were all too common. A 16MB sample will also deplete and refill
|
||||
the haveged collection area to exercise all buffer logic.
|
||||
|
||||
Users are encouraged to run their own external tests. The --number==0 option is
|
||||
a convenient means to pipe haveged output into external suites such as Dieharder,
|
||||
the TESTU01 batteries, or PractRand.
|
||||
|
||||
|
||||
RUNNING haveged
|
||||
|
||||
The following invocation arguments are always available:
|
||||
|
||||
--buffer , -b [] Buffer size [KW] - default : 128
|
||||
--data , -d [] Data cache size [KB], with fallback to 16
|
||||
--inst , -i [] Instruction cache size [KB], with fallback to 16
|
||||
--file , -f [] Sample output file - default: 'sample', '-' for stdout
|
||||
--number , -n [] Output size in [k|m|g|t]. 0 = unlimited to stdout
|
||||
--verbose , -v [] Verbose mask 0=none,1=summary,2=retries,4=timing,8=loop,16=code,32=test
|
||||
--help , -h This help
|
||||
|
||||
The "-b", "-d", "-i" options are needed only in special cases. Generator output
|
||||
should be validated after changes to these values.
|
||||
|
||||
If haveged is built with online testing enabled, the following is present
|
||||
|
||||
--onlinetest , -o [] [t<x>][c<x>] x=[a[n][w]][b[w]] 't'ot, 'c'ontinuous, default: ta8b"
|
||||
|
||||
The default configuration executes the "tot" test using AIS procedure B. At the completion
|
||||
of the tot test, the buffer is reloaded and any continuous tests will be run before
|
||||
data becomes available.
|
||||
|
||||
If haveged is built with threads support, the following is present
|
||||
|
||||
--threads , -t [] Number of threads
|
||||
|
||||
If daemon interface is enabled, the following options are available:
|
||||
|
||||
--Foreground , -F Run daemon in foreground, do not fork and detach,
|
||||
--pid , -p [] The location of the daemon pid file, default: /var/run/haveged.pid
|
||||
--run , -r [] 0=daemon,1=config info,>1=Write <r>KB sample file
|
||||
--write , -w [] Set write_wakeup_threshold [bits]
|
||||
|
||||
If haveged is running detached, diagnostic output is written to syslog, otherwise
|
||||
output is written to stderr.
|
||||
|
||||
If the daemon interface is enabled, non-zero "-r" options are used to test the
|
||||
haveged random number generator; the random number generator will be configured,
|
||||
the initial data collection pass will be executed, configuration details will be
|
||||
written to stdout, and a "-r" KB sample of output will be written to the sample
|
||||
output file for all "-r" > 1. The "-n" option provides a more friendly version
|
||||
of r > 1.
|
||||
|
||||
If the daemon interface and --run==1 is specified, or if --run is not available
|
||||
and --number is not specified a summary of build, tuning, and execution
|
||||
is displayed and haveged exits without generating data:
|
||||
|
||||
<prog>: ver: <ver>; arch: <arch>; vend: <vend>, build: (<opts>); collect: <collect>
|
||||
<prog>: cpu: <cpu> (<tune>);data: <data> (<tune>); inst: <inst> (<tune>); idx: <idx>; sz: <sz>
|
||||
<prog>: tot tests(<spec>): <score>; continuous tests(<spec>):<score> last entropy estimate <ent>
|
||||
<prog>: fills: <fills>, generated: <total>
|
||||
|
||||
where
|
||||
<prog> build: program name - normally haveged
|
||||
<ver> build: package version
|
||||
<arch> build: architecture: ia64, generic, ppc, s390, sparc, sparclite, x86
|
||||
<vend> build: vendor string of host from cpuid if available else 'generic'
|
||||
<opts> build: version of gcc used and build option flags - see below.
|
||||
<collect> tuning: collection buffer size
|
||||
<cpu> tuning: (sources list for cpu info, see below)
|
||||
<data> tuning: size, (sources list for L1 data cache)
|
||||
<inst> tuning: size, (sources list for L1 instruction cache)
|
||||
<idx> tuning: collector loops used/collector loops available
|
||||
<sz> tuning: collector size used/collector size available.
|
||||
<tune> tuning: tuning sources - see below
|
||||
<spec> exec: tests to be executed in --onlinetest format
|
||||
<ent> exec: last entropy estimate from procedure B.
|
||||
<score> exec: pass/fail counts for AIS test procedures
|
||||
<fills> exec: number of times buffer was filled
|
||||
<total> exec: number of bytes output
|
||||
|
||||
build option flags represent the ./configure options as:
|
||||
C=clock_gettime, D=diagnostic I=tune with cpuid, M=multi-core, T=online tests, V=tune with vfs
|
||||
|
||||
tuning sources are:
|
||||
D=default value, P=instance parameter, C=cpuid present,
|
||||
H=hyperthreading, A=AMD cpuid, A5=AMD fn5, A6=AMD fn6, A8=AMD fn8
|
||||
L2=Intel has leaf2, L4=Intel has leaf4, B=Intel leaf b,
|
||||
4=intel leaf4, V=virtual file system available
|
||||
VS=/sys/devices/system/cpu/cpu%d/cache/index<n>/level,
|
||||
VO=/sys/devices/system/cpu/online, VI=/proc/cpuinfo
|
||||
VC=/sys/devices/system/cpu
|
||||
|
||||
Sources displayed in parenthesis are white space separated lists of the above
|
||||
tokens. The "collector * used/collector *available" values indicate the fit of
|
||||
the haveged collection loop to the L1 instruction cache.
|
||||
|
||||
Items marked 'exec:' above have meaning only when data is generated. The display
|
||||
of test results is customized to match the test options specified. The last few
|
||||
lines of the build/tuning summary (those items marked 'exec:' above) also
|
||||
appear by themselves as the 'exec summary' in other circumstances.
|
||||
|
||||
In other circumstances, the completion of initialization is announced by a banner
|
||||
written to the log:
|
||||
|
||||
"<prog>: starting up"
|
||||
"Writing <n> byte output to <file>"
|
||||
|
||||
The first line above is used when running as a daemon, the second otherwise. If
|
||||
one or more online tests are running, test failures are logged as:
|
||||
|
||||
<prog>: AIS-31 <stage> procedure <proc>: <action> <bytes> bytes fill <fill>
|
||||
|
||||
where
|
||||
<stage> is either 'tot' or 'continuous'
|
||||
<proc> is either 'A' or 'B'
|
||||
<action> is either 'retry' or 'fail'
|
||||
<bytes> is number of bytes processed in procedure before failure
|
||||
<fill> is the number of times the buffer was filled
|
||||
|
||||
The exec summary is logged upon error or signal terminations. Other log output is
|
||||
controlled by --verbose:
|
||||
|
||||
A --verbose bit mask to obtain additional diagnostic information:
|
||||
|
||||
0x01 Show exec summary on termination, retry summary
|
||||
0x02 Show online test retry details
|
||||
0x04 Show timing for collections
|
||||
0x08 Show collection loop characteristics
|
||||
0x10 Show code offsets
|
||||
0x20 Show all online test completion details
|
||||
|
||||
The "--write" option will set proc/sys/kernel/random/write_wakeup_threshold to
|
||||
the given value. This is useful because this threshold is very small on some
|
||||
systems. A minimum of 1024 is recommended.
|
||||
|
||||
The file system interface supports file creation of up data setups up to 16tb or
|
||||
can be part of a piped command set. See the man(8) page for examples.
|
||||
|
||||
DIAGNOSTIC haveged build
|
||||
|
||||
The diagnostic build is a special version of the non-daemon configuration with a
|
||||
specialized --run option. The --run levels 0 and 1 correspond duplicate the
|
||||
equivalent application functions. One or more of the addition commands may be
|
||||
included depending on the --enable-diagnostic value chosen.
|
||||
|
||||
capture (--run 2)
|
||||
Run the RNG but collect the timer inputs in a separate buffer. The normal
|
||||
RNG output is discarded and replaced by the timer inputs. Requires additional
|
||||
buffering, performance is poor because 8 times as many fills are required to
|
||||
generate same amount of output.
|
||||
|
||||
inject tics (--run 4)
|
||||
Replace timer source with file input. Requires additional buffering, source
|
||||
must account for generator warmup.
|
||||
|
||||
inject data (--run 8)
|
||||
Bypass the normal RNG completely and read input directly into the output
|
||||
buffer. Generator warmup is skipped. This option is useful for validating
|
||||
the online test suite.
|
||||
|
||||
Knowledge of haveged internals is needed to use the special features effectively
|
||||
and interpret the results. The diagnostic build identifies itself as
|
||||
'havege_diagnostic' in -help display and other outputs.
|
||||
|
||||
|
||||
INSTALLATION
|
||||
|
||||
If the daemon interface is not enabled, the install places the executable in
|
||||
automake's bin_PROGRAMS directory and provides a man(8) page. A man(3) page
|
||||
is provided for the libtool build. If the daemon interface is enabled, the
|
||||
executable is installed in automake's sbin_PROGRAMS directory.
|
||||
|
||||
If the daemon interface is enabled, the --enable-init setting provides a simple
|
||||
template system to setup the init method. If --enable-init is set to none
|
||||
no action is taken. Otherwise, the template must reside in the init.d build
|
||||
directory and is selected by the setting. Template names "service.*" indicate
|
||||
that a systemd style init, while template names "sysv.*" are used for sysv
|
||||
style init scripts.
|
||||
|
||||
Sample sysv style templates are provided for linux standard base, sysv.lsb,
|
||||
and redhat systems, sysv.redhat , such as centos which have not moved to
|
||||
systemd style inits.
|
||||
|
||||
For systemd style installs, --enable-initdir specifies the systemd unit
|
||||
directory. If the setting is not specified (or is ''), the default value is
|
||||
obtained from hosts pkg-config query for systemdsystemunitdir. Sample systemd
|
||||
templates are provided for forking, service.forking, and non-forking,
|
||||
service.fedora, configurations. The non-forking configuration is recommended to
|
||||
avoid the overhead of PID file and minimize start-up cost.
|
||||
|
||||
Examples:
|
||||
|
||||
./configure --enable-init=service.redhat
|
||||
./configure --enable-init=sysv.lsb
|
||||
|
||||
Custom init scripts can be added as necessary by adding templates to the
|
||||
init.d directory.
|
||||
|
||||
A sample file, haveged.spec, is provided in the build root as a guide for
|
||||
those who want to build a rpm. As with init scripts, the sample may need
|
||||
customization before use. Other SPEC file examples can be found in the
|
||||
contrib directory (see EXTRAS for details).
|
||||
|
||||
|
||||
EXTRAS
|
||||
|
||||
The contrib directory contains bits and pieces that are not integrated into the
|
||||
distribution. Currently this directory contains build related utilities in
|
||||
the build directory and an unorganized collection of some of the tools used
|
||||
to analyze haveged in the diags directory.
|
||||
|
||||
The script contrib/build/build.sh organizes the build utilities. The script
|
||||
provides methods to toggle the use of libtool in the build in particularly
|
||||
problematic environments, a bootstrap to recover from automake error states
|
||||
and the option to build and run a devel sample program after the devel
|
||||
sub package has been built.
|
||||
|
||||
Several sample package spec files are provided as contrib/build/*.spec. The
|
||||
havege_sample.c source demonstrates usage of the havege.h API.
|
||||
|
||||
|
473
README.md
Normal file
473
README.md
Normal file
|
@ -0,0 +1,473 @@
|
|||

|
||||
|
||||
Haveged, an entropy source
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
Complete documentation on haveged can be found at http://www.issihosts.com/haveged/
|
||||
|
||||
Linux provides device interfaces (/dev/random and /dev/urandom) to a pool of
|
||||
random numbers collected from system interrupt service routines. On some
|
||||
systems, especially on those systems with high needs or limited user
|
||||
interaction, the standard collection mechanism cannot meet demand. In those
|
||||
cases, an adequate supply of random numbers can be maintained by feeding
|
||||
additional entropy into /dev/random pool via a file system interface. The
|
||||
haveged daemon was created to fulfill this function using random data generated
|
||||
by the HAVEGE algorithm.
|
||||
|
||||
The HAVEGE algorithm is based upon the indirect effects of unrelated hardware
|
||||
events on the instruction timing of a calculation that is sensitive to processor
|
||||
features such as branch predictors and instruction/data access mechanisms.
|
||||
Samples from a high-resolution timer are input into the algorithm to produce a
|
||||
stream of random data in a collection buffer. The algorithm requires no special
|
||||
privilege other than access to a high resolution timer, as provided by hardware
|
||||
instruction or a system call.
|
||||
|
||||
The HAVEGE mechanism is implemented in C using in-line assembly only where
|
||||
direct hardware access is needed. On modern compilers, compiler intrinsics are
|
||||
used to replace much if not all in-line assembly. The haveged implementation of
|
||||
HAVEGE adds two crucial features: automated tuning of the algorithm to an
|
||||
environment and a run time facility to verify the data generated in the
|
||||
collection buffer.
|
||||
|
||||
The haveged collection loop is tuned at run-time to match the size of the hosts
|
||||
L1 data and instruction caches. The size determination is made on the basis of
|
||||
the best fit to the following (low to high):
|
||||
|
||||
1. as a compiled default
|
||||
2. as determined by cpuid, if available
|
||||
3. as determined by the /sys file system, if available
|
||||
4. as specified by initialization parameters.
|
||||
|
||||
Run-time verification of collection buffer contents is based upon the
|
||||
methodology from the proposed AIS-31 standard from BSI, the German Federal
|
||||
Office for Information Security (Bundesamt für Sicherheit in der
|
||||
Informationstechnik). In the suggested configuration, haveged passes most of the
|
||||
requirements for a NTG.1 class device described in version two of the AIS-31
|
||||
specification.
|
||||
|
||||
The haveged implementation also provides an experimental feature to multiplex
|
||||
havege collections over multiple cpu cores. Interprocess coordination in this
|
||||
configuration sacrifices a significant fraction of haveged throughput in
|
||||
exchange for a cpu load spread over a number of processors.
|
||||
|
||||
All of the above features are contained within the haveged-devel sub package of
|
||||
haveged. The haveged package can be built with libtool to expose the devel sub
|
||||
package or without libtool if the devel library is not needed. In either case,
|
||||
the executable built contains a file system interface to haveged-devel features
|
||||
and an optional facility to feed havege output into the random device. The build
|
||||
system also provides "check" targets to test the output of the executable's
|
||||
random number generator through the file system interface.
|
||||
|
||||
TESTING haveged
|
||||
|
||||
Testing via build check targets has been part of the haveged distribution since
|
||||
the project moved to automake. Original tests were limited to a quick evaluation
|
||||
implemented as an adaptation of the open source ent tool from Fourmilab and a
|
||||
more thorough evaluation based upon the NIST SP800 test suite. Run time testing
|
||||
was added to haveged version 1.5 as part of an effort to loosely follow the RNG
|
||||
testing AIS-31 framework of the German Common Criteria organization, BSI.
|
||||
|
||||
The significant features of the AIS-31 framework are:
|
||||
|
||||
Run-time tests are broken into 2 groups, Procedure A containing 5 tests, and
|
||||
Procedure B containing 3 tests. Procedure A consists of performing a 48-bit
|
||||
disjointedness test on 64K sequences, followed by 257 repetitions of the four
|
||||
FIPS-140-1 tests and an auto-correlation test on successive 2000 bit sequences.
|
||||
Procedure B performs distribution tests for 10,000 occurrences of 1, 2, 3, 4 bit
|
||||
runs in successive samples, followed by a entropy estimate based upon on another
|
||||
256000+2560 bit sample. A sample must pass all individual tests to pass the
|
||||
procedure. An ideal RNG is expected to pass Procedure A with a probability of
|
||||
0.9987 and pass Procedure B with with a probability of 0.9998. One retry will be
|
||||
attempted to recover from the the failure of a single test in either procedure.
|
||||
The probability an ideal generator would fail the retry is nill.
|
||||
|
||||
Special features of the haveged implementation:
|
||||
|
||||
1) A failure of either procedure is a fatal error. In the case of haveged, the
|
||||
instance will terminate.
|
||||
2) The tests operate directly on the collection buffer after a fill. Performance
|
||||
costs are acceptable except for the auto-correlation test, test5. An option
|
||||
to skip test5 on some repetitions mitigates this problem.
|
||||
3) Tests can take place at start up (a "tot" test) or continuously as specified
|
||||
by a haveged parameter. In the continuous case, there is no implied alignment
|
||||
between the collection buffer and the testing context. Collection buffer
|
||||
contents will be released for consumption provided the buffer does not contain
|
||||
a failed individual test.
|
||||
4) The size of the input required to complete procedure B depends on the content.
|
||||
This means there is no fixed alignment of the test input in the collection
|
||||
buffer.
|
||||
5) Procedure retries are logged. Extended information is available with -v3. Retries
|
||||
are expected (see failure rates above) but normally only seen with output
|
||||
ranges north of a few GB.
|
||||
|
||||
More detailed information on the adaptation of the BIS framework can be found
|
||||
at http://www.issihosts.com/haveged/ais31.html
|
||||
|
||||
BUILDING haveged
|
||||
|
||||
This package originated on "Enterprise Linux 5" systems (RHEL 5 / CentOS 5 / SL
|
||||
5), but every effort has been made to retain and broaden the hardware support of
|
||||
the original HAVEGE implementation. The package uses the automake build system.
|
||||
By default, the build uses a libtool build to expose haveged-devel. The
|
||||
contrib/build directory contains a build.sh script to toggle the libtool
|
||||
requirement and recover from some autotools failures. Change directory to the
|
||||
build directory and type ./build.sh for options.
|
||||
|
||||
The configure process uses hardware detection via config.sub or the configure
|
||||
"-host" command line argument. The configure "host" variable is used to select
|
||||
in-line assembly or compiler intrinsics appropriate to the build target.
|
||||
|
||||
Currently supported hosts are:
|
||||
|
||||
1. x86
|
||||
2. ia64
|
||||
3. powerpc
|
||||
4. s390
|
||||
5. sparc
|
||||
6. sparclite
|
||||
7. generic
|
||||
|
||||
The generic host type is provided for those systems without user level access to
|
||||
a high-resolution system timer. In this case, the --enable-clock_gettime option
|
||||
is set to 'yes'.
|
||||
|
||||
The following build options are available to "./configure":
|
||||
|
||||
1. --enable-clock_gettime (default 'no' for recognized hosts)
|
||||
2. --enable-daemon (default 'yes' if Linux)
|
||||
3. --enable-diagnostic (default 'no')
|
||||
4. --enable-init (type, default 'no')
|
||||
5. --enable-initdir (default '' unless enable--init="service.*")
|
||||
6. --enable-nistest (default 'no' but recommended)
|
||||
7. --enable-olt (default 'yes')
|
||||
8. --enable-threads (experimental)
|
||||
9. --enable-tune (default 'yes')
|
||||
|
||||
Detailed option information is available by typing "./configure --help". For
|
||||
options xxx that take "yes/no" arguments, --disable-xxx may be used as the
|
||||
inverse of --enable-xxx.
|
||||
|
||||
If --enable-clock_gettime() is 'yes', the clock_gettime(CLOCK_MONOTONIC) system
|
||||
call will be used as a timer source. This option defaults to 'yes' for generic
|
||||
host builds and 'no' otherwise. This option may proved useful if access to time
|
||||
hardware is privileged. Due to variability of clock_gettime() implementations,
|
||||
the adequacy of the clock_gettime() resolution cannot be known until run time.
|
||||
It is strongly advised to use run-time testing if this option is used.
|
||||
|
||||
If --enable-daemon is 'yes', ioctl access required to the random device and
|
||||
read-write access to the /proc virtual file system is required. The daemon may
|
||||
be run in the foreground or fork into the background based upon a command line
|
||||
argument. The daemon interface targets the 2.6 and later kernel and may not work
|
||||
on 2.4 kernels due to difference in the random interface between those two
|
||||
kernel versions. The change in the proc file system from pool size expressed in
|
||||
bytes to pool size expressed in bits has been taken into account, other changes
|
||||
may be required. This option is 'no' when diagnostic modes are enabled. If
|
||||
the option is no the executable is installed in the user bin directory instead
|
||||
of the sbin directory.
|
||||
|
||||
If --enable-diagnostic is 'yes', the capture and inject diagnostic interfaces
|
||||
are enabled. The capture or inject diagnostic may be enabled singly by setting
|
||||
the option to 'capture' or 'inject'. A setting for any value other than 'no'
|
||||
for this option forces --enable-daemon=no. See DIAGNOSTICS below for details.
|
||||
|
||||
The --enable-init option is active only when --enable-daemon is 'yes'. This
|
||||
value can specify a template to be used in the installation of an init method
|
||||
by the build's install target. The default value, 'no', disables the feature.
|
||||
Other values can be used to install a traditional systemv init script or
|
||||
systemd unit definition. See INSTALLATION for details.
|
||||
|
||||
The --enable-initdir is active only when --enable-init='service.*', i.e. a
|
||||
systemd install. See INSTALLATION for details.
|
||||
|
||||
The --enable-nistest option enables more thorough testing for the check target.
|
||||
See CHECKING for details.
|
||||
|
||||
The --enable-olt option is provided to suppress the entire online test facility.
|
||||
This option is provided for systems with a very limited resource budget and the
|
||||
ability to thoroughly test the RNG output by other means. When enabled, the online
|
||||
test system tests the output of the haveged random number generator using AIS-31
|
||||
test procedures A and B. Either or both tests may be run as a total failure check
|
||||
(a "tot" test) at initialization and/or continuously during all subsequent haveged
|
||||
operation - See the man page and the description at
|
||||
http://www.issihosts.com/haveged/ais31.html for further information.
|
||||
|
||||
The --enable-threads option is an experimental prototype for running multiple
|
||||
collection threads in a single haveged instance. The goal is to create a
|
||||
multi-core haveged that would spread collection overhead more evenly over the
|
||||
available cpu resources.
|
||||
|
||||
The --enable-tune option allows the on-line tuning facility to be suppressed.
|
||||
This is intended for systems with special needs and or a limited resource budget.
|
||||
Setting the option to 'yes' enables both the cpuid and virtual file system methods,
|
||||
a value of 'no' suppresses both methods. Individual tuning methods can be selected
|
||||
by setting the option to either 'cpuid' or 'vfs'. Note that the 'cpuid' method
|
||||
is always conditional on host type and will not be present if the hardware
|
||||
architecture does not support the instruction.
|
||||
|
||||
The haveged build does not modify CFLAGS and DFLAGS, so for example:
|
||||
|
||||
CFLAGS="-fpic -DGENERIC_DCACHE=32" LDFLAGS="-z now" ./configure --disable-tune
|
||||
|
||||
would configure the build for a manually-tuned, hardened daemon with a default
|
||||
data cache size of 32kb.
|
||||
|
||||
|
||||
CHECKING haveged
|
||||
|
||||
The build check target provides two test procedures for the build.
|
||||
|
||||
1. A "quick" check based upon and adaptation of the public domain ENT program.
|
||||
The "entest" program uses the ENT sources to subject a sample to the following:
|
||||
|
||||
a) The Chi-Square result must fall within acceptable bounds (>1% and <99 %)
|
||||
b) The entropy/character must exceed a minimum (7.5)
|
||||
c) The arithmetic mean must exceed a minimum (127.0)
|
||||
d) The monte-carlo approximation of PI must lie within error bounds (.5%)
|
||||
e) The Sequential Correlation Coefficient must be below a minimum (.8)
|
||||
|
||||
The program provides a pass-fail indication and an optional display of the
|
||||
results to stdout. The entest checks are quite weak and intended only as a
|
||||
quick sanity check.
|
||||
|
||||
2. An adaptation of the NIST Statistical Test Suite as adapted by Oliver
|
||||
Rochecouste of irisa.fr as part of the original havege project. More that 400
|
||||
tests are performed in a typical run. The program provides as pass-fail
|
||||
indication with detailed results reported in the nist.out file in the
|
||||
nist directory. You will need sit down with SP800-*.pdf available from the
|
||||
NIST to review the detailed results. AIS31 provides recommendations for the
|
||||
NIST test suite as 'additional tests'. See testing documentation at
|
||||
http://www.issihosts.com/haveged/ais31.html for further information.
|
||||
|
||||
The "quick" test is always part of the check target. The NIST suite is run only
|
||||
when --enable-nistest is 'yes'.
|
||||
|
||||
Both checks function the same way, haveged is run to collect a sample file in
|
||||
the test directory which is then analyzed by the test program. A pass-fail return
|
||||
is given in both cases, additional information is written to stdout. The input
|
||||
samples and the nist.out report are deleted by the clean make target.
|
||||
|
||||
Both test mechanisms are statistical and even a fully functional random number
|
||||
generator will experience occasional failures. It is not uncommon to see one or
|
||||
two failures in the NIST suite and the entest will occasionally fail with a small
|
||||
sample size (usually the Chi-Square test barks). Early haveged releases used a
|
||||
entest sample size of 1MB, this has been increased to 16MB because failures with
|
||||
that sample size were all too common. A 16MB sample will also deplete and refill
|
||||
the haveged collection area to exercise all buffer logic.
|
||||
|
||||
Users are encouraged to run their own external tests. The --number==0 option is
|
||||
a convenient means to pipe haveged output into external suites such as Dieharder,
|
||||
the TESTU01 batteries, or PractRand.
|
||||
|
||||
|
||||
RUNNING haveged
|
||||
|
||||
The following invocation arguments are always available:
|
||||
|
||||
--buffer , -b [] Buffer size [KW] - default : 128
|
||||
--data , -d [] Data cache size [KB], with fallback to 16
|
||||
--inst , -i [] Instruction cache size [KB], with fallback to 16
|
||||
--file , -f [] Sample output file - default: 'sample', '-' for stdout
|
||||
--number , -n [] Output size in [k|m|g|t]. 0 = unlimited to stdout
|
||||
--verbose , -v [] Verbose mask 0=none,1=summary,2=retries,4=timing,8=loop,16=code,32=test
|
||||
--help , -h This help
|
||||
|
||||
The "-b", "-d", "-i" options are needed only in special cases. Generator output
|
||||
should be validated after changes to these values.
|
||||
|
||||
If haveged is built with online testing enabled, the following is present
|
||||
|
||||
--onlinetest , -o [] [t<x>][c<x>] x=[a[n][w]][b[w]] 't'ot, 'c'ontinuous, default: ta8b"
|
||||
|
||||
The default configuration executes the "tot" test using AIS procedure B. At the completion
|
||||
of the tot test, the buffer is reloaded and any continuous tests will be run before
|
||||
data becomes available.
|
||||
|
||||
If haveged is built with threads support, the following is present
|
||||
|
||||
--threads , -t [] Number of threads
|
||||
|
||||
If daemon interface is enabled, the following options are available:
|
||||
|
||||
--Foreground , -F Run daemon in foreground, do not fork and detach,
|
||||
--pid , -p [] The location of the daemon pid file, default: /var/run/haveged.pid
|
||||
--run , -r [] 0=daemon,1=config info,>1=Write <r>KB sample file
|
||||
--write , -w [] Set write_wakeup_threshold [bits]
|
||||
|
||||
If haveged is running detached, diagnostic output is written to syslog, otherwise
|
||||
output is written to stderr.
|
||||
|
||||
If the daemon interface is enabled, non-zero "-r" options are used to test the
|
||||
haveged random number generator; the random number generator will be configured,
|
||||
the initial data collection pass will be executed, configuration details will be
|
||||
written to stdout, and a "-r" KB sample of output will be written to the sample
|
||||
output file for all "-r" > 1. The "-n" option provides a more friendly version
|
||||
of r > 1.
|
||||
|
||||
If the daemon interface and --run==1 is specified, or if --run is not available
|
||||
and --number is not specified a summary of build, tuning, and execution
|
||||
is displayed and haveged exits without generating data:
|
||||
|
||||
<prog>: ver: <ver>; arch: <arch>; vend: <vend>, build: (<opts>); collect: <collect>
|
||||
<prog>: cpu: <cpu> (<tune>);data: <data> (<tune>); inst: <inst> (<tune>); idx: <idx>; sz: <sz>
|
||||
<prog>: tot tests(<spec>): <score>; continuous tests(<spec>):<score> last entropy estimate <ent>
|
||||
<prog>: fills: <fills>, generated: <total>
|
||||
|
||||
where
|
||||
<prog> build: program name - normally haveged
|
||||
<ver> build: package version
|
||||
<arch> build: architecture: ia64, generic, ppc, s390, sparc, sparclite, x86
|
||||
<vend> build: vendor string of host from cpuid if available else 'generic'
|
||||
<opts> build: version of gcc used and build option flags - see below.
|
||||
<collect> tuning: collection buffer size
|
||||
<cpu> tuning: (sources list for cpu info, see below)
|
||||
<data> tuning: size, (sources list for L1 data cache)
|
||||
<inst> tuning: size, (sources list for L1 instruction cache)
|
||||
<idx> tuning: collector loops used/collector loops available
|
||||
<sz> tuning: collector size used/collector size available.
|
||||
<tune> tuning: tuning sources - see below
|
||||
<spec> exec: tests to be executed in --onlinetest format
|
||||
<ent> exec: last entropy estimate from procedure B.
|
||||
<score> exec: pass/fail counts for AIS test procedures
|
||||
<fills> exec: number of times buffer was filled
|
||||
<total> exec: number of bytes output
|
||||
|
||||
build option flags represent the ./configure options as:
|
||||
C=clock_gettime, D=diagnostic I=tune with cpuid, M=multi-core, T=online tests, V=tune with vfs
|
||||
|
||||
tuning sources are:
|
||||
D=default value, P=instance parameter, C=cpuid present,
|
||||
H=hyperthreading, A=AMD cpuid, A5=AMD fn5, A6=AMD fn6, A8=AMD fn8
|
||||
L2=Intel has leaf2, L4=Intel has leaf4, B=Intel leaf b,
|
||||
4=intel leaf4, V=virtual file system available
|
||||
VS=/sys/devices/system/cpu/cpu%d/cache/index<n>/level,
|
||||
VO=/sys/devices/system/cpu/online, VI=/proc/cpuinfo
|
||||
VC=/sys/devices/system/cpu
|
||||
|
||||
Sources displayed in parenthesis are white space separated lists of the above
|
||||
tokens. The "collector * used/collector *available" values indicate the fit of
|
||||
the haveged collection loop to the L1 instruction cache.
|
||||
|
||||
Items marked 'exec:' above have meaning only when data is generated. The display
|
||||
of test results is customized to match the test options specified. The last few
|
||||
lines of the build/tuning summary (those items marked 'exec:' above) also
|
||||
appear by themselves as the 'exec summary' in other circumstances.
|
||||
|
||||
In other circumstances, the completion of initialization is announced by a banner
|
||||
written to the log:
|
||||
|
||||
"<prog>: starting up"
|
||||
"Writing <n> byte output to <file>"
|
||||
|
||||
The first line above is used when running as a daemon, the second otherwise. If
|
||||
one or more online tests are running, test failures are logged as:
|
||||
|
||||
<prog>: AIS-31 <stage> procedure <proc>: <action> <bytes> bytes fill <fill>
|
||||
|
||||
where
|
||||
<stage> is either 'tot' or 'continuous'
|
||||
<proc> is either 'A' or 'B'
|
||||
<action> is either 'retry' or 'fail'
|
||||
<bytes> is number of bytes processed in procedure before failure
|
||||
<fill> is the number of times the buffer was filled
|
||||
|
||||
The exec summary is logged upon error or signal terminations. Other log output is
|
||||
controlled by --verbose:
|
||||
|
||||
A --verbose bit mask to obtain additional diagnostic information:
|
||||
|
||||
0x01 Show exec summary on termination, retry summary
|
||||
0x02 Show online test retry details
|
||||
0x04 Show timing for collections
|
||||
0x08 Show collection loop characteristics
|
||||
0x10 Show code offsets
|
||||
0x20 Show all online test completion details
|
||||
|
||||
The "--write" option will set proc/sys/kernel/random/write_wakeup_threshold to
|
||||
the given value. This is useful because this threshold is very small on some
|
||||
systems. A minimum of 1024 is recommended.
|
||||
|
||||
The file system interface supports file creation of up data setups up to 16tb or
|
||||
can be part of a piped command set. See the man(8) page for examples.
|
||||
|
||||
DIAGNOSTIC haveged build
|
||||
|
||||
The diagnostic build is a special version of the non-daemon configuration with a
|
||||
specialized --run option. The --run levels 0 and 1 correspond duplicate the
|
||||
equivalent application functions. One or more of the addition commands may be
|
||||
included depending on the --enable-diagnostic value chosen.
|
||||
|
||||
capture (--run 2)
|
||||
Run the RNG but collect the timer inputs in a separate buffer. The normal
|
||||
RNG output is discarded and replaced by the timer inputs. Requires additional
|
||||
buffering, performance is poor because 8 times as many fills are required to
|
||||
generate same amount of output.
|
||||
|
||||
inject tics (--run 4)
|
||||
Replace timer source with file input. Requires additional buffering, source
|
||||
must account for generator warmup.
|
||||
|
||||
inject data (--run 8)
|
||||
Bypass the normal RNG completely and read input directly into the output
|
||||
buffer. Generator warmup is skipped. This option is useful for validating
|
||||
the online test suite.
|
||||
|
||||
Knowledge of haveged internals is needed to use the special features effectively
|
||||
and interpret the results. The diagnostic build identifies itself as
|
||||
'havege_diagnostic' in -help display and other outputs.
|
||||
|
||||
|
||||
INSTALLATION
|
||||
|
||||
If the daemon interface is not enabled, the install places the executable in
|
||||
automake's bin_PROGRAMS directory and provides a man(8) page. A man(3) page
|
||||
is provided for the libtool build. If the daemon interface is enabled, the
|
||||
executable is installed in automake's sbin_PROGRAMS directory.
|
||||
|
||||
If the daemon interface is enabled, the --enable-init setting provides a simple
|
||||
template system to setup the init method. If --enable-init is set to none
|
||||
no action is taken. Otherwise, the template must reside in the init.d build
|
||||
directory and is selected by the setting. Template names "service.*" indicate
|
||||
that a systemd style init, while template names "sysv.*" are used for sysv
|
||||
style init scripts.
|
||||
|
||||
Sample sysv style templates are provided for linux standard base, sysv.lsb,
|
||||
and redhat systems, sysv.redhat , such as centos which have not moved to
|
||||
systemd style inits.
|
||||
|
||||
For systemd style installs, --enable-initdir specifies the systemd unit
|
||||
directory. If the setting is not specified (or is ''), the default value is
|
||||
obtained from hosts pkg-config query for systemdsystemunitdir. Sample systemd
|
||||
templates are provided for forking, service.forking, and non-forking,
|
||||
service.fedora, configurations. The non-forking configuration is recommended to
|
||||
avoid the overhead of PID file and minimize start-up cost.
|
||||
|
||||
Examples:
|
||||
|
||||
./configure --enable-init=service.redhat
|
||||
./configure --enable-init=sysv.lsb
|
||||
|
||||
Custom init scripts can be added as necessary by adding templates to the
|
||||
init.d directory.
|
||||
|
||||
A sample file, haveged.spec, is provided in the build root as a guide for
|
||||
those who want to build a rpm. As with init scripts, the sample may need
|
||||
customization before use. Other SPEC file examples can be found in the
|
||||
contrib directory (see EXTRAS for details).
|
||||
|
||||
|
||||
EXTRAS
|
||||
|
||||
The contrib directory contains bits and pieces that are not integrated into the
|
||||
distribution. Currently this directory contains build related utilities in
|
||||
the build directory and an unorganized collection of some of the tools used
|
||||
to analyze haveged in the diags directory.
|
||||
|
||||
The script contrib/build/build.sh organizes the build utilities. The script
|
||||
provides methods to toggle the use of libtool in the build in particularly
|
||||
problematic environments, a bootstrap to recover from automake error states
|
||||
and the option to build and run a devel sample program after the devel
|
||||
sub package has been built.
|
||||
|
||||
Several sample package spec files are provided as contrib/build/*.spec. The
|
||||
havege_sample.c source demonstrates usage of the havege.h API.
|
9869
aclocal.m4
vendored
Normal file
9869
aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load diff
285
config.h.in
Normal file
285
config.h.in
Normal file
|
@ -0,0 +1,285 @@
|
|||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 for clock_gettime */
|
||||
#undef ENABLE_CLOCK_GETTIME
|
||||
|
||||
/* Library version */
|
||||
#undef HAVEGE_LIB_VERSION
|
||||
|
||||
/* Define to 1 if you have the `accept' function. */
|
||||
#undef HAVE_ACCEPT
|
||||
|
||||
/* Define to 1 if you have the `accept4' function. */
|
||||
#undef HAVE_ACCEPT4
|
||||
|
||||
/* Define to 1 if you have the `bind' function. */
|
||||
#undef HAVE_BIND
|
||||
|
||||
/* Define to 1 if you have the `connect' function. */
|
||||
#undef HAVE_CONNECT
|
||||
|
||||
/* Define to 1 if you have the <cpuid.h> header file. */
|
||||
#undef HAVE_CPUID_H
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the `execv' function. */
|
||||
#undef HAVE_EXECV
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the `floor' function. */
|
||||
#undef HAVE_FLOOR
|
||||
|
||||
/* Define to 1 if you have the `getsockopt' function. */
|
||||
#undef HAVE_GETSOCKOPT
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define generic host */
|
||||
#undef HAVE_ISA_GENERIC
|
||||
|
||||
/* Define to 1 for ia64 */
|
||||
#undef HAVE_ISA_IA64
|
||||
|
||||
/* Define to 1 for ppc */
|
||||
#undef HAVE_ISA_PPC
|
||||
|
||||
/* Define to 1 for s390 */
|
||||
#undef HAVE_ISA_S390
|
||||
|
||||
/* Define to 1 for sparc */
|
||||
#undef HAVE_ISA_SPARC
|
||||
|
||||
/* Define to 1 for sparclite */
|
||||
#undef HAVE_ISA_SPARCLITE
|
||||
|
||||
/* Define to 1 for x86 */
|
||||
#undef HAVE_ISA_X86
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#undef HAVE_LIMITS_H
|
||||
|
||||
/* Define to 1 if you have the <linux/random.h> header file. */
|
||||
#undef HAVE_LINUX_RANDOM_H
|
||||
|
||||
/* Define to 1 if you have the `listen' function. */
|
||||
#undef HAVE_LISTEN
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `memset' function. */
|
||||
#undef HAVE_MEMSET
|
||||
|
||||
/* Define to 1 if you have the `pow' function. */
|
||||
#undef HAVE_POW
|
||||
|
||||
/* Define to 1 if you have the `pselect' function. */
|
||||
#undef HAVE_PSELECT
|
||||
|
||||
/* Define to 1 if you have the `recv' function. */
|
||||
#undef HAVE_RECV
|
||||
|
||||
/* Define to 1 if you have the <sched.h> header file. */
|
||||
#undef HAVE_SCHED_H
|
||||
|
||||
/* Define to 1 if you have the `sched_yield' function. */
|
||||
#undef HAVE_SCHED_YIELD
|
||||
|
||||
/* Define to 1 if you have the `select' function. */
|
||||
#undef HAVE_SELECT
|
||||
|
||||
/* Define to 1 if you have the <semaphore.h> header file. */
|
||||
#undef HAVE_SEMAPHORE_H
|
||||
|
||||
/* Define to 1 if you have the `send' function. */
|
||||
#undef HAVE_SEND
|
||||
|
||||
/* Define to 1 if you have the `setsockopt' function. */
|
||||
#undef HAVE_SETSOCKOPT
|
||||
|
||||
/* Define to 1 if you have the `socket' function. */
|
||||
#undef HAVE_SOCKET
|
||||
|
||||
/* Define to 1 if you have the `sqrt' function. */
|
||||
#undef HAVE_SQRT
|
||||
|
||||
/* Define to 1 if you have the <stdarg.h> header file. */
|
||||
#undef HAVE_STDARG_H
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#undef HAVE_STDDEF_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdio.h> header file. */
|
||||
#undef HAVE_STDIO_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* User visible structure for SCM_CREDENTIALS message */
|
||||
#undef HAVE_STRUCT_UCRED
|
||||
|
||||
/* Define to 1 if you have the <syslog.h> header file. */
|
||||
#undef HAVE_SYSLOG_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||
#undef HAVE_SYS_IOCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#undef HAVE_SYS_MMAN_H
|
||||
|
||||
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/un.h> header file. */
|
||||
#undef HAVE_SYS_UN_H
|
||||
|
||||
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
|
||||
/* Define to 1 if you have the <time.h> header file. */
|
||||
#undef HAVE_TIME_H
|
||||
|
||||
/* Define to 1 if the system has the type `uint32_t'. */
|
||||
#undef HAVE_UINT32_T
|
||||
|
||||
/* Define to 1 if the system has the type `uint8_t'. */
|
||||
#undef HAVE_UINT8_T
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the <x86intrin.h> header file. */
|
||||
#undef HAVE_X86INTRIN_H
|
||||
|
||||
/* Define to 1 if you have the `__rdtsc' function. */
|
||||
#undef HAVE___RDTSC
|
||||
|
||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Define to 1 to suppress daemon interface */
|
||||
#undef NO_DAEMON
|
||||
|
||||
/* Define to single collection thread */
|
||||
#undef NUMBER_CORES
|
||||
|
||||
/* Define to 1 for online test features */
|
||||
#undef ONLINE_TESTS_ENABLE
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define to 1 for injection diagnostic */
|
||||
#undef RAW_IN_ENABLE
|
||||
|
||||
/* Define to 1 for capture diagnostic */
|
||||
#undef RAW_OUT_ENABLE
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
/* Define to the type of arg 1 for `select'. */
|
||||
#undef SELECT_TYPE_ARG1
|
||||
|
||||
/* Define to the type of args 2, 3 and 4 for `select'. */
|
||||
#undef SELECT_TYPE_ARG234
|
||||
|
||||
/* Define to the type of arg 5 for `select'. */
|
||||
#undef SELECT_TYPE_ARG5
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
/* Define to 1 to tune with host cpuid */
|
||||
#undef TUNING_CPUID_ENABLE
|
||||
|
||||
/* Define to 1 to tune wiht host vfs */
|
||||
#undef TUNING_VFS_ENABLE
|
||||
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
#endif
|
||||
/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# undef _GNU_SOURCE
|
||||
#endif
|
||||
/* Enable threading extensions on Solaris. */
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
# undef _POSIX_PTHREAD_SEMANTICS
|
||||
#endif
|
||||
/* Enable extensions on HP NonStop. */
|
||||
#ifndef _TANDEM_SOURCE
|
||||
# undef _TANDEM_SOURCE
|
||||
#endif
|
||||
/* Enable general extensions on Solaris. */
|
||||
#ifndef __EXTENSIONS__
|
||||
# undef __EXTENSIONS__
|
||||
#endif
|
||||
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
348
config/compile
Executable file
348
config/compile
Executable file
|
@ -0,0 +1,348 @@
|
|||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
1486
config/config.guess
vendored
Executable file
1486
config/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load diff
1790
config/config.sub
vendored
Executable file
1790
config/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load diff
518
config/install-sh
Executable file
518
config/install-sh
Executable file
|
@ -0,0 +1,518 @@
|
|||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2018-03-11.20; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# 'make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
tab=' '
|
||||
nl='
|
||||
'
|
||||
IFS=" $tab$nl"
|
||||
|
||||
# Set DOITPROG to "echo" to test this script.
|
||||
|
||||
doit=${DOITPROG-}
|
||||
doit_exec=${doit:-exec}
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
is_target_a_directory=possibly
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t)
|
||||
is_target_a_directory=always
|
||||
dst_arg=$2
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-T) is_target_a_directory=never;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# We allow the use of options -d and -T together, by making -d
|
||||
# take the precedence; this is for compatibility with GNU install.
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
if test -n "$dst_arg"; then
|
||||
echo "$0: target directory not allowed when installing a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call 'install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||
if test ! -d "$dst_arg"; then
|
||||
echo "$0: $dst_arg: Is not a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
trap "ret=130; $do_exit" 2
|
||||
trap "ret=141; $do_exit" 13
|
||||
trap "ret=143; $do_exit" 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $src in
|
||||
-* | [=\(\)!]) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
dst=$dst_arg
|
||||
|
||||
# If destination is a directory, append the input filename.
|
||||
if test -d "$dst"; then
|
||||
if test "$is_target_a_directory" = never; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dstbase=`basename "$src"`
|
||||
case $dst in
|
||||
*/) dst=$dst$dstbase;;
|
||||
*) dst=$dst/$dstbase;;
|
||||
esac
|
||||
dstdir_status=0
|
||||
else
|
||||
dstdir=`dirname "$dst"`
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
case $dstdir in
|
||||
*/) dstdirslash=$dstdir;;
|
||||
*) dstdirslash=$dstdir/;;
|
||||
esac
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
# Note that $RANDOM variable is not portable (e.g. dash); Use it
|
||||
# here however when possible just to lower collision chance.
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
|
||||
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||
# directory is successfully created first before we actually test
|
||||
# 'mkdir -p' feature.
|
||||
if (umask $mkdir_umask &&
|
||||
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
test_tmpdir="$tmpdir/a"
|
||||
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test X"$d" = X && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=${dstdirslash}_inst.$$_
|
||||
rmtmp=${dstdirslash}_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
set +f &&
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
11149
config/ltmain.sh
Normal file
11149
config/ltmain.sh
Normal file
File diff suppressed because it is too large
Load diff
215
config/missing
Executable file
215
config/missing
Executable file
|
@ -0,0 +1,215 @@
|
|||
#! /bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
|
||||
--is-lightweight)
|
||||
# Used by our autoconf macros to check whether the available missing
|
||||
# script is modern enough.
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--run)
|
||||
# Back-compat with the calling convention used by older automake.
|
||||
shift
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||
to PROGRAM being missing or too old.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal autoconf autoheader autom4te automake makeinfo
|
||||
bison yacc flex lex help2man
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||
'g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: unknown '$1' option"
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Run the given program, remember its exit status.
|
||||
"$@"; st=$?
|
||||
|
||||
# If it succeeded, we are done.
|
||||
test $st -eq 0 && exit 0
|
||||
|
||||
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||
# passed; such an option is passed most likely to detect whether the
|
||||
# program is present and works.
|
||||
case $2 in --version|--help) exit $st;; esac
|
||||
|
||||
# Exit code 63 means version mismatch. This often happens when the user
|
||||
# tries to use an ancient version of a tool on a file that requires a
|
||||
# minimum version.
|
||||
if test $st -eq 63; then
|
||||
msg="probably too old"
|
||||
elif test $st -eq 127; then
|
||||
# Program was missing.
|
||||
msg="missing on your system"
|
||||
else
|
||||
# Program was found and executed, but failed. Give up.
|
||||
exit $st
|
||||
fi
|
||||
|
||||
perl_URL=https://www.perl.org/
|
||||
flex_URL=https://github.com/westes/flex
|
||||
gnu_software_URL=https://www.gnu.org/software
|
||||
|
||||
program_details ()
|
||||
{
|
||||
case $1 in
|
||||
aclocal|automake)
|
||||
echo "The '$1' program is part of the GNU Automake package:"
|
||||
echo "<$gnu_software_URL/automake>"
|
||||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/autoconf>"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
autoconf|autom4te|autoheader)
|
||||
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||
echo "<$gnu_software_URL/autoconf/>"
|
||||
echo "It also requires GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice ()
|
||||
{
|
||||
# Normalize program name to check for.
|
||||
normalized_program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
printf '%s\n' "'$1' is $msg."
|
||||
|
||||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||
case $normalized_program in
|
||||
autoconf*)
|
||||
echo "You should only need it if you modified 'configure.ac',"
|
||||
echo "or m4 files included by it."
|
||||
program_details 'autoconf'
|
||||
;;
|
||||
autoheader*)
|
||||
echo "You should only need it if you modified 'acconfig.h' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'autoheader'
|
||||
;;
|
||||
automake*)
|
||||
echo "You should only need it if you modified 'Makefile.am' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'automake'
|
||||
;;
|
||||
aclocal*)
|
||||
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'aclocal'
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'autom4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
echo "You should only need it if you modified a '.y' file."
|
||||
echo "You may want to install the GNU Bison package:"
|
||||
echo "<$gnu_software_URL/bison/>"
|
||||
;;
|
||||
lex*|flex*)
|
||||
echo "You should only need it if you modified a '.l' file."
|
||||
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||
echo "<$flex_URL>"
|
||||
;;
|
||||
help2man*)
|
||||
echo "You should only need it if you modified a dependency" \
|
||||
"of a man page."
|
||||
echo "You may want to install the GNU Help2man package:"
|
||||
echo "<$gnu_software_URL/help2man/>"
|
||||
;;
|
||||
makeinfo*)
|
||||
echo "You should only need it if you modified a '.texi' file, or"
|
||||
echo "any other file indirectly affecting the aspect of the manual."
|
||||
echo "You might want to install the Texinfo package:"
|
||||
echo "<$gnu_software_URL/texinfo/>"
|
||||
echo "The spurious makeinfo call might also be the consequence of"
|
||||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||
echo "want to install GNU make:"
|
||||
echo "<$gnu_software_URL/make/>"
|
||||
;;
|
||||
*)
|
||||
echo "You might have modified some files without having the proper"
|
||||
echo "tools for further handling them. Check the 'README' file, it"
|
||||
echo "often tells you about the needed prerequisites for installing"
|
||||
echo "this package. You may also peek at any GNU archive site, in"
|
||||
echo "case some other package contains this missing '$1' program."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||
-e '2,$s/^/ /' >&2
|
||||
|
||||
# Propagate the correct exit status (expected to be 127 for a program
|
||||
# not found, 63 for a program that failed due to version mismatch).
|
||||
exit $st
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
262
configure.ac
Normal file
262
configure.ac
Normal file
|
@ -0,0 +1,262 @@
|
|||
## Process this file with autoconf to produce a configure script.
|
||||
|
||||
## Minimum Autoconf version
|
||||
|
||||
AC_PREREQ([2.59])
|
||||
AC_INIT([haveged],[1.9.14])
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
AM_INIT_AUTOMAKE([subdir-objects no-dependencies])
|
||||
AC_CONFIG_SRCDIR([src/haveged.c])
|
||||
AC_CHECK_TYPES([uint32_t, uint8_t])
|
||||
HA_LDFLAGS=""
|
||||
|
||||
##libtool_start##
|
||||
LT_INIT
|
||||
AC_PROG_LIBTOOL
|
||||
AM_ENABLE_SHARED
|
||||
AM_DISABLE_STATIC
|
||||
LT_LANG([C])
|
||||
HAVEGE_LT_VERSION="2:0:0"
|
||||
AC_SUBST(HAVEGE_LT_VERSION)
|
||||
AC_DEFINE_UNQUOTED(HAVEGE_LIB_VERSION, "$HAVEGE_LT_VERSION", [Library version])
|
||||
##libtool_end##
|
||||
|
||||
## Make clock_gettime configurable
|
||||
AC_ARG_ENABLE(clock_gettime,
|
||||
AS_HELP_STRING([--enable-clock_gettime=[no/yes]],[Enable clock_gettime [default=yes if no rdtsc]]),
|
||||
, enable_clock_gettime="x")
|
||||
|
||||
## Make build w/o daemon interface configurable
|
||||
AC_ARG_ENABLE(daemon,
|
||||
AS_HELP_STRING([--enable-daemon=[yes/no]],[Enable daemon [default=yes if linux]]),
|
||||
, enable_daemon="x" )
|
||||
|
||||
## Make diagnostic modes configurable
|
||||
AC_ARG_ENABLE(diagnostic,
|
||||
AS_HELP_STRING([--enable-diagnostic=[no/capture/inject/yes]],[Enable diagnostic mode [default=no]]),
|
||||
, enable_diagnostic="no")
|
||||
if test "x$enable_diagnostic" = "xyes"; then
|
||||
AC_DEFINE(RAW_OUT_ENABLE, 1, [Define to 1 for capture diagnostic])
|
||||
AC_DEFINE(RAW_IN_ENABLE, 1, [Define to 1 for injection diagnostic])
|
||||
enable_daemon="no";
|
||||
elif test "x$enable_diagnostic" = "xcapture"; then
|
||||
AC_DEFINE(RAW_OUT_ENABLE, 1, [Define to 1 for capture diagnostic])
|
||||
enable_daemon="no";
|
||||
elif test "x$enable_diagnostic" = "xinject"; then
|
||||
AC_DEFINE(RAW_IN_ENABLE, 1, [Define to 1 for injection diagnostic])
|
||||
enable_daemon="no";
|
||||
fi
|
||||
|
||||
## Make init configurable
|
||||
AC_ARG_ENABLE(init,
|
||||
AS_HELP_STRING([--enable-init=[type]],[Enable service.* or sysv.* template [default=no]]),
|
||||
, enable_init="no" )
|
||||
AC_ARG_ENABLE(initdir,
|
||||
AS_HELP_STRING([--enable-initdir=DIR], [Directory for systemd service files [default=pkg-config var if init==service.*]]),
|
||||
, enable_initdir="?")
|
||||
|
||||
## Make nist self-test configurable
|
||||
AC_ARG_ENABLE(nistest,
|
||||
AS_HELP_STRING([--enable-nistest=[no/yes]],[Run NIST test suite [default=no]]),
|
||||
, enable_nistest="no")
|
||||
|
||||
## Make ent self-test configurable
|
||||
AC_ARG_ENABLE(enttest,
|
||||
AS_HELP_STRING([--enable-enttest=[no/yes]],[Run ENT test suite [default=yes]]),
|
||||
, enable_enttest="yes")
|
||||
|
||||
## Make self test features configurable
|
||||
AC_ARG_ENABLE(olt,
|
||||
AS_HELP_STRING([--enable-olt=[yes/no]],[Enable online tests [default=yes]]),
|
||||
, enable_olt="yes" )
|
||||
if test "x$enable_olt" = "xyes"; then
|
||||
AC_DEFINE(ONLINE_TESTS_ENABLE, 1, [Define to 1 for online test features])
|
||||
fi
|
||||
|
||||
## Make multi-thread feature configurable
|
||||
AC_ARG_ENABLE(threads,
|
||||
AS_HELP_STRING([--enable-threads=[no/yes]],[Enable threads [default=no]]),
|
||||
, enable_threads="no")
|
||||
if test "x$enable_threads" = "xyes"; then
|
||||
AC_DEFINE(NUMBER_CORES, 4, [Define maxium number of collection threads])
|
||||
HA_LDFLAGS="-pthread"
|
||||
else
|
||||
AC_DEFINE(NUMBER_CORES, 1, [Define to single collection thread])
|
||||
fi
|
||||
|
||||
## Make tuning features configurable
|
||||
AC_ARG_ENABLE(tune,
|
||||
AS_HELP_STRING([--enable-tune=[yes/cpuid/vfs/no]],[Enable host tune methods [default=yes]]),
|
||||
, enable_tune="yes" )
|
||||
if test "x$enable_tune" = "xyes"; then
|
||||
AC_DEFINE(TUNING_CPUID_ENABLE, 1, [Define to 1 to tune with host cpuid])
|
||||
AC_DEFINE(TUNING_VFS_ENABLE, 1, [Define to 1 to tune with host vfs])
|
||||
elif test "x$enable_tune" = "xcpuid"; then
|
||||
AC_DEFINE(TUNING_CPUID_ENABLE, 1, [Define to 1 to tune with host cpuid])
|
||||
elif test "x$enable_tune" = "xvfs"; then
|
||||
AC_DEFINE(TUNING_VFS_ENABLE, 1, [Define to 1 to tune wiht host vfs])
|
||||
fi
|
||||
|
||||
## Checks for programs.
|
||||
AC_PROG_CC([gcc])
|
||||
|
||||
## Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_HEADER_TIME
|
||||
|
||||
## Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_FUNC_SELECT_ARGTYPES
|
||||
AC_TYPE_SIGNAL
|
||||
AC_CHECK_FUNCS([__rdtsc accept accept4 bind connect execv floor getsockopt gettimeofday listen memset pow pselect recv sched_yield select send setsockopt socket sqrt])
|
||||
|
||||
## Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h)
|
||||
AC_CHECK_HEADERS(limits.h)
|
||||
AC_CHECK_HEADERS(sched.h)
|
||||
AC_CHECK_HEADERS(semaphore.h)
|
||||
AC_CHECK_HEADERS(stdarg.h)
|
||||
AC_CHECK_HEADERS(stddef.h)
|
||||
AC_CHECK_HEADERS(stdint.h)
|
||||
AC_CHECK_HEADERS(stdio.h)
|
||||
AC_CHECK_HEADERS(stdlib.h)
|
||||
AC_CHECK_HEADERS(string.h)
|
||||
AC_CHECK_HEADERS(sys/ioctl.h)
|
||||
AC_CHECK_HEADERS(sys/mman.h)
|
||||
AC_CHECK_HEADERS(sys/types.h)
|
||||
AC_CHECK_HEADERS(sys/socket.h)
|
||||
AC_CHECK_HEADERS(sys/un.h)
|
||||
AC_CHECK_HEADERS(sys/wait.h)
|
||||
AC_CHECK_HEADERS(time.h)
|
||||
AC_CHECK_HEADERS(sys/time.h)
|
||||
AC_CHECK_HEADERS(unistd.h)
|
||||
AC_CHECK_HEADERS(cpuid.h)
|
||||
AC_CHECK_HEADERS(x86intrin.h)
|
||||
AC_CHECK_HEADERS(syslog.h)
|
||||
AC_CHECK_HEADERS(linux/random.h)
|
||||
|
||||
AH_TEMPLATE([HAVE_STRUCT_UCRED],[User visible structure for SCM_CREDENTIALS message])
|
||||
AC_TRY_LINK([#include <sys/socket.h>],
|
||||
[struct ucred cred; cred.pid=0;],[AC_DEFINE([HAVE_STRUCT_UCRED],[1],[User visible structure for SCM_CREDENTIALS message])])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
## Determine if daemon interface to be included
|
||||
|
||||
if test "x$enable_daemon" = "xyes"; then
|
||||
daemon_type="yes"
|
||||
elif test "x$enable_daemon" = "xno"; then
|
||||
daemon_type="none"
|
||||
else
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
daemon_type="yes"
|
||||
;;
|
||||
*)
|
||||
daemon_type="none"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
## Match host to havegedef macros
|
||||
case "$host" in
|
||||
x86_64-*)
|
||||
AC_DEFINE(HAVE_ISA_X86, 1, [Define to 1 for x86_64])
|
||||
;;
|
||||
|
||||
i*86*-*)
|
||||
AC_DEFINE(HAVE_ISA_X86, 1, [Define to 1 for x86])
|
||||
;;
|
||||
|
||||
ia64-*)
|
||||
AC_DEFINE(HAVE_ISA_IA64, 1, [Define to 1 for ia64])
|
||||
;;
|
||||
|
||||
powerpc-*|pcc-*|powerpc64-*|ppc64-*)
|
||||
AC_DEFINE(HAVE_ISA_PPC, 1, [Define to 1 for ppc])
|
||||
;;
|
||||
|
||||
s390*-*)
|
||||
AC_DEFINE(HAVE_ISA_S390, 1, [Define to 1 for s390])
|
||||
;;
|
||||
|
||||
sparclite*-*)
|
||||
AC_DEFINE(HAVE_ISA_SPARCLITE, 1, [Define to 1 for sparclite])
|
||||
;;
|
||||
|
||||
sparc*-*)
|
||||
AC_DEFINE(HAVE_ISA_SPARC, 1, [Define to 1 for sparc])
|
||||
;;
|
||||
|
||||
*)
|
||||
if test "x$enable_clock_gettime" = "xx"; then
|
||||
enable_clock_gettime="yes"
|
||||
elif test "x$enable_clock_gettime" = "xyes"; then
|
||||
enable_clock_gettime="yes"
|
||||
else
|
||||
AC_MSG_ERROR([no timer source for host :"$host".])
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED(HAVE_ISA_GENERIC, "$host", [Define generic host])
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
## Check clock_gettime option
|
||||
|
||||
if test "x$enable_clock_gettime" = "xyes"; then
|
||||
saved_libs=$LIBS
|
||||
LIB_CLOCK_GETTIME=
|
||||
AC_SEARCH_LIBS([clock_gettime], [rt posix4],
|
||||
[test "$ac_cv_search_clock_gettime" = "none required" || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime],
|
||||
AC_MSG_ERROR([clock_gettime is required for host :"$host".]))
|
||||
LIBS=$saved_libs
|
||||
HA_LDFLAGS="$HA_LDFLAGS $LIB_CLOCK_GETTIME"
|
||||
AC_DEFINE(ENABLE_CLOCK_GETTIME, 1, [Define to 1 for clock_gettime])
|
||||
fi
|
||||
|
||||
|
||||
## Determine init type
|
||||
|
||||
if test "$daemon_type" = "none"; then
|
||||
AC_DEFINE(NO_DAEMON, 1, [Define to 1 to suppress daemon interface])
|
||||
init_type="none"
|
||||
else
|
||||
case "$enable_init" in
|
||||
service.*)
|
||||
init_type="systemd"
|
||||
;;
|
||||
sysv.*)
|
||||
init_type="sysv"
|
||||
;;
|
||||
*)
|
||||
init_type="none"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
## Fixup install and test options
|
||||
|
||||
AC_SUBST(HA_DISTRO,$enable_init)
|
||||
AC_SUBST(HA_UNITD,$enable_initdir)
|
||||
AM_CONDITIONAL(ENABLE_BIN, test "$daemon_type" = "none")
|
||||
AM_CONDITIONAL(ENABLE_SYSV, test "$init_type" = "sysv")
|
||||
AM_CONDITIONAL(ENABLE_SYSTEMD, test "$init_type" = "systemd")
|
||||
AM_CONDITIONAL(ENABLE_SYSTEMD_LOOKUP, test "$enable_initdir" = "?")
|
||||
AM_CONDITIONAL(ENABLE_NOINIT, test "$init_type" = "none")
|
||||
AM_CONDITIONAL(ENABLE_ENT_TEST, test "$enable_enttest" = "yes")
|
||||
AM_CONDITIONAL(ENABLE_NIST_TEST, test "$enable_nistest" = "yes")
|
||||
|
||||
## Set hardware dependent define for the build
|
||||
|
||||
AC_SUBST(HA_LDFLAGS)
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
src/Makefile
|
||||
man/Makefile
|
||||
init.d/Makefile
|
||||
ent/Makefile
|
||||
nist/Makefile])
|
||||
AC_OUTPUT
|
5
contrib/Fedora/90-haveged.rules
Normal file
5
contrib/Fedora/90-haveged.rules
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Start the haveged service as soon as the random device is available
|
||||
# to avoid starting other services while starved of entropy
|
||||
|
||||
ACTION=="add", KERNEL=="random" , SUBSYSTEM=="mem", TAG+="systemd", ENV{SYSTEMD_WANTS}+="haveged.service"
|
||||
|
26
contrib/Fedora/haveged-dracut.module
Executable file
26
contrib/Fedora/haveged-dracut.module
Executable file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
# /usr/lib/dracut/modules.d/98haveged/module-setup.sh
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
# called by dracut
|
||||
depends() {
|
||||
return 0
|
||||
}
|
||||
|
||||
installkernel() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# called by dracut
|
||||
install() {
|
||||
inst_multiple -o \
|
||||
/usr/sbin/haveged \
|
||||
$systemdsystemunitdir/haveged.service \
|
||||
$systemdsystemunitdir/haveged-switch-root.service
|
||||
mkdir -p "$initdir/$systemdsystemunitdir/sysinit.target.wants"
|
||||
mkdir -p "$initdir/$systemdsystemunitdir/initrd-switch-root.target.wants"
|
||||
mkdir -p "$initdir/$systemdsystemunitdir/systemd-journald.service.wants"
|
||||
ln_r "$systemdsystemunitdir/haveged.service" "$systemdsystemunitdir/systemd-journald.service.wants/haveged.service"
|
||||
ln_r "$systemdsystemunitdir/haveged-switch-root.service" "$systemdsystemunitdir/initrd-switch-root.target.wants/haveged-switch-root.service"
|
||||
}
|
17
contrib/Fedora/haveged-switch-root.service
Normal file
17
contrib/Fedora/haveged-switch-root.service
Normal file
|
@ -0,0 +1,17 @@
|
|||
[Unit]
|
||||
Description=Tell haveged about new root
|
||||
DefaultDependencies=no
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
Before=initrd-switch-root.service
|
||||
JoinsNamespaceOf=haveged.service
|
||||
|
||||
[Service]
|
||||
ExecStart=-@SBIN_DIR@/haveged -c root=/sysroot
|
||||
PrivateNetwork=yes
|
||||
Type=oneshot
|
||||
StandardInput=null
|
||||
StandardOutput=null
|
||||
StandardError=null
|
||||
|
||||
[Install]
|
||||
WantedBy=initrd-switch-root.target
|
36
contrib/Fedora/haveged.service
Normal file
36
contrib/Fedora/haveged.service
Normal file
|
@ -0,0 +1,36 @@
|
|||
[Unit]
|
||||
Description=Entropy Daemon based on the HAVEGE algorithm
|
||||
Documentation=man:haveged(8) http://www.issihosts.com/haveged/
|
||||
DefaultDependencies=no
|
||||
After=systemd-tmpfiles-setup-dev.service
|
||||
Before=sysinit.target shutdown.target systemd-journald.service
|
||||
|
||||
[Service]
|
||||
ExecStart=@SBIN_DIR@/haveged -w 1024 -v 1 --Foreground
|
||||
Restart=always
|
||||
SuccessExitStatus=137 143
|
||||
|
||||
SecureBits=noroot-locked
|
||||
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_SYS_CHROOT
|
||||
# We can *not* set PrivateTmp=true as it can cause an ordering cycle.
|
||||
PrivateTmp=false
|
||||
PrivateDevices=true
|
||||
# We can *not* set PrivateNetwork=true to allow command mode (chroot when included in initramfs)
|
||||
#PrivateNetwork=true
|
||||
ProtectSystem=full
|
||||
ProtectHome=true
|
||||
ProtectHostname=true
|
||||
ProtectKernelLogs=true
|
||||
ProtectKernelModules=true
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
|
||||
LockPersonality=true
|
||||
MemoryDenyWriteExecute=true
|
||||
SystemCallArchitectures=native
|
||||
SystemCallFilter=@system-service
|
||||
SystemCallFilter=~@mount
|
||||
SystemCallErrorNumber=EPERM
|
||||
|
||||
[Install]
|
||||
WantedBy=sysinit.target
|
232
contrib/Fedora/haveged.spec
Normal file
232
contrib/Fedora/haveged.spec
Normal file
|
@ -0,0 +1,232 @@
|
|||
%define dracutlibdir lib/dracut
|
||||
Summary: A Linux entropy source using the HAVEGE algorithm
|
||||
Name: haveged
|
||||
Version: 1.9.14
|
||||
Release: 1%{?dist}
|
||||
License: GPLv3+
|
||||
URL: https://github.com/jirka-h/haveged
|
||||
Source0: https://github.com/jirka-h/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||
Requires(post): systemd
|
||||
Requires(preun): systemd
|
||||
Requires(postun): systemd
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: automake coreutils glibc-common systemd-units
|
||||
Enhances: apache2 gpg2 openssl openvpn php5 smtp_daemon systemd
|
||||
|
||||
%description
|
||||
A Linux entropy source using the HAVEGE algorithm
|
||||
|
||||
Haveged is a user space entropy daemon which is not dependent upon the
|
||||
standard mechanisms for harvesting randomness for the system entropy
|
||||
pool. This is important in systems with high entropy needs or limited
|
||||
user interaction (e.g. headless servers).
|
||||
|
||||
Haveged uses HAVEGE (HArdware Volatile Entropy Gathering and Expansion)
|
||||
to maintain a 1M pool of random bytes used to fill /dev/random
|
||||
whenever the supply of random bits in /dev/random falls below the low
|
||||
water mark of the device. The principle inputs to haveged are the
|
||||
sizes of the processor instruction and data caches used to setup the
|
||||
HAVEGE collector. The haveged default is a 4kb data cache and a 16kb
|
||||
instruction cache. On machines with a cpuid instruction, haveged will
|
||||
attempt to select appropriate values from internal tables.
|
||||
|
||||
%package devel
|
||||
Summary: Headers and shared development libraries for HAVEGE algorithm
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
Headers and shared object symbolic links for the HAVEGE algorithm
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
#autoreconf -fiv
|
||||
%configure --disable-enttest --enable-nistest --disable-static
|
||||
#SMP build is not working
|
||||
#make %{?_smp_mflags}
|
||||
make
|
||||
|
||||
%check
|
||||
make check
|
||||
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
make install DESTDIR=%{buildroot} INSTALL="install -p"
|
||||
|
||||
chmod 0644 COPYING README ChangeLog AUTHORS
|
||||
|
||||
#Install systemd service file
|
||||
sed -e 's:@SBIN_DIR@:%{_sbindir}:g' -i contrib/Fedora/*service
|
||||
install -Dpm 0644 contrib/Fedora/haveged.service %{buildroot}%{_unitdir}/%{name}.service
|
||||
install -Dpm 0644 contrib/Fedora/haveged-switch-root.service %{buildroot}%{_unitdir}/%{name}-switch-root.service
|
||||
install -Dpm 0755 contrib/Fedora/haveged-dracut.module %{buildroot}/%{_prefix}/%{dracutlibdir}/modules.d/98%{name}/module-setup.sh
|
||||
install -Dpm 0644 contrib/Fedora/90-haveged.rules %{buildroot}%{_udevrulesdir}/90-%{name}.rules
|
||||
|
||||
# We don't ship .la files.
|
||||
rm -rf %{buildroot}%{_libdir}/libhavege.*a
|
||||
|
||||
mkdir -p %{buildroot}%{_defaultdocdir}/%{name}
|
||||
cp -p COPYING README ChangeLog AUTHORS contrib/build/havege_sample.c %{buildroot}%{_defaultdocdir}/%{name}
|
||||
|
||||
%post
|
||||
/sbin/ldconfig
|
||||
%systemd_post %{name}.service %{name}-switch-root.service
|
||||
|
||||
%preun
|
||||
%systemd_preun %{name}.service %{name}-switch-root.service
|
||||
|
||||
%postun
|
||||
%systemd_postun_with_restart %{name}.service %{name}-switch-root.service
|
||||
/sbin/ldconfig
|
||||
|
||||
%files
|
||||
%{_mandir}/man8/haveged.8*
|
||||
%{_sbindir}/haveged
|
||||
%{_unitdir}/*.service
|
||||
%{_libdir}/*so.*
|
||||
%{_defaultdocdir}/*
|
||||
%{_udevrulesdir}/*-%{name}.rules
|
||||
%dir %{_prefix}/%{dracutlibdir}/modules.d/98%{name}
|
||||
%{_prefix}/%{dracutlibdir}/modules.d/98%{name}/*
|
||||
|
||||
%files devel
|
||||
%{_mandir}/man3/libhavege.3*
|
||||
%dir %{_includedir}/%{name}
|
||||
%{_includedir}/%{name}/havege.h
|
||||
%doc contrib/build/havege_sample.c
|
||||
%{_libdir}/*.so
|
||||
|
||||
|
||||
%changelog
|
||||
* Sun Jun 28 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.14-1
|
||||
- Update to 1.9.14
|
||||
- BZ1835006 - Added dracut module
|
||||
- Start the service as soon as the random device is available with
|
||||
the help of udev, as starting services while starved of entropy
|
||||
is no good.
|
||||
|
||||
* Sun Jun 28 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.13-1
|
||||
- Update to 1.9.13
|
||||
|
||||
* Thu Jun 18 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.12-1
|
||||
- Update to 1.9.12
|
||||
|
||||
* Fri Jun 12 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.11-1
|
||||
- Update to 1.9.11
|
||||
|
||||
* Thu Jun 11 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.10-1
|
||||
- Update to 1.9.10
|
||||
|
||||
* Thu Jun 11 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.9-2
|
||||
- Fixed haveged.service file
|
||||
|
||||
* Tue Jun 09 2020 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.9-1
|
||||
- Update to 1.9.9
|
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.8-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Mon Sep 30 2019 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.8-1
|
||||
- Update to 1.9.8
|
||||
|
||||
* Mon Aug 26 2019 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.6-1
|
||||
- Update to 1.9.6
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Thu Feb 13 2014 Jirka Hladky <hladky.jiri@gmail.com> - 1.9.1-1
|
||||
- Update to 1.9.1
|
||||
|
||||
* Sat Jan 04 2014 Jirka Hladky <hladky.jiri@gmail.com> - 1.8-1
|
||||
- Unversioned docdir change, more info on
|
||||
https://fedoraproject.org/wiki/Changes/UnversionedDocdirs
|
||||
|
||||
* Fri Jan 03 2014 Jirka Hladky <hladky.jiri@gmail.com> - 1.8-0
|
||||
- Updated to the version 1.8
|
||||
- Improvement to systemd service file
|
||||
- Fixed exit status
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7-1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Sat Jan 19 2013 Jirka Hladky <hladky.jiri@gmail.com> - 1.7-0
|
||||
- Updated to the version 1.7
|
||||
- Version 1.7 brings developement libraries
|
||||
- Added devel package
|
||||
* Sat Oct 13 2012 Jirka Hladky <hladky.jiri@gmail.com> - 1.5-2
|
||||
- BZ 850144
|
||||
- Introduce new systemd-rpm macros in haveged spec file
|
||||
- Fedora 19 changes the way how to work with services in spec files.
|
||||
- It introduces new macros - systemd_post, systemd_preun and systemd_postun;
|
||||
- which replace scriptlets from Fedora 18 and older
|
||||
- see https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Systemd
|
||||
|
||||
* Tue Aug 14 2012 Jirka Hladky <hladky.jiri@gmail.com> - 1.5-1
|
||||
- Update to the version 1.5
|
||||
- Main new feature is a run time verification of the produced random numbers
|
||||
- PIDFILE set to /run/haveged.pid
|
||||
- converted README and man page to UTF-8. Informed the upstream to fix it.
|
||||
* Wed Feb 15 2012 Jirka Hladky <hladky.jiri@gmail.com> - 1.4-3
|
||||
- PIDFile should be stored at /run instead of the default location /var/run
|
||||
- There is long term plan that directory /var/run will not further exist in the future Fedora versions
|
||||
- Asked upstream to add -p <PID_FILE_location> switch to influence the location of the PID File
|
||||
- Set PIDFile=/var/run/haveged.pid This is needed as long -p option is not implemented
|
||||
- https://bugzilla.redhat.com/show_bug.cgi?id=770306#c10
|
||||
* Wed Feb 15 2012 Jirka Hladky <hladky.jiri@gmail.com> - 1.4-2
|
||||
- Updated systemd service file, https://bugzilla.redhat.com/show_bug.cgi?id=770306
|
||||
* Tue Feb 14 2012 Jirka Hladky <hladky.jiri@gmail.com> - 1.4-1
|
||||
- Update to the version 1.4
|
||||
- Conversion to systemd, drop init script
|
||||
* Sun Nov 06 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.3-2
|
||||
- Fixed a bug on non x86 systems
|
||||
* Sat Nov 05 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.3-1
|
||||
- update from the upstream (1.3 stable)
|
||||
* Mon Oct 03 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.3-0
|
||||
-version 1.3 beta
|
||||
* Fri Sep 30 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.2-4
|
||||
- ppc64 build
|
||||
* Mon Sep 26 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.2-3
|
||||
- Cleaned spec file according to https://bugzilla.redhat.com/show_bug.cgi?id=739347#c11
|
||||
* Sat Sep 24 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.2-2
|
||||
- Added comment to explain why we need use Fedora specific start script
|
||||
* Wed Sep 21 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.2-1
|
||||
- Cleaned spec file according to https://bugzilla.redhat.com/show_bug.cgi?id=739347#c1
|
||||
* Wed Sep 07 2011 Jirka Hladky <hladky.jiri@gmail.com> - 1.2-0
|
||||
- Initial build
|
5
contrib/SUSE/90-haveged.rules
Normal file
5
contrib/SUSE/90-haveged.rules
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Start the haveged service as soon as the random device is available
|
||||
# to avoid starting other services while starved of entropy
|
||||
|
||||
ACTION=="add", KERNEL=="random" , SUBSYSTEM=="mem", TAG+="systemd", ENV{SYSTEMD_WANTS}+="haveged.service"
|
||||
|
26
contrib/SUSE/haveged-dracut.module
Executable file
26
contrib/SUSE/haveged-dracut.module
Executable file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
# /usr/lib/dracut/modules.d/98haveged/module-setup.sh
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
# called by dracut
|
||||
depends() {
|
||||
return 0
|
||||
}
|
||||
|
||||
installkernel() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# called by dracut
|
||||
install() {
|
||||
inst_multiple -o \
|
||||
/usr/sbin/haveged \
|
||||
$systemdsystemunitdir/haveged.service \
|
||||
$systemdsystemunitdir/haveged-switch-root.service
|
||||
mkdir -p "$initdir/$systemdsystemunitdir/sysinit.target.wants"
|
||||
mkdir -p "$initdir/$systemdsystemunitdir/initrd-switch-root.target.wants"
|
||||
mkdir -p "$initdir/$systemdsystemunitdir/systemd-journald.service.wants"
|
||||
ln_r "$systemdsystemunitdir/haveged.service" "$systemdsystemunitdir/systemd-journald.service.wants/haveged.service"
|
||||
ln_r "$systemdsystemunitdir/haveged-switch-root.service" "$systemdsystemunitdir/initrd-switch-root.target.wants/haveged-switch-root.service"
|
||||
}
|
17
contrib/SUSE/haveged-switch-root.service
Normal file
17
contrib/SUSE/haveged-switch-root.service
Normal file
|
@ -0,0 +1,17 @@
|
|||
[Unit]
|
||||
Description=Tell haveged about new root
|
||||
DefaultDependencies=no
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
Before=initrd-switch-root.service
|
||||
JoinsNamespaceOf=haveged.service
|
||||
|
||||
[Service]
|
||||
ExecStart=-/usr/sbin/haveged -c root=/sysroot
|
||||
PrivateNetwork=yes
|
||||
Type=oneshot
|
||||
StandardInput=null
|
||||
StandardOutput=null
|
||||
StandardError=null
|
||||
|
||||
[Install]
|
||||
WantedBy=initrd-switch-root.target
|
38
contrib/build/build.sh
Executable file
38
contrib/build/build.sh
Executable file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
##
|
||||
## Toggle between library and non-library builds. Fix messed up libtool environment
|
||||
## Build and run haveged-devel sample
|
||||
##
|
||||
case "$1" in
|
||||
nolib)
|
||||
sed -i.bak -e '/^##libtool_start##/,/^##libtool_end##/s,^,##,g' ../../configure.ac
|
||||
sed -i.bak -e '/^####nolibtool_start##/,/^####nolibtool_end##/s,^##,,g' \
|
||||
-e '/^##libtool_start##/,/^##libtool_end##/s,^,##,g' ../../src/Makefile.am
|
||||
cp nolib.spec ../../haveged.spec
|
||||
;;
|
||||
lib)
|
||||
sed -i.bak -e '/^####libtool_start##/,/^####libtool_end##/s,^##,,g' ../../configure.ac
|
||||
sed -i.bak -e '/^##nolibtool_start##/,/^##nolibtool_end##/s,^,##,g' \
|
||||
-e '/^####libtool_start##/,/^####libtool_end##/s,^##,,g' ../../src/Makefile.am
|
||||
cp lib.spec ../../haveged.spec
|
||||
;;
|
||||
new)
|
||||
cd ../..
|
||||
make distclean
|
||||
rm -rf autom4te.cache
|
||||
libtoolize --force --install
|
||||
autoreconf --force
|
||||
./configure
|
||||
;;
|
||||
sample)
|
||||
echo "gcc -o havege_sample -DUSE_SOURCE -I../../src -Wall havege_sample.c ../../src/.libs/libhavege.a"
|
||||
gcc -o havege_sample -DUSE_SOURCE -I../../src -Wall havege_sample.c ../../src/.libs/libhavege.a
|
||||
echo "./havege_sample > /dev/null"
|
||||
./havege_sample > /dev/null
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "usage: build [new|nolib|lib|sample]";
|
||||
;;
|
||||
esac
|
||||
|
97
contrib/build/havege_sample.c
Normal file
97
contrib/build/havege_sample.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
Simple test of build - writes 1k of RNG runs to stdout
|
||||
|
||||
gcc -o havege_sample -DUSE_SOURCE -I../../src -Wall havege_sample.c ../../src/.libs/libhavege.a
|
||||
./havege_sample > /dev/null
|
||||
|
||||
After package is installed into test RAM disk /dev/shm/1
|
||||
gcc -Wall -o havege_sample -I/dev/shm/1/include -L/dev/shm/1/lib havege_sample.c -lhavege
|
||||
LD_LIBRARY_PATH=/dev/shm/1/lib ./havege_sample > /dev/shm/havege_random
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef USE_SOURCE
|
||||
#include "havege.h"
|
||||
#else
|
||||
#include <haveged/havege.h>
|
||||
#endif
|
||||
|
||||
int my_status_dump ( H_PTR h, char *buf, size_t buflen) {
|
||||
H_SD_TOPIC topics[4] = {H_SD_TOPIC_BUILD, H_SD_TOPIC_TUNE, H_SD_TOPIC_TEST, H_SD_TOPIC_SUM};
|
||||
int ret=0, i;
|
||||
|
||||
for(i=0;i<4 && ret<(buflen-2);i++) {
|
||||
ret += havege_status_dump(h, topics[i], buf + ret, buflen-ret);
|
||||
if (ret>(buflen-2))
|
||||
break;
|
||||
buf[ret++] = '\n';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/**
|
||||
* RNG output is written to stdout
|
||||
*/
|
||||
int main(void) {
|
||||
int rc;
|
||||
H_UINT* buf;
|
||||
H_PARAMS havege_parameters={0};
|
||||
H_PTR havege_state = NULL;
|
||||
const int status_buf_size = 8192;
|
||||
char status_buf[status_buf_size];
|
||||
int i, size;
|
||||
|
||||
//havege_parameters.msg_out = print_msg;
|
||||
fprintf(stderr, "library version is %s\n", havege_version(NULL));
|
||||
havege_state = havege_create(&havege_parameters);
|
||||
|
||||
rc = havege_state==NULL? H_NOHANDLE : havege_state->error;
|
||||
if (H_NOERR==rc) {
|
||||
buf = havege_state->io_buf;
|
||||
size = havege_state->i_readSz /sizeof(H_UINT);
|
||||
fprintf(stderr, "havege_create: buffer size is %d\n", havege_state->i_readSz);
|
||||
}
|
||||
else {
|
||||
if (H_NOTESTSPEC==rc)
|
||||
fprintf(stderr, "ERROR: havege_create: unrecognized test setup: %s", havege_parameters.testSpec);
|
||||
else fprintf(stderr, "ERROR: havege_create has returned %d\n",rc);
|
||||
if (H_NOHANDLE!=rc)
|
||||
havege_destroy(havage_state);
|
||||
return 1;
|
||||
}
|
||||
rc = havege_run(havege_state);
|
||||
if ( rc ) {
|
||||
fprintf(stderr, "ERROR: havege_run has returned %d\n", havege_state->error);
|
||||
havege_destroy(havege_state);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( my_status_dump(havege_state, status_buf, status_buf_size) > 0 )
|
||||
fprintf(stderr,"%s\n", status_buf);
|
||||
for (i=0;i<1024;i++) {
|
||||
|
||||
rc = havege_rng(havege_state, buf, size);
|
||||
if ( rc != (int) size ) {
|
||||
fprintf(stderr, "ERROR: havege_rng has returned %d\n", havege_state->error);
|
||||
havege_destroy(havege_state);
|
||||
return 1;
|
||||
}
|
||||
|
||||
rc = fwrite(buf, 1, size, stdout);
|
||||
if ( rc < size ) {
|
||||
fprintf(stderr, "ERROR: fwrite\n");
|
||||
havege_destroy(havege_state);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( my_status_dump(havege_state, status_buf, status_buf_size) > 0 )
|
||||
fprintf(stderr,"%s\n", status_buf);
|
||||
havege_destroy(havege_state);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
76
contrib/build/lib.spec
Normal file
76
contrib/build/lib.spec
Normal file
|
@ -0,0 +1,76 @@
|
|||
#
|
||||
# Sample spec file for haveged and haveged-devel
|
||||
# Copyright (c) 2013-2014
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
%define have_systemd 0
|
||||
|
||||
Name: haveged
|
||||
Version: 1.9
|
||||
Release: 0
|
||||
License: GPLv3
|
||||
Group: System Environment/Daemons
|
||||
Summary: Feed entropy into random pool
|
||||
URL: http://www.issihosts.com/haveged/
|
||||
Source0: http://www.issihosts.com/haveged/haveged-%{version}.tar.gz
|
||||
BuildRoot: %{_builddir}/%{name}-root
|
||||
%if 0%{?have_systemd}
|
||||
BuildRequires: systemd
|
||||
%endif
|
||||
|
||||
%description
|
||||
The haveged daemon feeds the linux entropy pool with random
|
||||
numbers generated from hidden processor state.
|
||||
|
||||
%package devel
|
||||
Summary: haveged development files
|
||||
Group: Development/Libraries
|
||||
|
||||
%description devel
|
||||
Headers and shared object symbolic links for the haveged library
|
||||
|
||||
This package contains the haveged implementation of the HAVEGE
|
||||
algorithm and supporting features.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
%configure \
|
||||
--enable-daemon\
|
||||
--enable--init=sysv.redhat
|
||||
make
|
||||
|
||||
%check
|
||||
make check
|
||||
|
||||
%install
|
||||
%makeinstall
|
||||
%{__install} -D -m0755 %{_sysconfdir}/init.d/%{name}
|
||||
%if 0%{?have_systemd}
|
||||
%{__install} -D -m0644 %{S:2} %{buildroot}%{_unitdir}/%{name}.service
|
||||
%endif
|
||||
%{__rm} -f %{buildroot}%{_libdir}/libhavege.*a
|
||||
|
||||
%clean
|
||||
%{?buildroot:%__rm -rf "%{buildroot}"}
|
||||
|
||||
%files
|
||||
%defattr(-, root, root, -)
|
||||
%doc COPYING
|
||||
%{_mandir}/man8/haveged.8*
|
||||
%{_sbindir}/haveged
|
||||
%if 0%{?have_systemd}
|
||||
%{_unitdir}/haveged.service
|
||||
%endif
|
||||
|
||||
%files devel
|
||||
%doc COPYING
|
||||
%defattr(-, root, root, -)
|
||||
%{_mandir}/man3/libhavege.3*
|
||||
%dir %{_includedir}/%{name}
|
||||
%{_includedir}/%{name}/havege*.h
|
||||
%doc contrib/build/havege_sample.c
|
||||
%{_libdir}/*.so*
|
||||
|
40
contrib/build/nolib.spec
Normal file
40
contrib/build/nolib.spec
Normal file
|
@ -0,0 +1,40 @@
|
|||
#
|
||||
# Sample spec file for haveged
|
||||
# Copyright (c) 2013-2014
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
Name: haveged
|
||||
Version: 1.9
|
||||
Release: 1
|
||||
License: GPLv3
|
||||
Group: System Environment/Daemons
|
||||
Summary: Feed entropy into random pool
|
||||
URL: http://www.issihosts.com/haveged/
|
||||
Source0: http://www.issihosts.com/haveged/haveged-%{version}.tar.gz
|
||||
BuildRoot: %{_builddir}/%{name}-root
|
||||
|
||||
%description
|
||||
The haveged daemon feeds the linux entropy pool with random
|
||||
numbers generated from hidden processor state.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
|
||||
%install
|
||||
[ ${RPM_BUILD_ROOT} != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
|
||||
%clean
|
||||
[ ${RPM_BUILD_ROOT} != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
/usr/local/sbin/haveged
|
||||
/usr/local/share/man/man8/haveged.8
|
||||
/etc/init.d/haveged
|
12
contrib/diags/bins.p
Normal file
12
contrib/diags/bins.p
Normal file
|
@ -0,0 +1,12 @@
|
|||
unset key
|
||||
set ticslevel 0.1
|
||||
set xlabel "Step"
|
||||
set ylabel "Tick"
|
||||
set zlabel "Count"
|
||||
set zlabel rotate
|
||||
set xtic .2
|
||||
set ytic 1
|
||||
set grid x y z
|
||||
set title "Ticks Frequency"
|
||||
splot("run.bins")
|
||||
|
341
contrib/diags/data_prep.c
Normal file
341
contrib/diags/data_prep.c
Normal file
|
@ -0,0 +1,341 @@
|
|||
/**
|
||||
** Data preparation for diagnostic interfaces
|
||||
**
|
||||
** Copyright 2009-2011 Gary Wuertz gary@issiweb.com
|
||||
** Copyright 2011 BenEleventh Consulting manolson@beneleventh.com
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <getopt.h>
|
||||
#include <math.h>
|
||||
|
||||
/**
|
||||
* Something borrowed......
|
||||
*/
|
||||
#define APP_BUFF_SIZE 1024
|
||||
#define NDSIZECOLLECT 0x1000000
|
||||
|
||||
typedef unsigned int U_INT;
|
||||
|
||||
struct pparams {
|
||||
int cmd; // command to execute
|
||||
int options; // debug options
|
||||
char *outpath; // output file;
|
||||
FILE *input; // input file
|
||||
FILE *output; // output file
|
||||
U_INT limit; // limit delta
|
||||
U_INT repeat; // repeat values
|
||||
U_INT value; // inject value
|
||||
U_INT bsize; // Buffer size
|
||||
double xs; // X scale
|
||||
};
|
||||
/**
|
||||
* For bin output
|
||||
*/
|
||||
#define X_BINS 512
|
||||
#define Y_BINS 2048
|
||||
/**
|
||||
* Divide data into bins
|
||||
*/
|
||||
#define X_FACTOR (1.0 * X_BINS)/(1.0 * p->bsize)
|
||||
#define Y_FACTOR (0.5 * Y_BINS)/(1.0 * 0x7fffffff)
|
||||
/*
|
||||
* Scale bins back to values x = 1M, y=4.0G
|
||||
*/
|
||||
#define X_SCALE (p->xs/X_BINS)
|
||||
#define Y_SCALE (4.0/Y_BINS)
|
||||
|
||||
static int inject_output(struct pparams *p);
|
||||
static void matrix_output(struct pparams *p);
|
||||
static void sequence_output(struct pparams *p);
|
||||
static void usage(int nopts, struct option *long_options, const char **cmds);
|
||||
/**
|
||||
* Data Prep
|
||||
*/
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
static const char* cmds[] = {
|
||||
"b", "buffer", "1", "buffer size (k): default 1024",
|
||||
"f", "file", "1", "output file name: default is '-' (stdout)",
|
||||
"i", "inject", "1", "inject 0=2up, 1=1up, 2=raw 1up",
|
||||
"o", "output", "1", "[bin|delta|inject|raw|xor|wrap] data",
|
||||
"r", "repeat", "1", "repeat inject sequence",
|
||||
"s", "start", "1", "start value inject sequence",
|
||||
"u", "upper", "1", "inject sequence upper bound",
|
||||
"v", "verbose", "1", "verbose reporting",
|
||||
"h", "help", "0", "This help"
|
||||
};
|
||||
char *outputs[] = {"bin","delta","inject","raw","xor","wrap",NULL};
|
||||
static int nopts = sizeof(cmds)/(4*sizeof(char *));
|
||||
struct option long_options[nopts+1];
|
||||
char short_options[1+nopts*2];
|
||||
struct pparams params;
|
||||
FILE *f;
|
||||
U_INT i, j, n;
|
||||
int c;
|
||||
char *s;
|
||||
|
||||
for(i=j=0;j<(nopts*4);j+=4) {
|
||||
long_options[i].name = cmds[j+1];
|
||||
long_options[i].has_arg = atoi(cmds[j+2]);
|
||||
long_options[i].flag = NULL;
|
||||
long_options[i].val = cmds[j][0];
|
||||
strcat(short_options,cmds[j]);
|
||||
if (long_options[i].has_arg!=0) strcat(short_options,":");
|
||||
i += 1;
|
||||
}
|
||||
memset(&long_options[i], 0, sizeof(struct option));
|
||||
memset(¶ms, 0, sizeof(struct pparams));
|
||||
params.outpath = "-";
|
||||
params.bsize = NDSIZECOLLECT;
|
||||
params.xs = 1.0;
|
||||
do {
|
||||
c = getopt_long (argc, argv, short_options, long_options, NULL);
|
||||
switch(c) {
|
||||
case 'b':
|
||||
params.bsize = atoi(optarg);
|
||||
params.xs = params.bsize;
|
||||
while(params.xs >= 10.0)
|
||||
params.xs /= 10.0;
|
||||
break;
|
||||
case 'f':
|
||||
params.outpath = optarg;
|
||||
break;
|
||||
case 'i':
|
||||
params.options = atoi(optarg);
|
||||
break;
|
||||
case 'o':
|
||||
n = strlen(optarg);
|
||||
for(i=0;outputs[i]!=NULL;i++)
|
||||
if (!strncmp(optarg, outputs[i], n)) {
|
||||
params.cmd = optarg[0];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'r':
|
||||
params.repeat = atoi(optarg);
|
||||
break;
|
||||
case 's':
|
||||
params.value = atoi(optarg);
|
||||
break;
|
||||
case 'u':
|
||||
params.limit = atoi(optarg);
|
||||
break;
|
||||
case 'v':
|
||||
params.cmd = atoi(optarg);
|
||||
break;
|
||||
case '?':
|
||||
case 'h':
|
||||
usage(nopts, long_options, cmds);
|
||||
case -1:
|
||||
break;
|
||||
}
|
||||
} while (c!=-1);
|
||||
|
||||
if (0==params.cmd || optind != (argc-1))
|
||||
usage(nopts, long_options, cmds);
|
||||
if (!strcmp(argv[1],"-"))
|
||||
params.input = stdin;
|
||||
else {
|
||||
params.input = fopen(argv[optind], "rb");
|
||||
if (NULL == params.input) {
|
||||
fprintf(stderr, "Unable to open input %s\n", argv[optind]);
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
if (!strcmp(params.outpath, "-"))
|
||||
params.output = stdout;
|
||||
else {
|
||||
params.output = fopen(params.outpath, "wb");
|
||||
if (NULL == params.output) {
|
||||
fprintf(stderr, "Unable to open %s\n", params.outpath);
|
||||
exit(3);
|
||||
}
|
||||
fprintf(stdout, "writing to %s\n", params.outpath);
|
||||
}
|
||||
switch(params.cmd) {
|
||||
case 'i':
|
||||
while(inject_output(¶ms)>0)
|
||||
;
|
||||
break;
|
||||
case 'b':
|
||||
matrix_output(¶ms);
|
||||
break;
|
||||
case 'd': case 'r': case 'x': case 'w':
|
||||
sequence_output(¶ms);
|
||||
break;
|
||||
}
|
||||
if (params.output != stdout)
|
||||
fclose(params.output);
|
||||
return 0;
|
||||
}
|
||||
/**
|
||||
* Create injection data - input file is log10 sequence data - can be repeated
|
||||
*/
|
||||
static int inject_output(struct pparams *p)
|
||||
{
|
||||
U_INT buf[APP_BUFF_SIZE];
|
||||
char ibuf[80], *s;
|
||||
U_INT i, j;
|
||||
double n, delta;
|
||||
int rv = 1;
|
||||
|
||||
n = 0;
|
||||
for(i=0;i<APP_BUFF_SIZE && rv==1;i++) {
|
||||
buf[i] = p->value;
|
||||
s = fgets(ibuf, 80, p->input);
|
||||
if (NULL == s && p->repeat != 0) {
|
||||
p->repeat -= 1;
|
||||
rewind(p->input);
|
||||
s = fgets(ibuf, 80, p->input);
|
||||
}
|
||||
if (NULL != s) {
|
||||
if (p->options!=0)
|
||||
delta = strtod(ibuf, NULL);
|
||||
else {
|
||||
n = strtod(ibuf, &s);
|
||||
delta = strtod(s, NULL);
|
||||
}
|
||||
if (p->limit != 0 && delta > p->limit)
|
||||
delta -= p->limit;
|
||||
if (p->options == 2)
|
||||
p->value = (U_INT) delta;
|
||||
else p->value += (U_INT)pow(10.0,delta);
|
||||
}
|
||||
else rv = 0;
|
||||
}
|
||||
if (i != fwrite(buf, sizeof(U_INT), i, p->output)) {
|
||||
printf("Write error\n");
|
||||
rv = -1;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
/**
|
||||
* Create matrix data file
|
||||
*/
|
||||
static void matrix_output(struct pparams *p)
|
||||
{
|
||||
U_INT buf[APP_BUFF_SIZE];
|
||||
U_INT **matrix;
|
||||
FILE *f = p->input;
|
||||
int i, n, sz, x, y;
|
||||
|
||||
matrix = (U_INT **) malloc(sizeof(U_INT **) * X_BINS);
|
||||
if (NULL == matrix) {
|
||||
fprintf(stderr, "Unable to allocate cols\n");
|
||||
return;
|
||||
}
|
||||
sz = sizeof(U_INT *) * Y_BINS;
|
||||
for (i = 0;i< X_BINS;i++) {
|
||||
matrix[i] = (U_INT *)malloc(sz);
|
||||
if (NULL == matrix[i]) {
|
||||
fprintf(stderr, "Unable to allocate row\n");
|
||||
return;
|
||||
}
|
||||
memset(matrix[i], 0, sz);
|
||||
}
|
||||
n = 0;
|
||||
while(1) {
|
||||
sz = fread(buf, sizeof(U_INT), APP_BUFF_SIZE, f);
|
||||
if (sz < 1)
|
||||
break;
|
||||
for(i=0;i<sz;i++) {
|
||||
x = (int)(n * X_FACTOR);
|
||||
y = (int)(buf[i] * Y_FACTOR);
|
||||
matrix[x][y] += 1;
|
||||
n += 1;
|
||||
n %= p->bsize;
|
||||
}
|
||||
}
|
||||
for(x=0;x<X_BINS;x++)
|
||||
for(y=0;y<Y_BINS;y++)
|
||||
if (matrix[x][y]!=0)
|
||||
fprintf(p->output,"%g\t%g\t%u\n", x*X_SCALE, y*Y_SCALE, matrix[x][y]);
|
||||
}
|
||||
/**
|
||||
* Create sequence data file
|
||||
*/
|
||||
static void sequence_output(struct pparams *p)
|
||||
{
|
||||
U_INT buf[APP_BUFF_SIZE];
|
||||
FILE *f = p->input;
|
||||
int i, m, n, sz;
|
||||
U_INT delta, cur, prev;
|
||||
U_INT plus, minus;
|
||||
|
||||
m = p->cmd=='r'? 1 : 0;
|
||||
n = 0;
|
||||
plus = minus = 0;
|
||||
while(1) {
|
||||
sz = fread(buf, sizeof(U_INT), APP_BUFF_SIZE, f);
|
||||
if (sz < 1)
|
||||
break;
|
||||
for(i=0;i<sz;i++) {
|
||||
prev = cur;
|
||||
cur = buf[i];
|
||||
if (m==0) {
|
||||
m = 1;
|
||||
}
|
||||
else switch(p->cmd) {
|
||||
case 'd':
|
||||
if (cur < prev)
|
||||
delta = prev - cur;
|
||||
else delta = cur - prev;
|
||||
fprintf(p->output,"%g\t%g\n", n * 10.0/1024.0, log10(delta));
|
||||
break;
|
||||
case 'x':
|
||||
fprintf(p->output,"%g\t%g\n", n * 10.0/1024.0, log10(cur^prev));
|
||||
break;
|
||||
case 'r':
|
||||
fprintf(p->output,"%g\t%g\n", n * 10.0/1024.0, 1.0 * cur);
|
||||
break;
|
||||
case 'w':
|
||||
if (cur < prev) {
|
||||
if (p->options & 1)
|
||||
fprintf(p->output,"rollover %d\n", n);
|
||||
minus++;
|
||||
}
|
||||
else plus++;
|
||||
break;
|
||||
}
|
||||
n += 1;
|
||||
n %= p->bsize;
|
||||
}
|
||||
}
|
||||
if (p->cmd=='w')
|
||||
fprintf(p->output,"Rollover %u/%u = %g\n", minus, plus, minus*100/(double)(minus+plus));
|
||||
}
|
||||
/**
|
||||
* usage
|
||||
*/
|
||||
static void usage(int nopts, struct option *long_options, const char **cmds)
|
||||
{
|
||||
int i;
|
||||
|
||||
fprintf(stderr, "\nUsage: %s [options] <file>\n\n", "data_prep");
|
||||
fprintf(stderr, "Prepare diagnostic data from <file>\n\n");
|
||||
fprintf(stderr, " Options:\n");
|
||||
for(i=0;long_options[i].val != 0;i++) {
|
||||
fprintf(stderr," --%-10s, -%c %s %s\n",
|
||||
long_options[i].name, long_options[i].val,
|
||||
long_options[i].has_arg? "[]":" ",cmds[4*i+3]);
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
exit(1);
|
||||
}
|
||||
|
8
contrib/diags/inc.p
Normal file
8
contrib/diags/inc.p
Normal file
|
@ -0,0 +1,8 @@
|
|||
unset key
|
||||
set xlabel "Step"
|
||||
set ylabel "log10(increment)"
|
||||
set ylabel rotate
|
||||
set xtic auto
|
||||
set ytic auto
|
||||
set title "Ticks Increment"
|
||||
plot("run.inc")
|
6
contrib/diags/lognorm.r
Normal file
6
contrib/diags/lognorm.r
Normal file
|
@ -0,0 +1,6 @@
|
|||
x = rnorm(16*1024*1024, mean=2.005285, sd=0.2162)
|
||||
write(x,file="i7.ln",ncolumns=1)
|
||||
x = rnorm(16*1024*1024, mean=2.744504, sd=0.93767)
|
||||
write(x,file="xeon.ln",ncolumns=1)
|
||||
x = rnorm(16*1024*1024, mean=5.9478, sd=2.4142)
|
||||
write(x,file="celeron.ln",ncolumns=1)
|
13
contrib/diags/lognorm.sh
Executable file
13
contrib/diags/lognorm.sh
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
src/haveged -n 16m -f i7.dat -r 4 -s i7.ln
|
||||
ent/entest -vf i7.dat
|
||||
nist/nist i7.dat
|
||||
mv nist.out i7.out
|
||||
src/haveged -n 16m -f xeon.dat -r 4 -s xeon.ln
|
||||
ent/entest -vf xeon.dat
|
||||
nist/nist xeon.dat
|
||||
mv nist.out xeon.out
|
||||
src/haveged -n 16m -f celeron.dat -r 4 -s celeron.ln
|
||||
ent/entest -vf celeron.dat
|
||||
nist/nist celeron.dat
|
||||
mv nist.out celeron.out
|
22
ent/Makefile.am
Normal file
22
ent/Makefile.am
Normal file
|
@ -0,0 +1,22 @@
|
|||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
if ENABLE_ENT_TEST
|
||||
check_PROGRAMS = entest
|
||||
endif
|
||||
|
||||
AM_CFLAGS=-Wall
|
||||
|
||||
entest_LDADD = -lm
|
||||
|
||||
entest_SOURCES = entest.c iso8859.c randtest.c chisq.c iso8859.h randtest.h
|
||||
|
||||
CLEANFILES = sample
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
if ENABLE_ENT_TEST
|
||||
check-local:
|
||||
./entest -t ${srcdir}/entitle.gif
|
||||
../src/haveged -n 16384k -v 1 $*
|
||||
./entest -vf sample
|
||||
endif
|
577
ent/Makefile.in
Normal file
577
ent/Makefile.in
Normal file
|
@ -0,0 +1,577 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@ENABLE_ENT_TEST_TRUE@check_PROGRAMS = entest$(EXEEXT)
|
||||
subdir = ent
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am_entest_OBJECTS = entest.$(OBJEXT) iso8859.$(OBJEXT) \
|
||||
randtest.$(OBJEXT) chisq.$(OBJEXT)
|
||||
entest_OBJECTS = $(am_entest_OBJECTS)
|
||||
entest_DEPENDENCIES =
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp =
|
||||
am__maybe_remake_depfiles =
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(entest_SOURCES)
|
||||
DIST_SOURCES = $(entest_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVEGE_LT_VERSION = @HAVEGE_LT_VERSION@
|
||||
HA_DISTRO = @HA_DISTRO@
|
||||
HA_LDFLAGS = @HA_LDFLAGS@
|
||||
HA_UNITD = @HA_UNITD@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AM_CFLAGS = -Wall
|
||||
entest_LDADD = -lm
|
||||
entest_SOURCES = entest.c iso8859.c randtest.c chisq.c iso8859.h randtest.h
|
||||
CLEANFILES = sample
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps ent/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu --ignore-deps ent/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-checkPROGRAMS:
|
||||
@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list || exit $$?; \
|
||||
test -n "$(EXEEXT)" || exit 0; \
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
|
||||
entest$(EXEEXT): $(entest_OBJECTS) $(entest_DEPENDENCIES) $(EXTRA_entest_DEPENDENCIES)
|
||||
@rm -f entest$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(entest_OBJECTS) $(entest_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
.c.o:
|
||||
$(AM_V_CC)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
$(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@ENABLE_ENT_TEST_FALSE@check-local:
|
||||
check-am: all-am
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-local
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: check-am install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
|
||||
clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
|
||||
ctags ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
@ENABLE_ENT_TEST_TRUE@check-local:
|
||||
@ENABLE_ENT_TEST_TRUE@ ./entest -t ${srcdir}/entitle.gif
|
||||
@ENABLE_ENT_TEST_TRUE@ ../src/haveged -n 16384k -v 1 $*
|
||||
@ENABLE_ENT_TEST_TRUE@ ./entest -vf sample
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
136
ent/chisq.c
Normal file
136
ent/chisq.c
Normal file
|
@ -0,0 +1,136 @@
|
|||
/*
|
||||
|
||||
Compute probability of measured Chi Square value.
|
||||
|
||||
This code was developed by Gary Perlman of the Wang
|
||||
Institute (full citation below) and has been minimally
|
||||
modified for use in this program.
|
||||
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
/*HEADER
|
||||
Module: z.c
|
||||
Purpose: compute approximations to normal z distribution probabilities
|
||||
Programmer: Gary Perlman
|
||||
Organization: Wang Institute, Tyngsboro, MA 01879
|
||||
Copyright: none
|
||||
Tabstops: 4
|
||||
*/
|
||||
|
||||
#define Z_MAX 6.0 /* maximum meaningful z value */
|
||||
|
||||
/*FUNCTION poz: probability of normal z value */
|
||||
/*ALGORITHM
|
||||
Adapted from a polynomial approximation in:
|
||||
Ibbetson D, Algorithm 209
|
||||
Collected Algorithms of the CACM 1963 p. 616
|
||||
Note:
|
||||
This routine has six digit accuracy, so it is only useful for absolute
|
||||
z values < 6. For z values >= to 6.0, poz() returns 0.0.
|
||||
*/
|
||||
static double /*VAR returns cumulative probability from -oo to z */
|
||||
poz(const double z) /*VAR normal z value */
|
||||
{
|
||||
double y, x, w;
|
||||
|
||||
if (z == 0.0) {
|
||||
x = 0.0;
|
||||
} else {
|
||||
y = 0.5 * fabs(z);
|
||||
if (y >= (Z_MAX * 0.5)) {
|
||||
x = 1.0;
|
||||
} else if (y < 1.0) {
|
||||
w = y * y;
|
||||
x = ((((((((0.000124818987 * w
|
||||
-0.001075204047) * w +0.005198775019) * w
|
||||
-0.019198292004) * w +0.059054035642) * w
|
||||
-0.151968751364) * w +0.319152932694) * w
|
||||
-0.531923007300) * w +0.797884560593) * y * 2.0;
|
||||
} else {
|
||||
y -= 2.0;
|
||||
x = (((((((((((((-0.000045255659 * y
|
||||
+0.000152529290) * y -0.000019538132) * y
|
||||
-0.000676904986) * y +0.001390604284) * y
|
||||
-0.000794620820) * y -0.002034254874) * y
|
||||
+0.006549791214) * y -0.010557625006) * y
|
||||
+0.011630447319) * y -0.009279453341) * y
|
||||
+0.005353579108) * y -0.002141268741) * y
|
||||
+0.000535310849) * y +0.999936657524;
|
||||
}
|
||||
}
|
||||
return (z > 0.0 ? ((x + 1.0) * 0.5) : ((1.0 - x) * 0.5));
|
||||
}
|
||||
|
||||
/*
|
||||
Module: chisq.c
|
||||
Purpose: compute approximations to chisquare distribution probabilities
|
||||
Contents: pochisq()
|
||||
Uses: poz() in z.c (Algorithm 209)
|
||||
Programmer: Gary Perlman
|
||||
Organization: Wang Institute, Tyngsboro, MA 01879
|
||||
Copyright: none
|
||||
Tabstops: 4
|
||||
*/
|
||||
|
||||
#define LOG_SQRT_PI 0.5723649429247000870717135 /* log (sqrt (pi)) */
|
||||
#define I_SQRT_PI 0.5641895835477562869480795 /* 1 / sqrt (pi) */
|
||||
#define BIGX 20.0 /* max value to represent exp (x) */
|
||||
#define ex(x) (((x) < -BIGX) ? 0.0 : exp(x))
|
||||
|
||||
/*FUNCTION pochisq: probability of chi sqaure value */
|
||||
/*ALGORITHM Compute probability of chi square value.
|
||||
Adapted from:
|
||||
Hill, I. D. and Pike, M. C. Algorithm 299
|
||||
Collected Algorithms for the CACM 1967 p. 243
|
||||
Updated for rounding errors based on remark in
|
||||
ACM TOMS June 1985, page 185
|
||||
*/
|
||||
|
||||
double pochisq(
|
||||
const double ax, /* obtained chi-square value */
|
||||
const int df /* degrees of freedom */
|
||||
)
|
||||
{
|
||||
double x = ax;
|
||||
double a, y=0, s;
|
||||
double e, c, z;
|
||||
int even; /* true if df is an even number */
|
||||
|
||||
if (x <= 0.0 || df < 1) {
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
a = 0.5 * x;
|
||||
even = (2 * (df / 2)) == df;
|
||||
if (df > 1) {
|
||||
y = ex(-a);
|
||||
}
|
||||
s = (even ? y : (2.0 * poz(-sqrt(x))));
|
||||
if (df > 2) {
|
||||
x = 0.5 * (df - 1.0);
|
||||
z = (even ? 1.0 : 0.5);
|
||||
if (a > BIGX) {
|
||||
e = (even ? 0.0 : LOG_SQRT_PI);
|
||||
c = log(a);
|
||||
while (z <= x) {
|
||||
e = log(z) + e;
|
||||
s += ex(c * z - a - e);
|
||||
z += 1.0;
|
||||
}
|
||||
return (s);
|
||||
} else {
|
||||
e = (even ? 1.0 : (I_SQRT_PI / sqrt(a)));
|
||||
c = 0.0;
|
||||
while (z <= x) {
|
||||
e = e * (a / z);
|
||||
c = c + e;
|
||||
z += 1.0;
|
||||
}
|
||||
return (c * y + s);
|
||||
}
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
}
|
270
ent/entest.c
Normal file
270
ent/entest.c
Normal file
|
@ -0,0 +1,270 @@
|
|||
/*
|
||||
ENT -- Entropy calculation and analysis of putative
|
||||
random sequences.
|
||||
|
||||
Designed and implemented by John "Random" Walker in May 1985.
|
||||
|
||||
Multiple analyses of random sequences added in December 1985.
|
||||
|
||||
Bit stream analysis added in September 1997.
|
||||
|
||||
Terse mode output, getopt() command line processing,
|
||||
optional stdin input, and HTML documentation added in
|
||||
October 1998.
|
||||
|
||||
Documentation for the -t (terse output) option added
|
||||
in July 2006.
|
||||
|
||||
Replaced table look-up for chi square to probability
|
||||
conversion with algorithmic computation in January 2008.
|
||||
|
||||
Hacked for haveged test April 2009
|
||||
|
||||
For additional information and the latest version,
|
||||
see http://www.fourmilab.ch/random/
|
||||
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
#include "getopt.h"
|
||||
#ifdef _WIN32
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "iso8859.h"
|
||||
#include "randtest.h"
|
||||
|
||||
#define UPDATE "January 28th, 2008"
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
#ifdef M_PI
|
||||
#define PI M_PI
|
||||
#else
|
||||
#define PI 3.14159265358979323846
|
||||
#endif
|
||||
|
||||
extern double pochisq(const double ax, const int df);
|
||||
|
||||
struct pparams {
|
||||
double chisqr;
|
||||
double entropy;
|
||||
double mean;
|
||||
double pi;
|
||||
double seq;
|
||||
double xtreme;
|
||||
};
|
||||
|
||||
static struct pparams defaults = {
|
||||
.chisqr = 1, // bounds - should be >1% and <99%
|
||||
.entropy = 7.5, // minimum - should be close to 8
|
||||
.mean = 127.0, // minimum - should be close to 127.5
|
||||
.pi = 0.5, // maximum - error deviation in percent
|
||||
.seq = 0.8, // minimum - should be close to 1
|
||||
.xtreme = 0.00001 // maximum - result deviation
|
||||
};
|
||||
struct pparams *params = &defaults;
|
||||
|
||||
static int check(long totalc, double ent, double chip, double mean, double montepi, double scc)
|
||||
{
|
||||
char failures[512];
|
||||
int offs=0;
|
||||
double p;
|
||||
double p0 = params->chisqr;
|
||||
double p1 = 100-p0;
|
||||
if (ent<params->entropy) {
|
||||
sprintf(failures+offs,"entropy:%f<%f ",ent,params->entropy);
|
||||
offs=strlen(failures);
|
||||
}
|
||||
chip *= 100;
|
||||
if (chip<p0||chip>p1) {
|
||||
sprintf(failures+offs,"chisqr:%f%% not in %f-%f ",chip,p0,p1);
|
||||
offs=strlen(failures);
|
||||
}
|
||||
if (mean<params->mean) {
|
||||
sprintf(failures+offs,"mean:%f<%f ",mean,params->mean);
|
||||
offs=strlen(failures);
|
||||
}
|
||||
p = 100*(montepi-PI)/PI;
|
||||
if (fabs(p)>params->pi) {
|
||||
sprintf(failures+offs,"pi:%f %f>%f ",montepi,p,params->pi);
|
||||
offs=strlen(failures);
|
||||
}
|
||||
if (scc>params->seq) {
|
||||
sprintf(failures+offs,"sequence:%f>%f ",scc,params->seq);
|
||||
offs=strlen(failures);
|
||||
}
|
||||
if (offs) {
|
||||
printf("Check Fail: %s\n",failures);
|
||||
return -1;
|
||||
}
|
||||
printf("Sample looks good!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Who checks the checker? The ent self-test test the various options by collecting the output
|
||||
* of the various options on a given input in a text and then doing a diff with the expected
|
||||
* output. IMHO the text comparison is pretty cheezy since doubles are involved. We make the
|
||||
* same check but do not require equality on the quantities involved
|
||||
*/
|
||||
|
||||
static int checkSelf(long totalc, double ent, double chisq, double mean, double montepi, double scc)
|
||||
{
|
||||
double ref[6] = {11619,7.787095,6567.223255,110.000258,3.392562,0.098324};
|
||||
double tst[6] = {totalc,ent,chisq,mean,montepi,scc};
|
||||
int i;double f;
|
||||
for(i=0;i<6;i++) {
|
||||
f=fabs(tst[i]-ref[i])/ref[i];
|
||||
if (f > params->xtreme) {
|
||||
printf("Self-test(%d) failed:%f?",i,f);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
printf("Self-test good!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* HELP -- Print information on how to call */
|
||||
|
||||
static void help(void)
|
||||
{
|
||||
printf("entest -- Test the havege RNG.");
|
||||
printf("\n");
|
||||
printf("\n Options: -c<min> Chi Square Threshold");
|
||||
printf("\n -e<min> Min entropy/char");
|
||||
printf("\n -f<file> File");
|
||||
printf("\n -m<min> Min arithmetic mean");
|
||||
printf("\n -p<max> Max error in pi");
|
||||
printf("\n -s<min> Min serial coeficient");
|
||||
printf("\n -t Self test");
|
||||
printf("\n -u Print this message\n");
|
||||
printf("\n -v Verbose - show the stats");
|
||||
printf("\nAdapted from the work of John Walker");
|
||||
printf("\n http://www.fourmilab.ch/\n\n");
|
||||
}
|
||||
|
||||
|
||||
/* Main program */
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int oc, opt;
|
||||
long ccount[256]; /* Bins to count occurrences of values */
|
||||
long totalc = 0; /* Total character count */
|
||||
double montepi, chip,
|
||||
scc, ent, mean, chisq;
|
||||
FILE *fp = stdin;
|
||||
int fold = FALSE, /* Fold upper to lower */
|
||||
binary = FALSE, /* Treat input as a bitstream */
|
||||
stest = FALSE,
|
||||
verbose = FALSE;
|
||||
char *filename="";
|
||||
|
||||
while ((opt = getopt(argc, argv, "?c:e:f:m:p:s:t:v")) != -1) {
|
||||
switch (toISOlower(opt)) {
|
||||
case 'c':
|
||||
params->chisqr = atof(optarg);
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
params->entropy = atof(optarg);
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
filename = optarg;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
params->mean = atof(optarg);
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
params->pi = atof(optarg);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
params->seq = atof(optarg);
|
||||
break;
|
||||
|
||||
case 't':
|
||||
filename = optarg;
|
||||
/* filename = "entitle.gif"; */
|
||||
stest = TRUE;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
verbose = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
help();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (!strlen(filename)) {
|
||||
printf("Need input file\n");
|
||||
help();
|
||||
return 2;
|
||||
}
|
||||
if ((fp = fopen(filename, "rb")) == NULL) {
|
||||
printf("Cannot open file %s\n", filename);
|
||||
return 2;
|
||||
}
|
||||
memset(ccount, 0, sizeof ccount);
|
||||
|
||||
/* Initialise for calculations */
|
||||
|
||||
rt_init(binary);
|
||||
|
||||
/* Scan input file and count character occurrences */
|
||||
|
||||
while ((oc = fgetc(fp)) != EOF) {
|
||||
unsigned char ocb;
|
||||
|
||||
if (fold && isISOalpha(oc) && isISOupper(oc)) {
|
||||
oc = toISOlower(oc);
|
||||
}
|
||||
ocb = (unsigned char) oc;
|
||||
totalc += binary ? 8 : 1;
|
||||
if (binary) {
|
||||
int b;
|
||||
unsigned char ob = ocb;
|
||||
|
||||
for (b = 0; b < 8; b++) {
|
||||
ccount[ob & 1]++;
|
||||
ob >>= 1;
|
||||
}
|
||||
} else {
|
||||
ccount[ocb]++; /* Update counter for this bin */
|
||||
}
|
||||
rt_add(&ocb, 1);
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
/* Complete calculation and return sequence metrics */
|
||||
|
||||
rt_end(&ent, &chisq, &mean, &montepi, &scc);
|
||||
chip = pochisq(chisq, (binary ? 1 : 255));
|
||||
|
||||
if (verbose)
|
||||
printf("\nTest Results\n"
|
||||
"Sample: %ld bytes\n"
|
||||
"Entropy: %f bits\n"
|
||||
"Chi-Square: %f(%f%%)\n"
|
||||
"Mean: %f\n"
|
||||
"PI: %f(%f%%)\n"
|
||||
"Correlation: %f\n",
|
||||
totalc, ent, chisq, chip*100, mean, montepi,100*(montepi-PI)/PI,scc);
|
||||
|
||||
if (stest)
|
||||
return checkSelf(totalc, ent, chisq, mean, montepi, scc);
|
||||
return check(totalc, ent, chip, mean, montepi, scc);
|
||||
}
|
BIN
ent/entitle.gif
Normal file
BIN
ent/entitle.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
19
ent/iso8859.c
Normal file
19
ent/iso8859.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
|
||||
/* ISO 8859/1 Latin-1 alphabetic and upper and lower case bit vector tables. */
|
||||
|
||||
/* LINTLIBRARY */
|
||||
|
||||
unsigned char isoalpha[32] = {
|
||||
0,0,0,0,0,0,0,0,127,255,255,224,127,255,255,224,0,0,0,0,0,0,0,0,255,255,
|
||||
254,255,255,255,254,255
|
||||
};
|
||||
|
||||
unsigned char isoupper[32] = {
|
||||
0,0,0,0,0,0,0,0,127,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,255,255,254,254,
|
||||
0,0,0,0
|
||||
};
|
||||
|
||||
unsigned char isolower[32] = {
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,224,0,0,0,0,0,0,0,0,0,0,0,1,255,255,
|
||||
254,255
|
||||
};
|
17
ent/iso8859.h
Normal file
17
ent/iso8859.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
/* ISO 8859/1 Latin-1 "ctype" macro replacements. */
|
||||
|
||||
extern unsigned char isoalpha[32], isoupper[32], isolower[32];
|
||||
|
||||
#define isISOspace(x) ((isascii(((unsigned char) (x))) && isspace(((unsigned char) (x)))) || ((x) == 0xA0))
|
||||
#define isISOalpha(x) ((isoalpha[(((unsigned char) (x))) / 8] & (0x80 >> ((((unsigned char) (x))) % 8))) != 0)
|
||||
#define isISOupper(x) ((isoupper[(((unsigned char) (x))) / 8] & (0x80 >> ((((unsigned char) (x))) % 8))) != 0)
|
||||
#define isISOlower(x) ((isolower[(((unsigned char) (x))) / 8] & (0x80 >> ((((unsigned char) (x))) % 8))) != 0)
|
||||
#define isISOprint(x) ((((x) >= ' ') && ((x) <= '~')) || ((x) >= 0xA0))
|
||||
#define toISOupper(x) (isISOlower(x) ? (isascii(((unsigned char) (x))) ? \
|
||||
toupper(x) : (((((unsigned char) (x)) != 0xDF) && \
|
||||
(((unsigned char) (x)) != 0xFF)) ? \
|
||||
(((unsigned char) (x)) - 0x20) : (x))) : (x))
|
||||
#define toISOlower(x) (isISOupper(x) ? (isascii(((unsigned char) (x))) ? \
|
||||
tolower(x) : (((unsigned char) (x)) + 0x20)) \
|
||||
: (x))
|
183
ent/randtest.c
Normal file
183
ent/randtest.c
Normal file
|
@ -0,0 +1,183 @@
|
|||
/*
|
||||
|
||||
Apply various randomness tests to a stream of bytes
|
||||
|
||||
by John Walker -- September 1996
|
||||
http://www.fourmilab.ch/
|
||||
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
#define log2of10 3.32192809488736234787
|
||||
|
||||
static int binary = FALSE; /* Treat input as a bitstream */
|
||||
|
||||
static long ccount[256], /* Bins to count occurrences of values */
|
||||
totalc = 0; /* Total bytes counted */
|
||||
static double prob[256]; /* Probabilities per bin for entropy */
|
||||
|
||||
/* RT_LOG2 -- Calculate log to the base 2 */
|
||||
|
||||
static double rt_log2(double x)
|
||||
{
|
||||
return log2of10 * log10(x);
|
||||
}
|
||||
|
||||
#define MONTEN 6 /* Bytes used as Monte Carlo
|
||||
co-ordinates. This should be no more
|
||||
bits than the mantissa of your
|
||||
"double" floating point type. */
|
||||
|
||||
static int mp, sccfirst;
|
||||
static unsigned int monte[MONTEN];
|
||||
static long inmont, mcount;
|
||||
static double cexp, incirc, montex, montey, montepi,
|
||||
scc, sccun, sccu0, scclast, scct1, scct2, scct3,
|
||||
ent, chisq, datasum;
|
||||
|
||||
/* RT_INIT -- Initialise random test counters. */
|
||||
|
||||
void rt_init(int binmode)
|
||||
{
|
||||
int i;
|
||||
|
||||
binary = binmode; /* Set binary / byte mode */
|
||||
|
||||
/* Initialise for calculations */
|
||||
|
||||
ent = 0.0; /* Clear entropy accumulator */
|
||||
chisq = 0.0; /* Clear Chi-Square */
|
||||
datasum = 0.0; /* Clear sum of bytes for arithmetic mean */
|
||||
|
||||
mp = 0; /* Reset Monte Carlo accumulator pointer */
|
||||
mcount = 0; /* Clear Monte Carlo tries */
|
||||
inmont = 0; /* Clear Monte Carlo inside count */
|
||||
incirc = 65535.0 * 65535.0;/* In-circle distance for Monte Carlo */
|
||||
|
||||
sccfirst = TRUE; /* Mark first time for serial correlation */
|
||||
scct1 = scct2 = scct3 = 0.0; /* Clear serial correlation terms */
|
||||
|
||||
incirc = pow(pow(256.0, (double) (MONTEN / 2)) - 1, 2.0);
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
ccount[i] = 0;
|
||||
}
|
||||
totalc = 0;
|
||||
}
|
||||
|
||||
/* RT_ADD -- Add one or more bytes to accumulation. */
|
||||
|
||||
void rt_add(void *buf, int bufl)
|
||||
{
|
||||
unsigned char *bp = buf;
|
||||
int oc, c, bean;
|
||||
|
||||
while (bean = 0, (bufl-- > 0)) {
|
||||
oc = *bp++;
|
||||
|
||||
do {
|
||||
if (binary) {
|
||||
c = !!(oc & 0x80);
|
||||
} else {
|
||||
c = oc;
|
||||
}
|
||||
ccount[c]++; /* Update counter for this bin */
|
||||
totalc++;
|
||||
|
||||
/* Update inside / outside circle counts for Monte Carlo
|
||||
computation of PI */
|
||||
|
||||
if (bean == 0) {
|
||||
monte[mp++] = oc; /* Save character for Monte Carlo */
|
||||
if (mp >= MONTEN) { /* Calculate every MONTEN character */
|
||||
int mj;
|
||||
|
||||
mp = 0;
|
||||
mcount++;
|
||||
montex = montey = 0;
|
||||
for (mj = 0; mj < MONTEN / 2; mj++) {
|
||||
montex = (montex * 256.0) + monte[mj];
|
||||
montey = (montey * 256.0) + monte[(MONTEN / 2) + mj];
|
||||
}
|
||||
if ((montex * montex + montey * montey) <= incirc) {
|
||||
inmont++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Update calculation of serial correlation coefficient */
|
||||
|
||||
sccun = c;
|
||||
if (sccfirst) {
|
||||
sccfirst = FALSE;
|
||||
scclast = 0;
|
||||
sccu0 = sccun;
|
||||
} else {
|
||||
scct1 = scct1 + scclast * sccun;
|
||||
}
|
||||
scct2 = scct2 + sccun;
|
||||
scct3 = scct3 + (sccun * sccun);
|
||||
scclast = sccun;
|
||||
oc <<= 1;
|
||||
} while (binary && (++bean < 8));
|
||||
}
|
||||
}
|
||||
|
||||
/* RT_END -- Complete calculation and return results. */
|
||||
|
||||
void rt_end(double *r_ent, double *r_chisq, double *r_mean,
|
||||
double *r_montepicalc, double *r_scc)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Complete calculation of serial correlation coefficient */
|
||||
|
||||
scct1 = scct1 + scclast * sccu0;
|
||||
scct2 = scct2 * scct2;
|
||||
scc = totalc * scct3 - scct2;
|
||||
if (scc == 0.0) {
|
||||
scc = -100000;
|
||||
} else {
|
||||
scc = (totalc * scct1 - scct2) / scc;
|
||||
}
|
||||
|
||||
/* Scan bins and calculate probability for each bin and
|
||||
Chi-Square distribution. The probability will be reused
|
||||
in the entropy calculation below. While we're at it,
|
||||
we sum of all the data which will be used to compute the
|
||||
mean. */
|
||||
|
||||
cexp = totalc / (binary ? 2.0 : 256.0); /* Expected count per bin */
|
||||
for (i = 0; i < (binary ? 2 : 256); i++) {
|
||||
double a = ccount[i] - cexp;;
|
||||
|
||||
prob[i] = ((double) ccount[i]) / totalc;
|
||||
chisq += (a * a) / cexp;
|
||||
datasum += ((double) i) * ccount[i];
|
||||
}
|
||||
|
||||
/* Calculate entropy */
|
||||
|
||||
for (i = 0; i < (binary ? 2 : 256); i++) {
|
||||
if (prob[i] > 0.0) {
|
||||
ent += prob[i] * rt_log2(1 / prob[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Calculate Monte Carlo value for PI from percentage of hits
|
||||
within the circle */
|
||||
|
||||
montepi = 4.0 * (((double) inmont) / mcount);
|
||||
|
||||
/* Return results through arguments */
|
||||
|
||||
*r_ent = ent;
|
||||
*r_chisq = chisq;
|
||||
*r_mean = datasum / totalc;
|
||||
*r_montepicalc = montepi;
|
||||
*r_scc = scc;
|
||||
}
|
7
ent/randtest.h
Normal file
7
ent/randtest.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
/* Random test function prototypes */
|
||||
|
||||
extern void rt_init(int binmode);
|
||||
extern void rt_add(void *buf, int bufl);
|
||||
extern void rt_end(double *r_ent, double *r_chisq, double *r_mean,
|
||||
double *r_montepicalc, double *r_scc);
|
45
init.d/Makefile.am
Normal file
45
init.d/Makefile.am
Normal file
|
@ -0,0 +1,45 @@
|
|||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
EXTRA_DIST = service.fedora service.forking service.redhat service.suse sysv.lsb sysv.redhat
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
CLEANFILES = haveged haveged.service
|
||||
|
||||
do_subst = sed -e 's,[@]SBIN_DIR[@],$(sbindir),g'
|
||||
src_tmpl = @HA_DISTRO@
|
||||
unit_dir = @HA_UNITD@
|
||||
|
||||
if ENABLE_NOINIT
|
||||
## user will install manually.
|
||||
install-exec-hook:
|
||||
@echo "no init script installed";
|
||||
endif
|
||||
|
||||
if ENABLE_SYSV
|
||||
## legacy init script - installation via automake defaults
|
||||
|
||||
initdir = $(sysconfdir)/init.d
|
||||
init_SCRIPTS = haveged
|
||||
|
||||
haveged: $(src_tmpl) Makefile
|
||||
$(do_subst) < $(srcdir)/$(src_tmpl) > haveged;
|
||||
|
||||
endif
|
||||
|
||||
if ENABLE_SYSTEMD
|
||||
## systemd script - lookup unitdir if not specified
|
||||
|
||||
install-exec-hook:
|
||||
$(do_subst) < $(srcdir)/$(src_tmpl) > haveged.service;
|
||||
|
||||
install-data-hook: install-exec-hook
|
||||
if ENABLE_SYSTEMD_LOOKUP
|
||||
install -p -D -m644 haveged.service $(DESTDIR)`pkg-config --variable=systemdsystemunitdir systemd`/haveged.service;
|
||||
else
|
||||
install -p -D -m644 haveged.service $(DESTDIR)$(unit_dir)/haveged.service;
|
||||
endif
|
||||
## Defer systemd call to for cross-compile case
|
||||
## systemctl enable haveged.service;
|
||||
|
||||
endif
|
532
init.d/Makefile.in
Normal file
532
init.d/Makefile.in
Normal file
|
@ -0,0 +1,532 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = init.d
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(initdir)"
|
||||
SCRIPTS = $(init_SCRIPTS)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
depcomp =
|
||||
am__maybe_remake_depfiles =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVEGE_LT_VERSION = @HAVEGE_LT_VERSION@
|
||||
HA_DISTRO = @HA_DISTRO@
|
||||
HA_LDFLAGS = @HA_LDFLAGS@
|
||||
HA_UNITD = @HA_UNITD@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = service.fedora service.forking service.redhat service.suse sysv.lsb sysv.redhat
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
CLEANFILES = haveged haveged.service
|
||||
do_subst = sed -e 's,[@]SBIN_DIR[@],$(sbindir),g'
|
||||
src_tmpl = @HA_DISTRO@
|
||||
unit_dir = @HA_UNITD@
|
||||
@ENABLE_SYSV_TRUE@initdir = $(sysconfdir)/init.d
|
||||
@ENABLE_SYSV_TRUE@init_SCRIPTS = haveged
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps init.d/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu --ignore-deps init.d/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
install-initSCRIPTS: $(init_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(init_SCRIPTS)'; test -n "$(initdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(initdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(initdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n' \
|
||||
-e 'h;s|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
|
||||
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
|
||||
if (++n[d] == $(am__install_max)) { \
|
||||
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
|
||||
else { print "f", d "/" $$4, $$1 } } \
|
||||
END { for (d in files) print "f", d, files[d] }' | \
|
||||
while read type dir files; do \
|
||||
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(initdir)$$dir'"; \
|
||||
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(initdir)$$dir" || exit $$?; \
|
||||
} \
|
||||
; done
|
||||
|
||||
uninstall-initSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(init_SCRIPTS)'; test -n "$(initdir)" || exit 0; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 's,.*/,,;$(transform)'`; \
|
||||
dir='$(DESTDIR)$(initdir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(SCRIPTS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(initdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
@ENABLE_NOINIT_FALSE@@ENABLE_SYSTEMD_FALSE@install-exec-hook:
|
||||
@ENABLE_SYSTEMD_FALSE@install-data-hook:
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-initSCRIPTS
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-initSCRIPTS
|
||||
|
||||
.MAKE: install-am install-data-am install-exec-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am \
|
||||
install-data-hook install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-exec-hook install-html install-html-am \
|
||||
install-info install-info-am install-initSCRIPTS install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am uninstall-initSCRIPTS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
@ENABLE_NOINIT_TRUE@install-exec-hook:
|
||||
@ENABLE_NOINIT_TRUE@ @echo "no init script installed";
|
||||
|
||||
@ENABLE_SYSV_TRUE@haveged: $(src_tmpl) Makefile
|
||||
@ENABLE_SYSV_TRUE@ $(do_subst) < $(srcdir)/$(src_tmpl) > haveged;
|
||||
|
||||
@ENABLE_SYSTEMD_TRUE@install-exec-hook:
|
||||
@ENABLE_SYSTEMD_TRUE@ $(do_subst) < $(srcdir)/$(src_tmpl) > haveged.service;
|
||||
|
||||
@ENABLE_SYSTEMD_TRUE@install-data-hook: install-exec-hook
|
||||
@ENABLE_SYSTEMD_LOOKUP_TRUE@@ENABLE_SYSTEMD_TRUE@ install -p -D -m644 haveged.service $(DESTDIR)`pkg-config --variable=systemdsystemunitdir systemd`/haveged.service;
|
||||
@ENABLE_SYSTEMD_LOOKUP_FALSE@@ENABLE_SYSTEMD_TRUE@ install -p -D -m644 haveged.service $(DESTDIR)$(unit_dir)/haveged.service;
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
35
init.d/service.fedora
Normal file
35
init.d/service.fedora
Normal file
|
@ -0,0 +1,35 @@
|
|||
[Unit]
|
||||
Description=Entropy Daemon based on the HAVEGE algorithm
|
||||
Documentation=man:haveged(8) http://www.issihosts.com/haveged/
|
||||
DefaultDependencies=no
|
||||
After=systemd-tmpfiles-setup-dev.service
|
||||
Before=sysinit.target shutdown.target systemd-journald.service
|
||||
|
||||
[Service]
|
||||
ExecStart=@SBIN_DIR@/haveged -w 1024 -v 1 --Foreground
|
||||
Restart=always
|
||||
SuccessExitStatus=137 143
|
||||
|
||||
SecureBits=noroot-locked
|
||||
CapabilityBoundingSet=CAP_SYS_ADMIN
|
||||
# We can *not* set PrivateTmp=true as it can cause an ordering cycle.
|
||||
PrivateTmp=false
|
||||
PrivateDevices=true
|
||||
PrivateNetwork=true
|
||||
ProtectSystem=full
|
||||
ProtectHome=true
|
||||
ProtectHostname=true
|
||||
ProtectKernelLogs=true
|
||||
ProtectKernelModules=true
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
|
||||
LockPersonality=true
|
||||
MemoryDenyWriteExecute=true
|
||||
SystemCallArchitectures=native
|
||||
SystemCallFilter=@system-service
|
||||
SystemCallFilter=~@mount
|
||||
SystemCallErrorNumber=EPERM
|
||||
|
||||
[Install]
|
||||
WantedBy=sysinit.target
|
11
init.d/service.forking
Normal file
11
init.d/service.forking
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Entropy Daemon based on the HAVEGE algorithm
|
||||
Documentation=man:haveged(8) http://www.issihosts.com/haveged/
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
PIDFile=/run/haveged.pid
|
||||
ExecStart=@SBIN_DIR@/haveged -w 1024 -v 1 -p /run/haveged.pid
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
10
init.d/service.redhat
Normal file
10
init.d/service.redhat
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Entropy Daemon based on the HAVEGE algorithm
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
PIDFile=/run/haveged.pid
|
||||
ExecStart=@SBIN_DIR@/haveged -w 1024 -v 1
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
19
init.d/service.suse
Normal file
19
init.d/service.suse
Normal file
|
@ -0,0 +1,19 @@
|
|||
[Unit]
|
||||
Description=Entropy Daemon based on the HAVEGE algorithm
|
||||
Documentation=man:haveged(8) http://www.issihosts.com/haveged/
|
||||
DefaultDependencies=no
|
||||
ConditionVirtualization=!container
|
||||
#Conflicts=shutdown.target
|
||||
# Don't wait for systemd-random-seed.service, leads to deadlock with fips=1
|
||||
#After=systemd-random-seed.service
|
||||
Before=sysinit.target shutdown.target systemd-journald.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/sbin/haveged -w 1024 -v 0 -F
|
||||
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_SYS_CHROOT
|
||||
PrivateNetwork=yes
|
||||
Restart=always
|
||||
SuccessExitStatus=137 143
|
||||
|
||||
[Install]
|
||||
WantedBy=sysinit.target
|
75
init.d/sysv.lsb
Normal file
75
init.d/sysv.lsb
Normal file
|
@ -0,0 +1,75 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright 2011-2012 Jirka Hladky hladky_dot_jiri_at_gmail_com
|
||||
# Copyright 2011-2012 Gary Wuertz gary@issiweb.com
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# haveged: Starts the haveged entropy daemon
|
||||
#
|
||||
# chkconfig: - 75 25
|
||||
# description: havege entropy daemon
|
||||
# processname: haveged
|
||||
#
|
||||
# source function library
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
prog="haveged"
|
||||
|
||||
HAVEGED_BIN=/usr/local/sbin/haveged
|
||||
LOCKFILE=/var/lock/$prog
|
||||
RETVAL=0
|
||||
|
||||
test -x ${HAVEGED_BIN} || { echo "Cannot find haveged executable ${HAVEGED_BIN}" 1>&2 ; exit 5 ; }
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n $"Starting $prog: "
|
||||
${HAVEGED_BIN} -w 1024 -v 1 && log_success_msg || log_failure_msg
|
||||
RETVAL=$?
|
||||
[ "$RETVAL" = 0 ] && touch ${LOCKFILE}
|
||||
echo
|
||||
;;
|
||||
|
||||
stop)
|
||||
echo -n $"Stopping $prog: "
|
||||
if [ -e /var/run/$prog.pid ]; then
|
||||
kill `cat /var/run/$prog.pid` && log_success_msg || log_failure_msg
|
||||
else
|
||||
log_failure_msg
|
||||
fi
|
||||
RETVAL=$?
|
||||
[ "$RETVAL" = 0 ] && rm -f ${LOCKFILE}
|
||||
echo
|
||||
;;
|
||||
|
||||
restart|reload)
|
||||
$0 stop
|
||||
$0 start
|
||||
;;
|
||||
|
||||
condrestart)
|
||||
[ -f $LOCKFILE ] && $0 restart
|
||||
;;
|
||||
|
||||
status)
|
||||
status $prog
|
||||
RETVAL=$?
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $prog {start|stop|status|reload|restart|condrestart}"
|
||||
esac
|
||||
exit $RETVAL
|
74
init.d/sysv.redhat
Normal file
74
init.d/sysv.redhat
Normal file
|
@ -0,0 +1,74 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright 2011-2021 Jirka Hladky hladky DOT jiri AT gmail DOT com
|
||||
# Copyright 2011-2012 Gary Wuertz gary@issiweb.com
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# haveged: Starts the haveged entropy daemon
|
||||
#
|
||||
# chkconfig: - 75 25
|
||||
# description: havege entropy daemon
|
||||
# processname: haveged
|
||||
#
|
||||
# source function library
|
||||
. /etc/init.d/functions
|
||||
|
||||
HAVEGED_BIN=@SBIN_DIR@/haveged
|
||||
|
||||
RETVAL=0
|
||||
prog="haveged"
|
||||
LOCKFILE=/var/lock/subsys/$prog
|
||||
|
||||
test -x ${HAVEGED_BIN} || { echo "Cannot find haveged executable ${HAVEGED_BIN}" 1>&2 ; exit 5 ; }
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n $"Starting $prog: "
|
||||
${HAVEGED_BIN} -w 1024 -v 1 && success || failure
|
||||
RETVAL=$?
|
||||
[ "$RETVAL" = 0 ] && touch ${LOCKFILE}
|
||||
echo
|
||||
;;
|
||||
|
||||
stop)
|
||||
echo -n $"Stopping $prog: "
|
||||
if [ -e /var/run/$prog.pid ]; then
|
||||
kill `cat /var/run/$prog.pid` && success || failure
|
||||
else
|
||||
failure
|
||||
fi
|
||||
RETVAL=$?
|
||||
[ "$RETVAL" = 0 ] && rm -f ${LOCKFILE}
|
||||
echo
|
||||
;;
|
||||
|
||||
restart|reload)
|
||||
$0 stop
|
||||
$0 start
|
||||
;;
|
||||
|
||||
condrestart)
|
||||
[ -f $LOCKFILE ] && $0 restart
|
||||
;;
|
||||
|
||||
status)
|
||||
status $prog
|
||||
RETVAL=$?
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $prog {start|stop|status|reload|restart|condrestart}"
|
||||
esac
|
||||
exit $RETVAL
|
7
man/Makefile.am
Normal file
7
man/Makefile.am
Normal file
|
@ -0,0 +1,7 @@
|
|||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
man_MANS = haveged.8 libhavege.3
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
564
man/Makefile.in
Normal file
564
man/Makefile.in
Normal file
|
@ -0,0 +1,564 @@
|
|||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = man
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
depcomp =
|
||||
am__maybe_remake_depfiles =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
man3dir = $(mandir)/man3
|
||||
am__installdirs = "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man8dir)"
|
||||
man8dir = $(mandir)/man8
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVEGE_LT_VERSION = @HAVEGE_LT_VERSION@
|
||||
HA_DISTRO = @HA_DISTRO@
|
||||
HA_LDFLAGS = @HA_LDFLAGS@
|
||||
HA_UNITD = @HA_UNITD@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
man_MANS = haveged.8 libhavege.3
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps man/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu --ignore-deps man/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-man3: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man3dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.3[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man3:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man3dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.3[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man8: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man8dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.8[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man8:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man8dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(MANS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man8dir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||