Compare commits
13 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
5b2af535fd | 3 years ago |
|
|
9b5e047f06 | 3 years ago |
|
|
8d357cfad3 | 3 years ago |
|
|
a39be3cb1b | 3 years ago |
|
|
24f35ae114 | 3 years ago |
|
|
98f5e5215e | 3 years ago |
|
|
d7f20adc7c | 3 years ago |
|
|
83c446a740 | 3 years ago |
|
|
aad210386e | 3 years ago |
|
|
ad2aa443c9 | 3 years ago |
|
|
9c0d606490 | 3 years ago |
|
|
29c7285b19 | 3 years ago |
|
|
46fbfdf4bc | 3 years ago |
|
Before Width: | Height: | Size: 644 KiB |
@ -1 +0,0 @@
|
||||
测试用例。
|
||||
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 275 KiB After Width: | Height: | Size: 275 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 517 KiB After Width: | Height: | Size: 517 KiB |
@ -1,32 +0,0 @@
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
@ -1,674 +0,0 @@
|
||||
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>.
|
||||
@ -1,18 +0,0 @@
|
||||
# ANT (Agile Network Tester)
|
||||
Agile Network Tester is a FPGA-CPUs based Network Tester based on [FAST](www.fastswitch.org). We write this to help people test the performance of network prototypes,
|
||||
when they don't have commercial testers at hand.
|
||||
|
||||
the ANT v1 has been up online since 2018.11.7, welcome to use!
|
||||
|
||||
Tips: ANT is aimming to be deployed on both Xilinx and Altera FPGAs, but we set Xilinx Zynq 7000 as the platform in ANT v1.
|
||||
|
||||
### How to use
|
||||
Firstly, you need to clone `/App/BOOT.bin` and `/App/ant` into the directory of `/mnt` of the ARM core on Zynq. Then, reboot the OS, insmod `openbox-s4.ko`, turn on the network port with `ifconfig xxx up` and run `./ant` for hint. Then you may know how to use ANT (quite simple).
|
||||
|
||||
After finish the test, the testing report will be seen on both the `terminal` and the file named `latency_out`.
|
||||
|
||||
Remember that ANT now is only used for **throughput/jitter/latency/drop-rate** test, We are working on **compiler back-end design to enable complex network function evaluation**. What's more, if you and your company have some interesting demands, please leave a comment in the `issues` and we are willing to support them in the next version of ANT to help as many people as we can.
|
||||
|
||||
Let's see what ANT can do :)
|
||||
|
||||
Tip: If you have any problem, please contact me nudtyxr@hotmail.com
|
||||
@ -1,347 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 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 <http://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 )
|
||||
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 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
@ -1,63 +0,0 @@
|
||||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "fast-ant"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "fast-ant"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "fast-ant 0.4.3"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "fast-ant"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "0.4.3"
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "0.4.3"
|
||||
@ -1,62 +0,0 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_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
|
||||
|
||||
/* 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/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* 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 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
@ -1,62 +0,0 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_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
|
||||
|
||||
/* 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/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* 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 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
@ -1,617 +0,0 @@
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by fast-ant configure 0.4.3, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ ./configure --host=arm-xilinx-linux-gnueabi
|
||||
|
||||
## --------- ##
|
||||
## Platform. ##
|
||||
## --------- ##
|
||||
|
||||
hostname = localhost.localdomain
|
||||
uname -m = x86_64
|
||||
uname -r = 3.10.0-862.9.1.el7.x86_64
|
||||
uname -s = Linux
|
||||
uname -v = #1 SMP Mon Jul 16 16:29:36 UTC 2018
|
||||
|
||||
/usr/bin/uname -p = x86_64
|
||||
/bin/uname -X = unknown
|
||||
|
||||
/bin/arch = x86_64
|
||||
/usr/bin/arch -k = unknown
|
||||
/usr/convex/getsysinfo = unknown
|
||||
/usr/bin/hostinfo = unknown
|
||||
/bin/machine = unknown
|
||||
/usr/bin/oslevel = unknown
|
||||
/bin/universe = unknown
|
||||
|
||||
PATH: /usr/local/bin
|
||||
PATH: /usr/local/sbin
|
||||
PATH: /usr/bin
|
||||
PATH: /usr/sbin
|
||||
PATH: /bin
|
||||
PATH: /sbin
|
||||
PATH: /home/dwinters/.local/bin
|
||||
PATH: /home/dwinters/bin
|
||||
PATH: /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin
|
||||
|
||||
|
||||
## ----------- ##
|
||||
## Core tests. ##
|
||||
## ----------- ##
|
||||
|
||||
configure:2159: checking for a BSD-compatible install
|
||||
configure:2227: result: /usr/bin/install -c
|
||||
configure:2238: checking whether build environment is sane
|
||||
configure:2293: result: yes
|
||||
configure:2352: checking for arm-xilinx-linux-gnueabi-strip
|
||||
configure:2368: found /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-strip
|
||||
configure:2379: result: arm-xilinx-linux-gnueabi-strip
|
||||
configure:2444: checking for a thread-safe mkdir -p
|
||||
configure:2483: result: /usr/bin/mkdir -p
|
||||
configure:2490: checking for gawk
|
||||
configure:2506: found /usr/bin/gawk
|
||||
configure:2517: result: gawk
|
||||
configure:2528: checking whether make sets $(MAKE)
|
||||
configure:2550: result: yes
|
||||
configure:2579: checking whether make supports nested variables
|
||||
configure:2596: result: yes
|
||||
configure:2692: checking whether make supports nested variables
|
||||
configure:2709: result: yes
|
||||
configure:2729: checking for arm-xilinx-linux-gnueabi-gcc
|
||||
configure:2745: found /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-gcc
|
||||
configure:2756: result: arm-xilinx-linux-gnueabi-gcc
|
||||
configure:3025: checking for C compiler version
|
||||
configure:3034: arm-xilinx-linux-gnueabi-gcc --version >&5
|
||||
arm-xilinx-linux-gnueabi-gcc (Sourcery CodeBench Lite 2011.09-50) 4.6.1
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
configure:3045: $? = 0
|
||||
configure:3034: arm-xilinx-linux-gnueabi-gcc -v >&5
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=arm-xilinx-linux-gnueabi-gcc
|
||||
COLLECT_LTO_WRAPPER=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/../libexec/gcc/arm-xilinx-linux-gnueabi/4.6.1/lto-wrapper
|
||||
Target: arm-xilinx-linux-gnueabi
|
||||
Configured with: /scratch/janisjo/2011.09-xilinx-linux/src/gcc-4.6-2011.09/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-xilinx-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-cpu=cortex-a9 --with-float=softfp --with-fpu=neon-fp16 --disable-multilib --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2011 -D__CS_SOURCERYGXX_MIN__=9 -D__CS_SOURCERYGXX_REV__=50 %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2011.09-50' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-xilinx-linux-gnueabi/libc --with-build-sysroot=/scratch/janisjo/2011.09-xilinx-linux/install/arm-xilinx-linux-gnueabi/libc --with-gmp=/scratch/janisjo/2011.09-xilinx-linux/obj/host-libs-2011.09-50-arm-xilinx-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/janisjo/2011.09-xilinx-linux/obj/host-libs-2011.09-50-arm-xilinx-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpc=/scratch/janisjo/2011.09-xilinx-linux/obj/host-libs-2011.09-50-arm-xilinx-linux-gnueabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/janisjo/2011.09-xilinx-linux/obj/host-libs-2011.09-50-arm-xilinx-linux-gnueabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/janisjo/2011.09-xilinx-linux/obj/host-libs-2011.09-50-arm-xilinx-linux-gnueabi-i686-pc-linux-gnu/usr --with-libelf=/scratch/janisjo/2011.09-xilinx-linux/obj/host-libs-2011.09-50-arm-xilinx-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/janisjo/2011.09-xilinx-linux/install/arm-xilinx-linux-gnueabi/bin --with-build-time-tools=/scratch/janisjo/2011.09-xilinx-linux/install/arm-xilinx-linux-gnueabi/bin
|
||||
Thread model: posix
|
||||
gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-50)
|
||||
configure:3045: $? = 0
|
||||
configure:3034: arm-xilinx-linux-gnueabi-gcc -V >&5
|
||||
arm-xilinx-linux-gnueabi-gcc: error: unrecognized option '-V'
|
||||
arm-xilinx-linux-gnueabi-gcc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:3045: $? = 1
|
||||
configure:3034: arm-xilinx-linux-gnueabi-gcc -qversion >&5
|
||||
arm-xilinx-linux-gnueabi-gcc: error: unrecognized option '-qversion'
|
||||
arm-xilinx-linux-gnueabi-gcc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:3045: $? = 1
|
||||
configure:3065: checking whether the C compiler works
|
||||
configure:3087: arm-xilinx-linux-gnueabi-gcc conftest.c >&5
|
||||
configure:3091: $? = 0
|
||||
configure:3139: result: yes
|
||||
configure:3142: checking for C compiler default output file name
|
||||
configure:3144: result: a.out
|
||||
configure:3150: checking for suffix of executables
|
||||
configure:3157: arm-xilinx-linux-gnueabi-gcc -o conftest conftest.c >&5
|
||||
configure:3161: $? = 0
|
||||
configure:3183: result:
|
||||
configure:3205: checking whether we are cross compiling
|
||||
configure:3213: arm-xilinx-linux-gnueabi-gcc -o conftest conftest.c >&5
|
||||
configure:3217: $? = 0
|
||||
configure:3224: ./conftest
|
||||
./configure: line 3226: ./conftest: cannot execute binary file
|
||||
configure:3228: $? = 126
|
||||
configure:3243: result: yes
|
||||
configure:3248: checking for suffix of object files
|
||||
configure:3270: arm-xilinx-linux-gnueabi-gcc -c conftest.c >&5
|
||||
configure:3274: $? = 0
|
||||
configure:3295: result: o
|
||||
configure:3299: checking whether we are using the GNU C compiler
|
||||
configure:3318: arm-xilinx-linux-gnueabi-gcc -c conftest.c >&5
|
||||
configure:3318: $? = 0
|
||||
configure:3327: result: yes
|
||||
configure:3336: checking whether arm-xilinx-linux-gnueabi-gcc accepts -g
|
||||
configure:3356: arm-xilinx-linux-gnueabi-gcc -c -g conftest.c >&5
|
||||
configure:3356: $? = 0
|
||||
configure:3397: result: yes
|
||||
configure:3414: checking for arm-xilinx-linux-gnueabi-gcc option to accept ISO C89
|
||||
configure:3477: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:3477: $? = 0
|
||||
configure:3490: result: none needed
|
||||
configure:3521: checking for style of include used by make
|
||||
configure:3549: result: GNU
|
||||
configure:3575: checking dependency style of arm-xilinx-linux-gnueabi-gcc
|
||||
configure:3686: result: gcc3
|
||||
configure:3738: checking build system type
|
||||
configure:3752: result: x86_64-unknown-linux-gnu
|
||||
configure:3772: checking host system type
|
||||
configure:3785: result: arm-xilinx-linux-gnueabi
|
||||
configure:3826: checking how to print strings
|
||||
configure:3853: result: printf
|
||||
configure:3874: checking for a sed that does not truncate output
|
||||
configure:3938: result: /usr/bin/sed
|
||||
configure:3956: checking for grep that handles long lines and -e
|
||||
configure:4014: result: /usr/bin/grep
|
||||
configure:4019: checking for egrep
|
||||
configure:4081: result: /usr/bin/grep -E
|
||||
configure:4086: checking for fgrep
|
||||
configure:4148: result: /usr/bin/grep -F
|
||||
configure:4183: checking for ld used by arm-xilinx-linux-gnueabi-gcc
|
||||
configure:4250: result: /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/bin/ld
|
||||
configure:4257: checking if the linker (/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/bin/ld) is GNU ld
|
||||
configure:4272: result: yes
|
||||
configure:4284: checking for BSD- or MS-compatible name lister (nm)
|
||||
configure:4333: result: /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B
|
||||
configure:4463: checking the name lister (/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B) interface
|
||||
configure:4470: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:4473: /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B "conftest.o"
|
||||
configure:4476: output
|
||||
00000000 B some_variable
|
||||
configure:4483: result: BSD nm
|
||||
configure:4486: checking whether ln -s works
|
||||
configure:4490: result: yes
|
||||
configure:4498: checking the maximum length of command line arguments
|
||||
configure:4628: result: 1572864
|
||||
configure:4645: checking whether the shell understands some XSI constructs
|
||||
configure:4655: result: yes
|
||||
configure:4659: checking whether the shell understands "+="
|
||||
configure:4665: result: yes
|
||||
configure:4700: checking how to convert x86_64-unknown-linux-gnu file names to arm-xilinx-linux-gnueabi format
|
||||
configure:4740: result: func_convert_file_noop
|
||||
configure:4747: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
|
||||
configure:4767: result: func_convert_file_noop
|
||||
configure:4774: checking for /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/bin/ld option to reload object files
|
||||
configure:4781: result: -r
|
||||
configure:4815: checking for arm-xilinx-linux-gnueabi-objdump
|
||||
configure:4831: found /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-objdump
|
||||
configure:4842: result: arm-xilinx-linux-gnueabi-objdump
|
||||
configure:4914: checking how to recognize dependent libraries
|
||||
configure:5116: result: pass_all
|
||||
configure:5161: checking for arm-xilinx-linux-gnueabi-dlltool
|
||||
configure:5191: result: no
|
||||
configure:5201: checking for dlltool
|
||||
configure:5231: result: no
|
||||
configure:5261: checking how to associate runtime and link libraries
|
||||
configure:5288: result: printf %s\n
|
||||
configure:5305: checking for arm-xilinx-linux-gnueabi-ar
|
||||
configure:5321: found /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-ar
|
||||
configure:5332: result: arm-xilinx-linux-gnueabi-ar
|
||||
configure:5413: checking for archiver @FILE support
|
||||
configure:5430: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:5430: $? = 0
|
||||
configure:5433: arm-xilinx-linux-gnueabi-ar cru libconftest.a @conftest.lst >&5
|
||||
configure:5436: $? = 0
|
||||
configure:5441: arm-xilinx-linux-gnueabi-ar cru libconftest.a @conftest.lst >&5
|
||||
arm-xilinx-linux-gnueabi-ar: conftest.o: No such file or directory
|
||||
configure:5444: $? = 1
|
||||
configure:5456: result: @
|
||||
configure:5474: checking for arm-xilinx-linux-gnueabi-strip
|
||||
configure:5501: result: arm-xilinx-linux-gnueabi-strip
|
||||
configure:5573: checking for arm-xilinx-linux-gnueabi-ranlib
|
||||
configure:5589: found /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-ranlib
|
||||
configure:5600: result: arm-xilinx-linux-gnueabi-ranlib
|
||||
configure:5742: checking command to parse /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B output from arm-xilinx-linux-gnueabi-gcc object
|
||||
configure:5862: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:5865: $? = 0
|
||||
configure:5869: /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
|
||||
configure:5872: $? = 0
|
||||
configure:5938: arm-xilinx-linux-gnueabi-gcc -o conftest -g -O2 conftest.c conftstm.o >&5
|
||||
configure:5941: $? = 0
|
||||
configure:5979: result: ok
|
||||
configure:6016: checking for sysroot
|
||||
configure:6046: result: no
|
||||
configure:6262: checking for arm-xilinx-linux-gnueabi-mt
|
||||
configure:6292: result: no
|
||||
configure:6302: checking for mt
|
||||
configure:6332: result: no
|
||||
configure:6352: checking if : is a manifest tool
|
||||
configure:6358: : '-?'
|
||||
configure:6366: result: no
|
||||
configure:7008: checking how to run the C preprocessor
|
||||
configure:7039: arm-xilinx-linux-gnueabi-gcc -E conftest.c
|
||||
configure:7039: $? = 0
|
||||
configure:7053: arm-xilinx-linux-gnueabi-gcc -E conftest.c
|
||||
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||
compilation terminated.
|
||||
configure:7053: $? = 1
|
||||
configure: failed program was:
|
||||
| /* confdefs.h */
|
||||
| #define PACKAGE_NAME "fast-ant"
|
||||
| #define PACKAGE_TARNAME "fast-ant"
|
||||
| #define PACKAGE_VERSION "0.4.3"
|
||||
| #define PACKAGE_STRING "fast-ant 0.4.3"
|
||||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define PACKAGE "fast-ant"
|
||||
| #define VERSION "0.4.3"
|
||||
| /* end confdefs.h. */
|
||||
| #include <ac_nonexistent.h>
|
||||
configure:7078: result: arm-xilinx-linux-gnueabi-gcc -E
|
||||
configure:7098: arm-xilinx-linux-gnueabi-gcc -E conftest.c
|
||||
configure:7098: $? = 0
|
||||
configure:7112: arm-xilinx-linux-gnueabi-gcc -E conftest.c
|
||||
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||
compilation terminated.
|
||||
configure:7112: $? = 1
|
||||
configure: failed program was:
|
||||
| /* confdefs.h */
|
||||
| #define PACKAGE_NAME "fast-ant"
|
||||
| #define PACKAGE_TARNAME "fast-ant"
|
||||
| #define PACKAGE_VERSION "0.4.3"
|
||||
| #define PACKAGE_STRING "fast-ant 0.4.3"
|
||||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define PACKAGE_URL ""
|
||||
| #define PACKAGE "fast-ant"
|
||||
| #define VERSION "0.4.3"
|
||||
| /* end confdefs.h. */
|
||||
| #include <ac_nonexistent.h>
|
||||
configure:7141: checking for ANSI C header files
|
||||
configure:7161: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7161: $? = 0
|
||||
configure:7245: result: yes
|
||||
configure:7258: checking for sys/types.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for sys/stat.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for stdlib.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for string.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for memory.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for strings.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for inttypes.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for stdint.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7258: checking for unistd.h
|
||||
configure:7258: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7258: $? = 0
|
||||
configure:7258: result: yes
|
||||
configure:7272: checking for dlfcn.h
|
||||
configure:7272: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:7272: $? = 0
|
||||
configure:7272: result: yes
|
||||
configure:7478: checking for objdir
|
||||
configure:7493: result: .libs
|
||||
configure:7760: checking if arm-xilinx-linux-gnueabi-gcc supports -fno-rtti -fno-exceptions
|
||||
configure:7778: arm-xilinx-linux-gnueabi-gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5
|
||||
cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
|
||||
configure:7782: $? = 0
|
||||
configure:7795: result: no
|
||||
configure:8122: checking for arm-xilinx-linux-gnueabi-gcc option to produce PIC
|
||||
configure:8129: result: -fPIC -DPIC
|
||||
configure:8137: checking if arm-xilinx-linux-gnueabi-gcc PIC flag -fPIC -DPIC works
|
||||
configure:8155: arm-xilinx-linux-gnueabi-gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5
|
||||
configure:8159: $? = 0
|
||||
configure:8172: result: yes
|
||||
configure:8201: checking if arm-xilinx-linux-gnueabi-gcc static flag -static works
|
||||
configure:8229: result: yes
|
||||
configure:8244: checking if arm-xilinx-linux-gnueabi-gcc supports -c -o file.o
|
||||
configure:8265: arm-xilinx-linux-gnueabi-gcc -c -g -O2 -o out/conftest2.o conftest.c >&5
|
||||
configure:8269: $? = 0
|
||||
configure:8291: result: yes
|
||||
configure:8299: checking if arm-xilinx-linux-gnueabi-gcc supports -c -o file.o
|
||||
configure:8346: result: yes
|
||||
configure:8379: checking whether the arm-xilinx-linux-gnueabi-gcc linker (/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/bin/ld) supports shared libraries
|
||||
configure:9532: result: yes
|
||||
configure:9569: checking whether -lc should be explicitly linked in
|
||||
configure:9577: arm-xilinx-linux-gnueabi-gcc -c -g -O2 conftest.c >&5
|
||||
configure:9580: $? = 0
|
||||
configure:9595: arm-xilinx-linux-gnueabi-gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1
|
||||
configure:9598: $? = 0
|
||||
configure:9612: result: no
|
||||
configure:9772: checking dynamic linker characteristics
|
||||
configure:10283: arm-xilinx-linux-gnueabi-gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5
|
||||
configure:10283: $? = 0
|
||||
configure:10509: result: GNU/Linux ld.so
|
||||
configure:10616: checking how to hardcode library paths into programs
|
||||
configure:10641: result: immediate
|
||||
configure:11181: checking whether stripping libraries is possible
|
||||
configure:11186: result: yes
|
||||
configure:11221: checking if libtool supports shared libraries
|
||||
configure:11223: result: yes
|
||||
configure:11226: checking whether to build shared libraries
|
||||
configure:11247: result: yes
|
||||
configure:11250: checking whether to build static libraries
|
||||
configure:11254: result: yes
|
||||
configure:11407: checking that generated files are newer than configure
|
||||
configure:11413: result: done
|
||||
configure:11436: creating ./config.status
|
||||
|
||||
## ---------------------- ##
|
||||
## Running config.status. ##
|
||||
## ---------------------- ##
|
||||
|
||||
This file was extended by fast-ant config.status 0.4.3, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES =
|
||||
CONFIG_HEADERS =
|
||||
CONFIG_LINKS =
|
||||
CONFIG_COMMANDS =
|
||||
$ ./config.status
|
||||
|
||||
on localhost.localdomain
|
||||
|
||||
config.status:1104: creating Makefile
|
||||
config.status:1104: creating src/Makefile
|
||||
config.status:1104: creating include/Makefile
|
||||
config.status:1104: creating lib/Makefile
|
||||
config.status:1104: creating app/Makefile
|
||||
config.status:1104: creating tools/Makefile
|
||||
config.status:1104: creating lib/libreg/Makefile
|
||||
config.status:1104: creating lib/librule/Makefile
|
||||
config.status:1104: creating lib/libua/Makefile
|
||||
config.status:1104: creating lib/libofp/Makefile
|
||||
config.status:1104: creating lib/libams/Makefile
|
||||
config.status:1104: creating lib/libant/Makefile
|
||||
config.status:1104: creating app/l2switch/Makefile
|
||||
config.status:1104: creating app/openflow/Makefile
|
||||
config.status:1104: creating app/ams/Makefile
|
||||
config.status:1104: creating app/ant/Makefile
|
||||
config.status:1104: creating tools/debug/Makefile
|
||||
config.status:1104: creating tools/reg_rw/Makefile
|
||||
config.status:1104: creating tools/rule_rw/Makefile
|
||||
config.status:1104: creating tools/port_counts/Makefile
|
||||
config.status:1104: creating tools/port_status/Makefile
|
||||
config.status:1104: creating tools/ctl_rw/Makefile
|
||||
config.status:1104: creating tools/mem_rw/Makefile
|
||||
config.status:1104: creating tools/version/Makefile
|
||||
config.status:1104: creating tools/ua_fwd/Makefile
|
||||
config.status:1104: creating config.h
|
||||
config.status:1333: executing depfiles commands
|
||||
config.status:1333: executing libtool commands
|
||||
|
||||
## ---------------- ##
|
||||
## Cache variables. ##
|
||||
## ---------------- ##
|
||||
|
||||
ac_cv_build=x86_64-unknown-linux-gnu
|
||||
ac_cv_c_compiler_gnu=yes
|
||||
ac_cv_env_CC_set=
|
||||
ac_cv_env_CC_value=
|
||||
ac_cv_env_CFLAGS_set=
|
||||
ac_cv_env_CFLAGS_value=
|
||||
ac_cv_env_CPPFLAGS_set=
|
||||
ac_cv_env_CPPFLAGS_value=
|
||||
ac_cv_env_CPP_set=
|
||||
ac_cv_env_CPP_value=
|
||||
ac_cv_env_LDFLAGS_set=
|
||||
ac_cv_env_LDFLAGS_value=
|
||||
ac_cv_env_LIBS_set=
|
||||
ac_cv_env_LIBS_value=
|
||||
ac_cv_env_build_alias_set=
|
||||
ac_cv_env_build_alias_value=
|
||||
ac_cv_env_host_alias_set=set
|
||||
ac_cv_env_host_alias_value=arm-xilinx-linux-gnueabi
|
||||
ac_cv_env_target_alias_set=
|
||||
ac_cv_env_target_alias_value=
|
||||
ac_cv_header_dlfcn_h=yes
|
||||
ac_cv_header_inttypes_h=yes
|
||||
ac_cv_header_memory_h=yes
|
||||
ac_cv_header_stdc=yes
|
||||
ac_cv_header_stdint_h=yes
|
||||
ac_cv_header_stdlib_h=yes
|
||||
ac_cv_header_string_h=yes
|
||||
ac_cv_header_strings_h=yes
|
||||
ac_cv_header_sys_stat_h=yes
|
||||
ac_cv_header_sys_types_h=yes
|
||||
ac_cv_header_unistd_h=yes
|
||||
ac_cv_host=arm-xilinx-linux-gnueabi
|
||||
ac_cv_objext=o
|
||||
ac_cv_path_EGREP='/usr/bin/grep -E'
|
||||
ac_cv_path_FGREP='/usr/bin/grep -F'
|
||||
ac_cv_path_GREP=/usr/bin/grep
|
||||
ac_cv_path_SED=/usr/bin/sed
|
||||
ac_cv_path_install='/usr/bin/install -c'
|
||||
ac_cv_path_mkdir=/usr/bin/mkdir
|
||||
ac_cv_prog_AR=arm-xilinx-linux-gnueabi-ar
|
||||
ac_cv_prog_AWK=gawk
|
||||
ac_cv_prog_CC=arm-xilinx-linux-gnueabi-gcc
|
||||
ac_cv_prog_CPP='arm-xilinx-linux-gnueabi-gcc -E'
|
||||
ac_cv_prog_OBJDUMP=arm-xilinx-linux-gnueabi-objdump
|
||||
ac_cv_prog_RANLIB=arm-xilinx-linux-gnueabi-ranlib
|
||||
ac_cv_prog_STRIP=arm-xilinx-linux-gnueabi-strip
|
||||
ac_cv_prog_cc_c89=
|
||||
ac_cv_prog_cc_g=yes
|
||||
ac_cv_prog_make_make_set=yes
|
||||
am_cv_CC_dependencies_compiler_type=gcc3
|
||||
am_cv_make_support_nested_variables=yes
|
||||
lt_cv_ar_at_file=@
|
||||
lt_cv_archive_cmds_need_lc=no
|
||||
lt_cv_deplibs_check_method=pass_all
|
||||
lt_cv_file_magic_cmd='$MAGIC_CMD'
|
||||
lt_cv_file_magic_test_file=
|
||||
lt_cv_ld_reload_flag=-r
|
||||
lt_cv_nm_interface='BSD nm'
|
||||
lt_cv_objdir=.libs
|
||||
lt_cv_path_LD=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/bin/ld
|
||||
lt_cv_path_NM='/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B'
|
||||
lt_cv_path_mainfest_tool=no
|
||||
lt_cv_prog_compiler_c_o=yes
|
||||
lt_cv_prog_compiler_pic='-fPIC -DPIC'
|
||||
lt_cv_prog_compiler_pic_works=yes
|
||||
lt_cv_prog_compiler_rtti_exceptions=no
|
||||
lt_cv_prog_compiler_static_works=yes
|
||||
lt_cv_prog_gnu_ld=yes
|
||||
lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
|
||||
lt_cv_shlibpath_overrides_runpath=no
|
||||
lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
|
||||
lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\'''
|
||||
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\'''
|
||||
lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
|
||||
lt_cv_sys_max_cmd_len=1572864
|
||||
lt_cv_to_host_file_cmd=func_convert_file_noop
|
||||
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
||||
|
||||
## ----------------- ##
|
||||
## Output variables. ##
|
||||
## ----------------- ##
|
||||
|
||||
ACLOCAL='${SHELL} /home/dwinters/fast-ant/missing aclocal-1.13'
|
||||
AMDEPBACKSLASH='\'
|
||||
AMDEP_FALSE='#'
|
||||
AMDEP_TRUE=''
|
||||
AMTAR='$${TAR-tar}'
|
||||
AM_BACKSLASH='\'
|
||||
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
|
||||
AM_DEFAULT_VERBOSITY='0'
|
||||
AM_V='$(V)'
|
||||
AR='arm-xilinx-linux-gnueabi-ar'
|
||||
AUTOCONF='${SHELL} /home/dwinters/fast-ant/missing autoconf'
|
||||
AUTOHEADER='${SHELL} /home/dwinters/fast-ant/missing autoheader'
|
||||
AUTOMAKE='${SHELL} /home/dwinters/fast-ant/missing automake-1.13'
|
||||
AWK='gawk'
|
||||
CC='arm-xilinx-linux-gnueabi-gcc'
|
||||
CCDEPMODE='depmode=gcc3'
|
||||
CFLAGS='-g -O2'
|
||||
CPP='arm-xilinx-linux-gnueabi-gcc -E'
|
||||
CPPFLAGS=''
|
||||
CYGPATH_W='echo'
|
||||
DEFS='-DHAVE_CONFIG_H'
|
||||
DEPDIR='.deps'
|
||||
DLLTOOL='false'
|
||||
DSYMUTIL=''
|
||||
DUMPBIN=''
|
||||
ECHO_C=''
|
||||
ECHO_N='-n'
|
||||
ECHO_T=''
|
||||
EGREP='/usr/bin/grep -E'
|
||||
EXEEXT=''
|
||||
FGREP='/usr/bin/grep -F'
|
||||
GREP='/usr/bin/grep'
|
||||
INSTALL_DATA='${INSTALL} -m 644'
|
||||
INSTALL_PROGRAM='${INSTALL}'
|
||||
INSTALL_SCRIPT='${INSTALL}'
|
||||
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
|
||||
LD='/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/bin/ld'
|
||||
LDFLAGS=''
|
||||
LIBOBJS=''
|
||||
LIBS=''
|
||||
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
||||
LIPO=''
|
||||
LN_S='ln -s'
|
||||
LTLIBOBJS=''
|
||||
MAKEINFO='${SHELL} /home/dwinters/fast-ant/missing makeinfo'
|
||||
MANIFEST_TOOL=':'
|
||||
MKDIR_P='/usr/bin/mkdir -p'
|
||||
NM='/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-nm -B'
|
||||
NMEDIT=''
|
||||
OBJDUMP='arm-xilinx-linux-gnueabi-objdump'
|
||||
OBJEXT='o'
|
||||
OTOOL64=''
|
||||
OTOOL=''
|
||||
PACKAGE='fast-ant'
|
||||
PACKAGE_BUGREPORT=''
|
||||
PACKAGE_NAME='fast-ant'
|
||||
PACKAGE_STRING='fast-ant 0.4.3'
|
||||
PACKAGE_TARNAME='fast-ant'
|
||||
PACKAGE_URL=''
|
||||
PACKAGE_VERSION='0.4.3'
|
||||
PATH_SEPARATOR=':'
|
||||
RANLIB='arm-xilinx-linux-gnueabi-ranlib'
|
||||
SED='/usr/bin/sed'
|
||||
SET_MAKE=''
|
||||
SHELL='/bin/sh'
|
||||
STRIP='arm-xilinx-linux-gnueabi-strip'
|
||||
VERSION='0.4.3'
|
||||
ac_ct_AR=''
|
||||
ac_ct_CC=''
|
||||
ac_ct_DUMPBIN=''
|
||||
am__EXEEXT_FALSE=''
|
||||
am__EXEEXT_TRUE='#'
|
||||
am__fastdepCC_FALSE='#'
|
||||
am__fastdepCC_TRUE=''
|
||||
am__include='include'
|
||||
am__isrc=''
|
||||
am__leading_dot='.'
|
||||
am__nodep='_no'
|
||||
am__quote=''
|
||||
am__tar='$${TAR-tar} chof - "$$tardir"'
|
||||
am__untar='$${TAR-tar} xf -'
|
||||
bindir='${exec_prefix}/bin'
|
||||
build='x86_64-unknown-linux-gnu'
|
||||
build_alias=''
|
||||
build_cpu='x86_64'
|
||||
build_os='linux-gnu'
|
||||
build_vendor='unknown'
|
||||
datadir='${datarootdir}'
|
||||
datarootdir='${prefix}/share'
|
||||
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
||||
dvidir='${docdir}'
|
||||
exec_prefix='${prefix}'
|
||||
host='arm-xilinx-linux-gnueabi'
|
||||
host_alias='arm-xilinx-linux-gnueabi'
|
||||
host_cpu='arm'
|
||||
host_os='linux-gnueabi'
|
||||
host_vendor='xilinx'
|
||||
htmldir='${docdir}'
|
||||
includedir='${prefix}/include'
|
||||
infodir='${datarootdir}/info'
|
||||
install_sh='${SHELL} /home/dwinters/fast-ant/install-sh'
|
||||
libdir='${exec_prefix}/lib'
|
||||
libexecdir='${exec_prefix}/libexec'
|
||||
localedir='${datarootdir}/locale'
|
||||
localstatedir='${prefix}/var'
|
||||
mandir='${datarootdir}/man'
|
||||
mkdir_p='$(MKDIR_P)'
|
||||
oldincludedir='/usr/include'
|
||||
pdfdir='${docdir}'
|
||||
prefix='/usr/local'
|
||||
program_transform_name='s,x,x,'
|
||||
psdir='${docdir}'
|
||||
sbindir='${exec_prefix}/sbin'
|
||||
sharedstatedir='${prefix}/com'
|
||||
sysconfdir='${prefix}/etc'
|
||||
target_alias=''
|
||||
|
||||
## ----------- ##
|
||||
## confdefs.h. ##
|
||||
## ----------- ##
|
||||
|
||||
/* confdefs.h */
|
||||
#define PACKAGE_NAME "fast-ant"
|
||||
#define PACKAGE_TARNAME "fast-ant"
|
||||
#define PACKAGE_VERSION "0.4.3"
|
||||
#define PACKAGE_STRING "fast-ant 0.4.3"
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
#define PACKAGE_URL ""
|
||||
#define PACKAGE "fast-ant"
|
||||
#define VERSION "0.4.3"
|
||||
#define STDC_HEADERS 1
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
#define HAVE_STDLIB_H 1
|
||||
#define HAVE_STRING_H 1
|
||||
#define HAVE_MEMORY_H 1
|
||||
#define HAVE_STRINGS_H 1
|
||||
#define HAVE_INTTYPES_H 1
|
||||
#define HAVE_STDINT_H 1
|
||||
#define HAVE_UNISTD_H 1
|
||||
#define HAVE_DLFCN_H 1
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
configure: exit 0
|
||||
@ -1,54 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl Created by Anjuta application wizard.
|
||||
|
||||
AC_INIT(fast-ant, 0.4.3)
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11])
|
||||
|
||||
AM_SILENT_RULES([yes])
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LT_INIT
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
src/Makefile
|
||||
include/Makefile
|
||||
lib/Makefile
|
||||
app/Makefile
|
||||
tools/Makefile
|
||||
lib/libreg/Makefile
|
||||
lib/librule/Makefile
|
||||
lib/libua/Makefile
|
||||
lib/libofp/Makefile
|
||||
lib/libams/Makefile
|
||||
lib/libant/Makefile
|
||||
app/l2switch/Makefile
|
||||
app/openflow/Makefile
|
||||
app/ams/Makefile
|
||||
app/ant/Makefile
|
||||
tools/debug/Makefile
|
||||
tools/reg_rw/Makefile
|
||||
tools/rule_rw/Makefile
|
||||
tools/port_counts/Makefile
|
||||
tools/port_status/Makefile
|
||||
tools/ctl_rw/Makefile
|
||||
tools/mem_rw/Makefile
|
||||
tools/version/Makefile
|
||||
tools/ua_fwd/Makefile
|
||||
|
||||
])
|
||||
@ -1,18 +0,0 @@
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -O -g
|
||||
CXXFLAGS =
|
||||
INCLUDE = -I ./include/
|
||||
TARGET = sent
|
||||
LIBVAR = -lua -lreg -lsent -lpthread
|
||||
LIBPATH = -L./lib
|
||||
|
||||
vpath %.h ./include
|
||||
vpath %.c ./
|
||||
|
||||
all: main_sent.c $(LIB)
|
||||
# cd ./staticlib && make all
|
||||
$(CC) $(CFLAGS) $(INCLUDE) -o $(TARGET) main_sent.c SentSocket.c $(LIBVAR) $(LIBPATH)
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f $(TARGET)
|
||||
@ -1,187 +0,0 @@
|
||||
// 创建监套接字
|
||||
#include "SentSocket.h"
|
||||
|
||||
int createSocket()
|
||||
{
|
||||
int fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd == -1)
|
||||
{
|
||||
perror("socket");
|
||||
return -1;
|
||||
}
|
||||
printf("套接字创建成功, fd=%d\n", fd);
|
||||
return fd;
|
||||
}
|
||||
|
||||
// 绑定本地的IP和端口
|
||||
int bindSocket(int lfd, unsigned short port)
|
||||
{
|
||||
struct sockaddr_in saddr;
|
||||
saddr.sin_family = AF_INET;
|
||||
saddr.sin_port = htons(port);
|
||||
saddr.sin_addr.s_addr = INADDR_ANY; // 0 = 0.0.0.0
|
||||
int ret = bind(lfd, (struct sockaddr *)&saddr, sizeof(saddr));
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("bind");
|
||||
return -1;
|
||||
}
|
||||
printf("套接字绑定成功, ip: %s, port: %d\n",
|
||||
inet_ntoa(saddr.sin_addr), port);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置监听
|
||||
int setListen(int lfd)
|
||||
{
|
||||
int ret = listen(lfd, 128);
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("listen");
|
||||
return -1;
|
||||
}
|
||||
printf("设置监听成功...\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 阻塞并等待客户端的连接
|
||||
int acceptConn(int lfd, struct sockaddr_in *addr)
|
||||
{
|
||||
int cfd = -1;
|
||||
if (addr == NULL)
|
||||
{
|
||||
cfd = accept(lfd, NULL, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
int addrlen = sizeof(struct sockaddr_in);
|
||||
cfd = accept(lfd, (struct sockaddr *)addr, &addrlen);
|
||||
}
|
||||
if (cfd == -1)
|
||||
{
|
||||
perror("accept");
|
||||
return -1;
|
||||
}
|
||||
printf("成功和客户端建立连接...\n");
|
||||
return cfd;
|
||||
}
|
||||
|
||||
// 接收数据
|
||||
int recvMsg(int cfd, char *msg)
|
||||
{
|
||||
if (msg == NULL || cfd <= 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
// 接收数据
|
||||
// 1. 读数据头
|
||||
int len = 0;
|
||||
readn(cfd, (char *)&len, 4);
|
||||
len = ntohl(len);
|
||||
printf("数据块大小: %d\n", len);
|
||||
|
||||
// 根据读出的长度分配内存
|
||||
char *buf = (char *)malloc(len + 1);
|
||||
int ret = readn(cfd, buf, len);
|
||||
if (ret != len)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
buf[len] = '\0';
|
||||
*msg = buf;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 发送数据
|
||||
int sendMsg(int cfd, const char *msg, int len)
|
||||
{
|
||||
if (msg == NULL || len <= 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
// 申请内存空间: 数据长度 + 包头4字节(存储数据长度)
|
||||
char *data = (char *)malloc(len + 4);
|
||||
int bigLen = htonl(len);
|
||||
memcpy(data, &bigLen, 4);
|
||||
memcpy(data + 4, msg, len);
|
||||
// 发送数据
|
||||
int ret = writen(cfd, data, len + 4);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 连接服务器
|
||||
int connectToHost(int fd, const char *ip, unsigned short port)
|
||||
{
|
||||
// 2. 连接服务器IP port
|
||||
struct sockaddr_in saddr;
|
||||
saddr.sin_family = AF_INET;
|
||||
saddr.sin_port = htons(port);
|
||||
inet_pton(AF_INET, ip, &saddr.sin_addr.s_addr);
|
||||
int ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("connect");
|
||||
return -1;
|
||||
}
|
||||
printf("成功和服务器建立连接...\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 关闭套接字
|
||||
int closeSocket(int fd)
|
||||
{
|
||||
int ret = close(fd);
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("close");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 接收指定的字节数
|
||||
// 函数调用成功返回 size
|
||||
int readn(int fd, char *buf, int size)
|
||||
{
|
||||
int nread = 0;
|
||||
int left = size;
|
||||
char *p = buf;
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if ((nread = read(fd, p, left)) > 0)
|
||||
{
|
||||
printf("%d\n", nread);
|
||||
p += nread;
|
||||
left -= nread;
|
||||
}
|
||||
else if (nread == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
// 发送指定的字节数
|
||||
// 函数调用成功返回 size
|
||||
int writen(int fd, const char *msg, int size)
|
||||
{
|
||||
int left = size;
|
||||
int nwrite = 0;
|
||||
const char *p = msg;
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if ((nwrite = write(fd, msg, left)) > 0)
|
||||
{
|
||||
p += nwrite;
|
||||
left -= nwrite;
|
||||
}
|
||||
else if (nwrite == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
#ifndef SENTSOCKET_H
|
||||
#define SENTSOCKET_H
|
||||
#include <arpa/inet.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
int bindSocket(int lfd, unsigned short port);
|
||||
int setListen(int lfd);
|
||||
int acceptConn(int lfd, struct sockaddr_in *addr);
|
||||
int connectToHost(int fd, const char *ip, unsigned short port);
|
||||
int createSocket();
|
||||
int sendMsg(int fd, const char *msg, int len);
|
||||
int recvMsg(int fd, char *msg);
|
||||
int closeSocket(int fd);
|
||||
int readn(int fd, char *buf, int size);
|
||||
int writen(int fd, const char *msg, int size);
|
||||
#endif
|
||||
@ -1,23 +0,0 @@
|
||||
# make static lib
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -O -g
|
||||
CXXFLAGS =
|
||||
INCLUDE = -I ../include
|
||||
TARGET = libsent.a
|
||||
LIBPATH = ./
|
||||
|
||||
|
||||
OBJS = libsent.o
|
||||
SRCS = libsent.c
|
||||
|
||||
all:$(OBJS)
|
||||
ar rcs $(TARGET) $^
|
||||
|
||||
$(OBJS):$(SRCS)
|
||||
$(CC) $(CFLAGS) $(INCLUDE) -c $^ -lua -lreg -lpthread
|
||||
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
#rm -f $(LIBPATH)*
|
||||
@ -1,555 +0,0 @@
|
||||
#include <fast.h>
|
||||
#include "../include/sent_driver.h"
|
||||
#include <unistd.h>
|
||||
|
||||
#define SCM_MID 7
|
||||
#define PGM_MID 6
|
||||
#define PGM_WR_MID 61
|
||||
#define PGM_RD_MID 62
|
||||
|
||||
#define MASK_1 0x0
|
||||
|
||||
|
||||
/*---------------------------------sent CORE FUNCTION ----------------------------*/
|
||||
/**
|
||||
* collect result counter values from PGM and SCM modules
|
||||
* @param outc valuable counter values in SCM and PGM module
|
||||
* @return 0 if success
|
||||
*/
|
||||
int sent_collect_counters(struct sent_cnt *outc)
|
||||
{
|
||||
u64 test_time = ((u64)fast_ua_hw_rd(PGM_WR_MID, SENT_TIME_CNT, MASK_1)<<32) + fast_ua_hw_rd(PGM_WR_MID, SENT_TIME_CNT-1, MASK_1);
|
||||
|
||||
//printf("test_time = %llx\n", test_time);
|
||||
u64 sent_bits = ((u64)fast_ua_hw_rd(PGM_RD_MID, SENT_BIT_CNT, MASK_1)<<32) + fast_ua_hw_rd(PGM_RD_MID, SENT_BIT_CNT-1, MASK_1);
|
||||
//printf("test_time = %llx\n", sent_bits);
|
||||
u64 sent_pkts = ((u64)fast_ua_hw_rd(PGM_RD_MID, SENT_PKT_CNT, MASK_1)<<32) + fast_ua_hw_rd(PGM_RD_MID, SENT_PKT_CNT-1, MASK_1);
|
||||
//printf("test_time = %llx\n", sent_pkts);
|
||||
u64 recv_bits = ((u64)fast_ua_hw_rd(SCM_MID, SCM_BIT_CNT, MASK_1)<<32) + fast_ua_hw_rd(SCM_MID, SCM_BIT_CNT-1, MASK_1);
|
||||
//printf("test_time = %llx\n", recv_bits);
|
||||
u64 recv_pkts = ((u64)fast_ua_hw_rd(SCM_MID, SCM_PKT_CNT, MASK_1)<<32) + fast_ua_hw_rd(SCM_MID, SCM_PKT_CNT-1, MASK_1);
|
||||
//printf("test_time = %llx\n", recv_pkts);
|
||||
|
||||
outc->test_time = test_time;
|
||||
outc->sent_bits = sent_bits;
|
||||
outc->sent_pkts = sent_pkts;
|
||||
outc->recv_bits = recv_bits;
|
||||
outc->recv_pkts = recv_pkts;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* check the hw module of sent to see if all the modules are waiting for software reset
|
||||
* @return [0 if true, otherwise return 1]
|
||||
*/
|
||||
int sent_check_finish()
|
||||
{
|
||||
if(fast_ua_hw_rd(PGM_RD_MID, sent_HW_STATE, MASK_1) == 0x910){
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* set test parameters on registers of sent modules
|
||||
* @param sentp [the struct of sent parameters]
|
||||
* @return [0 if success]
|
||||
*/
|
||||
int sent_set_test_para(struct sent_parameter sentp)
|
||||
{
|
||||
int i=0;
|
||||
i += sent_set_sent_time_reg((u64)sentp.sent_time);
|
||||
i += sent_set_sent_rate_reg((u64)sentp.sent_rate);
|
||||
i += sent_set_lat_pkt_reg((u64)sentp.lat_pkt);
|
||||
i += sent_set_lat_flag((u64)sentp.lat_flag);
|
||||
i += sent_set_n_rtt((u64)sentp.n_rtt);
|
||||
i += sent_set_proto_type((u64)sentp.proto_type);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* send a model packet to sent hw and trigger sent to start testing
|
||||
* @param pkt [model packet]
|
||||
* @param pkt_len [the length of model packet]
|
||||
* @return [pkt_len if success, else return -1]
|
||||
*/
|
||||
int sent_pkt_send(struct fast_packet *pkt, int pkt_len)
|
||||
{
|
||||
//used for debug
|
||||
print_pkt(pkt, pkt_len);
|
||||
//sent model packet
|
||||
return fast_ua_send(pkt, pkt_len);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* test the throughput using dich method, caution that this is a blocking function, only
|
||||
* returns onces finished
|
||||
* @param pkt [model packet]
|
||||
* @param pkt_len [the length of model packet]
|
||||
* @return [final throughput of the tested port]
|
||||
*/
|
||||
/*
|
||||
u32 sent_dich_throughput_test(struct fast_packet *pkt, int pkt_len, int rnt, u32 sent_rate, u64 test_time)
|
||||
{
|
||||
int rnt_cnt;
|
||||
u32 sent_rate_low = 0, sent_rate_high = sent_rate;
|
||||
struct sent_cnt sentc;
|
||||
//set test paramters
|
||||
struct sent_parameter sentp;
|
||||
sentp.sent_time = test_time;
|
||||
sentp.sent_rate = sent_rate;
|
||||
sentp.lat_pkt = 0;
|
||||
sentp.lat_flag = 0;
|
||||
sentp.n_rtt = 2; //we set n_rtt as 2 as default
|
||||
|
||||
sent_set_test_para(sentp);
|
||||
|
||||
sent_pkt_send(pkt, pkt_len);
|
||||
|
||||
usleep(test_time/100);
|
||||
//chech if the test is finished
|
||||
for(rnt_cnt = 0; rnt_cnt < rnt; rnt_cnt++){
|
||||
sent_set_test_para(sentp);
|
||||
sent_pkt_send(pkt, pkt_len);
|
||||
usleep(test_time/100);
|
||||
while(!sent_check_finish()){
|
||||
usleep(100);
|
||||
}
|
||||
if(sent_collect_counters(sentc)){
|
||||
printf("the dich exit with an error\n");
|
||||
return -1;
|
||||
}
|
||||
if (sentc.sent_pkts == sentc.recv_pkts)
|
||||
{
|
||||
sent_rate_low = (sent_rate_high + sent_rate_low) / 2;
|
||||
sentp.sent_rate = sent_rate_low;
|
||||
}
|
||||
else {
|
||||
sent_rate_high = (sent_rate_high + sent_rate_low) / 2;
|
||||
sentp.sent_rate = sent_rate_high;
|
||||
}
|
||||
}
|
||||
return sentp.sent_rate;
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* print the final counter values of the test
|
||||
* @param sent_cnt [description]
|
||||
*/
|
||||
void sent_print_counters(struct sent_cnt a_cnt, int len){
|
||||
printf("-----------------------***sent COUNTERS***-----------------------\n");
|
||||
|
||||
a_cnt.sent_bits = a_cnt.sent_bits-a_cnt.sent_pkts*16;
|
||||
|
||||
a_cnt.recv_bits = a_cnt.recv_bits-a_cnt.recv_pkts*32;
|
||||
printf("Test Time:\t%llu *10ns\n", a_cnt.test_time);
|
||||
printf("Sent Pkt Bytes:\t%llu\t Bytes\n", a_cnt.sent_bits);
|
||||
printf("Sent Pkt Num:\t%llu\t\n", a_cnt.sent_pkts);
|
||||
printf("Sent Pkt Rate:\t%llf\tKpps\n", (double)(a_cnt.sent_pkts*100000.0/a_cnt.test_time));
|
||||
printf("Sent Bit Rate:\t%llf\tMbps\n", (double)(a_cnt.sent_bits*100*8.0/a_cnt.test_time));
|
||||
printf("Recv Pkt Bytes:\t%llu\t Bytes\n", a_cnt.recv_bits);
|
||||
printf("Recv Pkt Num:\t%llu\n", a_cnt.recv_pkts);
|
||||
printf("Recv Pkt Rate:\t%llf\tKpps\n",(double)(a_cnt.recv_pkts*100000.0/a_cnt.test_time));
|
||||
printf("Recv Bit Rate:\t%llf\tMbps\n",(double)((a_cnt.recv_bits*8*100.0)/a_cnt.test_time));
|
||||
|
||||
printf("-----------------------***sent COUNTERS***-----------------------\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* reset the hw pipeline in order to enable next text round
|
||||
* @return [0 if success, else failure]
|
||||
*/
|
||||
int sent_rst(){
|
||||
//reset PGM module
|
||||
u32 rd_state = fast_ua_hw_rd(PGM_RD_MID, RD_STATE, MASK_1);
|
||||
if (rd_state == 0x910){
|
||||
if(sent_set_rd_soft_rst(1) != 0)
|
||||
return -1;
|
||||
if(sent_set_rd_soft_rst(0) != 0)
|
||||
return -1;
|
||||
fast_ua_hw_wr(SCM_MID, 0x70000001, 1, MASK_1);
|
||||
fast_ua_hw_wr(SCM_MID, 0x70000001, 0, MASK_1);
|
||||
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read latency into latency test file, in a readable format
|
||||
* @return [0 if success, else return -1]
|
||||
*/
|
||||
int import_latency_to_txt(int size){
|
||||
|
||||
FILE * fid = fopen("latency_out", "w");
|
||||
if (fid == NULL){
|
||||
printf("write latency_out.txt error!\n");
|
||||
return -1;
|
||||
}
|
||||
fprintf(fid, "/*****************latency test result****************/\n");
|
||||
fprintf(fid, " Unit *10ns \n");
|
||||
int i, j=0;
|
||||
u32 in_file_latency = 0;
|
||||
for (i = 0; i < 1023; i++){
|
||||
in_file_latency = fast_ua_hw_rd(SCM_MID, SCM_RAM_ADDR + i, MASK_1);
|
||||
usleep(1);
|
||||
if(size>0 && size<=64){
|
||||
fprintf(fid, "%04d round: %uns\t", i, (in_file_latency*10-260));
|
||||
}
|
||||
|
||||
else if(size >64 && size <=128){
|
||||
fprintf(fid, "%04d round: %uns\t", i, (in_file_latency*10-730));
|
||||
}
|
||||
else if(size>128 && size <=256){
|
||||
|
||||
fprintf(fid, "%04d round: %uns\t", i, (in_file_latency*10-2400));
|
||||
}
|
||||
else if(size>256 && size <= 512){
|
||||
|
||||
fprintf(fid, "%04d round: %uns\t", i, (in_file_latency*10-5710));
|
||||
}
|
||||
else if(size>512 && size <= 1024){
|
||||
|
||||
fprintf(fid, "%04d round: %uns\t", i, (in_file_latency*10-12370));
|
||||
}
|
||||
else if(size>1024 && size <= 1500){
|
||||
fprintf(fid, "%04d round: %uns\t", i, (in_file_latency*10-19370));
|
||||
}
|
||||
else
|
||||
fprintf(fid, "%04d round: invalid value.\t", i);
|
||||
j++;
|
||||
if(j == 5){
|
||||
fprintf(fid, "\n");
|
||||
j = 0;
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(fid, "\n/*****************latency test result****************/\n");
|
||||
fclose(fid);
|
||||
printf("latency_out.txt generated!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*---------------------------------sent CORE FUNCTION ----------------------------*/
|
||||
|
||||
|
||||
/*---------------------------------SET REG & COUNTERS----------------------------*/
|
||||
/**
|
||||
* set sent_time_cnt value in PGM module
|
||||
* @param regvalue reset sent_time_cnt
|
||||
* @return 0 if success
|
||||
*/
|
||||
int sent_set_sent_time_cnt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = ((u32) regvalue>>32);
|
||||
u32 regvalue_tmp_low = ((u32) regvalue);
|
||||
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_TIME_CNT, regvalue_tmp_high, MASK_1);
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_TIME_CNT - 1, regvalue_tmp_low, MASK_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* set sent_time_reg as regvalue
|
||||
* @param regvalue sent_time_regvalue value
|
||||
* @return 0 if success
|
||||
*/
|
||||
int sent_set_sent_time_reg(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = regvalue>>32;
|
||||
printf("regvalue tmp high = %lx\n", regvalue_tmp_high);
|
||||
u32 regvalue_tmp_low = ((u32) regvalue);
|
||||
printf("regvalue tmp low = %lx\n", regvalue_tmp_low);
|
||||
|
||||
fast_ua_hw_wr(PGM_WR_MID, SENT_TIME_REG, regvalue_tmp_high, MASK_1);
|
||||
fast_ua_hw_wr(PGM_WR_MID, SENT_TIME_REG - 1, regvalue_tmp_low, MASK_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sent_set_sent_rate_cnt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_RATE_CNT, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sent_set_sent_rate_reg(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_RATE_REG, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sent_set_lat_pkt_cnt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(PGM_RD_MID, LAT_PKT_CNT, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sent_set_lat_pkt_reg(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(PGM_RD_MID, LAT_PKT_REG, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* set counters to count for total bytes of traffic
|
||||
* @param regvalue the counter value to be set
|
||||
* @return 0 if success
|
||||
*/
|
||||
int sent_set_sent_bit_cnt(u64 regvalue)
|
||||
{
|
||||
|
||||
u32 regvalue_tmp_high = ((u32) regvalue>>32);
|
||||
u32 regvalue_tmp_low = ((u32) regvalue);
|
||||
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_BIT_CNT, regvalue_tmp_high, MASK_1);
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_BIT_CNT - 1, regvalue_tmp_low, MASK_1);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
int sent_set_sent_pkt_cnt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = ((u32) regvalue>>32);
|
||||
u32 regvalue_tmp_low = ((u32) regvalue);
|
||||
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_PKT_CNT, regvalue_tmp_high, MASK_1);
|
||||
fast_ua_hw_wr(PGM_RD_MID, SENT_PKT_CNT - 1, regvalue_tmp_low, MASK_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sent_set_lat_flag(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(PGM_RD_MID, LAT_FLAG, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sent_set_rd_soft_rst(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(PGM_RD_MID, RD_SOFT_RST, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_set_proto_type(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(SCM_MID, PROTO_TYPE, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_set_scm_soft_rst(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(SCM_MID, SCM_SOFT_RST, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_set_n_rtt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = (u32) regvalue;
|
||||
fast_ua_hw_wr(SCM_MID, N_RTT, regvalue_tmp, MASK_1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_set_scm_bit_cnt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = ((u32) regvalue>>32);
|
||||
u32 regvalue_tmp_low = ((u32) regvalue);
|
||||
|
||||
fast_ua_hw_wr(SCM_MID, SCM_BIT_CNT, regvalue_tmp_high, MASK_1);
|
||||
fast_ua_hw_wr(SCM_MID, SCM_BIT_CNT - 1, regvalue_tmp_low, MASK_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_set_scm_pkt_cnt(u64 regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = ((u32) regvalue>>32);
|
||||
u32 regvalue_tmp_low = ((u32) regvalue);
|
||||
|
||||
fast_ua_hw_wr(SCM_MID, SCM_PKT_CNT, regvalue_tmp_high, MASK_1);
|
||||
fast_ua_hw_wr(SCM_MID, SCM_PKT_CNT - 1, regvalue_tmp_low, MASK_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*---------------------------------SET REG & COUNTERS----------------------------*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*---------------------------------GET REG & COUNTERS----------------------------*/
|
||||
/**
|
||||
* get the reg value from sent hw
|
||||
* @param regvalue reg values that are to be obtained from hw.
|
||||
* @return 0 if success
|
||||
*/
|
||||
int sent_get_sent_time_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = fast_ua_hw_rd(PGM_WR_MID, SENT_TIME_CNT, MASK_1);
|
||||
u32 regvalue_tmp_low = fast_ua_hw_rd(PGM_WR_MID, SENT_TIME_CNT - 1, MASK_1);
|
||||
|
||||
*regvalue = ((u64)regvalue_tmp_high<<32) + (u64)regvalue_tmp_low;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_sent_time_reg(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = fast_ua_hw_rd(PGM_WR_MID, SENT_TIME_REG, MASK_1);
|
||||
u32 regvalue_tmp_low = fast_ua_hw_rd(PGM_WR_MID, SENT_TIME_REG - 1, MASK_1);
|
||||
|
||||
*regvalue = ((u64)regvalue_tmp_high<<32) + (u64)regvalue_tmp_low;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_sent_rate_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(PGM_RD_MID, SENT_RATE_CNT, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_sent_rate_reg(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(PGM_RD_MID, SENT_TIME_REG, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_lat_pkt_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(PGM_RD_MID, LAT_PKT_CNT, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_lat_pkt_reg(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(PGM_RD_MID, LAT_PKT_REG, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_sent_bit_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = fast_ua_hw_rd(PGM_RD_MID, SENT_BIT_CNT, MASK_1);
|
||||
u32 regvalue_tmp_low = fast_ua_hw_rd(PGM_RD_MID, SENT_BIT_CNT - 1, MASK_1);
|
||||
|
||||
*regvalue = ((u64)regvalue_tmp_high<<32) + (u64)regvalue_tmp_low;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_sent_pkt_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = fast_ua_hw_rd(PGM_RD_MID, SENT_PKT_CNT, MASK_1);
|
||||
u32 regvalue_tmp_low = fast_ua_hw_rd(PGM_RD_MID, SENT_PKT_CNT - 1, MASK_1);
|
||||
|
||||
*regvalue = ((u64)regvalue_tmp_high<<32) + (u64)regvalue_tmp_low;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_lat_flag(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(PGM_RD_MID, LAT_FLAG, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_rd_soft_rst(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(PGM_RD_MID, RD_SOFT_RST, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int sent_get_proto_type(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(SCM_MID, PROTO_TYPE, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_scm_soft_rst(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(SCM_MID, SCM_SOFT_RST, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_n_rtt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp = fast_ua_hw_rd(SCM_MID, N_RTT, MASK_1);
|
||||
*regvalue = regvalue_tmp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_scm_bit_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = fast_ua_hw_rd(SCM_MID, SCM_BIT_CNT, MASK_1);
|
||||
u32 regvalue_tmp_low = fast_ua_hw_rd(SCM_MID, SCM_BIT_CNT - 1, MASK_1);
|
||||
|
||||
*regvalue = ((u64)regvalue_tmp_high<<32) + (u64)regvalue_tmp_low;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sent_get_scm_pkt_cnt(u64 *regvalue)
|
||||
{
|
||||
u32 regvalue_tmp_high = fast_ua_hw_rd(SCM_MID, SCM_PKT_CNT, MASK_1);
|
||||
u32 regvalue_tmp_low = fast_ua_hw_rd(SCM_MID, SCM_PKT_CNT - 1, MASK_1);
|
||||
|
||||
*regvalue = ((u64)regvalue_tmp_high<<32) + (u64)regvalue_tmp_low;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*---------------------------------GET REG & COUNTERS----------------------------*/
|
||||
@ -1,36 +0,0 @@
|
||||
# fast_sent
|
||||
|
||||
#### Description
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
||||
|
||||
#### Software Architecture
|
||||
Software architecture description
|
||||
|
||||
#### Installation
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Instructions
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Contribution
|
||||
|
||||
1. Fork the repository
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
|
||||
|
||||
#### Gitee Feature
|
||||
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
@ -1,187 +0,0 @@
|
||||
// 创建监套接字
|
||||
#include "FastSocket.h"
|
||||
|
||||
int createSocket()
|
||||
{
|
||||
int fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd == -1)
|
||||
{
|
||||
perror("socket");
|
||||
return -1;
|
||||
}
|
||||
printf("套接字创建成功, fd=%d\n", fd);
|
||||
return fd;
|
||||
}
|
||||
|
||||
// 绑定本地的IP和端口
|
||||
int bindSocket(int lfd, unsigned short port)
|
||||
{
|
||||
struct sockaddr_in saddr;
|
||||
saddr.sin_family = AF_INET;
|
||||
saddr.sin_port = htons(port);
|
||||
saddr.sin_addr.s_addr = INADDR_ANY; // 0 = 0.0.0.0
|
||||
int ret = bind(lfd, (struct sockaddr *)&saddr, sizeof(saddr));
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("bind");
|
||||
return -1;
|
||||
}
|
||||
printf("套接字绑定成功, ip: %s, port: %d\n",
|
||||
inet_ntoa(saddr.sin_addr), port);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置监听
|
||||
int setListen(int lfd)
|
||||
{
|
||||
int ret = listen(lfd, 128);
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("listen");
|
||||
return -1;
|
||||
}
|
||||
printf("设置监听成功...\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 阻塞并等待客户端的连接
|
||||
int acceptConn(int lfd, struct sockaddr_in *addr)
|
||||
{
|
||||
int cfd = -1;
|
||||
if (addr == NULL)
|
||||
{
|
||||
cfd = accept(lfd, NULL, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
int addrlen = sizeof(struct sockaddr_in);
|
||||
cfd = accept(lfd, (struct sockaddr *)addr, &addrlen);
|
||||
}
|
||||
if (cfd == -1)
|
||||
{
|
||||
perror("accept");
|
||||
return -1;
|
||||
}
|
||||
printf("成功和客户端建立连接...\n");
|
||||
return cfd;
|
||||
}
|
||||
|
||||
// 接收数据
|
||||
int recvMsg(int cfd, char *msg)
|
||||
{
|
||||
if (msg == NULL || cfd <= 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
// 接收数据
|
||||
// 1. 读数据头
|
||||
int len = 0;
|
||||
readn(cfd, (char *)&len, 4);
|
||||
len = ntohl(len);
|
||||
printf("数据块大小: %d\n", len);
|
||||
|
||||
// 根据读出的长度分配内存
|
||||
char *buf = (char *)malloc(len + 1);
|
||||
int ret = readn(cfd, buf, len);
|
||||
if (ret != len)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
buf[len] = '\0';
|
||||
*msg = buf;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 发送数据
|
||||
int sendMsg(int cfd, const char *msg, int len)
|
||||
{
|
||||
if (msg == NULL || len <= 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
// 申请内存空间: 数据长度 + 包头4字节(存储数据长度)
|
||||
char *data = (char *)malloc(len + 4);
|
||||
int bigLen = htonl(len);
|
||||
memcpy(data, &bigLen, 4);
|
||||
memcpy(data + 4, msg, len);
|
||||
// 发送数据
|
||||
int ret = writen(cfd, data, len + 4);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 连接服务器
|
||||
int connectToHost(int fd, const char *ip, unsigned short port)
|
||||
{
|
||||
// 2. 连接服务器IP port
|
||||
struct sockaddr_in saddr;
|
||||
saddr.sin_family = AF_INET;
|
||||
saddr.sin_port = htons(port);
|
||||
inet_pton(AF_INET, ip, &saddr.sin_addr.s_addr);
|
||||
int ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("connect");
|
||||
return -1;
|
||||
}
|
||||
printf("成功和服务器建立连接...\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 关闭套接字
|
||||
int closeSocket(int fd)
|
||||
{
|
||||
int ret = close(fd);
|
||||
if (ret == -1)
|
||||
{
|
||||
perror("close");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 接收指定的字节数
|
||||
// 函数调用成功返回 size
|
||||
int readn(int fd, char *buf, int size)
|
||||
{
|
||||
int nread = 0;
|
||||
int left = size;
|
||||
char *p = buf;
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if ((nread = read(fd, p, left)) > 0)
|
||||
{
|
||||
printf("%d\n", nread);
|
||||
p += nread;
|
||||
left -= nread;
|
||||
}
|
||||
else if (nread == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
// 发送指定的字节数
|
||||
// 函数调用成功返回 size
|
||||
int writen(int fd, const char *msg, int size)
|
||||
{
|
||||
int left = size;
|
||||
int nwrite = 0;
|
||||
const char *p = msg;
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if ((nwrite = write(fd, msg, left)) > 0)
|
||||
{
|
||||
p += nwrite;
|
||||
left -= nwrite;
|
||||
}
|
||||
else if (nwrite == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
#ifndef FASTSOCKET_H
|
||||
#define FASTSOCKET_H
|
||||
#include <arpa/inet.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
int bindSocket(int lfd, unsigned short port);
|
||||
int setListen(int lfd);
|
||||
int acceptConn(int lfd, struct sockaddr_in *addr);
|
||||
int connectToHost(int fd, const char *ip, unsigned short port);
|
||||
int createSocket();
|
||||
int sendMsg(int fd, const char *msg, int len);
|
||||
int recvMsg(int fd, char *msg);
|
||||
int closeSocket(int fd);
|
||||
int readn(int fd, char *buf, int size);
|
||||
int writen(int fd, const char *msg, int size);
|
||||
#endif
|
||||
@ -1,42 +0,0 @@
|
||||
#include "FastSocket.h"
|
||||
int main()
|
||||
{
|
||||
char cmd[1010];
|
||||
int time, params[1000], para_num = 6, pktlen = 0;
|
||||
int server_fd = createSocket();
|
||||
unsigned char pkt[1000];
|
||||
bindSocket(server_fd, 8321);
|
||||
setListen(server_fd);
|
||||
struct sockaddr_in cilent;
|
||||
int conn_fd = acceptConn(server_fd, &cilent);
|
||||
int a[3], ret;
|
||||
while (1)
|
||||
{
|
||||
usleep(100000);
|
||||
ret = read(conn_fd, cmd, 9);
|
||||
if (ret == -1)
|
||||
continue;
|
||||
if (strncmp(cmd, "set_parm", 9) == 0)
|
||||
{
|
||||
printf("command:%s\n", cmd);
|
||||
while (read(conn_fd, (char *)&time, sizeof(int)) == -1)
|
||||
;
|
||||
while (read(conn_fd, (char *)¶ms, para_num * sizeof(int)) == -1)
|
||||
;
|
||||
while (read(conn_fd, (char *)&pktlen, sizeof(int)) == -1)
|
||||
;
|
||||
while (read(conn_fd, (char *)&pkt, sizeof(unsigned char) * pktlen) == -1)
|
||||
;
|
||||
printf("pktlen:%d\n", pktlen);
|
||||
while (time--)
|
||||
{
|
||||
a[0] = rand() % 100;
|
||||
a[1] = rand() % 100;
|
||||
a[2] = rand() % 100;
|
||||
printf("time:%d %d %d %d\n", time, a[0], a[1], a[2]);
|
||||
write(conn_fd, (char *)&a, sizeof(int) * 3);
|
||||
usleep(10000); // 0.01
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,675 +0,0 @@
|
||||
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>.
|
||||
|
||||