孔祥涵的文件part01
Some checks failed
Build Kernel / Build all affected Kernels (push) Failing after 0s
Build all core packages / Build all core packages for selected target (push) Failing after 0s
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Failing after 0s
Build host tools / Build host tools for linux and macos based systems (push) Failing after 0s
Some checks failed
Build Kernel / Build all affected Kernels (push) Failing after 0s
Build all core packages / Build all core packages for selected target (push) Failing after 0s
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Failing after 0s
Build host tools / Build host tools for linux and macos based systems (push) Failing after 0s
This commit is contained in:
parent
7d33aedd10
commit
89d316815d
@ -1,32 +0,0 @@
|
|||||||
Valid-License-Identifier: BSD-2-Clause
|
|
||||||
SPDX-URL: https://spdx.org/licenses/BSD-2-Clause.html
|
|
||||||
Usage-Guide:
|
|
||||||
To use the BSD 2-clause "Simplified" License put the following SPDX
|
|
||||||
tag/value pair into a comment according to the placement guidelines in
|
|
||||||
the licensing rules documentation:
|
|
||||||
SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
Copyright (c) <year> <owner> . All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
@ -1,36 +0,0 @@
|
|||||||
Valid-License-Identifier: BSD-3-Clause
|
|
||||||
SPDX-URL: https://spdx.org/licenses/BSD-3-Clause.html
|
|
||||||
Usage-Guide:
|
|
||||||
To use the BSD 3-clause "New" or "Revised" License put the following SPDX
|
|
||||||
tag/value pair into a comment according to the placement guidelines in
|
|
||||||
the licensing rules documentation:
|
|
||||||
SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
Copyright (c) <year> <owner> . All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from this
|
|
||||||
software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
261
LICENSES/GPL-1.0
261
LICENSES/GPL-1.0
@ -1,261 +0,0 @@
|
|||||||
Valid-License-Identifier: GPL-1.0-or-later
|
|
||||||
Valid-License-Identifier: GPL-1.0+
|
|
||||||
SPDX-URL: https://spdx.org/licenses/GPL-1.0.html
|
|
||||||
Usage-Guide:
|
|
||||||
The GNU General Public License (GPL) version 1 should not be used in new
|
|
||||||
code. For existing kernel code the 'or any later version' option is
|
|
||||||
required to be compatible with the general license of the project: GPLv2.
|
|
||||||
To use the license in source code, put the following SPDX tag/value pair
|
|
||||||
into a comment according to the placement guidelines in the licensing
|
|
||||||
rules documentation:
|
|
||||||
SPDX-License-Identifier: GPL-1.0-or-later
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 1, February 1989
|
|
||||||
|
|
||||||
Copyright (C) 1989 Free Software Foundation, Inc.
|
|
||||||
675 Mass Ave, Cambridge, MA 02139, USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The license agreements of most software companies try to keep users
|
|
||||||
at the mercy of those companies. By contrast, our General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. The
|
|
||||||
General Public License applies to the Free Software Foundation's
|
|
||||||
software and to any other program whose authors commit to using it.
|
|
||||||
You can use it for your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Specifically, the General Public License is designed to make
|
|
||||||
sure that you have the freedom to give away or sell copies of free
|
|
||||||
software, 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 make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of a such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. You must make sure that they, too, receive or can get the
|
|
||||||
source code. And you must tell them their rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any program or other work which
|
|
||||||
contains a notice placed by the copyright holder saying it may be
|
|
||||||
distributed under the terms of this General Public License. The
|
|
||||||
"Program", below, refers to any such program or work, and a "work based
|
|
||||||
on the Program" means either the Program or any work containing the
|
|
||||||
Program or a portion of it, either verbatim or with modifications. Each
|
|
||||||
licensee is addressed as "you".
|
|
||||||
|
|
||||||
1. You may copy and distribute 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 and
|
|
||||||
disclaimer of warranty; keep intact all the notices that refer to this
|
|
||||||
General Public License and to the absence of any warranty; and give any
|
|
||||||
other recipients of the Program a copy of this General Public License
|
|
||||||
along with the Program. You may charge a fee for the physical act of
|
|
||||||
transferring a copy.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion of
|
|
||||||
it, and copy and distribute such modifications under the terms of Paragraph
|
|
||||||
1 above, provided that you also do the following:
|
|
||||||
|
|
||||||
a) cause the modified files to carry prominent notices stating that
|
|
||||||
you changed the files and the date of any change; and
|
|
||||||
|
|
||||||
b) cause the whole of any work that you distribute or publish, that
|
|
||||||
in whole or in part contains the Program or any part thereof, either
|
|
||||||
with or without modifications, to be licensed at no charge to all
|
|
||||||
third parties under the terms of this General Public License (except
|
|
||||||
that you may choose to grant warranty protection to some or all
|
|
||||||
third parties, at your option).
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively when
|
|
||||||
run, you must cause it, when started running for such interactive use
|
|
||||||
in the simplest and most usual way, to print or display an
|
|
||||||
announcement including an appropriate copyright notice and a notice
|
|
||||||
that there is no warranty (or else, saying that you provide a
|
|
||||||
warranty) and that users may redistribute the program under these
|
|
||||||
conditions, and telling the user how to view a copy of this General
|
|
||||||
Public License.
|
|
||||||
|
|
||||||
d) You may charge a fee for the physical act of transferring a
|
|
||||||
copy, and you may at your option offer warranty protection in
|
|
||||||
exchange for a fee.
|
|
||||||
|
|
||||||
Mere aggregation of another independent work with the Program (or its
|
|
||||||
derivative) on a volume of a storage or distribution medium does not bring
|
|
||||||
the other work under the scope of these terms.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a portion or derivative of
|
|
||||||
it, under Paragraph 2) in object code or executable form under the terms of
|
|
||||||
Paragraphs 1 and 2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) accompany it with the complete corresponding machine-readable
|
|
||||||
source code, which must be distributed under the terms of
|
|
||||||
Paragraphs 1 and 2 above; or,
|
|
||||||
|
|
||||||
b) accompany it with a written offer, valid for at least three
|
|
||||||
years, to give any third party free (except for a nominal charge
|
|
||||||
for the cost of distribution) a complete machine-readable copy of the
|
|
||||||
corresponding source code, to be distributed under the terms of
|
|
||||||
Paragraphs 1 and 2 above; or,
|
|
||||||
|
|
||||||
c) accompany it with the information you received as to where the
|
|
||||||
corresponding source code may be obtained. (This alternative is
|
|
||||||
allowed only for noncommercial distribution and only if you
|
|
||||||
received the program in object code or executable form alone.)
|
|
||||||
|
|
||||||
Source code for a work means the preferred form of the work for making
|
|
||||||
modifications to it. For an executable file, complete source code means
|
|
||||||
all the source code for all modules it contains; but, as a special
|
|
||||||
exception, it need not include source code for modules which are standard
|
|
||||||
libraries that accompany the operating system on which the executable
|
|
||||||
file runs, or for standard header files or definitions files that
|
|
||||||
accompany that operating system.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, distribute or transfer the
|
|
||||||
Program except as expressly provided under this General Public License.
|
|
||||||
Any attempt otherwise to copy, modify, sublicense, distribute or transfer
|
|
||||||
the Program is void, and will automatically terminate your rights to use
|
|
||||||
the Program under this License. However, parties who have received
|
|
||||||
copies, or rights to use copies, from you under this General Public
|
|
||||||
License will not have their licenses terminated so long as such parties
|
|
||||||
remain in full compliance.
|
|
||||||
|
|
||||||
5. By copying, distributing or modifying the Program (or any work based
|
|
||||||
on the Program) you indicate your acceptance of this license to do so,
|
|
||||||
and all its terms and conditions.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the original
|
|
||||||
licensor to copy, distribute or modify the Program subject to these
|
|
||||||
terms and conditions. You may not impose any further restrictions on the
|
|
||||||
recipients' exercise of the rights granted herein.
|
|
||||||
|
|
||||||
7. The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the 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 a version number of the license which applies to it and "any
|
|
||||||
later version", you have the option of following the terms and conditions
|
|
||||||
either of that version or of any later version published by the Free
|
|
||||||
Software Foundation. If the Program does not specify a version number of
|
|
||||||
the license, you may choose any version ever published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
8. If you wish to incorporate parts of the Program into other free
|
|
||||||
programs whose distribution conditions are different, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free
|
|
||||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
||||||
make exceptions for this. Our decision will be guided by the two goals
|
|
||||||
of preserving the free status of all derivatives of our free software and
|
|
||||||
of promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
|
|
||||||
|
|
||||||
10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE 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.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
Appendix: 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 humanity, 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 convey
|
|
||||||
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) 19yy <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 1, 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, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) 19xx name of author
|
|
||||||
Gnomovision 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, the
|
|
||||||
commands you use may be called something other than `show w' and `show
|
|
||||||
c'; they could even be mouse-clicks or menu items--whatever suits your
|
|
||||||
program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
|
||||||
program `Gnomovision' (a program to direct compilers to make passes
|
|
||||||
at assemblers) written by James Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
That's all there is to it!
|
|
355
LICENSES/GPL-2.0
355
LICENSES/GPL-2.0
@ -1,355 +0,0 @@
|
|||||||
Valid-License-Identifier: GPL-2.0-only
|
|
||||||
Valid-License-Identifier: GPL-2.0
|
|
||||||
Valid-License-Identifier: GPL-2.0-or-later
|
|
||||||
Valid-License-Identifier: GPL-2.0+
|
|
||||||
SPDX-URL: https://spdx.org/licenses/GPL-2.0.html
|
|
||||||
Usage-Guide:
|
|
||||||
To use this license in source code, put one of the following SPDX
|
|
||||||
tag/value pairs into a comment according to the placement
|
|
||||||
guidelines in the licensing rules documentation.
|
|
||||||
For 'GNU General Public License (GPL) version 2 only' use:
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
For 'GNU General Public License (GPL) version 2 or any later version' use:
|
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
||||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. This
|
|
||||||
General Public License applies to most of the Free Software
|
|
||||||
Foundation's software and to any other program whose authors commit to
|
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
|
||||||
the GNU Library General Public License instead.) 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
|
|
||||||
this service 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 make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. 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.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that redistributors of a free
|
|
||||||
program will individually obtain patent licenses, in effect making the
|
|
||||||
program proprietary. To prevent this, we have made it clear that any
|
|
||||||
patent must be licensed for everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
|
||||||
a notice placed by the copyright holder saying it may be distributed
|
|
||||||
under the terms of this General Public License. The "Program", below,
|
|
||||||
refers to any such program or work, and a "work based on the Program"
|
|
||||||
means either the Program or any derivative work under copyright law:
|
|
||||||
that is to say, a work containing the Program or a portion of it,
|
|
||||||
either verbatim or with modifications and/or translated into another
|
|
||||||
language. (Hereinafter, translation is included without limitation in
|
|
||||||
the term "modification".) Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running the Program is not restricted, and the output from the Program
|
|
||||||
is covered only if its contents constitute a work based on the
|
|
||||||
Program (independent of having been made by running the Program).
|
|
||||||
Whether that is true depends on what the Program does.
|
|
||||||
|
|
||||||
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
|
|
||||||
notices that refer to this License and to the absence of any warranty;
|
|
||||||
and give any other recipients of the Program a copy of this License
|
|
||||||
along with the Program.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and
|
|
||||||
you may at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion
|
|
||||||
of it, thus forming a work based on the Program, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) You must cause the modified files to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
b) You must cause any work that you distribute or publish, that in
|
|
||||||
whole or in part contains or is derived from the Program or any
|
|
||||||
part thereof, to be licensed as a whole at no charge to all third
|
|
||||||
parties under the terms of this License.
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively
|
|
||||||
when run, you must cause it, when started running for such
|
|
||||||
interactive use in the most ordinary way, to print or display an
|
|
||||||
announcement including an appropriate copyright notice and a
|
|
||||||
notice that there is no warranty (or else, saying that you provide
|
|
||||||
a warranty) and that users may redistribute the program under
|
|
||||||
these conditions, and telling the user how to view a copy of this
|
|
||||||
License. (Exception: if the Program itself is interactive but
|
|
||||||
does not normally print such an announcement, your work based on
|
|
||||||
the Program is not required to print an announcement.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Program,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Program, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Program.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Program
|
|
||||||
with the Program (or with a work based on the Program) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a work based on it,
|
|
||||||
under Section 2) in object code or executable form under the terms of
|
|
||||||
Sections 1 and 2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) Accompany it with the complete corresponding machine-readable
|
|
||||||
source code, which must be distributed under the terms of Sections
|
|
||||||
1 and 2 above on a medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
b) Accompany it with a written offer, valid for at least three
|
|
||||||
years, to give any third party, for a charge no more than your
|
|
||||||
cost of physically performing source distribution, a complete
|
|
||||||
machine-readable copy of the corresponding source code, to be
|
|
||||||
distributed under the terms of Sections 1 and 2 above on a medium
|
|
||||||
customarily used for software interchange; or,
|
|
||||||
|
|
||||||
c) Accompany it with the information you received as to the offer
|
|
||||||
to distribute corresponding source code. (This alternative is
|
|
||||||
allowed only for noncommercial distribution and only if you
|
|
||||||
received the program in object code or executable form with such
|
|
||||||
an offer, in accord with Subsection b above.)
|
|
||||||
|
|
||||||
The source code for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For an executable work, complete source
|
|
||||||
code means all the source code for all modules it contains, plus any
|
|
||||||
associated interface definition files, plus the scripts used to
|
|
||||||
control compilation and installation of the executable. However, as a
|
|
||||||
special exception, the source code distributed need not include
|
|
||||||
anything that is normally distributed (in either source or binary
|
|
||||||
form) with the major components (compiler, kernel, and so on) of the
|
|
||||||
operating system on which the executable runs, unless that component
|
|
||||||
itself accompanies the executable.
|
|
||||||
|
|
||||||
If distribution of executable or object code is made by offering
|
|
||||||
access to copy from a designated place, then offering equivalent
|
|
||||||
access to copy the source code from the same place counts as
|
|
||||||
distribution of the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
|
||||||
except as expressly provided under this License. Any attempt
|
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
|
||||||
void, and will automatically terminate your rights under this License.
|
|
||||||
However, parties who have received copies, or rights, from you under
|
|
||||||
this License will not have their licenses terminated so long as such
|
|
||||||
parties remain in full compliance.
|
|
||||||
|
|
||||||
5. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Program or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Program (or any work based on the
|
|
||||||
Program), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Program or works based on it.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute or modify the Program subject to
|
|
||||||
these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties to
|
|
||||||
this License.
|
|
||||||
|
|
||||||
7. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
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
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Program at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Program by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Program.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under
|
|
||||||
any particular circumstance, the balance of the section is intended to
|
|
||||||
apply and the section as a whole is intended to apply in other
|
|
||||||
circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system, which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Program under this License
|
|
||||||
may add an explicit geographical distribution limitation excluding
|
|
||||||
those countries, so that distribution is permitted only in or among
|
|
||||||
countries not thus excluded. In such case, this License incorporates
|
|
||||||
the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
9. The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the 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 a version number of this License which applies to it and "any
|
|
||||||
later version", you have the option of following the terms and conditions
|
|
||||||
either of that version or of any later version published by the Free
|
|
||||||
Software Foundation. If the Program does not specify a version number of
|
|
||||||
this License, you may choose any version ever published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
10. If you wish to incorporate parts of the Program into other free
|
|
||||||
programs whose distribution conditions are different, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free
|
|
||||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
||||||
make exceptions for this. Our decision will be guided by the two goals
|
|
||||||
of preserving the free status of all derivatives of our free software and
|
|
||||||
of promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
|
|
||||||
|
|
||||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE 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.
|
|
||||||
|
|
||||||
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
|
|
||||||
convey 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 2 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, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
|
||||||
Gnomovision 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, the commands you use may
|
|
||||||
be called something other than `show w' and `show c'; they could even be
|
|
||||||
mouse-clicks or menu items--whatever suits your program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
||||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
This 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 Library General
|
|
||||||
Public License instead of this License.
|
|
24
LICENSES/ISC
24
LICENSES/ISC
@ -1,24 +0,0 @@
|
|||||||
Valid-License-Identifier: ISC
|
|
||||||
SPDX-URL: https://spdx.org/licenses/ISC.html
|
|
||||||
Usage-Guide:
|
|
||||||
To use the ISC License put the following SPDX tag/value pair into a
|
|
||||||
comment according to the placement guidelines in the licensing rules
|
|
||||||
documentation:
|
|
||||||
SPDX-License-Identifier: ISC
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
ISC License
|
|
||||||
|
|
||||||
Copyright (c) <year> <copyright holders>
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
||||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@ -1,25 +0,0 @@
|
|||||||
SPDX-Exception-Identifier: Linux-syscall-note
|
|
||||||
SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html
|
|
||||||
SPDX-Licenses: GPL-2.0-only, GPL-2.0, GPL-2.0-or-later, GPL-2.0+, GPL-1.0-or-later, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+
|
|
||||||
Usage-Guide:
|
|
||||||
This exception is used together with one of the above SPDX-Licenses
|
|
||||||
to mark user space API (uapi) header files so they can be included
|
|
||||||
into non GPL compliant user space application code.
|
|
||||||
To use this exception add it with the keyword WITH to one of the
|
|
||||||
identifiers in the SPDX-Licenses tag:
|
|
||||||
SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
NOTE! This copyright does *not* cover user programs that use kernel
|
|
||||||
services by normal system calls - this is merely considered normal use
|
|
||||||
of the kernel, and does *not* fall under the heading of "derived work".
|
|
||||||
Also note that the GPL below is copyrighted by the Free Software
|
|
||||||
Foundation, but the instance of code that it refers to (the Linux
|
|
||||||
kernel) is copyrighted by me and others who actually wrote it.
|
|
||||||
|
|
||||||
Also note that the only valid version of the GPL as far as the kernel
|
|
||||||
is concerned is _this_ particular version of the license (ie v2, not
|
|
||||||
v2.2 or v3.x or whatever), unless explicitly otherwise stated.
|
|
||||||
|
|
||||||
Linus Torvalds
|
|
||||||
|
|
30
LICENSES/MIT
30
LICENSES/MIT
@ -1,30 +0,0 @@
|
|||||||
Valid-License-Identifier: MIT
|
|
||||||
SPDX-URL: https://spdx.org/licenses/MIT.html
|
|
||||||
Usage-Guide:
|
|
||||||
To use the MIT License put the following SPDX tag/value pair into a
|
|
||||||
comment according to the placement guidelines in the licensing rules
|
|
||||||
documentation:
|
|
||||||
SPDX-License-Identifier: MIT
|
|
||||||
License-Text:
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) <year> <copyright holders>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE SOFTWARE.
|
|
1
UA2F
Submodule
1
UA2F
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit e1d6231ee6c5948d5a7f78b82c7f57f750b984ee
|
@ -1,419 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2013 OpenWrt.org
|
|
||||||
# Copyright (C) 2016 LEDE Project
|
|
||||||
|
|
||||||
config EXPERIMENTAL
|
|
||||||
bool "Enable experimental features by default"
|
|
||||||
help
|
|
||||||
Set this option to build with latest bleeding edge features
|
|
||||||
which may or may not work as expected.
|
|
||||||
If you would like to help the development of OpenWrt, you are
|
|
||||||
encouraged to set this option and provide feedback (both
|
|
||||||
positive and negative). But do so only if you know how to
|
|
||||||
recover your device in case of flashing potentially non-working
|
|
||||||
firmware.
|
|
||||||
|
|
||||||
If you plan to use this build in production, say NO!
|
|
||||||
|
|
||||||
menu "Global build settings"
|
|
||||||
|
|
||||||
config JSON_OVERVIEW_IMAGE_INFO
|
|
||||||
bool "Create JSON info file overview per target"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Create a JSON info file called profiles.json in the target
|
|
||||||
directory containing machine readable list of built profiles
|
|
||||||
and resulting images.
|
|
||||||
|
|
||||||
config JSON_CYCLONEDX_SBOM
|
|
||||||
bool "Create CycloneDX SBOM JSON"
|
|
||||||
default BUILDBOT
|
|
||||||
help
|
|
||||||
Create a JSON files *.bom.cdx.json in the build
|
|
||||||
directory containing Software Bill Of Materials in CycloneDX
|
|
||||||
format.
|
|
||||||
|
|
||||||
config ALL_NONSHARED
|
|
||||||
bool "Select all target specific packages by default"
|
|
||||||
select ALL_KMODS
|
|
||||||
default BUILDBOT
|
|
||||||
|
|
||||||
config ALL_KMODS
|
|
||||||
bool "Select all kernel module packages by default"
|
|
||||||
|
|
||||||
config ALL
|
|
||||||
bool "Select all userspace packages by default"
|
|
||||||
select ALL_KMODS
|
|
||||||
select ALL_NONSHARED
|
|
||||||
|
|
||||||
config BUILDBOT
|
|
||||||
bool "Set build defaults for automatic builds (e.g. via buildbot)"
|
|
||||||
help
|
|
||||||
This option changes several defaults to be more suitable for
|
|
||||||
automatic builds. This includes the following changes:
|
|
||||||
- Deleting build directories after compiling (to save space)
|
|
||||||
- Enabling per-device rootfs support
|
|
||||||
...
|
|
||||||
|
|
||||||
config SIGNED_PACKAGES
|
|
||||||
bool "Cryptographically signed package lists"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SIGNATURE_CHECK
|
|
||||||
bool "Enable signature checking in opkg"
|
|
||||||
default SIGNED_PACKAGES
|
|
||||||
|
|
||||||
config DOWNLOAD_CHECK_CERTIFICATE
|
|
||||||
bool "Enable TLS certificate verification during package download"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config USE_APK
|
|
||||||
imply PACKAGE_apk-mbedtls
|
|
||||||
bool "Use APK instead of OPKG to build distribution (EXPERIMENTAL)"
|
|
||||||
|
|
||||||
comment "General build options"
|
|
||||||
|
|
||||||
config TESTING_KERNEL
|
|
||||||
bool "Use the testing kernel version"
|
|
||||||
depends on HAS_TESTING_KERNEL
|
|
||||||
default EXPERIMENTAL
|
|
||||||
help
|
|
||||||
If the target supports a newer kernel version than the default,
|
|
||||||
you can use this config option to enable it
|
|
||||||
|
|
||||||
|
|
||||||
config DISPLAY_SUPPORT
|
|
||||||
bool "Show packages that require graphics support (local or remote)"
|
|
||||||
|
|
||||||
config BUILD_PATENTED
|
|
||||||
bool "Compile with support for patented functionality"
|
|
||||||
help
|
|
||||||
When this option is disabled, software which provides patented functionality
|
|
||||||
will not be built. In case software provides optional support for patented
|
|
||||||
functionality, this optional support will get disabled for this package.
|
|
||||||
|
|
||||||
config BUILD_NLS
|
|
||||||
bool "Compile with full language support"
|
|
||||||
help
|
|
||||||
When this option is enabled, packages are built with the full versions of
|
|
||||||
iconv and GNU gettext instead of the default OpenWrt stubs. If uClibc is
|
|
||||||
used, it is also built with locale support.
|
|
||||||
|
|
||||||
config SHADOW_PASSWORDS
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config CLEAN_IPKG
|
|
||||||
bool
|
|
||||||
prompt "Remove ipkg/opkg status data files in final images"
|
|
||||||
help
|
|
||||||
This removes all ipkg/opkg status data files from the target directory
|
|
||||||
before building the root filesystem.
|
|
||||||
|
|
||||||
config IPK_FILES_CHECKSUMS
|
|
||||||
bool
|
|
||||||
prompt "Record files checksums in package metadata"
|
|
||||||
depends on !USE_APK
|
|
||||||
help
|
|
||||||
This makes file checksums part of package metadata. It increases size
|
|
||||||
but provides you with pkg_check command to check for flash corruptions.
|
|
||||||
|
|
||||||
config INCLUDE_CONFIG
|
|
||||||
bool "Include build configuration in firmware" if DEVEL
|
|
||||||
help
|
|
||||||
If enabled, buildinfo files will be stored in /etc/build.* of firmware.
|
|
||||||
|
|
||||||
config REPRODUCIBLE_DEBUG_INFO
|
|
||||||
bool "Make debug information reproducible"
|
|
||||||
default BUILDBOT
|
|
||||||
help
|
|
||||||
This strips the local build path out of debug information. This has the
|
|
||||||
advantage of making it reproducible, but the disadvantage of making local
|
|
||||||
debugging using ./scripts/remote-gdb harder, since the debug data will
|
|
||||||
no longer point to the full path on the build host.
|
|
||||||
|
|
||||||
config COLLECT_KERNEL_DEBUG
|
|
||||||
bool
|
|
||||||
prompt "Collect kernel debug information"
|
|
||||||
select KERNEL_DEBUG_INFO
|
|
||||||
default BUILDBOT
|
|
||||||
help
|
|
||||||
This collects debugging symbols from the kernel and all compiled modules.
|
|
||||||
Useful for release builds, so that kernel issues can be debugged offline
|
|
||||||
later.
|
|
||||||
|
|
||||||
menu "Kernel build options"
|
|
||||||
|
|
||||||
source "config/Config-kernel.in"
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
comment "Package build options"
|
|
||||||
|
|
||||||
config DEBUG
|
|
||||||
bool
|
|
||||||
prompt "Compile packages with debugging info"
|
|
||||||
help
|
|
||||||
Adds -g3 to the CFLAGS.
|
|
||||||
|
|
||||||
config USE_GC_SECTIONS
|
|
||||||
bool
|
|
||||||
prompt "Dead code and data elimination for all packages (EXPERIMENTAL)"
|
|
||||||
help
|
|
||||||
Places functions and data items into its own sections to use the linker's
|
|
||||||
garbage collection capabilites.
|
|
||||||
Packages can choose to opt-out via setting PKG_BUILD_FLAGS:=no-gc-sections
|
|
||||||
|
|
||||||
config USE_LTO
|
|
||||||
bool
|
|
||||||
prompt "Use the link-time optimizer for all packages (EXPERIMENTAL)"
|
|
||||||
help
|
|
||||||
Adds LTO flags to the CFLAGS and LDFLAGS.
|
|
||||||
Packages can choose to opt-out via setting PKG_BUILD_FLAGS:=no-lto
|
|
||||||
|
|
||||||
config MOLD
|
|
||||||
depends on (aarch64 || arm || i386 || i686 || m68k || powerpc || powerpc64 || sh4 || x86_64)
|
|
||||||
depends on !GCC_USE_VERSION_11
|
|
||||||
def_bool $(shell, ./config/check-hostcxx.sh 10 2 12)
|
|
||||||
|
|
||||||
config USE_MOLD
|
|
||||||
bool
|
|
||||||
prompt "Use the mold linker for all packages"
|
|
||||||
depends on MOLD
|
|
||||||
help
|
|
||||||
Link packages with mold, a modern linker
|
|
||||||
Packages can opt-out via setting PKG_BUILD_FLAGS:=no-mold
|
|
||||||
|
|
||||||
config IPV6
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
comment "Stripping options"
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Binary stripping method"
|
|
||||||
default USE_STRIP if USE_GLIBC
|
|
||||||
default USE_SSTRIP
|
|
||||||
help
|
|
||||||
Select the binary stripping method you wish to use.
|
|
||||||
|
|
||||||
config NO_STRIP
|
|
||||||
bool "none"
|
|
||||||
help
|
|
||||||
This will install unstripped binaries (useful for native
|
|
||||||
compiling/debugging).
|
|
||||||
|
|
||||||
config USE_STRIP
|
|
||||||
bool "strip"
|
|
||||||
help
|
|
||||||
This will install binaries stripped using strip from binutils.
|
|
||||||
|
|
||||||
config USE_SSTRIP
|
|
||||||
bool "sstrip"
|
|
||||||
depends on !USE_GLIBC
|
|
||||||
help
|
|
||||||
This will install binaries stripped using sstrip.
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config STRIP_ARGS
|
|
||||||
string
|
|
||||||
prompt "Strip arguments"
|
|
||||||
depends on USE_STRIP
|
|
||||||
default "--strip-unneeded --remove-section=.comment --remove-section=.note" if DEBUG
|
|
||||||
default "--strip-all"
|
|
||||||
help
|
|
||||||
Specifies arguments passed to the strip command when stripping binaries.
|
|
||||||
|
|
||||||
config SSTRIP_DISCARD_TRAILING_ZEROES
|
|
||||||
bool "Strip trailing zero bytes"
|
|
||||||
depends on USE_SSTRIP && !USE_MOLD
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Use sstrip's -z option to discard trailing zero bytes
|
|
||||||
|
|
||||||
config STRIP_KERNEL_EXPORTS
|
|
||||||
bool "Strip unnecessary exports from the kernel image"
|
|
||||||
depends on BROKEN
|
|
||||||
help
|
|
||||||
Reduces kernel size by stripping unused kernel exports from the kernel
|
|
||||||
image. Note that this might make the kernel incompatible with any kernel
|
|
||||||
modules that were not selected at the time the kernel image was created.
|
|
||||||
|
|
||||||
config USE_MKLIBS
|
|
||||||
bool "Strip unnecessary functions from libraries"
|
|
||||||
help
|
|
||||||
Reduces libraries to only those functions that are necessary for using all
|
|
||||||
selected packages (including those selected as <M>). Note that this will
|
|
||||||
make the system libraries incompatible with most of the packages that are
|
|
||||||
not selected during the build process.
|
|
||||||
|
|
||||||
comment "Hardening build options"
|
|
||||||
|
|
||||||
config PKG_CHECK_FORMAT_SECURITY
|
|
||||||
bool
|
|
||||||
prompt "Enable gcc format-security"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Add -Wformat -Werror=format-security to the CFLAGS. You can disable
|
|
||||||
this per package by adding PKG_CHECK_FORMAT_SECURITY:=0 in the package
|
|
||||||
Makefile.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "User space ASLR PIE compilation"
|
|
||||||
default PKG_ASLR_PIE_NONE if ((SMALL_FLASH || LOW_MEMORY_FOOTPRINT) && !SDK)
|
|
||||||
default PKG_ASLR_PIE_REGULAR
|
|
||||||
help
|
|
||||||
Add -fPIC to CFLAGS and -specs=hardened-build-ld to LDFLAGS.
|
|
||||||
This enables package build as Position Independent Executables (PIE)
|
|
||||||
to protect against "return-to-text" attacks. This belongs to the
|
|
||||||
feature of Address Space Layout Randomisation (ASLR), which is
|
|
||||||
implemented by the kernel and the ELF loader by randomising the
|
|
||||||
location of memory allocations. This makes memory addresses harder
|
|
||||||
to predict when an attacker is attempting a memory-corruption exploit.
|
|
||||||
You can disable this per package by adding PKG_ASLR_PIE:=0 in the package
|
|
||||||
Makefile.
|
|
||||||
Be ware that ASLR increases the binary size.
|
|
||||||
config PKG_ASLR_PIE_NONE
|
|
||||||
bool "None"
|
|
||||||
help
|
|
||||||
PIE is deactivated for all applications
|
|
||||||
config PKG_ASLR_PIE_REGULAR
|
|
||||||
bool "Regular"
|
|
||||||
help
|
|
||||||
PIE is activated for some binaries, mostly network exposed applications
|
|
||||||
config PKG_ASLR_PIE_ALL
|
|
||||||
bool "All"
|
|
||||||
select BUSYBOX_DEFAULT_PIE
|
|
||||||
help
|
|
||||||
PIE is activated for all applications
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "User space Stack-Smashing Protection"
|
|
||||||
default PKG_CC_STACKPROTECTOR_REGULAR
|
|
||||||
help
|
|
||||||
Enable GCC Stack Smashing Protection (SSP) for userspace applications
|
|
||||||
config PKG_CC_STACKPROTECTOR_NONE
|
|
||||||
bool "None"
|
|
||||||
config PKG_CC_STACKPROTECTOR_REGULAR
|
|
||||||
bool "Regular"
|
|
||||||
config PKG_CC_STACKPROTECTOR_STRONG
|
|
||||||
bool "Strong"
|
|
||||||
config PKG_CC_STACKPROTECTOR_ALL
|
|
||||||
bool "All"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Kernel space Stack-Smashing Protection"
|
|
||||||
default KERNEL_CC_STACKPROTECTOR_REGULAR
|
|
||||||
help
|
|
||||||
Enable GCC Stack-Smashing Protection (SSP) for the kernel
|
|
||||||
config KERNEL_CC_STACKPROTECTOR_NONE
|
|
||||||
bool "None"
|
|
||||||
config KERNEL_CC_STACKPROTECTOR_REGULAR
|
|
||||||
bool "Regular"
|
|
||||||
config KERNEL_CC_STACKPROTECTOR_STRONG
|
|
||||||
bool "Strong"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config KERNEL_STACKPROTECTOR
|
|
||||||
bool
|
|
||||||
default KERNEL_CC_STACKPROTECTOR_REGULAR || KERNEL_CC_STACKPROTECTOR_STRONG
|
|
||||||
|
|
||||||
config KERNEL_STACKPROTECTOR_STRONG
|
|
||||||
bool
|
|
||||||
default KERNEL_CC_STACKPROTECTOR_STRONG
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Enable buffer-overflows detection (FORTIFY_SOURCE)"
|
|
||||||
default PKG_FORTIFY_SOURCE_1
|
|
||||||
help
|
|
||||||
Enable the _FORTIFY_SOURCE macro which introduces additional
|
|
||||||
checks to detect buffer-overflows in the following standard library
|
|
||||||
functions: memcpy, mempcpy, memmove, memset, strcpy, stpcpy,
|
|
||||||
strncpy, strcat, strncat, sprintf, vsprintf, snprintf, vsnprintf,
|
|
||||||
gets. "Conservative" (_FORTIFY_SOURCE set to 1) only introduces
|
|
||||||
checks that shouldn't change the behavior of conforming programs,
|
|
||||||
while "aggressive" (_FORTIFY_SOURCES set to 2) some more checking is
|
|
||||||
added, but some conforming programs might fail.
|
|
||||||
config PKG_FORTIFY_SOURCE_NONE
|
|
||||||
bool "None"
|
|
||||||
config PKG_FORTIFY_SOURCE_1
|
|
||||||
bool "Conservative"
|
|
||||||
config PKG_FORTIFY_SOURCE_2
|
|
||||||
bool "Aggressive"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Enable RELRO protection"
|
|
||||||
default PKG_RELRO_FULL
|
|
||||||
help
|
|
||||||
Enable a link-time protection known as RELRO (Relocation Read Only)
|
|
||||||
which helps to protect from certain type of exploitation techniques
|
|
||||||
altering the content of some ELF sections. "Partial" RELRO makes the
|
|
||||||
.dynamic section not writeable after initialization, introducing
|
|
||||||
almost no performance penalty, while "full" RELRO also marks the GOT
|
|
||||||
as read-only at the cost of initializing all of it at startup.
|
|
||||||
config PKG_RELRO_NONE
|
|
||||||
bool "None"
|
|
||||||
config PKG_RELRO_PARTIAL
|
|
||||||
bool "Partial"
|
|
||||||
config PKG_RELRO_FULL
|
|
||||||
bool "Full"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_SECURITY_LABELS
|
|
||||||
bool
|
|
||||||
select KERNEL_SQUASHFS_XATTR
|
|
||||||
select KERNEL_EXT4_FS_SECURITY
|
|
||||||
select KERNEL_F2FS_FS_SECURITY
|
|
||||||
select KERNEL_UBIFS_FS_SECURITY
|
|
||||||
select KERNEL_JFFS2_FS_SECURITY
|
|
||||||
|
|
||||||
config SELINUX
|
|
||||||
bool "Enable SELinux"
|
|
||||||
select KERNEL_SECURITY_SELINUX
|
|
||||||
select TARGET_ROOTFS_SECURITY_LABELS
|
|
||||||
select PACKAGE_procd-selinux
|
|
||||||
select PACKAGE_busybox-selinux
|
|
||||||
help
|
|
||||||
This option enables SELinux kernel features, applies security labels
|
|
||||||
in squashfs rootfs and selects the selinux-variants of busybox and procd.
|
|
||||||
|
|
||||||
Selecting this option results in about 0.5MiB of additional flash space
|
|
||||||
usage accounting for increased kernel and rootfs size.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "default SELinux type"
|
|
||||||
depends on TARGET_ROOTFS_SECURITY_LABELS
|
|
||||||
default SELINUXTYPE_dssp
|
|
||||||
help
|
|
||||||
Select SELinux policy to be installed and used for applying rootfs labels.
|
|
||||||
|
|
||||||
config SELINUXTYPE_targeted
|
|
||||||
bool "targeted"
|
|
||||||
select PACKAGE_refpolicy
|
|
||||||
help
|
|
||||||
SELinux Reference Policy (refpolicy)
|
|
||||||
|
|
||||||
config SELINUXTYPE_dssp
|
|
||||||
bool "dssp"
|
|
||||||
select PACKAGE_selinux-policy
|
|
||||||
help
|
|
||||||
Defensec SELinux Security Policy -- OpenWrt edition
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config SECCOMP
|
|
||||||
bool "Enable SECCOMP"
|
|
||||||
select KERNEL_SECCOMP
|
|
||||||
select PACKAGE_procd-seccomp
|
|
||||||
depends on (aarch64 || arm || armeb || mips || mipsel || mips64 || mips64el || i386 || powerpc || x86_64)
|
|
||||||
depends on !TARGET_uml
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
This option enables seccomp kernel features to safely
|
|
||||||
execute untrusted bytecode and selects the seccomp-variants
|
|
||||||
of procd
|
|
||||||
|
|
||||||
endmenu
|
|
@ -1,159 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2013 OpenWrt.org
|
|
||||||
|
|
||||||
menuconfig DEVEL
|
|
||||||
bool "Advanced configuration options (for developers)"
|
|
||||||
|
|
||||||
config BROKEN
|
|
||||||
bool "Show broken platforms / packages / devices" if DEVEL
|
|
||||||
|
|
||||||
config BINARY_FOLDER
|
|
||||||
string "Binary folder" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Store built firmware images and filesystem images in this directory.
|
|
||||||
If not set, uses './bin/$(BOARD)'
|
|
||||||
|
|
||||||
config DOWNLOAD_TOOL_CUSTOM
|
|
||||||
string "Use custom download tool" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Use and force custom download tool instead of relying on autoselection
|
|
||||||
between curl if available and wget as a fallback.
|
|
||||||
|
|
||||||
download.pl supports 3 tools officially aria2c, curl and wget.
|
|
||||||
If one of the tool is used in this config, download.pl will use the
|
|
||||||
default args to make use of them.
|
|
||||||
|
|
||||||
If the provided string is different than aria2c, curl or wget, the command
|
|
||||||
is used as is and the download url will be appended at the end of such command.
|
|
||||||
|
|
||||||
config DOWNLOAD_FOLDER
|
|
||||||
string "Download folder" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Store downloaded source bundles in this directory.
|
|
||||||
If not set then defaults to './dl', which is removed by operations such as
|
|
||||||
'git clean -xdf' or 'make distclean'.
|
|
||||||
This option is useful if you have a low bandwidth Internet connection, and by
|
|
||||||
setting a path outside the OpenWrt tree downloads will be saved.
|
|
||||||
|
|
||||||
config LOCALMIRROR
|
|
||||||
string "Local mirror for source packages" if DEVEL
|
|
||||||
default ""
|
|
||||||
|
|
||||||
config AUTOREBUILD
|
|
||||||
bool "Automatic rebuild of packages" if DEVEL
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Automatically rebuild packages when their files change.
|
|
||||||
|
|
||||||
config AUTOREMOVE
|
|
||||||
bool "Automatic removal of build directories" if DEVEL
|
|
||||||
help
|
|
||||||
Automatically delete build directories after make target completed.
|
|
||||||
This allows you to symlink build_dir into a scratch location, e.g. a ramdisk,
|
|
||||||
which does not have enough space to keep a complete build_dir.
|
|
||||||
|
|
||||||
config BUILD_ALL_HOST_TOOLS
|
|
||||||
bool "Compile all host tools" if DEVEL
|
|
||||||
help
|
|
||||||
Compile all host host tools even if not needed. This is needed to prepare a
|
|
||||||
universal precompiled host tools archive to use in another buildroot.
|
|
||||||
|
|
||||||
config BUILD_SUFFIX
|
|
||||||
string "Build suffix to append to the target BUILD_DIR variable" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Build suffix to append to the BUILD_DIR variable, i.e: './build_dir/{target-build-dir}_$(BUILD_SUFFIX)'.
|
|
||||||
This allows you to switch to a different .config whilst retaining all the build
|
|
||||||
objects generated by the first .config
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_DIR
|
|
||||||
string "Override the default TARGET_ROOTFS_DIR variable" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Override the default TARGET_ROOTFS_DIR variable content $(BUILD_DIR) with
|
|
||||||
custom path. Use this option to re-define the location of the target
|
|
||||||
root filesystem directory.
|
|
||||||
|
|
||||||
config CCACHE
|
|
||||||
bool "Use ccache" if DEVEL
|
|
||||||
help
|
|
||||||
Compiler cache; see https://ccache.samba.org/
|
|
||||||
|
|
||||||
config CCACHE_DIR
|
|
||||||
string "Set ccache directory" if CCACHE
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Store ccache in this directory.
|
|
||||||
If not set, uses './.ccache'
|
|
||||||
|
|
||||||
config KERNEL_CFLAGS
|
|
||||||
string "Kernel extra CFLAGS" if DEVEL
|
|
||||||
default "-falign-functions=32" if TARGET_bcm53xx
|
|
||||||
default ""
|
|
||||||
|
|
||||||
config EXTERNAL_KERNEL_TREE
|
|
||||||
string "Use external kernel tree" if DEVEL
|
|
||||||
default ""
|
|
||||||
|
|
||||||
config KERNEL_GIT_CLONE_URI
|
|
||||||
string "Enter git repository to clone" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Enter the full git repository path i.e.:
|
|
||||||
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
|
|
||||||
This will create a git clone of the kernel in your build directory.
|
|
||||||
|
|
||||||
config KERNEL_GIT_LOCAL_REPOSITORY
|
|
||||||
string "Enter path to local reference repository" if DEVEL
|
|
||||||
depends on (KERNEL_GIT_CLONE_URI != "")
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Enter a full pathname to a local reference git repository.
|
|
||||||
In this instance, the --reference option of git clone will
|
|
||||||
be used thus creating a quick local clone of your repo.
|
|
||||||
|
|
||||||
config KERNEL_GIT_REF
|
|
||||||
string "Enter git ref at which to checkout" if DEVEL
|
|
||||||
depends on (KERNEL_GIT_CLONE_URI != "")
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Enter the git ref at which to checkout the git repository
|
|
||||||
after it is cloned, and before making it a tar-ball.
|
|
||||||
It can be a git hash or a branch name.
|
|
||||||
If unused, the clone's repository HEAD will be checked-out.
|
|
||||||
|
|
||||||
config KERNEL_GIT_MIRROR_HASH
|
|
||||||
string "Enter hash of Git kernel tree source checkout tarball" if DEVEL
|
|
||||||
depends on (KERNEL_GIT_CLONE_URI != "")
|
|
||||||
default ""
|
|
||||||
|
|
||||||
config BUILD_LOG
|
|
||||||
bool "Enable log files during build process" if DEVEL
|
|
||||||
help
|
|
||||||
If enabled, log files will be written to the ./log directory.
|
|
||||||
|
|
||||||
config BUILD_LOG_DIR
|
|
||||||
string "Log folder" if DEVEL
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Store build logs in this directory.
|
|
||||||
If not set, uses './logs'
|
|
||||||
|
|
||||||
config SRC_TREE_OVERRIDE
|
|
||||||
bool "Enable package source tree override" if DEVEL
|
|
||||||
help
|
|
||||||
If enabled, you can force a package to use a git tree as source
|
|
||||||
code instead of the normal tarball. Create a symlink 'git-src'
|
|
||||||
in the package directory, pointing to the .git tree that you want
|
|
||||||
to pull the source code from.
|
|
||||||
|
|
||||||
config EXTRA_OPTIMIZATION
|
|
||||||
string "Additional compiler options" if DEVEL
|
|
||||||
default "-fno-caller-saves -fno-plt" if !CONFIG_EXTERNAL_TOOLCHAIN && !arc
|
|
||||||
default "-fno-caller-saves"
|
|
||||||
help
|
|
||||||
Extra target-independent optimizations to use when building for the target.
|
|
@ -1,325 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2013 OpenWrt.org
|
|
||||||
|
|
||||||
menu "Target Images"
|
|
||||||
|
|
||||||
menuconfig TARGET_ROOTFS_INITRAMFS
|
|
||||||
bool "ramdisk"
|
|
||||||
default y if USES_INITRAMFS
|
|
||||||
help
|
|
||||||
Embed the root filesystem into the kernel (initramfs).
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Compression"
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_apm821xx
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ath79_mikrotik
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_lantiq
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_mpc85xx
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_ZSTD if TARGET_qualcommax
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_XZ if USES_SEPARATE_INITRAMFS
|
|
||||||
default TARGET_INITRAMFS_COMPRESSION_NONE
|
|
||||||
depends on TARGET_ROOTFS_INITRAMFS
|
|
||||||
help
|
|
||||||
Select ramdisk compression.
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_NONE
|
|
||||||
bool "none"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_GZIP
|
|
||||||
bool "gzip"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_BZIP2
|
|
||||||
bool "bzip2"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_LZMA
|
|
||||||
bool "lzma"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_LZO
|
|
||||||
bool "lzo"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_LZ4
|
|
||||||
bool "lz4"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_XZ
|
|
||||||
bool "xz"
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_COMPRESSION_ZSTD
|
|
||||||
bool "zstd"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config EXTERNAL_CPIO
|
|
||||||
string
|
|
||||||
prompt "Use external cpio" if TARGET_ROOTFS_INITRAMFS
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
Kernel uses specified external cpio as INITRAMFS_SOURCE.
|
|
||||||
|
|
||||||
config TARGET_INITRAMFS_FORCE
|
|
||||||
bool "Force"
|
|
||||||
depends on TARGET_ROOTFS_INITRAMFS
|
|
||||||
help
|
|
||||||
Ignore the initramfs passed by the bootloader.
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_INITRAMFS_SEPARATE
|
|
||||||
bool "separate ramdisk"
|
|
||||||
depends on USES_SEPARATE_INITRAMFS && TARGET_ROOTFS_INITRAMFS && !TARGET_INITRAMFS_FORCE
|
|
||||||
default y if USES_SEPARATE_INITRAMFS
|
|
||||||
help
|
|
||||||
Generate separate initrd.cpio instead of embedding it.
|
|
||||||
This is useful for generating images with a dedicated
|
|
||||||
ramdisk e.g. in U-Boot's uImage and uImage.FIT formats.
|
|
||||||
|
|
||||||
comment "Root filesystem archives"
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_CPIOGZ
|
|
||||||
bool "cpio.gz"
|
|
||||||
default y if USES_CPIOGZ
|
|
||||||
help
|
|
||||||
Build a compressed cpio archive of the root filesystem.
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_TARGZ
|
|
||||||
bool "tar.gz"
|
|
||||||
default y if USES_TARGZ
|
|
||||||
help
|
|
||||||
Build a compressed tar archive of the root filesystem.
|
|
||||||
|
|
||||||
comment "Root filesystem images"
|
|
||||||
|
|
||||||
menuconfig TARGET_ROOTFS_EXT4FS
|
|
||||||
bool "ext4"
|
|
||||||
default y if USES_EXT4
|
|
||||||
help
|
|
||||||
Build an ext4 root filesystem.
|
|
||||||
|
|
||||||
config TARGET_EXT4_RESERVED_PCT
|
|
||||||
int "Percentage of reserved blocks in root filesystem"
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS
|
|
||||||
default 0
|
|
||||||
help
|
|
||||||
Select the percentage of reserved blocks in the root filesystem.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Root filesystem block size"
|
|
||||||
default TARGET_EXT4_BLOCKSIZE_4K
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS
|
|
||||||
help
|
|
||||||
Select the block size of the root filesystem.
|
|
||||||
|
|
||||||
config TARGET_EXT4_BLOCKSIZE_4K
|
|
||||||
bool "4k"
|
|
||||||
|
|
||||||
config TARGET_EXT4_BLOCKSIZE_2K
|
|
||||||
bool "2k"
|
|
||||||
|
|
||||||
config TARGET_EXT4_BLOCKSIZE_1K
|
|
||||||
bool "1k"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config TARGET_EXT4_BLOCKSIZE
|
|
||||||
int
|
|
||||||
default 4096 if TARGET_EXT4_BLOCKSIZE_4K
|
|
||||||
default 2048 if TARGET_EXT4_BLOCKSIZE_2K
|
|
||||||
default 1024 if TARGET_EXT4_BLOCKSIZE_1K
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS
|
|
||||||
|
|
||||||
config TARGET_EXT4_JOURNAL
|
|
||||||
bool "Create a journaling filesystem"
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Create an ext4 filesystem with a journal.
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_JFFS2
|
|
||||||
bool "jffs2"
|
|
||||||
depends on USES_JFFS2
|
|
||||||
help
|
|
||||||
Build a JFFS2 root filesystem.
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_JFFS2_NAND
|
|
||||||
bool "jffs2 for NAND"
|
|
||||||
default y if USES_JFFS2_NAND
|
|
||||||
depends on USES_JFFS2_NAND
|
|
||||||
help
|
|
||||||
Build a JFFS2 root filesystem for NAND flash.
|
|
||||||
|
|
||||||
menuconfig TARGET_ROOTFS_SQUASHFS
|
|
||||||
bool "squashfs"
|
|
||||||
default y if USES_SQUASHFS
|
|
||||||
help
|
|
||||||
Build a squashfs root filesystem.
|
|
||||||
|
|
||||||
config TARGET_SQUASHFS_BLOCK_SIZE
|
|
||||||
int "Block size (in KiB)"
|
|
||||||
depends on TARGET_ROOTFS_SQUASHFS
|
|
||||||
default 64 if LOW_MEMORY_FOOTPRINT
|
|
||||||
default 1024 if (SMALL_FLASH && !LOW_MEMORY_FOOTPRINT)
|
|
||||||
default 256
|
|
||||||
help
|
|
||||||
Select squashfs block size, must be one of:
|
|
||||||
4, 8, 16, 32, 64, 128, 256, 512, 1024
|
|
||||||
|
|
||||||
menuconfig TARGET_ROOTFS_UBIFS
|
|
||||||
bool "ubifs"
|
|
||||||
default y if USES_UBIFS
|
|
||||||
depends on USES_UBIFS
|
|
||||||
help
|
|
||||||
Build a UBIFS root filesystem.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "compression"
|
|
||||||
default TARGET_UBIFS_COMPRESSION_ZLIB
|
|
||||||
depends on TARGET_ROOTFS_UBIFS
|
|
||||||
help
|
|
||||||
Select compression type
|
|
||||||
|
|
||||||
config TARGET_UBIFS_COMPRESSION_NONE
|
|
||||||
bool "none"
|
|
||||||
|
|
||||||
config TARGET_UBIFS_COMPRESSION_LZO
|
|
||||||
bool "lzo"
|
|
||||||
|
|
||||||
config TARGET_UBIFS_COMPRESSION_ZLIB
|
|
||||||
bool "zlib"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config TARGET_UBIFS_FREE_SPACE_FIXUP
|
|
||||||
bool "free space fixup" if TARGET_ROOTFS_UBIFS
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
The filesystem free space has to be fixed up on first mount.
|
|
||||||
|
|
||||||
config TARGET_UBIFS_JOURNAL_SIZE
|
|
||||||
string
|
|
||||||
prompt "journal size" if TARGET_ROOTFS_UBIFS
|
|
||||||
default ""
|
|
||||||
|
|
||||||
config GRUB_IMAGES
|
|
||||||
bool "Build GRUB images (Linux x86 or x86_64 host only)"
|
|
||||||
depends on TARGET_x86
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
|
|
||||||
select PACKAGE_grub2
|
|
||||||
select PACKAGE_grub2-bios-setup
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GRUB_EFI_IMAGES
|
|
||||||
bool "Build GRUB EFI images"
|
|
||||||
depends on TARGET_x86 || TARGET_armsr || TARGET_loongarch64
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
|
|
||||||
select PACKAGE_grub2 if TARGET_x86
|
|
||||||
select PACKAGE_grub2-efi if TARGET_x86
|
|
||||||
select PACKAGE_grub2-bios-setup if TARGET_x86
|
|
||||||
select PACKAGE_grub2-efi-arm if TARGET_armsr
|
|
||||||
select PACKAGE_grub2-efi-loongarch64 if TARGET_loongarch64
|
|
||||||
select PACKAGE_kmod-fs-vfat
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GRUB_CONSOLE
|
|
||||||
bool "Use Console Terminal (in addition to Serial)"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GRUB_BAUDRATE
|
|
||||||
int "Serial port baud rate"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
default 38400 if TARGET_x86_generic
|
|
||||||
default 115200
|
|
||||||
|
|
||||||
config GRUB_FLOWCONTROL
|
|
||||||
bool "Use RTE/CTS on serial console"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
depends on TARGET_SERIAL != ""
|
|
||||||
|
|
||||||
config GRUB_BOOTOPTS
|
|
||||||
string "Extra kernel boot options"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
help
|
|
||||||
If you don't know, just leave it blank.
|
|
||||||
|
|
||||||
config GRUB_TIMEOUT
|
|
||||||
string "Seconds to wait before booting the default entry"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
default "5"
|
|
||||||
help
|
|
||||||
If you don't know, 5 seconds is a reasonable default.
|
|
||||||
|
|
||||||
config GRUB_TITLE
|
|
||||||
string "Title for the menu entry in GRUB"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
default "OpenWrt"
|
|
||||||
help
|
|
||||||
This is the title of the GRUB menu entry.
|
|
||||||
If unspecified, it defaults to OpenWrt.
|
|
||||||
|
|
||||||
config ISO_IMAGES
|
|
||||||
bool "Build LiveCD image (ISO)"
|
|
||||||
depends on TARGET_x86
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
|
|
||||||
config VDI_IMAGES
|
|
||||||
bool "Build VirtualBox image files (VDI)"
|
|
||||||
depends on TARGET_x86
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
select PACKAGE_kmod-e1000
|
|
||||||
|
|
||||||
config VMDK_IMAGES
|
|
||||||
bool "Build VMware image files (VMDK)"
|
|
||||||
depends on TARGET_x86 || TARGET_armsr
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
select PACKAGE_kmod-e1000
|
|
||||||
|
|
||||||
config VHDX_IMAGES
|
|
||||||
bool "Build Hyper-V image files (VHDX)"
|
|
||||||
depends on TARGET_x86
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
select PACKAGE_kmod-e1000
|
|
||||||
|
|
||||||
config TARGET_SERIAL
|
|
||||||
string "Serial port device"
|
|
||||||
depends on TARGET_x86 || TARGET_armsr || TARGET_loongarch64
|
|
||||||
default "ttyS0"
|
|
||||||
|
|
||||||
config TARGET_IMAGES_GZIP
|
|
||||||
bool "GZip images"
|
|
||||||
depends on TARGET_ROOTFS_EXT4FS || TARGET_x86 || TARGET_armsr || TARGET_malta || TARGET_loongarch64
|
|
||||||
default y
|
|
||||||
|
|
||||||
comment "Image Options"
|
|
||||||
|
|
||||||
source "target/linux/*/image/Config.in"
|
|
||||||
source "target/linux/*/*/image/Config.in"
|
|
||||||
|
|
||||||
config TARGET_KERNEL_PARTSIZE
|
|
||||||
int "Kernel partition size (in MiB)"
|
|
||||||
depends on USES_BOOT_PART
|
|
||||||
default 8 if TARGET_apm821xx_sata
|
|
||||||
default 64 if TARGET_bcm27xx
|
|
||||||
default 128 if TARGET_armsr
|
|
||||||
default 16
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_PARTSIZE
|
|
||||||
int "Root filesystem partition size (in MiB)"
|
|
||||||
depends on USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS
|
|
||||||
default 232 if TARGET_loongarch64
|
|
||||||
default 448 if TARGET_mediatek
|
|
||||||
default 104
|
|
||||||
help
|
|
||||||
Select the root filesystem partition size.
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_PARTNAME
|
|
||||||
string "Root partition on target device"
|
|
||||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
|
||||||
help
|
|
||||||
Override the root partition on the final device. If left empty,
|
|
||||||
it will be mounted by PARTUUID which makes the kernel find the
|
|
||||||
appropriate disk automatically.
|
|
||||||
|
|
||||||
config TARGET_ROOTFS_PERSIST_VAR
|
|
||||||
bool "Make /var persistent"
|
|
||||||
help
|
|
||||||
Do not symlink /var to /tmp, so that its content will persist
|
|
||||||
across reboots. When enabled, /var/run will still be linked
|
|
||||||
to /tmp/run.
|
|
||||||
|
|
||||||
endmenu
|
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +0,0 @@
|
|||||||
cat << EOF | "$STAGING_DIR_HOST/bin/g++" -c -x c++ -o /dev/null - >/dev/null 2>&1
|
|
||||||
#if __clang__
|
|
||||||
#if __clang_major__ < $3
|
|
||||||
#error "clang too old"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if __GNUC__ < $1 || (__GNUC__ == $1 && (__GNUC_MINOR__ < $2))
|
|
||||||
#error "gcc too old"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
EOF
|
|
||||||
[ $? -eq 0 ] && echo y || echo n
|
|
@ -1 +0,0 @@
|
|||||||
[ "$(uname)" = "$1" ] && echo y || echo n
|
|
@ -1,170 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifneq ($(__autotools_inc),1)
|
|
||||||
__autotools_inc=1
|
|
||||||
|
|
||||||
autoconf_bool = $(patsubst %,$(if $($(1)),--enable,--disable)-%,$(2))
|
|
||||||
|
|
||||||
# delete *.la-files from staging_dir - we can not yet remove respective lines within all package
|
|
||||||
# Makefiles, since backfire still uses libtool v1.5.x which (may) require those files
|
|
||||||
define libtool_remove_files
|
|
||||||
find $(1) -name '*.la' | $(XARGS) rm -f;
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
AM_TOOL_PATHS:= \
|
|
||||||
AUTOM4TE=$(STAGING_DIR_HOST)/bin/autom4te \
|
|
||||||
AUTOCONF=$(STAGING_DIR_HOST)/bin/autoconf \
|
|
||||||
AUTOMAKE=$(STAGING_DIR_HOST)/bin/automake \
|
|
||||||
ACLOCAL=$(STAGING_DIR_HOST)/bin/aclocal \
|
|
||||||
AUTOHEADER=$(STAGING_DIR_HOST)/bin/autoheader \
|
|
||||||
LIBTOOLIZE=$(STAGING_DIR_HOST)/bin/libtoolize \
|
|
||||||
LIBTOOL=$(STAGING_DIR_HOST)/bin/libtool \
|
|
||||||
M4=$(STAGING_DIR_HOST)/bin/m4 \
|
|
||||||
AUTOPOINT=true \
|
|
||||||
GTKDOCIZE=true
|
|
||||||
|
|
||||||
AM_TOOL_PATHS_FAKE:=$(subst = ,=,$(patsubst "%,"$(TRUE)",$(subst =,= ",$(AM_TOOL_PATHS))))
|
|
||||||
|
|
||||||
# 1: build dir
|
|
||||||
# 2: remove files
|
|
||||||
# 3: automake paths
|
|
||||||
# 4: libtool paths
|
|
||||||
# 5: extra m4 dirs
|
|
||||||
define autoreconf
|
|
||||||
(cd $(1); \
|
|
||||||
$(patsubst %,rm -f %;,$(2)) \
|
|
||||||
$(foreach p,$(3), \
|
|
||||||
if [ -f $(p)/configure.ac ] || [ -f $(p)/configure.in ]; then \
|
|
||||||
[ -d $(p)/autom4te.cache ] && rm -rf $(p)/autom4te.cache; \
|
|
||||||
[ -e $(p)/config.rpath ] || \
|
|
||||||
ln -s $(SCRIPT_DIR)/config.rpath $(p)/config.rpath; \
|
|
||||||
touch NEWS AUTHORS COPYING ABOUT-NLS ChangeLog; \
|
|
||||||
$(AM_TOOL_PATHS) \
|
|
||||||
LIBTOOLIZE='$(STAGING_DIR_HOST)/bin/libtoolize --install' \
|
|
||||||
$(STAGING_DIR_HOST)/bin/autoreconf -v -f -i \
|
|
||||||
$(if $(word 2,$(3)),--no-recursive) \
|
|
||||||
-B $(STAGING_DIR_HOST)/share/aclocal \
|
|
||||||
$(patsubst %,-I %,$(5)) \
|
|
||||||
$(patsubst %,-I %,$(4)) $(p) || true; \
|
|
||||||
fi; \
|
|
||||||
) \
|
|
||||||
);
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: build dir
|
|
||||||
define patch_libtool
|
|
||||||
@(cd $(1); \
|
|
||||||
for lt in $$$$($$(STAGING_DIR_HOST)/bin/find . -name ltmain.sh); do \
|
|
||||||
lt_version="$$$$($$(STAGING_DIR_HOST)/bin/sed -ne 's,^[[:space:]]*VERSION="\?\([0-9]\.[0-9]\+\).*,\1,p' $$$$lt)"; \
|
|
||||||
case "$$$$lt_version" in \
|
|
||||||
1.5|2.2|2.4) echo "autotools.mk: Found libtool v$$$$lt_version - applying patch to $$$$lt"; \
|
|
||||||
(cd $$$$(dirname $$$$lt) && $$(PATCH) -N -s -p1 < $$(TOPDIR)/tools/libtool/files/libtool-v$$$$lt_version.patch || true) ;; \
|
|
||||||
*) echo "autotools.mk: error: Unsupported libtool version v$$$$lt_version - cannot patch $$$$lt"; exit 1 ;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
);
|
|
||||||
endef
|
|
||||||
|
|
||||||
define set_libtool_abiver
|
|
||||||
sed -i \
|
|
||||||
-e 's,^soname_spec=.*,soname_spec="\\$$$${libname}\\$$$${shared_ext}.$(PKG_ABI_VERSION)",' \
|
|
||||||
-e 's,^library_names_spec=.*,library_names_spec="\\$$$${libname}\\$$$${shared_ext}.$(PKG_ABI_VERSION) \\$$$${libname}\\$$$${shared_ext}",' \
|
|
||||||
$(PKG_BUILD_DIR)/libtool
|
|
||||||
endef
|
|
||||||
|
|
||||||
PKG_LIBTOOL_PATHS?=$(CONFIGURE_PATH)
|
|
||||||
PKG_AUTOMAKE_PATHS?=$(CONFIGURE_PATH)
|
|
||||||
PKG_MACRO_PATHS?=m4
|
|
||||||
PKG_REMOVE_FILES?=aclocal.m4
|
|
||||||
|
|
||||||
Hooks/InstallDev/Post += libtool_remove_files
|
|
||||||
|
|
||||||
define autoreconf_target
|
|
||||||
$(strip $(call autoreconf, \
|
|
||||||
$(PKG_BUILD_DIR), $(PKG_REMOVE_FILES), \
|
|
||||||
$(PKG_AUTOMAKE_PATHS), $(PKG_LIBTOOL_PATHS), \
|
|
||||||
$(STAGING_DIR)/host/share/aclocal $(STAGING_DIR_HOSTPKG)/share/aclocal $(STAGING_DIR)/usr/share/aclocal $(PKG_MACRO_PATHS)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define patch_libtool_target
|
|
||||||
$(strip $(call patch_libtool, \
|
|
||||||
$(PKG_BUILD_DIR)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define gettext_version_target
|
|
||||||
(cd $(PKG_BUILD_DIR) && \
|
|
||||||
GETTEXT_VERSION=$(shell $(STAGING_DIR_HOSTPKG)/bin/gettext -V | $(STAGING_DIR_HOST)/bin/sed -rne '1s/.*\b([0-9]\.[0-9]+(\.[0-9]+)?)\b.*/\1/p' ) && \
|
|
||||||
$(STAGING_DIR_HOST)/bin/sed \
|
|
||||||
-i $(PKG_BUILD_DIR)/configure.ac \
|
|
||||||
-e "s/AM_GNU_GETTEXT_VERSION(.*)/AM_GNU_GETTEXT_VERSION(\[$$$$GETTEXT_VERSION\])/g" && \
|
|
||||||
$(STAGING_DIR_HOSTPKG)/bin/autopoint --force \
|
|
||||||
);
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq ($(filter gettext-version,$(PKG_FIXUP)),)
|
|
||||||
Hooks/Configure/Pre += gettext_version_target
|
|
||||||
ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
|
|
||||||
Hooks/Configure/Pre += autoreconf_target
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter patch-libtool,$(PKG_FIXUP)),)
|
|
||||||
Hooks/Configure/Pre += patch_libtool_target
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter libtool,$(PKG_FIXUP)),)
|
|
||||||
PKG_BUILD_DEPENDS += libtool
|
|
||||||
ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
|
|
||||||
Hooks/Configure/Pre += autoreconf_target
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter libtool-abiver,$(PKG_FIXUP)),)
|
|
||||||
Hooks/Configure/Post += set_libtool_abiver
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter autoreconf,$(PKG_FIXUP)),)
|
|
||||||
ifeq ($(filter autoreconf,$(Hooks/Configure/Pre)),)
|
|
||||||
Hooks/Configure/Pre += autoreconf_target
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
HOST_FIXUP?=$(PKG_FIXUP)
|
|
||||||
HOST_LIBTOOL_PATHS?=$(if $(PKG_LIBTOOL_PATHS),$(PKG_LIBTOOL_PATHS),.)
|
|
||||||
HOST_AUTOMAKE_PATHS?=$(if $(PKG_AUTOMAKE_PATHS),$(PKG_AUTOMAKE_PATHS),.)
|
|
||||||
HOST_MACRO_PATHS?=$(if $(PKG_MACRO_PATHS),$(PKG_MACRO_PATHS),m4)
|
|
||||||
HOST_REMOVE_FILES?=$(PKG_REMOVE_FILES)
|
|
||||||
|
|
||||||
define autoreconf_host
|
|
||||||
$(strip $(call autoreconf, \
|
|
||||||
$(HOST_BUILD_DIR), $(HOST_REMOVE_FILES), \
|
|
||||||
$(HOST_AUTOMAKE_PATHS), $(HOST_LIBTOOL_PATHS), \
|
|
||||||
$(HOST_MACRO_PATHS)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define patch_libtool_host
|
|
||||||
$(strip $(call patch_libtool, \
|
|
||||||
$(HOST_BUILD_DIR)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq ($(filter patch-libtool,$(HOST_FIXUP)),)
|
|
||||||
Hooks/HostConfigure/Pre += patch_libtool_host
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter libtool,$(HOST_FIXUP)),)
|
|
||||||
ifeq ($(filter no-autoreconf,$(HOST_FIXUP)),)
|
|
||||||
Hooks/HostConfigure/Pre += autoreconf_host
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter autoreconf,$(HOST_FIXUP)),)
|
|
||||||
ifeq ($(filter autoreconf,$(Hooks/HostConfigure/Pre)),)
|
|
||||||
Hooks/HostConfigure/Pre += autoreconf_host
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif #__autotools_inc
|
|
@ -1,86 +0,0 @@
|
|||||||
BPF_DEPENDS := @HAS_BPF_TOOLCHAIN
|
|
||||||
LLVM_VER:=
|
|
||||||
|
|
||||||
CLANG_MIN_VER:=12
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_USE_LLVM_HOST),)
|
|
||||||
BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH))
|
|
||||||
ifneq ($(BPF_TOOLCHAIN_HOST_PATH),)
|
|
||||||
BPF_PATH:=$(BPF_TOOLCHAIN_HOST_PATH)/bin:$(PATH)
|
|
||||||
else
|
|
||||||
BPF_PATH:=$(PATH)
|
|
||||||
endif
|
|
||||||
CLANG:=$(firstword $(shell PATH='$(BPF_PATH)' command -v clang clang-13 clang-12 clang-11))
|
|
||||||
LLVM_VER:=$(subst clang,,$(notdir $(CLANG)))
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_USE_LLVM_PREBUILT),)
|
|
||||||
CLANG:=$(TOPDIR)/llvm-bpf/bin/clang
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_USE_LLVM_BUILD),)
|
|
||||||
CLANG:=$(STAGING_DIR_HOST)/llvm-bpf/bin/clang
|
|
||||||
endif
|
|
||||||
|
|
||||||
LLVM_PATH:=$(dir $(CLANG))
|
|
||||||
LLVM_LLC:=$(LLVM_PATH)/llc$(LLVM_VER)
|
|
||||||
LLVM_DIS:=$(LLVM_PATH)/llvm-dis$(LLVM_VER)
|
|
||||||
LLVM_OPT:=$(LLVM_PATH)/opt$(LLVM_VER)
|
|
||||||
LLVM_STRIP:=$(LLVM_PATH)/llvm-strip$(LLVM_VER)
|
|
||||||
|
|
||||||
BPF_KARCH:=mips
|
|
||||||
BPF_ARCH:=mips$(if $(CONFIG_ARCH_64BIT),64)$(if $(CONFIG_BIG_ENDIAN),,el)
|
|
||||||
BPF_TARGET:=bpf$(if $(CONFIG_BIG_ENDIAN),eb,el)
|
|
||||||
|
|
||||||
BPF_HEADERS_DIR:=$(STAGING_DIR)/bpf-headers
|
|
||||||
|
|
||||||
BPF_KERNEL_INCLUDE := \
|
|
||||||
-nostdinc -isystem $(TOOLCHAIN_ROOT_DIR)/lib/gcc/*/*/include \
|
|
||||||
$(patsubst %,-isystem%,$(TOOLCHAIN_INC_DIRS)) \
|
|
||||||
-I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include \
|
|
||||||
-I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/asm/mach-generic \
|
|
||||||
-I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/generated \
|
|
||||||
-I$(BPF_HEADERS_DIR)/include \
|
|
||||||
-I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/uapi \
|
|
||||||
-I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/generated/uapi \
|
|
||||||
-I$(BPF_HEADERS_DIR)/include/uapi \
|
|
||||||
-I$(BPF_HEADERS_DIR)/include/generated/uapi \
|
|
||||||
-I$(BPF_HEADERS_DIR)/tools/lib \
|
|
||||||
-I$(BPF_HEADERS_DIR)/tools/testing/selftests \
|
|
||||||
-I$(BPF_HEADERS_DIR)/samples/bpf \
|
|
||||||
-include linux/kconfig.h -include asm_goto_workaround.h
|
|
||||||
|
|
||||||
BPF_CFLAGS := \
|
|
||||||
$(BPF_KERNEL_INCLUDE) -I$(PKG_BUILD_DIR) \
|
|
||||||
-D__KERNEL__ -D__BPF_TRACING__ -DCONFIG_GENERIC_CSUM \
|
|
||||||
-D__TARGET_ARCH_${BPF_KARCH} \
|
|
||||||
-m$(if $(CONFIG_BIG_ENDIAN),big,little)-endian \
|
|
||||||
-fno-stack-protector -Wall \
|
|
||||||
-Wno-unused-value -Wno-pointer-sign \
|
|
||||||
-Wno-compare-distinct-pointer-types \
|
|
||||||
-Wno-gnu-variable-sized-type-not-at-end \
|
|
||||||
-Wno-address-of-packed-member -Wno-tautological-compare \
|
|
||||||
-Wno-unknown-warning-option \
|
|
||||||
-fno-asynchronous-unwind-tables \
|
|
||||||
-Wno-uninitialized -Wno-unused-variable \
|
|
||||||
-Wno-unused-label \
|
|
||||||
-O2 -emit-llvm -Xclang -disable-llvm-passes
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_HAS_BPF_TOOLCHAIN),)
|
|
||||||
ifeq ($(DUMP)$(filter download refresh,$(MAKECMDGOALS)),)
|
|
||||||
CLANG_VER:=$(shell $(CLANG) --target=$(BPF_TARGET) -dM -E - < /dev/null | grep __clang_major__ | cut -d' ' -f3)
|
|
||||||
CLANG_VER_VALID:=$(shell [ "$(CLANG_VER)" -ge "$(CLANG_MIN_VER)" ] && echo 1 )
|
|
||||||
ifeq ($(CLANG_VER_VALID),)
|
|
||||||
$(error ERROR: LLVM/clang version too old. Minimum required: $(CLANG_MIN_VER), found: $(CLANG_VER))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
define CompileBPF
|
|
||||||
$(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \
|
|
||||||
-c $(1) -o $(patsubst %.c,%.bc,$(1))
|
|
||||||
$(LLVM_OPT) -O2 -mtriple=$(BPF_TARGET) < $(patsubst %.c,%.bc,$(1)) > $(patsubst %.c,%.opt,$(1))
|
|
||||||
$(LLVM_DIS) < $(patsubst %.c,%.opt,$(1)) > $(patsubst %.c,%.S,$(1))
|
|
||||||
$(LLVM_LLC) -march=$(BPF_TARGET) -mcpu=v3 -filetype=obj -o $(patsubst %.c,%.o,$(1)) < $(patsubst %.c,%.S,$(1))
|
|
||||||
$(CP) $(patsubst %.c,%.o,$(1)) $(patsubst %.c,%.debug.o,$(1))
|
|
||||||
$(LLVM_STRIP) --strip-debug $(patsubst %.c,%.o,$(1))
|
|
||||||
endef
|
|
||||||
|
|
185
include/cmake.mk
185
include/cmake.mk
@ -1,185 +0,0 @@
|
|||||||
cmake_bool = $(patsubst %,-D%:BOOL=$(if $($(1)),ON,OFF),$(2))
|
|
||||||
|
|
||||||
PKG_USE_NINJA ?= 1
|
|
||||||
HOST_USE_NINJA ?= 1
|
|
||||||
ifeq ($(PKG_USE_NINJA),1)
|
|
||||||
PKG_BUILD_PARALLEL ?= 1
|
|
||||||
endif
|
|
||||||
ifeq ($(HOST_USE_NINJA),1)
|
|
||||||
HOST_BUILD_PARALLEL ?= 1
|
|
||||||
endif
|
|
||||||
PKG_INSTALL:=1
|
|
||||||
|
|
||||||
ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
|
|
||||||
MAKE_FLAGS+=VERBOSE=1
|
|
||||||
HOST_MAKE_FLAGS+=VERBOSE=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
CMAKE_BINARY_DIR = $(PKG_BUILD_DIR)$(if $(CMAKE_BINARY_SUBDIR),/$(CMAKE_BINARY_SUBDIR))
|
|
||||||
CMAKE_SOURCE_DIR = $(PKG_BUILD_DIR)$(if $(CMAKE_SOURCE_SUBDIR),/$(CMAKE_SOURCE_SUBDIR))
|
|
||||||
HOST_CMAKE_SOURCE_DIR = $(HOST_BUILD_DIR)$(if $(CMAKE_SOURCE_SUBDIR),/$(CMAKE_SOURCE_SUBDIR))
|
|
||||||
HOST_CMAKE_BINARY_DIR = $(HOST_BUILD_DIR)$(if $(CMAKE_BINARY_SUBDIR),/$(CMAKE_BINARY_SUBDIR))
|
|
||||||
MAKE_PATH = $(firstword $(CMAKE_BINARY_SUBDIR) .)
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
||||||
cmake_tool=$(firstword $(TOOLCHAIN_BIN_DIRS))/$(1)
|
|
||||||
else
|
|
||||||
cmake_tool=$(shell command -v $(1))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_CCACHE),)
|
|
||||||
CMAKE_C_COMPILER_LAUNCHER:=
|
|
||||||
CMAKE_CXX_COMPILER_LAUNCHER:=
|
|
||||||
CMAKE_C_COMPILER:=$(call cmake_tool,$(TARGET_CC))
|
|
||||||
CMAKE_CXX_COMPILER:=$(call cmake_tool,$(TARGET_CXX))
|
|
||||||
|
|
||||||
CMAKE_HOST_C_COMPILER:=$(HOSTCC)
|
|
||||||
CMAKE_HOST_CXX_COMPILER:=$(HOSTCXX)
|
|
||||||
else
|
|
||||||
CCACHE:=$(STAGING_DIR_HOST)/bin/ccache
|
|
||||||
CMAKE_C_COMPILER_LAUNCHER:=$(CCACHE)
|
|
||||||
CMAKE_CXX_COMPILER_LAUNCHER:=$(CCACHE)
|
|
||||||
CMAKE_C_COMPILER:=$(TARGET_CC_NOCACHE)
|
|
||||||
CMAKE_CXX_COMPILER:=$(TARGET_CXX_NOCACHE)
|
|
||||||
|
|
||||||
CMAKE_HOST_C_COMPILER:=$(HOSTCC_NOCACHE)
|
|
||||||
CMAKE_HOST_CXX_COMPILER:=$(HOSTCXX_NOCACHE)
|
|
||||||
endif
|
|
||||||
CMAKE_AR:=$(call cmake_tool,$(TARGET_AR))
|
|
||||||
CMAKE_NM:=$(call cmake_tool,$(TARGET_NM))
|
|
||||||
CMAKE_RANLIB:=$(call cmake_tool,$(TARGET_RANLIB))
|
|
||||||
|
|
||||||
CMAKE_FIND_ROOT_PATH:=$(STAGING_DIR)/usr;$(TOOLCHAIN_ROOT_DIR)
|
|
||||||
CMAKE_HOST_FIND_ROOT_PATH:=$(STAGING_DIR)/host;$(STAGING_DIR_HOSTPKG);$(STAGING_DIR_HOST)
|
|
||||||
CMAKE_SHARED_LDFLAGS:=-Wl,-Bsymbolic-functions
|
|
||||||
CMAKE_HOST_INSTALL_PREFIX = $(HOST_BUILD_PREFIX)
|
|
||||||
|
|
||||||
ifeq ($(HOST_USE_NINJA),1)
|
|
||||||
CMAKE_HOST_OPTIONS += -DCMAKE_GENERATOR="Ninja"
|
|
||||||
|
|
||||||
define Host/Compile/Default
|
|
||||||
+$(NINJA) -C $(HOST_CMAKE_BINARY_DIR) $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Install/Default
|
|
||||||
+$(NINJA) -C $(HOST_CMAKE_BINARY_DIR) install
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Uninstall/Default
|
|
||||||
+$(NINJA) -C $(HOST_CMAKE_BINARY_DIR) uninstall
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
CMAKE_HOST_OPTIONS += -DCMAKE_GENERATOR="Unix Makefiles"
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(PKG_USE_NINJA),1)
|
|
||||||
CMAKE_OPTIONS += -DCMAKE_GENERATOR="Ninja"
|
|
||||||
|
|
||||||
define Build/Compile/Default
|
|
||||||
+$(NINJA) -C $(CMAKE_BINARY_DIR) $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Install/Default
|
|
||||||
+DESTDIR="$(PKG_INSTALL_DIR)" $(NINJA) -C $(CMAKE_BINARY_DIR) install
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
CMAKE_OPTIONS += -DCMAKE_GENERATOR="Unix Makefiles"
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Build/Configure/Default
|
|
||||||
mkdir -p $(CMAKE_BINARY_DIR)
|
|
||||||
(cd $(CMAKE_BINARY_DIR); \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
|
|
||||||
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
|
|
||||||
cmake \
|
|
||||||
--no-warn-unused-cli \
|
|
||||||
-DCMAKE_SYSTEM_NAME=Linux \
|
|
||||||
-DCMAKE_SYSTEM_VERSION=1 \
|
|
||||||
-DCMAKE_SYSTEM_PROCESSOR=$(ARCH) \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
|
|
||||||
-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER="$(CMAKE_C_COMPILER_LAUNCHER)" \
|
|
||||||
-DCMAKE_C_COMPILER="$(CMAKE_C_COMPILER)" \
|
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER="$(CMAKE_CXX_COMPILER_LAUNCHER)" \
|
|
||||||
-DCMAKE_CXX_COMPILER="$(CMAKE_CXX_COMPILER)" \
|
|
||||||
-DCMAKE_ASM_COMPILER_LAUNCHER="$(CMAKE_C_COMPILER_LAUNCHER)" \
|
|
||||||
-DCMAKE_ASM_COMPILER="$(CMAKE_C_COMPILER)" \
|
|
||||||
-DCMAKE_EXE_LINKER_FLAGS:STRING="$(TARGET_LDFLAGS)" \
|
|
||||||
-DCMAKE_MODULE_LINKER_FLAGS:STRING="$(TARGET_LDFLAGS) $(CMAKE_SHARED_LDFLAGS)" \
|
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$(TARGET_LDFLAGS) $(CMAKE_SHARED_LDFLAGS)" \
|
|
||||||
-DCMAKE_AR="$(CMAKE_AR)" \
|
|
||||||
-DCMAKE_NM="$(CMAKE_NM)" \
|
|
||||||
-DCMAKE_RANLIB="$(CMAKE_RANLIB)" \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH="$(CMAKE_FIND_ROOT_PATH)" \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
|
|
||||||
-DCMAKE_STRIP=: \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
||||||
-DDL_LIBRARY=$(STAGING_DIR) \
|
|
||||||
-DCMAKE_PREFIX_PATH=$(STAGING_DIR) \
|
|
||||||
-DCMAKE_SKIP_RPATH=TRUE \
|
|
||||||
-DCMAKE_EXPORT_PACKAGE_REGISTRY=FALSE \
|
|
||||||
-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE \
|
|
||||||
-DCMAKE_FIND_USE_PACKAGE_REGISTRY=FALSE \
|
|
||||||
-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=TRUE \
|
|
||||||
-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=FALSE \
|
|
||||||
-DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=TRUE \
|
|
||||||
$(CMAKE_OPTIONS) \
|
|
||||||
$(CMAKE_SOURCE_DIR) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/InstallDev/cmake
|
|
||||||
$(INSTALL_DIR) $(1)
|
|
||||||
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
|
|
||||||
endef
|
|
||||||
|
|
||||||
Build/InstallDev = $(if $(CMAKE_INSTALL),$(Build/InstallDev/cmake))
|
|
||||||
|
|
||||||
define Host/Configure/Default
|
|
||||||
mkdir -p "$(HOST_CMAKE_BINARY_DIR)"
|
|
||||||
(cd $(HOST_CMAKE_BINARY_DIR); \
|
|
||||||
CFLAGS="$(HOST_CFLAGS)" \
|
|
||||||
CXXFLAGS="$(HOST_CFLAGS)" \
|
|
||||||
LDFLAGS="$(HOST_LDFLAGS)" \
|
|
||||||
cmake \
|
|
||||||
--no-warn-unused-cli \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER="$(CMAKE_C_COMPILER_LAUNCHER)" \
|
|
||||||
-DCMAKE_C_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
|
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER="$(CMAKE_CXX_COMPILER_LAUNCHER)" \
|
|
||||||
-DCMAKE_CXX_COMPILER="$(CMAKE_HOST_CXX_COMPILER)" \
|
|
||||||
-DCMAKE_ASM_COMPILER_LAUNCHER="$(CMAKE_C_COMPILER_LAUNCHER)" \
|
|
||||||
-DCMAKE_ASM_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
|
|
||||||
-DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
|
|
||||||
-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
|
|
||||||
-DCMAKE_EXE_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
|
||||||
-DCMAKE_MODULE_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH="$(CMAKE_HOST_FIND_ROOT_PATH)" \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
||||||
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
|
|
||||||
-DCMAKE_STRIP=: \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=$(CMAKE_HOST_INSTALL_PREFIX) \
|
|
||||||
-DCMAKE_PREFIX_PATH=$(HOST_BUILD_PREFIX) \
|
|
||||||
-DCMAKE_SKIP_RPATH=TRUE \
|
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
|
||||||
-DCMAKE_EXPORT_PACKAGE_REGISTRY=FALSE \
|
|
||||||
-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE \
|
|
||||||
-DCMAKE_FIND_USE_PACKAGE_REGISTRY=FALSE \
|
|
||||||
-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=TRUE \
|
|
||||||
-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=FALSE \
|
|
||||||
-DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=TRUE \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
$(CMAKE_HOST_OPTIONS) \
|
|
||||||
$(HOST_CMAKE_SOURCE_DIR) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKE_FLAGS += \
|
|
||||||
CMAKE_COMMAND='$$(if $$(CMAKE_DISABLE_$$@),:,$(STAGING_DIR_HOST)/bin/cmake)' \
|
|
||||||
CMAKE_DISABLE_cmake_check_build_system=1
|
|
@ -1,48 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
# debug flags:
|
|
||||||
#
|
|
||||||
# d: show subdirectory tree
|
|
||||||
# t: show added targets
|
|
||||||
# l: show legacy targets
|
|
||||||
# r: show autorebuild messages
|
|
||||||
# v: verbose (no .SILENCE for common targets)
|
|
||||||
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
ifeq ($(DEBUG),all)
|
|
||||||
build_debug:=dltvr
|
|
||||||
else
|
|
||||||
build_debug:=$(DEBUG)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(DEBUG),)
|
|
||||||
|
|
||||||
define debug
|
|
||||||
$$(findstring $(2),$$(if $$(DEBUG_SCOPE_DIR),$$(if $$(filter $$(DEBUG_SCOPE_DIR)%,$(1)),$(build_debug)),$(build_debug)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define warn
|
|
||||||
$$(if $(call debug,$(1),$(2)),$$(warning $(3)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define debug_eval
|
|
||||||
$$(if $(call debug,$(1),$(2)),$(3))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define warn_eval
|
|
||||||
$(call warn,$(1),$(2),$(3) $(4))
|
|
||||||
$(4)
|
|
||||||
endef
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
debug:=
|
|
||||||
warn:=
|
|
||||||
debug_eval:=
|
|
||||||
warn_eval = $(4)
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
# define a dependency on a subtree
|
|
||||||
# parameters:
|
|
||||||
# 1: directories/files
|
|
||||||
# 2: directory dependency
|
|
||||||
# 3: tempfile for file listings
|
|
||||||
# 4: find options
|
|
||||||
|
|
||||||
DEP_FINDPARAMS := -x "*/.svn*" -x ".*" -x "*:*" -x "*\!*" -x "* *" -x "*\\\#*" -x "*/.*_check" -x "*/.*.swp" -x "*/.pkgdir*"
|
|
||||||
|
|
||||||
find_md5=find $(wildcard $(1)) -type f $(patsubst -x,-and -not -path,$(DEP_FINDPARAMS) $(2)) -printf "%p%T@\n" | sort | $(MKHASH) md5
|
|
||||||
find_md5_reproducible=find $(wildcard $(1)) -type f $(patsubst -x,-and -not -path,$(DEP_FINDPARAMS) $(2)) -print0 | xargs -0 $(MKHASH) md5 | sort | $(MKHASH) md5
|
|
||||||
|
|
||||||
define rdep
|
|
||||||
.PRECIOUS: $(2)
|
|
||||||
.SILENT: $(2)_check
|
|
||||||
|
|
||||||
$(2): $(2)_check
|
|
||||||
check-depends: $(2)_check
|
|
||||||
|
|
||||||
ifneq ($(wildcard $(2)),)
|
|
||||||
$(2)_check::
|
|
||||||
$(if $(3), \
|
|
||||||
$(call find_md5,$(1),$(4)) > $(3).1; \
|
|
||||||
{ [ \! -f "$(3)" ] || diff $(3) $(3).1 >/dev/null; } && \
|
|
||||||
) \
|
|
||||||
{ \
|
|
||||||
[ -f "$(2)_check.1" ] && mv "$(2)_check.1" "$(2)_check"; \
|
|
||||||
$(TOPDIR)/scripts/timestamp.pl $(DEP_FINDPARAMS) $(4) -n $(2) $(1) && { \
|
|
||||||
$(call debug_eval,$(SUBDIR),r,echo "No need to rebuild $(2)";) \
|
|
||||||
touch -r "$(2)" "$(2)_check"; \
|
|
||||||
} \
|
|
||||||
} || { \
|
|
||||||
$(call debug_eval,$(SUBDIR),r,echo "Need to rebuild $(2)";) \
|
|
||||||
touch "$(2)_check"; \
|
|
||||||
}
|
|
||||||
$(if $(3), mv $(3).1 $(3))
|
|
||||||
else
|
|
||||||
$(2)_check::
|
|
||||||
$(if $(3), rm -f $(3) $(3).1)
|
|
||||||
$(call debug_eval,$(SUBDIR),r,echo "Target $(2) not built")
|
|
||||||
endif
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(filter .%,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),$(MAKECMDGOALS),x))
|
|
||||||
define rdep
|
|
||||||
$(2): $(2)_check
|
|
||||||
endef
|
|
||||||
endif
|
|
@ -1,5 +0,0 @@
|
|||||||
# minimal device table file for OpenWrt
|
|
||||||
|
|
||||||
#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
|
|
||||||
/dev d 755 0 0 - - - - -
|
|
||||||
/dev/console c 600 0 0 5 1 0 0 -
|
|
@ -1,357 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2012 OpenWrt.org
|
|
||||||
# Copyright (C) 2016 LEDE project
|
|
||||||
|
|
||||||
PROJECT_GIT = https://git.openwrt.org
|
|
||||||
|
|
||||||
OPENWRT_GIT = $(PROJECT_GIT)
|
|
||||||
LEDE_GIT = $(PROJECT_GIT)
|
|
||||||
|
|
||||||
ifdef PKG_SOURCE_VERSION
|
|
||||||
ifndef PKG_VERSION
|
|
||||||
PKG_VERSION := $(if $(PKG_SOURCE_DATE),$(subst -,.,$(PKG_SOURCE_DATE)),0)~$(call version_abbrev,$(PKG_SOURCE_VERSION))
|
|
||||||
endif
|
|
||||||
PKG_SOURCE_SUBDIR ?= $(PKG_NAME)-$(PKG_VERSION)
|
|
||||||
PKG_SOURCE ?= $(PKG_SOURCE_SUBDIR).tar.zst
|
|
||||||
endif
|
|
||||||
|
|
||||||
DOWNLOAD_RDEP=$(STAMP_PREPARED) $(HOST_STAMP_PREPARED)
|
|
||||||
|
|
||||||
# Export options for download.pl
|
|
||||||
export DOWNLOAD_CHECK_CERTIFICATE:=$(CONFIG_DOWNLOAD_CHECK_CERTIFICATE)
|
|
||||||
export DOWNLOAD_TOOL_CUSTOM:=$(CONFIG_DOWNLOAD_TOOL_CUSTOM)
|
|
||||||
|
|
||||||
define dl_method_git
|
|
||||||
$(if $(filter https://github.com/% git://github.com/%,$(1)),github_archive,git)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Try to guess the download method from the URL
|
|
||||||
define dl_method
|
|
||||||
$(strip \
|
|
||||||
$(if $(filter git,$(2)),$(call dl_method_git,$(1),$(2)),
|
|
||||||
$(if $(2),$(2), \
|
|
||||||
$(if $(filter @OPENWRT @APACHE/% @DEBIAN/% @GITHUB/% @GNOME/% @GNU/% @KERNEL/% @SF/% @SAVANNAH/% ftp://% http://% https://% file://%,$(1)),default, \
|
|
||||||
$(if $(filter git://%,$(1)),$(call dl_method_git,$(1),$(2)), \
|
|
||||||
$(if $(filter svn://%,$(1)),svn, \
|
|
||||||
$(if $(filter cvs://%,$(1)),cvs, \
|
|
||||||
$(if $(filter hg://%,$(1)),hg, \
|
|
||||||
$(if $(filter sftp://%,$(1)),bzr, \
|
|
||||||
unknown \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# code for creating tarballs from cvs/svn/git/bzr/hg/darcs checkouts - useful for mirror support
|
|
||||||
dl_pack/bz2=bzip2 -c > $(1)
|
|
||||||
dl_pack/gz=gzip -nc > $(1)
|
|
||||||
dl_pack/xz=xz -zc -7e > $(1)
|
|
||||||
dl_pack/zst=zstd -T0 --ultra -20 -c > $(1)
|
|
||||||
dl_pack/unknown=$(error ERROR: Unknown pack format for file $(1))
|
|
||||||
define dl_pack
|
|
||||||
$(if $(dl_pack/$(call ext,$(1))),$(dl_pack/$(call ext,$(1))),$(dl_pack/unknown))
|
|
||||||
endef
|
|
||||||
define dl_tar_pack
|
|
||||||
$(TAR) --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \
|
|
||||||
$$$${TAR_TIMESTAMP:+--mtime="$$$$TAR_TIMESTAMP"} -c $(2) | $(call dl_pack,$(1))
|
|
||||||
endef
|
|
||||||
|
|
||||||
gen_sha256sum = $(shell $(MKHASH) sha256 $(DL_DIR)/$(1))
|
|
||||||
|
|
||||||
# Used in Build/CoreTargets and HostBuild/Core as an integrity check for
|
|
||||||
# downloaded files. It will add a FORCE rule if the sha256 hash does not
|
|
||||||
# match, so that the download can be more thoroughly handled by download.pl.
|
|
||||||
define check_download_integrity
|
|
||||||
expected_hash:=$(strip $(if $(filter-out x,$(HASH)),$(HASH),$(MIRROR_HASH)))
|
|
||||||
$$(if $$(and $(FILE),$$(wildcard $(DL_DIR)/$(FILE)), \
|
|
||||||
$$(filter undefined,$$(flavor DownloadChecked/$(FILE)))), \
|
|
||||||
$$(eval DownloadChecked/$(FILE):=1) \
|
|
||||||
$$(if $$(filter-out $$(call gen_sha256sum,$(FILE)),$$(expected_hash)), \
|
|
||||||
$(DL_DIR)/$(FILE): FORCE) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef CHECK
|
|
||||||
check_escape=$(subst ','\'',$(1))
|
|
||||||
#')
|
|
||||||
|
|
||||||
# $(1): suffix of the F_, C_ variables, e.g. hash_deprecated, hash_mismatch, etc.
|
|
||||||
# $(2): filename
|
|
||||||
# $(3): expected hash value
|
|
||||||
# $(4): var name of the the form: {PKG_,Download/<name>:}{,MIRROR_}{HASH,MIRROR_HASH}
|
|
||||||
check_warn_nofix = $(info $(shell printf "$(_R)WARNING: %s$(_N)" '$(call check_escape,$(call C_$(1),$(2),$(3),$(4)))'))
|
|
||||||
ifndef FIXUP
|
|
||||||
check_warn = $(check_warn_nofix)
|
|
||||||
else
|
|
||||||
check_warn = $(if $(filter-out undefined,$(origin F_$(1))),$(filter ,$(shell $(call F_$(1),$(2),$(3),$(4)) >&2)),$(check_warn_nofix))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef FIXUP
|
|
||||||
F_hash_deprecated = $(SCRIPT_DIR)/fixup-makefile.pl $(CURDIR)/Makefile fix-hash $(3) $(call gen_sha256sum,$(1)) $(2)
|
|
||||||
F_hash_mismatch = $(F_hash_deprecated)
|
|
||||||
F_hash_missing = $(SCRIPT_DIR)/fixup-makefile.pl $(CURDIR)/Makefile add-hash $(3) $(call gen_sha256sum,$(1))
|
|
||||||
endif
|
|
||||||
|
|
||||||
# $(1): filename
|
|
||||||
# $(2): expected hash value
|
|
||||||
# $(3): var name of the the form: {PKG_,Download/<name>:}{,MIRROR_}{HASH,MIRROR_HASH}
|
|
||||||
C_download_missing = $(1) is missing, please run make download before re-running this check
|
|
||||||
C_hash_mismatch = $(3) does not match $(1) hash $(call gen_sha256sum,$(1))
|
|
||||||
C_hash_deprecated = $(3) uses deprecated hash, set to $(call gen_sha256sum,$(1))
|
|
||||||
C_hash_missing = $(3) is missing, set to $(call gen_sha256sum,$(1))
|
|
||||||
|
|
||||||
# $(1): filename
|
|
||||||
# $(2): expected hash value
|
|
||||||
# $(3): var name of the the form: {PKG_,Download/<name>:}{,MIRROR_}{HASH,MIRROR_HASH}
|
|
||||||
check_hash = \
|
|
||||||
$(if $(wildcard $(DL_DIR)/$(1)), \
|
|
||||||
$(if $(filter-out x,$(2)), \
|
|
||||||
$(if $(filter 64,$(shell printf '%s' '$(2)' | wc -c)), \
|
|
||||||
$(if $(filter $(2),$(call gen_sha256sum,$(1))),, \
|
|
||||||
$(call check_warn,hash_mismatch,$(1),$(2),$(3)) \
|
|
||||||
), \
|
|
||||||
$(call check_warn,hash_deprecated,$(1),$(2),$(3)), \
|
|
||||||
), \
|
|
||||||
$(call check_warn,hash_missing,$(1),$(2),$(3)) \
|
|
||||||
), \
|
|
||||||
$(call check_warn,download_missing,$(1),$(2),$(3)) \
|
|
||||||
)
|
|
||||||
|
|
||||||
ifdef FIXUP
|
|
||||||
F_md5_deprecated = $(SCRIPT_DIR)/fixup-makefile.pl $(CURDIR)/Makefile rename-var $(2) $(3)
|
|
||||||
endif
|
|
||||||
|
|
||||||
C_md5_deprecated = Use of $(2) is deprecated, switch to $(3)
|
|
||||||
|
|
||||||
check_md5 = \
|
|
||||||
$(if $(filter-out x,$(1)), \
|
|
||||||
$(call check_warn,md5_deprecated,$(1),$(2),$(3)) \
|
|
||||||
)
|
|
||||||
|
|
||||||
hash_var = $(if $(filter-out x,$(1)),MD5SUM,HASH)
|
|
||||||
endif
|
|
||||||
|
|
||||||
define DownloadMethod/unknown
|
|
||||||
echo "ERROR: No download method available"; false
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/default
|
|
||||||
$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(FILE)" "$(HASH)" "$(URL_FILE)" $(foreach url,$(URL),"$(url)") \
|
|
||||||
$(if $(filter check,$(1)), \
|
|
||||||
$(call check_hash,$(FILE),$(HASH),$(2)$(call hash_var,$(MD5SUM))) \
|
|
||||||
$(call check_md5,$(MD5SUM),$(2)MD5SUM,$(2)HASH) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# $(1): "check"
|
|
||||||
# $(2): "PKG_" if <name> as in Download/<name> is "default", otherwise "Download/<name>:"
|
|
||||||
# $(3): shell command sequence to do the download
|
|
||||||
define wrap_mirror
|
|
||||||
$(if $(if $(MIRROR),$(filter-out x,$(MIRROR_HASH))),$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(FILE)" "$(MIRROR_HASH)" "" || ( $(3) ),$(3)) \
|
|
||||||
$(if $(filter check,$(1)), \
|
|
||||||
$(call check_hash,$(FILE),$(MIRROR_HASH),$(2)MIRROR_$(call hash_var,$(MIRROR_MD5SUM))) \
|
|
||||||
$(call check_md5,$(MIRROR_MD5SUM),$(2)MIRROR_MD5SUM,$(2)MIRROR_HASH) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/cvs
|
|
||||||
$(call wrap_mirror,$(1),$(2), \
|
|
||||||
echo "Checking out files from the cvs repository..."; \
|
|
||||||
mkdir -p $(TMP_DIR)/dl && \
|
|
||||||
cd $(TMP_DIR)/dl && \
|
|
||||||
rm -rf $(SUBDIR) && \
|
|
||||||
[ \! -d $(SUBDIR) ] && \
|
|
||||||
cvs -d $(URL) export $(SOURCE_VERSION) $(SUBDIR) && \
|
|
||||||
echo "Packing checkout..." && \
|
|
||||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
|
||||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
|
||||||
rm -rf $(SUBDIR); \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/svn
|
|
||||||
$(call wrap_mirror,$(1),$(2), \
|
|
||||||
echo "Checking out files from the svn repository..."; \
|
|
||||||
mkdir -p $(TMP_DIR)/dl && \
|
|
||||||
cd $(TMP_DIR)/dl && \
|
|
||||||
rm -rf $(SUBDIR) && \
|
|
||||||
[ \! -d $(SUBDIR) ] && \
|
|
||||||
( svn help export | grep -q trust-server-cert && \
|
|
||||||
svn export --non-interactive --trust-server-cert -r$(SOURCE_VERSION) $(URL) $(SUBDIR) || \
|
|
||||||
svn export --non-interactive -r$(SOURCE_VERSION) $(URL) $(SUBDIR) ) && \
|
|
||||||
echo "Packing checkout..." && \
|
|
||||||
export TAR_TIMESTAMP="`svn info -r$(SOURCE_VERSION) --show-item last-changed-date $(URL)`" && \
|
|
||||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
|
||||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
|
||||||
rm -rf $(SUBDIR); \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/git
|
|
||||||
$(call wrap_mirror,$(1),$(2), \
|
|
||||||
$(call DownloadMethod/rawgit) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/github_archive
|
|
||||||
$(call wrap_mirror,$(1),$(2), \
|
|
||||||
$(SCRIPT_DIR)/dl_github_archive.py \
|
|
||||||
--dl-dir="$(DL_DIR)" \
|
|
||||||
--url="$(URL)" \
|
|
||||||
--version="$(SOURCE_VERSION)" \
|
|
||||||
--subdir="$(SUBDIR)" \
|
|
||||||
--source="$(FILE)" \
|
|
||||||
--hash="$(MIRROR_HASH)" \
|
|
||||||
--submodules $(SUBMODULES) \
|
|
||||||
|| ( $(call DownloadMethod/rawgit) ); \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Only intends to be called as a submethod from other DownloadMethod
|
|
||||||
#
|
|
||||||
# We first clone, checkout and then we generate a tar using the
|
|
||||||
# git archive command to apply any rules of .gitattributes
|
|
||||||
# To keep consistency with github generated tar archive, we default
|
|
||||||
# the short hash to 8 (default is 7). (for git log related usage)
|
|
||||||
define DownloadMethod/rawgit
|
|
||||||
echo "Checking out files from the git repository..."; \
|
|
||||||
mkdir -p $(TMP_DIR)/dl && \
|
|
||||||
cd $(TMP_DIR)/dl && \
|
|
||||||
rm -rf $(SUBDIR) && \
|
|
||||||
[ \! -d $(SUBDIR) ] && \
|
|
||||||
git clone $(OPTS) $(URL) $(SUBDIR) && \
|
|
||||||
(cd $(SUBDIR) && git checkout $(SOURCE_VERSION)) && \
|
|
||||||
export TAR_TIMESTAMP=`cd $(SUBDIR) && git log -1 --format='@%ct'` && \
|
|
||||||
echo "Generating formal git archive (apply .gitattributes rules)" && \
|
|
||||||
(cd $(SUBDIR) && git config core.abbrev 8 && \
|
|
||||||
git archive --format=tar HEAD --output=../$(SUBDIR).tar.git) && \
|
|
||||||
$(if $(filter skip,$(SUBMODULES)),true,$(TAR) --ignore-failed-read -C $(SUBDIR) -f $(SUBDIR).tar.git -r .git .gitmodules 2>/dev/null) && \
|
|
||||||
rm -rf $(SUBDIR) && mkdir $(SUBDIR) && \
|
|
||||||
$(TAR) -C $(SUBDIR) -xf $(SUBDIR).tar.git && \
|
|
||||||
(cd $(SUBDIR) && $(if $(filter skip,$(SUBMODULES)),true,git submodule update --init --recursive -- $(SUBMODULES) && \
|
|
||||||
rm -rf .git .gitmodules)) && \
|
|
||||||
echo "Packing checkout..." && \
|
|
||||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
|
||||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
|
||||||
rm -rf $(SUBDIR);
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/bzr
|
|
||||||
$(call wrap_mirror,$(1),$(2), \
|
|
||||||
echo "Checking out files from the bzr repository..."; \
|
|
||||||
mkdir -p $(TMP_DIR)/dl && \
|
|
||||||
cd $(TMP_DIR)/dl && \
|
|
||||||
rm -rf $(SUBDIR) && \
|
|
||||||
[ \! -d $(SUBDIR) ] && \
|
|
||||||
bzr export --per-file-timestamps -r$(SOURCE_VERSION) $(SUBDIR) $(URL) && \
|
|
||||||
echo "Packing checkout..." && \
|
|
||||||
export TAR_TIMESTAMP="" && \
|
|
||||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
|
||||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
|
||||||
rm -rf $(SUBDIR); \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/hg
|
|
||||||
$(call wrap_mirror,$(1),$(2), \
|
|
||||||
echo "Checking out files from the hg repository..."; \
|
|
||||||
mkdir -p $(TMP_DIR)/dl && \
|
|
||||||
cd $(TMP_DIR)/dl && \
|
|
||||||
rm -rf $(SUBDIR) && \
|
|
||||||
[ \! -d $(SUBDIR) ] && \
|
|
||||||
hg clone -r $(SOURCE_VERSION) $(URL) $(SUBDIR) && \
|
|
||||||
export TAR_TIMESTAMP=`cd $(SUBDIR) && hg log --template '@{date}' -l 1` && \
|
|
||||||
find $(SUBDIR) -name .hg | xargs rm -rf && \
|
|
||||||
echo "Packing checkout..." && \
|
|
||||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
|
||||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
|
||||||
rm -rf $(SUBDIR); \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define DownloadMethod/darcs
|
|
||||||
$(call wrap_mirror, $(1), $(2), \
|
|
||||||
echo "Checking out files from the darcs repository..."; \
|
|
||||||
mkdir -p $(TMP_DIR)/dl && \
|
|
||||||
cd $(TMP_DIR)/dl && \
|
|
||||||
rm -rf $(SUBDIR) && \
|
|
||||||
[ \! -d $(SUBDIR) ] && \
|
|
||||||
darcs get -t $(SOURCE_VERSION) $(URL) $(SUBDIR) && \
|
|
||||||
export TAR_TIMESTAMP=`cd $(SUBDIR) && LC_ALL=C darcs log --last 1 | sed -ne 's!^Date: \+!!p'` && \
|
|
||||||
find $(SUBDIR) -name _darcs | xargs rm -rf && \
|
|
||||||
echo "Packing checkout..." && \
|
|
||||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
|
||||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
|
||||||
rm -rf $(SUBDIR); \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
Validate/cvs=SOURCE_VERSION SUBDIR
|
|
||||||
Validate/svn=SOURCE_VERSION SUBDIR
|
|
||||||
Validate/git=SOURCE_VERSION SUBDIR
|
|
||||||
Validate/bzr=SOURCE_VERSION SUBDIR
|
|
||||||
Validate/hg=SOURCE_VERSION SUBDIR
|
|
||||||
Validate/darcs=SOURCE_VERSION SUBDIR
|
|
||||||
|
|
||||||
define Download/Defaults
|
|
||||||
URL:=
|
|
||||||
FILE:=
|
|
||||||
URL_FILE:=
|
|
||||||
PROTO:=
|
|
||||||
HASH=$$(MD5SUM)
|
|
||||||
MD5SUM:=x
|
|
||||||
SUBDIR:=
|
|
||||||
MIRROR:=1
|
|
||||||
MIRROR_HASH=$$(MIRROR_MD5SUM)
|
|
||||||
MIRROR_MD5SUM:=x
|
|
||||||
SOURCE_VERSION:=
|
|
||||||
OPTS:=
|
|
||||||
SUBMODULES:=
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Download/default
|
|
||||||
FILE:=$(PKG_SOURCE)
|
|
||||||
URL:=$(PKG_SOURCE_URL)
|
|
||||||
URL_FILE:=$(PKG_SOURCE_URL_FILE)
|
|
||||||
SUBDIR:=$(PKG_SOURCE_SUBDIR)
|
|
||||||
PROTO:=$(PKG_SOURCE_PROTO)
|
|
||||||
SUBMODULES:=$(PKG_SOURCE_SUBMODULES)
|
|
||||||
$(if $(PKG_SOURCE_MIRROR),MIRROR:=$(filter 1,$(PKG_MIRROR)))
|
|
||||||
$(if $(PKG_MIRROR_MD5SUM),MIRROR_MD5SUM:=$(PKG_MIRROR_MD5SUM))
|
|
||||||
$(if $(PKG_MIRROR_HASH),MIRROR_HASH:=$(PKG_MIRROR_HASH))
|
|
||||||
SOURCE_VERSION:=$(PKG_SOURCE_VERSION)
|
|
||||||
$(if $(PKG_MD5SUM),MD5SUM:=$(PKG_MD5SUM))
|
|
||||||
$(if $(PKG_HASH),HASH:=$(PKG_HASH))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Download
|
|
||||||
$(eval $(Download/Defaults))
|
|
||||||
$(eval $(Download/$(1)))
|
|
||||||
$(foreach FIELD,URL FILE $(Validate/$(call dl_method,$(URL),$(PROTO))),
|
|
||||||
ifeq ($($(FIELD)),)
|
|
||||||
$$(error Download/$(1) is missing the $(FIELD) field.)
|
|
||||||
endif
|
|
||||||
)
|
|
||||||
|
|
||||||
$(foreach dep,$(DOWNLOAD_RDEP),
|
|
||||||
$(dep): $(DL_DIR)/$(FILE)
|
|
||||||
)
|
|
||||||
download: $(DL_DIR)/$(FILE)
|
|
||||||
|
|
||||||
$(DL_DIR)/$(FILE):
|
|
||||||
mkdir -p $(DL_DIR)
|
|
||||||
$(call locked, \
|
|
||||||
$(if $(DownloadMethod/$(call dl_method,$(URL),$(PROTO))), \
|
|
||||||
$(call DownloadMethod/$(call dl_method,$(URL),$(PROTO)),check,$(if $(filter default,$(1)),PKG_,Download/$(1):)), \
|
|
||||||
$(DownloadMethod/unknown) \
|
|
||||||
),\
|
|
||||||
$(FILE))
|
|
||||||
|
|
||||||
endef
|
|
@ -1,71 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2014 OpenWrt.org
|
|
||||||
# Copyright (C) 2016 LEDE Project
|
|
||||||
|
|
||||||
-include $(TMP_DIR)/.packageauxvars
|
|
||||||
|
|
||||||
FEEDS_INSTALLED:=$(notdir $(wildcard $(TOPDIR)/package/feeds/*))
|
|
||||||
FEEDS_AVAILABLE:=$(sort $(FEEDS_INSTALLED) $(shell $(SCRIPT_DIR)/feeds list -n 2>/dev/null))
|
|
||||||
|
|
||||||
PACKAGE_SUBDIRS=$(PACKAGE_DIR)
|
|
||||||
ifneq ($(CONFIG_PER_FEED_REPO),)
|
|
||||||
PACKAGE_SUBDIRS += $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/base
|
|
||||||
PACKAGE_SUBDIRS += $(foreach FEED,$(FEEDS_AVAILABLE),$(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/$(FEED))
|
|
||||||
endif
|
|
||||||
|
|
||||||
opkg_package_files = $(wildcard \
|
|
||||||
$(foreach dir,$(PACKAGE_SUBDIRS), \
|
|
||||||
$(foreach pkg,$(1), $(dir)/$(pkg)_*.ipk)))
|
|
||||||
|
|
||||||
apk_package_files = $(wildcard \
|
|
||||||
$(foreach dir,$(PACKAGE_SUBDIRS), \
|
|
||||||
$(foreach pkg,$(1), $(dir)/$(pkg)_*.apk)))
|
|
||||||
|
|
||||||
# 1: package name
|
|
||||||
define FeedPackageDir
|
|
||||||
$(strip $(if $(CONFIG_PER_FEED_REPO), \
|
|
||||||
$(if $(Package/$(1)/subdir), \
|
|
||||||
$(abspath $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/$(Package/$(1)/subdir)), \
|
|
||||||
$(PACKAGE_DIR)), \
|
|
||||||
$(PACKAGE_DIR)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: destination file
|
|
||||||
define FeedSourcesAppendOPKG
|
|
||||||
( \
|
|
||||||
echo 'src/gz %d_core %U/targets/%S/packages'; \
|
|
||||||
$(strip $(if $(CONFIG_PER_FEED_REPO), \
|
|
||||||
echo 'src/gz %d_base %U/packages/%A/base'; \
|
|
||||||
$(if $(filter %SNAPSHOT-y,$(VERSION_NUMBER)-$(CONFIG_BUILDBOT)), \
|
|
||||||
echo 'src/gz %d_kmods %U/targets/%S/kmods/$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)';) \
|
|
||||||
$(foreach feed,$(FEEDS_AVAILABLE), \
|
|
||||||
$(if $(CONFIG_FEED_$(feed)), \
|
|
||||||
echo '$(if $(filter m,$(CONFIG_FEED_$(feed))),# )src/gz %d_$(feed) %U/packages/%A/$(feed)';)))) \
|
|
||||||
) >> $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: destination file
|
|
||||||
define FeedSourcesAppendAPK
|
|
||||||
( \
|
|
||||||
echo '%U/targets/%S/packages/packages.adb'; \
|
|
||||||
$(strip $(if $(CONFIG_PER_FEED_REPO), \
|
|
||||||
echo '%U/packages/%A/base/packages.adb'; \
|
|
||||||
$(if $(filter %SNAPSHOT-y,$(VERSION_NUMBER)-$(CONFIG_BUILDBOT)), \
|
|
||||||
echo '%U/targets/%S/kmods/$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)/packages.adb';) \
|
|
||||||
$(foreach feed,$(FEEDS_AVAILABLE), \
|
|
||||||
$(if $(CONFIG_FEED_$(feed)), \
|
|
||||||
echo '$(if $(filter m,$(CONFIG_FEED_$(feed))),# )%U/packages/%A/$(feed)/packages.adb';)))) \
|
|
||||||
) >> $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: package name
|
|
||||||
define GetABISuffix
|
|
||||||
$(if $(ABIV_$(1)),$(ABIV_$(1)),$(call FormatABISuffix,$(1),$(foreach v,$(wildcard $(STAGING_DIR)/pkginfo/$(1).version),$(shell cat $(v)))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: package name
|
|
||||||
# 2: abi version
|
|
||||||
define FormatABISuffix
|
|
||||||
$(if $(filter-out kmod-%,$(1)),$(if $(2),$(if $(filter %0 %1 %2 %3 %4 %5 %6 %7 %8 %9,$(1)),-)$(2)))
|
|
||||||
endef
|
|
@ -1,2 +0,0 @@
|
|||||||
*self_spec:
|
|
||||||
+ %{no-pie|static|r|shared:;:-pie}
|
|
@ -1,66 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2015-2020 OpenWrt.org
|
|
||||||
|
|
||||||
PKG_CHECK_FORMAT_SECURITY ?= 1
|
|
||||||
PKG_ASLR_PIE ?= 1
|
|
||||||
PKG_ASLR_PIE_REGULAR ?= 0
|
|
||||||
PKG_SSP ?= 1
|
|
||||||
PKG_FORTIFY_SOURCE ?= 1
|
|
||||||
PKG_RELRO ?= 1
|
|
||||||
|
|
||||||
ifdef CONFIG_PKG_CHECK_FORMAT_SECURITY
|
|
||||||
ifeq ($(strip $(PKG_CHECK_FORMAT_SECURITY)),1)
|
|
||||||
TARGET_CFLAGS += -Wformat -Werror=format-security
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_ASLR_PIE_ALL
|
|
||||||
ifeq ($(strip $(PKG_ASLR_PIE)),1)
|
|
||||||
TARGET_CFLAGS += $(FPIC)
|
|
||||||
TARGET_LDFLAGS += $(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_ASLR_PIE_REGULAR
|
|
||||||
ifeq ($(strip $(PKG_ASLR_PIE_REGULAR)),1)
|
|
||||||
TARGET_CFLAGS += $(FPIC)
|
|
||||||
TARGET_LDFLAGS += $(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR
|
|
||||||
ifeq ($(strip $(PKG_SSP)),1)
|
|
||||||
TARGET_CFLAGS += -fstack-protector
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_CC_STACKPROTECTOR_STRONG
|
|
||||||
ifeq ($(strip $(PKG_SSP)),1)
|
|
||||||
TARGET_CFLAGS += -fstack-protector-strong
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_CC_STACKPROTECTOR_ALL
|
|
||||||
ifeq ($(strip $(PKG_SSP)),1)
|
|
||||||
TARGET_CFLAGS += -fstack-protector-all
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_FORTIFY_SOURCE_1
|
|
||||||
ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
|
|
||||||
TARGET_CFLAGS += -D_FORTIFY_SOURCE=1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_FORTIFY_SOURCE_2
|
|
||||||
ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
|
|
||||||
TARGET_CFLAGS += -D_FORTIFY_SOURCE=2
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_RELRO_PARTIAL
|
|
||||||
ifeq ($(strip $(PKG_RELRO)),1)
|
|
||||||
TARGET_CFLAGS += -Wl,-z,relro
|
|
||||||
TARGET_LDFLAGS += -zrelro
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_PKG_RELRO_FULL
|
|
||||||
ifeq ($(strip $(PKG_RELRO)),1)
|
|
||||||
TARGET_CFLAGS += -Wl,-z,now -Wl,-z,relro
|
|
||||||
TARGET_LDFLAGS += -znow -zrelro
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
@ -1,234 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/download.mk
|
|
||||||
|
|
||||||
HOST_BUILD_DIR ?= $(BUILD_DIR_HOST)/$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION))
|
|
||||||
HOST_INSTALL_DIR ?= $(HOST_BUILD_DIR)/host-install
|
|
||||||
HOST_BUILD_PARALLEL ?=
|
|
||||||
|
|
||||||
HOST_MAKE_J:=$(if $(MAKE_JOBSERVER),$(MAKE_JOBSERVER) $(if $(filter 3.% 4.0 4.1,$(MAKE_VERSION)),-j))
|
|
||||||
|
|
||||||
ifeq ($(strip $(HOST_BUILD_PARALLEL)),0)
|
|
||||||
HOST_JOBS?=-j1
|
|
||||||
else
|
|
||||||
HOST_JOBS?=$(if $(HOST_BUILD_PARALLEL),$(HOST_MAKE_J),-j1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/unpack.mk
|
|
||||||
include $(INCLUDE_DIR)/depends.mk
|
|
||||||
include $(INCLUDE_DIR)/quilt.mk
|
|
||||||
|
|
||||||
BUILD_TYPES += host
|
|
||||||
HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared$(if $(HOST_QUILT)$(DUMP),,$(shell $(call $(if $(CONFIG_AUTOREMOVE),find_md5_reproducible,find_md5),${CURDIR} $(PKG_FILE_DEPENDS),))_$(call confvar,CONFIG_AUTOREMOVE $(HOST_PREPARED_DEPENDS)))
|
|
||||||
HOST_STAMP_CONFIGURED:=$(HOST_BUILD_DIR)/.configured
|
|
||||||
HOST_STAMP_BUILT:=$(HOST_BUILD_DIR)/.built
|
|
||||||
HOST_BUILD_PREFIX?=$(if $(IS_PACKAGE_BUILD),$(STAGING_DIR_HOSTPKG),$(STAGING_DIR_HOST))
|
|
||||||
HOST_STAMP_INSTALLED:=$(HOST_BUILD_PREFIX)/stamp/.$(PKG_NAME)_installed
|
|
||||||
HOST_STAMP_PROGRAMS:=$(foreach program,$(PKG_PROGRAMS),$(dir $(HOST_STAMP_INSTALLED))$(subst $(PKG_NAME),$(program),$(notdir $(HOST_STAMP_INSTALLED))) )
|
|
||||||
|
|
||||||
override MAKEFLAGS=
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/autotools.mk
|
|
||||||
|
|
||||||
_host_target:=$(if $(HOST_QUILT),,.)
|
|
||||||
|
|
||||||
Host/Patch:=$(Host/Patch/Default)
|
|
||||||
define Host/Prepare/Default
|
|
||||||
$(if $(strip $(HOST_UNPACK)),$(HOST_UNPACK))
|
|
||||||
[ ! -d ./src/ ] || $(CP) ./src/* $(HOST_BUILD_DIR)
|
|
||||||
$(Host/Patch)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Prepare
|
|
||||||
$(call Host/Prepare/Default)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Gnulib/Prepare
|
|
||||||
$(STAGING_DIR_HOST)/bin/gnulib-tool \
|
|
||||||
--local-dir=$(STAGING_DIR_HOST)/share/gnulib \
|
|
||||||
--source-base=$(PKG_GNULIB_BASE) \
|
|
||||||
$(PKG_GNULIB_ARGS) \
|
|
||||||
$(PKG_GNULIB_MODS) \
|
|
||||||
;
|
|
||||||
endef
|
|
||||||
|
|
||||||
HOST_CONFIGURE_VARS = \
|
|
||||||
CC="$(HOSTCC)" \
|
|
||||||
CFLAGS="$(HOST_CFLAGS)" \
|
|
||||||
CXX="$(HOSTCXX)" \
|
|
||||||
CPPFLAGS="$(HOST_CPPFLAGS)" \
|
|
||||||
CXXFLAGS="$(HOST_CXXFLAGS)" \
|
|
||||||
LDFLAGS="$(HOST_LDFLAGS)" \
|
|
||||||
CONFIG_SHELL="$(SHELL)"
|
|
||||||
|
|
||||||
HOST_CONFIGURE_ARGS = \
|
|
||||||
--target=$(GNU_HOST_NAME) \
|
|
||||||
--host=$(GNU_HOST_NAME) \
|
|
||||||
--build=$(GNU_HOST_NAME) \
|
|
||||||
--disable-dependency-tracking \
|
|
||||||
--program-prefix="" \
|
|
||||||
--program-suffix="" \
|
|
||||||
--prefix=$(HOST_BUILD_PREFIX) \
|
|
||||||
--exec-prefix=$(HOST_BUILD_PREFIX) \
|
|
||||||
--sysconfdir=$(HOST_BUILD_PREFIX)/etc \
|
|
||||||
--localstatedir=$(HOST_BUILD_PREFIX)/var \
|
|
||||||
--sbindir=$(HOST_BUILD_PREFIX)/bin
|
|
||||||
|
|
||||||
ifneq ($(YEAR_2038),y)
|
|
||||||
HOST_CONFIGURE_ARGS += --disable-year2038
|
|
||||||
endif
|
|
||||||
|
|
||||||
HOST_MAKE_VARS = \
|
|
||||||
CFLAGS="$(HOST_CFLAGS)" \
|
|
||||||
CPPFLAGS="$(HOST_CPPFLAGS)" \
|
|
||||||
CXXFLAGS="$(HOST_CXXFLAGS)" \
|
|
||||||
LDFLAGS="$(HOST_LDFLAGS)"
|
|
||||||
|
|
||||||
HOST_MAKE_FLAGS =
|
|
||||||
|
|
||||||
HOST_CONFIGURE_CMD = $(BASH) ./configure
|
|
||||||
|
|
||||||
ifeq ($(HOST_OS),Darwin)
|
|
||||||
HOST_CONFIG_SITE:=$(INCLUDE_DIR)/site/darwin
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Host/Configure/Default
|
|
||||||
$(if $(HOST_CONFIGURE_PARALLEL),+)(cd $(HOST_BUILD_DIR)/$(3); \
|
|
||||||
if [ -x configure ]; then \
|
|
||||||
$(CP) $(SCRIPT_DIR)/config.{guess,sub} $(HOST_BUILD_DIR)/$(3)/ && \
|
|
||||||
$(HOST_CONFIGURE_VARS) \
|
|
||||||
$(2) \
|
|
||||||
$(HOST_CONFIGURE_CMD) \
|
|
||||||
$(HOST_CONFIGURE_ARGS) \
|
|
||||||
$(1); \
|
|
||||||
fi \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Configure
|
|
||||||
$(call Host/Configure/Default)
|
|
||||||
endef
|
|
||||||
|
|
||||||
HOST_MAKE_PATH ?= .
|
|
||||||
|
|
||||||
define Host/Compile/Default
|
|
||||||
+$(HOST_MAKE_VARS) \
|
|
||||||
$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR)/$(HOST_MAKE_PATH) \
|
|
||||||
$(HOST_MAKE_FLAGS) \
|
|
||||||
$(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Compile
|
|
||||||
$(call Host/Compile/Default,$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))'))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Gnulib/Compile
|
|
||||||
$(call Host/Compile/Default,SUBDIRS='$$$$(wildcard $(PKG_GNULIB_BASE))')
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Install/Default
|
|
||||||
$(call Host/Compile/Default,$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))') install)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Install
|
|
||||||
$(call Host/Install/Default,$(HOST_BUILD_PREFIX))
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(if $(HOST_QUILT),,$(CONFIG_AUTOREBUILD)),)
|
|
||||||
define HostHost/Autoclean
|
|
||||||
$(call rdep,${CURDIR} $(PKG_FILE_DEPENDS),$(HOST_STAMP_PREPARED))
|
|
||||||
$(if $(if $(Host/Compile),$(filter prepare,$(MAKECMDGOALS)),1),,$(call rdep,$(HOST_BUILD_DIR),$(HOST_STAMP_BUILT)))
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Host/Exports/Default
|
|
||||||
$(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR_HOST)/share/aclocal $$(STAGING_DIR_HOST)/share/aclocal-* $(if $(IS_PACKAGE_BUILD),$$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR_HOSTPKG)/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*)),-I $$(p))
|
|
||||||
$(1) : export STAGING_PREFIX=$$(HOST_BUILD_PREFIX)
|
|
||||||
$(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
|
||||||
$(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
|
||||||
$(1) : export GIT_CEILING_DIRECTORIES=$$(BUILD_DIR_HOST)
|
|
||||||
$(if $(HOST_CONFIG_SITE),$(1) : export CONFIG_SITE:=$(HOST_CONFIG_SITE))
|
|
||||||
$(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG))
|
|
||||||
endef
|
|
||||||
Host/Exports=$(Host/Exports/Default)
|
|
||||||
|
|
||||||
.NOTPARALLEL:
|
|
||||||
|
|
||||||
ifndef DUMP
|
|
||||||
define HostBuild/Core
|
|
||||||
$(if $(HOST_QUILT),$(Host/Quilt))
|
|
||||||
$(if $(DUMP),,$(call HostHost/Autoclean))
|
|
||||||
|
|
||||||
$(HOST_STAMP_PREPARED):
|
|
||||||
@-rm -rf $(HOST_BUILD_DIR)
|
|
||||||
@mkdir -p $(HOST_BUILD_DIR)
|
|
||||||
$(foreach hook,$(Hooks/HostPrepare/Pre),$(call $(hook))$(sep))
|
|
||||||
$(call Host/Prepare)
|
|
||||||
$(foreach hook,$(Hooks/HostPrepare/Post),$(call $(hook))$(sep))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(call Host/Exports,$(HOST_STAMP_CONFIGURED))
|
|
||||||
$(HOST_STAMP_CONFIGURED): $(HOST_STAMP_PREPARED)
|
|
||||||
$(foreach hook,$(Hooks/HostConfigure/Pre),$(call $(hook))$(sep))
|
|
||||||
$(call Host/Configure)
|
|
||||||
$(foreach hook,$(Hooks/HostConfigure/Post),$(call $(hook))$(sep))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(call Host/Exports,$(HOST_STAMP_BUILT))
|
|
||||||
$(HOST_STAMP_BUILT): $(HOST_STAMP_CONFIGURED)
|
|
||||||
$(foreach hook,$(Hooks/HostCompile/Pre),$(call $(hook))$(sep))
|
|
||||||
$(call Host/Compile)
|
|
||||||
$(foreach hook,$(Hooks/HostCompile/Post),$(call $(hook))$(sep))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(call Host/Exports,$(HOST_STAMP_INSTALLED))
|
|
||||||
$(HOST_STAMP_INSTALLED): $(HOST_STAMP_BUILT) $(if $(FORCE_HOST_INSTALL),FORCE)
|
|
||||||
$(call Host/Install,$(HOST_BUILD_PREFIX))
|
|
||||||
$(foreach hook,$(Hooks/HostInstall/Post),$(call $(hook))$(sep))
|
|
||||||
mkdir -p $$(shell dirname $$@)
|
|
||||||
touch $(HOST_STAMP_BUILT)
|
|
||||||
touch $$@ $(HOST_STAMP_PROGRAMS)
|
|
||||||
|
|
||||||
$(call DefaultTargets,$(patsubst %,host-%,$(DEFAULT_SUBDIR_TARGETS)))
|
|
||||||
ifndef STAMP_BUILT
|
|
||||||
$(foreach t,$(DEFAULT_SUBDIR_TARGETS),
|
|
||||||
$(t): host-$(t)
|
|
||||||
.$(t): .host-$(t)
|
|
||||||
)
|
|
||||||
clean-build: host-clean-build
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(call check_download_integrity)
|
|
||||||
|
|
||||||
$(_host_target)host-prepare: $(HOST_STAMP_PREPARED)
|
|
||||||
$(_host_target)host-configure: $(HOST_STAMP_CONFIGURED)
|
|
||||||
$(_host_target)host-compile: $(HOST_STAMP_BUILT) $(HOST_STAMP_INSTALLED) $(HOST_STAMP_PROGRAMS)
|
|
||||||
host-install: host-compile
|
|
||||||
|
|
||||||
host-clean-build: FORCE
|
|
||||||
$(call Host/Uninstall)
|
|
||||||
rm -rf $(HOST_BUILD_DIR) $(HOST_STAMP_BUILT)
|
|
||||||
|
|
||||||
host-clean: host-clean-build
|
|
||||||
$(call Host/Clean)
|
|
||||||
rm -rf $(HOST_STAMP_INSTALLED) $(HOST_STAMP_PROGRAMS)
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_AUTOREMOVE),)
|
|
||||||
host-compile:
|
|
||||||
$(FIND) $(HOST_BUILD_DIR) -mindepth 1 -maxdepth 1 -not '(' -type f -and -name '.*' -and -size 0 ')' -print0 | \
|
|
||||||
$(XARGS) -0 rm -rf
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define HostBuild
|
|
||||||
$(HostBuild/Core)
|
|
||||||
$(if $(if $(PKG_HOST_ONLY),,$(if $(and $(filter host-%,$(MAKECMDGOALS)),$(PKG_SKIP_DOWNLOAD)),,$(STAMP_PREPARED))),,
|
|
||||||
$(if $(and $(CONFIG_AUTOREMOVE), $(wildcard $(HOST_STAMP_INSTALLED), $(wildcard $(HOST_STAMP_BUILT)))),,
|
|
||||||
$(if $(strip $(PKG_SOURCE_URL)),$(call Download,default))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
endef
|
|
@ -1,747 +0,0 @@
|
|||||||
# Build commands that can be called from Device/* templates
|
|
||||||
|
|
||||||
IMAGE_KERNEL = $(word 1,$^)
|
|
||||||
IMAGE_ROOTFS = $(word 2,$^)
|
|
||||||
|
|
||||||
define ModelNameLimit16
|
|
||||||
$(shell printf %.16s "$(word 2, $(subst _, ,$(1)))")
|
|
||||||
endef
|
|
||||||
|
|
||||||
define rootfs_align
|
|
||||||
$(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
define Build/append-dtb
|
|
||||||
cat $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-dtb-elf
|
|
||||||
$(TARGET_CROSS)objcopy \
|
|
||||||
--set-section-flags=.appended_dtb=alloc,contents \
|
|
||||||
--update-section \
|
|
||||||
.appended_dtb=$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-kernel
|
|
||||||
dd if=$(IMAGE_KERNEL) >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/package-kernel-ubifs
|
|
||||||
mkdir $@.kernelubifs
|
|
||||||
cp $@ $@.kernelubifs/kernel
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkfs.ubifs \
|
|
||||||
$(KERNEL_UBIFS_OPTS) \
|
|
||||||
-r $@.kernelubifs $@
|
|
||||||
rm -r $@.kernelubifs
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-image
|
|
||||||
cp "$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)" "$@.stripmeta"
|
|
||||||
fwtool -s /dev/null -t "$@.stripmeta" || :
|
|
||||||
fwtool -i /dev/null -t "$@.stripmeta" || :
|
|
||||||
dd if="$@.stripmeta" >> "$@"
|
|
||||||
rm "$@.stripmeta"
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef IB
|
|
||||||
define Build/append-image-stage
|
|
||||||
dd if=$(STAGING_DIR_IMAGE)/$(BOARD)-$(SUBTARGET)-$(DEVICE_NAME)-$(1) >> $@
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define Build/append-image-stage
|
|
||||||
cp "$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)" "$@.stripmeta"
|
|
||||||
fwtool -s /dev/null -t "$@.stripmeta" || :
|
|
||||||
fwtool -i /dev/null -t "$@.stripmeta" || :
|
|
||||||
mkdir -p "$(STAGING_DIR_IMAGE)"
|
|
||||||
dd if="$@.stripmeta" of="$(STAGING_DIR_IMAGE)/$(BOARD)-$(SUBTARGET)-$(DEVICE_NAME)-$(1)"
|
|
||||||
dd if="$@.stripmeta" >> "$@"
|
|
||||||
rm "$@.stripmeta"
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
compat_version=$(if $(DEVICE_COMPAT_VERSION),$(DEVICE_COMPAT_VERSION),1.0)
|
|
||||||
json_quote=$(subst ','\'',$(subst ",\",$(1)))
|
|
||||||
#")')
|
|
||||||
|
|
||||||
legacy_supported_message=$(SUPPORTED_DEVICES) - Image version mismatch: image $(compat_version), \
|
|
||||||
device 1.0. Please wipe config during upgrade (force required) or reinstall. \
|
|
||||||
$(if $(DEVICE_COMPAT_MESSAGE),Reason: $(DEVICE_COMPAT_MESSAGE),Please check documentation ...)
|
|
||||||
|
|
||||||
metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))"))))
|
|
||||||
metadata_json = \
|
|
||||||
'{ $(if $(IMAGE_METADATA),$(IMAGE_METADATA)$(comma)) \
|
|
||||||
"metadata_version": "1.1", \
|
|
||||||
"compat_version": "$(call json_quote,$(compat_version))", \
|
|
||||||
$(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \
|
|
||||||
$(if $(filter-out 1.0,$(compat_version)),"new_supported_devices": \
|
|
||||||
[$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma) \
|
|
||||||
"supported_devices": ["$(call json_quote,$(legacy_supported_message))"]$(comma)) \
|
|
||||||
$(if $(filter 1.0,$(compat_version)),"supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma)) \
|
|
||||||
"version": { \
|
|
||||||
"dist": "$(call json_quote,$(VERSION_DIST))", \
|
|
||||||
"version": "$(call json_quote,$(VERSION_NUMBER))", \
|
|
||||||
"revision": "$(call json_quote,$(REVISION))", \
|
|
||||||
"target": "$(call json_quote,$(TARGETID))", \
|
|
||||||
"board": "$(call json_quote,$(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)))" \
|
|
||||||
} \
|
|
||||||
}'
|
|
||||||
|
|
||||||
define Build/append-metadata
|
|
||||||
$(if $(SUPPORTED_DEVICES),-echo $(call metadata_json) | fwtool -I - $@)
|
|
||||||
sha256sum "$@" | cut -d" " -f1 > "$@.sha256sum"
|
|
||||||
[ ! -s "$(BUILD_KEY)" -o ! -s "$(BUILD_KEY).ucert" -o ! -s "$@" ] || { \
|
|
||||||
cp "$(BUILD_KEY).ucert" "$@.ucert" ;\
|
|
||||||
usign -S -m "$@" -s "$(BUILD_KEY)" -x "$@.sig" ;\
|
|
||||||
ucert -A -c "$@.ucert" -x "$@.sig" ;\
|
|
||||||
fwtool -S "$@.ucert" "$@" ;\
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-rootfs
|
|
||||||
dd if=$(IMAGE_ROOTFS) >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-squashfs-fakeroot-be
|
|
||||||
rm -rf $@.fakefs $@.fakesquashfs
|
|
||||||
mkdir $@.fakefs
|
|
||||||
$(STAGING_DIR_HOST)/bin/mksquashfs3-lzma \
|
|
||||||
$@.fakefs $@.fakesquashfs \
|
|
||||||
-noappend -root-owned -be -nopad -b 65536 \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),-fixed-time $(SOURCE_DATE_EPOCH))
|
|
||||||
cat $@.fakesquashfs >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-squashfs4-fakeroot
|
|
||||||
rm -rf $@.fakefs $@.fakesquashfs
|
|
||||||
mkdir $@.fakefs
|
|
||||||
$(STAGING_DIR_HOST)/bin/mksquashfs4 \
|
|
||||||
$@.fakefs $@.fakesquashfs \
|
|
||||||
-nopad -noappend -root-owned
|
|
||||||
cat $@.fakesquashfs >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-string
|
|
||||||
echo -n $(1) >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-md5sum-ascii-salted
|
|
||||||
cp $@ $@.salted
|
|
||||||
echo -ne $(1) >> $@.salted
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkhash md5 $@.salted | head -c32 >> $@
|
|
||||||
rm $@.salted
|
|
||||||
endef
|
|
||||||
|
|
||||||
UBI_NAND_SIZE_LIMIT = $(IMAGE_SIZE) - ($(NAND_SIZE)*20/1024 + 4*$(BLOCKSIZE))
|
|
||||||
|
|
||||||
define Build/append-ubi
|
|
||||||
sh $(TOPDIR)/scripts/ubinize-image.sh \
|
|
||||||
$(if $(UBOOTENV_IN_UBI),--uboot-env) \
|
|
||||||
$(if $(KERNEL_IN_UBI),--kernel $(IMAGE_KERNEL)) \
|
|
||||||
$(foreach part,$(UBINIZE_PARTS),--part $(part)) \
|
|
||||||
--rootfs $(IMAGE_ROOTFS) \
|
|
||||||
$@.tmp \
|
|
||||||
-p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \
|
|
||||||
$(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \
|
|
||||||
$(if $(VID_HDR_OFFSET),-O $(VID_HDR_OFFSET)) \
|
|
||||||
$(UBINIZE_OPTS)
|
|
||||||
cat $@.tmp >> $@
|
|
||||||
rm $@.tmp
|
|
||||||
$(if $(and $(IMAGE_SIZE),$(NAND_SIZE)),\
|
|
||||||
$(call Build/check-size,$(UBI_NAND_SIZE_LIMIT)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/ubinize-image
|
|
||||||
sh $(TOPDIR)/scripts/ubinize-image.sh \
|
|
||||||
$(if $(UBOOTENV_IN_UBI),--uboot-env) \
|
|
||||||
$(foreach part,$(UBINIZE_PARTS),--part $(part)) \
|
|
||||||
--part $(word 1,$(1))="$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(word 2,$(1))" \
|
|
||||||
$@.tmp \
|
|
||||||
-p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \
|
|
||||||
$(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \
|
|
||||||
$(if $(VID_HDR_OFFSET),-O $(VID_HDR_OFFSET)) \
|
|
||||||
$(UBINIZE_OPTS)
|
|
||||||
cat $@.tmp >> $@
|
|
||||||
rm $@.tmp
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/ubinize-kernel
|
|
||||||
cp $@ $@.tmp
|
|
||||||
sh $(TOPDIR)/scripts/ubinize-image.sh \
|
|
||||||
--kernel $@.tmp \
|
|
||||||
$@ \
|
|
||||||
-p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \
|
|
||||||
$(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \
|
|
||||||
$(if $(VID_HDR_OFFSET),-O $(VID_HDR_OFFSET)) \
|
|
||||||
$(UBINIZE_OPTS)
|
|
||||||
rm $@.tmp
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/append-uboot
|
|
||||||
dd if=$(UBOOT_PATH) >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
# append a fake/empty uImage header, to fool bootloaders rootfs integrity check
|
|
||||||
# for example
|
|
||||||
define Build/append-uImage-fakehdr
|
|
||||||
$(eval type=$(word 1,$(1)))
|
|
||||||
$(eval magic=$(word 2,$(1)))
|
|
||||||
touch $@.fakehdr
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkimage \
|
|
||||||
-A $(LINUX_KARCH) -O linux -T $(type) -C none \
|
|
||||||
-n '$(VERSION_DIST) fake $(type)' \
|
|
||||||
$(if $(magic),-M $(magic)) \
|
|
||||||
-d $@.fakehdr \
|
|
||||||
-s \
|
|
||||||
$@.fakehdr
|
|
||||||
cat $@.fakehdr >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/buffalo-dhp-image
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkdhpimg $@ $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/buffalo-enc
|
|
||||||
$(eval product=$(word 1,$(1)))
|
|
||||||
$(eval version=$(word 2,$(1)))
|
|
||||||
$(eval args=$(wordlist 3,$(words $(1)),$(1)))
|
|
||||||
$(STAGING_DIR_HOST)/bin/buffalo-enc \
|
|
||||||
-p $(product) -v $(version) $(args) \
|
|
||||||
-i $@ -o $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/buffalo-enc-tag
|
|
||||||
$(call Build/buffalo-enc,'' '' -S 152 $(1))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/buffalo-tag-dhp
|
|
||||||
$(eval product=$(word 1,$(1)))
|
|
||||||
$(eval region=$(word 2,$(1)))
|
|
||||||
$(eval language=$(word 3,$(1)))
|
|
||||||
$(STAGING_DIR_HOST)/bin/buffalo-tag \
|
|
||||||
-d 0x01000000 -w 1 \
|
|
||||||
-a $(BUFFALO_TAG_PLATFORM) \
|
|
||||||
-v $(BUFFALO_TAG_VERSION) -m $(BUFFALO_TAG_MINOR) \
|
|
||||||
-b $(product) -p $(product) \
|
|
||||||
-r $(region) -r $(region) -l $(language) \
|
|
||||||
-I $@ -o $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/buffalo-trx
|
|
||||||
$(eval magic=$(word 1,$(1)))
|
|
||||||
$(eval kern_bin=$(if $(1),$(IMAGE_KERNEL),$@))
|
|
||||||
$(eval rtfs_bin=$(word 2,$(1)))
|
|
||||||
$(eval apnd_bin=$(word 3,$(1)))
|
|
||||||
$(eval kern_size=$(if $(KERNEL_SIZE),$(KERNEL_SIZE),0x400000))
|
|
||||||
|
|
||||||
$(if $(rtfs_bin),touch $(rtfs_bin))
|
|
||||||
$(STAGING_DIR_HOST)/bin/otrx create $@.new \
|
|
||||||
$(if $(magic),-M $(magic),) \
|
|
||||||
-f $(kern_bin) \
|
|
||||||
$(if $(rtfs_bin),\
|
|
||||||
-a 0x20000 \
|
|
||||||
-b $$(( $(call exp_units,$(kern_size)) )) \
|
|
||||||
-f $(rtfs_bin),) \
|
|
||||||
$(if $(apnd_bin),\
|
|
||||||
-A $(apnd_bin) \
|
|
||||||
-a 0x20000)
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/check-size
|
|
||||||
@imagesize="$$(stat -c%s $@)"; \
|
|
||||||
limitsize="$$(($(call exp_units,$(if $(1),$(1),$(IMAGE_SIZE)))))"; \
|
|
||||||
[ $$limitsize -ge $$imagesize ] || { \
|
|
||||||
$(call ERROR_MESSAGE, WARNING: Image file $@ is too big: $$imagesize > $$limitsize); \
|
|
||||||
rm -f $@; \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/copy-file
|
|
||||||
cat "$(1)" > "$@"
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Create a header for a D-Link AI series recovery image and add it at the beginning of the image
|
|
||||||
# Currently supported: AQUILA M30, EAGLE M32 and R32
|
|
||||||
# Arguments:
|
|
||||||
# 1: Start string of the header
|
|
||||||
# 2: Firmware version
|
|
||||||
# 3: Block start address
|
|
||||||
# 4: Block length
|
|
||||||
# 5: Device FMID
|
|
||||||
define Build/dlink-ai-recovery-header
|
|
||||||
$(eval header_start=$(word 1,$(1)))
|
|
||||||
$(eval firmware_version=$(word 2,$(1)))
|
|
||||||
$(eval block_start=$(word 3,$(1)))
|
|
||||||
$(eval block_length=$(word 4,$(1)))
|
|
||||||
$(eval device_fmid=$(word 5,$(1)))
|
|
||||||
# create $@.header without the checksum
|
|
||||||
echo -en "$(header_start)\x00\x00" > "$@.header"
|
|
||||||
# Calculate checksum over data area ($@) and append it to the header.
|
|
||||||
# The checksum is the 2byte-sum over the whole data area.
|
|
||||||
# Every overflow during the checksum calculation must increment the current checksum value by 1.
|
|
||||||
od -v -w2 -tu2 -An --endian little "$@" | awk '{ s+=$$1; } END { s%=65535; printf "%c%c",s%256,s/256; }' >> "$@.header"
|
|
||||||
echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00" >> "$@.header"
|
|
||||||
echo -en "$(firmware_version)" >> "$@.header"
|
|
||||||
# Only one block supported: Erase start/length is identical to data start/length
|
|
||||||
echo -en "$(block_start)$(block_length)$(block_start)$(block_length)" >> "$@.header"
|
|
||||||
# Only zeros
|
|
||||||
echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" >> "$@.header"
|
|
||||||
# Last 16 bytes, but without checksum
|
|
||||||
echo -en "\x42\x48\x02\x00\x00\x00\x08\x00\x00\x00\x00\x00" >> "$@.header"
|
|
||||||
echo -en "$(device_fmid)" >> "$@.header"
|
|
||||||
# Calculate and append checksum: The checksum must be set so that the 2byte-sum of the whole header is 0.
|
|
||||||
# Every overflow during the checksum calculation must increment the current checksum value by 1.
|
|
||||||
od -v -w2 -tu2 -An --endian little "$@.header" | awk '{s+=65535-$$1;}END{s%=65535;printf "%c%c",s%256,s/256;}' >> "$@.header"
|
|
||||||
cat "$@.header" "$@" > "$@.new"
|
|
||||||
mv "$@.new" "$@"
|
|
||||||
rm "$@.header"
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/dlink-sge-image
|
|
||||||
$(STAGING_DIR_HOST)/bin/dlink-sge-image $(1) $@ $@.enc
|
|
||||||
mv $@.enc $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/edimax-header
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkedimaximg -i $@ -o $@.new $(1)
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/elecom-product-header
|
|
||||||
$(eval product=$(word 1,$(1)))
|
|
||||||
$(eval fw=$(if $(word 2,$(1)),$(word 2,$(1)),$@))
|
|
||||||
|
|
||||||
( \
|
|
||||||
echo -n -e "ELECOM\x00\x00$(product)" | dd bs=40 count=1 conv=sync; \
|
|
||||||
echo -n "0.00" | dd bs=16 count=1 conv=sync; \
|
|
||||||
dd if=$(fw); \
|
|
||||||
) > $(fw).new
|
|
||||||
mv $(fw).new $(fw)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/elecom-wrc-gs-factory
|
|
||||||
$(eval product=$(word 1,$(1)))
|
|
||||||
$(eval version=$(word 2,$(1)))
|
|
||||||
$(eval hash_opt=$(word 3,$(1)))
|
|
||||||
$(MKHASH) md5 $(hash_opt) $@ >> $@
|
|
||||||
( \
|
|
||||||
echo -n "ELECOM $(product) v$(version)" | \
|
|
||||||
dd bs=32 count=1 conv=sync; \
|
|
||||||
dd if=$@; \
|
|
||||||
) > $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/elx-header
|
|
||||||
$(eval hw_id=$(word 1,$(1)))
|
|
||||||
$(eval xor_pattern=$(word 2,$(1)))
|
|
||||||
( \
|
|
||||||
echo -ne "\x00\x00\x00\x00\x00\x00\x00\x03" | \
|
|
||||||
dd bs=42 count=1 conv=sync; \
|
|
||||||
hw_id="$(hw_id)"; \
|
|
||||||
echo -ne "\x$${hw_id:0:2}\x$${hw_id:2:2}\x$${hw_id:4:2}\x$${hw_id:6:2}" | \
|
|
||||||
dd bs=20 count=1 conv=sync; \
|
|
||||||
echo -ne "$$(printf '%08x' $$(stat -c%s $@) | fold -s2 | xargs -I {} echo \\x{} | tr -d '\n')" | \
|
|
||||||
dd bs=8 count=1 conv=sync; \
|
|
||||||
echo -ne "$$($(MKHASH) md5 $@ | fold -s2 | xargs -I {} echo \\x{} | tr -d '\n')" | \
|
|
||||||
dd bs=58 count=1 conv=sync; \
|
|
||||||
) > $(KDIR)/tmp/$(DEVICE_NAME).header
|
|
||||||
$(call Build/xor-image,-p $(xor_pattern) -x)
|
|
||||||
cat $(KDIR)/tmp/$(DEVICE_NAME).header $@ > $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
rm -rf $(KDIR)/tmp/$(DEVICE_NAME).header
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/eva-image
|
|
||||||
$(STAGING_DIR_HOST)/bin/lzma2eva $(KERNEL_LOADADDR) $(KERNEL_LOADADDR) $@ $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/initrd_compression
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2),.bzip2) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP),.gzip) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4),.lz4) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA),.lzma) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO),.lzo) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ),.xz) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD),.zstd)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/fit
|
|
||||||
$(call locked,$(TOPDIR)/scripts/mkits.sh \
|
|
||||||
-D $(DEVICE_NAME) -o $@.its -k $@ \
|
|
||||||
-C $(word 1,$(1)) \
|
|
||||||
$(if $(word 2,$(1)),\
|
|
||||||
$(if $(findstring 11,$(if $(DEVICE_DTS_OVERLAY),1)$(if $(findstring $(KERNEL_BUILD_DIR)/image-,$(word 2,$(1))),,1)), \
|
|
||||||
-d $(KERNEL_BUILD_DIR)/image-$$(basename $(word 2,$(1))), \
|
|
||||||
-d $(word 2,$(1)))) \
|
|
||||||
$(if $(findstring with-rootfs,$(word 3,$(1))),-r $(IMAGE_ROOTFS)) \
|
|
||||||
$(if $(findstring with-initrd,$(word 3,$(1))), \
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \
|
|
||||||
-i $(KERNEL_BUILD_DIR)/initrd$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))).cpio$(strip $(call Build/initrd_compression)))) \
|
|
||||||
-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
|
||||||
$(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
|
|
||||||
$(if $(DEVICE_DTS_DELIMITER),-l $(DEVICE_DTS_DELIMITER)) \
|
|
||||||
$(if $(DEVICE_DTS_LOADADDR),-s $(DEVICE_DTS_LOADADDR)) \
|
|
||||||
$(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtbo)) \
|
|
||||||
-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
|
|
||||||
-A $(LINUX_KARCH) -v $(LINUX_VERSION), gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
|
|
||||||
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\
|
|
||||||
-E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/libdeflate-gzip
|
|
||||||
$(STAGING_DIR_HOST)/bin/libdeflate-gzip -f -12 -c $@ $(1) > $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/gzip
|
|
||||||
$(STAGING_DIR_HOST)/bin/gzip -f -9n -c $@ $(1) > $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/gzip-filename
|
|
||||||
@mkdir -p $@.tmp
|
|
||||||
@cp $@ $@.tmp/$(word 1,$(1))
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $@.tmp/$(word 1,$(1)) $(word 2,$(1)))
|
|
||||||
$(STAGING_DIR_HOST)/bin/gzip -f -9 -N -c $@.tmp/$(word 1,$(1)) $(word 2,$(1)) > $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
@rm -rf $@.tmp
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/install-dtb
|
|
||||||
$(call locked, \
|
|
||||||
$(foreach dts,$(DEVICE_DTS), \
|
|
||||||
$(CP) \
|
|
||||||
$(DTS_DIR)/$(dts).dtb \
|
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \
|
|
||||||
), \
|
|
||||||
install-dtb-$(IMG_PREFIX) \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/iptime-crc32
|
|
||||||
$(STAGING_DIR_HOST)/bin/iptime-crc32 $(1) $@ $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/iptime-naspkg
|
|
||||||
$(STAGING_DIR_HOST)/bin/iptime-naspkg $(1) $@ $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/jffs2
|
|
||||||
rm -rf $(KDIR_TMP)/$(DEVICE_NAME)/jffs2 && \
|
|
||||||
mkdir -p $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$$(dirname $(1)) && \
|
|
||||||
cp $@ $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$(1) && \
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 --pad \
|
|
||||||
$(if $(CONFIG_BIG_ENDIAN),--big-endian,--little-endian) \
|
|
||||||
--squash-uids -v -e $(patsubst %k,%KiB,$(BLOCKSIZE)) \
|
|
||||||
-o $@.new \
|
|
||||||
-d $(KDIR_TMP)/$(DEVICE_NAME)/jffs2 \
|
|
||||||
2>&1 1>/dev/null | awk '/^.+$$$$/' && \
|
|
||||||
$(STAGING_DIR_HOST)/bin/padjffs2 $@.new -J $(patsubst %k,,$(BLOCKSIZE))
|
|
||||||
-rm -rf $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/yaffs-filesystem
|
|
||||||
let \
|
|
||||||
kernel_size="$$(stat -c%s $@)" \
|
|
||||||
kernel_chunks="(kernel_size / 1024) + 1" \
|
|
||||||
filesystem_chunks="kernel_chunks + 3" \
|
|
||||||
filesystem_blocks="(filesystem_chunks / 63) + 1" \
|
|
||||||
filesystem_size="filesystem_blocks * 64 * 1024" \
|
|
||||||
filesystem_size_with_reserve="(filesystem_blocks + 2) * 64 * 1024"; \
|
|
||||||
head -c $$filesystem_size_with_reserve /dev/zero | tr "\000" "\377" > $@.img \
|
|
||||||
&& yafut -d $@.img -w -i $@ -o kernel -C 1040 -B 64k -E -P -S $(1) \
|
|
||||||
&& truncate -s $$filesystem_size $@.img \
|
|
||||||
&& mv $@.img $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/kernel-bin
|
|
||||||
rm -f $@
|
|
||||||
cp $< $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/linksys-image
|
|
||||||
let \
|
|
||||||
size="$$(stat -c%s $@)" \
|
|
||||||
pad="$(call exp_units,$(PAGESIZE))" \
|
|
||||||
offset="256" \
|
|
||||||
pad="(pad - ((size + offset) % pad)) % pad"; \
|
|
||||||
dd if=/dev/zero bs=$$pad count=1 | tr '\000' '\377' >> $@
|
|
||||||
printf ".LINKSYS.01000409%-15s%08X%-8s%-16s" \
|
|
||||||
"$(call param_get_default,type,$(1),$(DEVICE_NAME))" \
|
|
||||||
"$$(cksum $@ | cut -d ' ' -f1)" \
|
|
||||||
"0" "K0000000F0246434" >> $@
|
|
||||||
dd if=/dev/zero bs=192 count=1 >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/lzma
|
|
||||||
$(call Build/lzma-no-dict,-lc1 -lp2 -pb2 $(1))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/lzma-no-dict
|
|
||||||
$(STAGING_DIR_HOST)/bin/lzma e $@ $(1) $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/moxa-encode-fw
|
|
||||||
$(TOPDIR)/scripts/moxa-encode-fw.py \
|
|
||||||
--input $@ \
|
|
||||||
--output $@ \
|
|
||||||
--magic $(MOXA_MAGIC) \
|
|
||||||
--hwid $(MOXA_HWID) \
|
|
||||||
--buildid 00000000
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/netgear-chk
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkchkimg \
|
|
||||||
-o $@.new \
|
|
||||||
-k $@ \
|
|
||||||
-b $(NETGEAR_BOARD_ID) \
|
|
||||||
$(if $(NETGEAR_REGION),-r $(NETGEAR_REGION),)
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/netgear-dni
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkdniimg \
|
|
||||||
-B $(NETGEAR_BOARD_ID) -v $(shell cat $(VERSION_DIST)| sed -e 's/[[:space:]]/-/g').$(firstword $(subst -, ,$(REVISION))) \
|
|
||||||
$(if $(NETGEAR_HW_ID),-H $(NETGEAR_HW_ID)) \
|
|
||||||
-r "$(1)" \
|
|
||||||
-i $@ -o $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/netgear-encrypted-factory
|
|
||||||
$(TOPDIR)/scripts/netgear-encrypted-factory.py \
|
|
||||||
--input-file $@ \
|
|
||||||
--output-file $@ \
|
|
||||||
--model $(NETGEAR_ENC_MODEL) \
|
|
||||||
--region $(NETGEAR_ENC_REGION) \
|
|
||||||
$(if $(NETGEAR_ENC_HW_ID_LIST),--hw-id-list "$(NETGEAR_ENC_HW_ID_LIST)") \
|
|
||||||
$(if $(NETGEAR_ENC_MODEL_LIST),--model-list "$(NETGEAR_ENC_MODEL_LIST)") \
|
|
||||||
--version V1.0.0.0.$(shell cat $(VERSION_DIST)| sed -e 's/[[:space:]]/-/g').$(firstword $(subst -, ,$(REVISION))) \
|
|
||||||
--encryption-block-size 0x20000 \
|
|
||||||
--openssl-bin "$(STAGING_DIR_HOST)/bin/openssl" \
|
|
||||||
--key 6865392d342b4d212964363d6d7e7765312c7132613364316e26322a5a5e2538 \
|
|
||||||
--iv 4a253169516c38243d6c6d2d3b384145
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/openmesh-image
|
|
||||||
$(TOPDIR)/scripts/om-fwupgradecfg-gen.sh \
|
|
||||||
"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \
|
|
||||||
"$@-fwupgrade.cfg" \
|
|
||||||
"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \
|
|
||||||
"$(call param_get_default,rootfs,$(1),$@)"
|
|
||||||
$(TOPDIR)/scripts/combined-ext-image.sh \
|
|
||||||
"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \
|
|
||||||
"$@-fwupgrade.cfg" "fwupgrade.cfg" \
|
|
||||||
"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \
|
|
||||||
"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/pad-extra
|
|
||||||
dd if=/dev/zero bs=$(1) count=1 >> $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/pad-offset
|
|
||||||
let \
|
|
||||||
size="$$(stat -c%s $@)" \
|
|
||||||
pad="$(call exp_units,$(word 1, $(1)))" \
|
|
||||||
offset="$(call exp_units,$(word 2, $(1)))" \
|
|
||||||
pad="(pad - ((size + offset) % pad)) % pad" \
|
|
||||||
newsize='size + pad'; \
|
|
||||||
dd if=$@ of=$@.new bs=$$newsize count=1 conv=sync
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/pad-rootfs
|
|
||||||
$(STAGING_DIR_HOST)/bin/padjffs2 $@ $(1) \
|
|
||||||
$(if $(BLOCKSIZE),$(BLOCKSIZE:%k=%),4 8 16 64 128 256)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/pad-to
|
|
||||||
$(call Image/pad-to,$@,$(1))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/patch-cmdline
|
|
||||||
$(STAGING_DIR_HOST)/bin/patch-cmdline $@ '$(CMDLINE)'
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Convert a raw image into a $1 type image.
|
|
||||||
# E.g. | qemu-image vdi <optional extra arguments to qemu-img binary>
|
|
||||||
define Build/qemu-image
|
|
||||||
if command -v qemu-img; then \
|
|
||||||
qemu-img convert -f raw -O $1 $@ $@.new; \
|
|
||||||
mv $@.new $@; \
|
|
||||||
else \
|
|
||||||
echo "WARNING: Install qemu-img to create VDI/VMDK images" >&2; exit 1; \
|
|
||||||
fi
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/qsdk-ipq-factory-nand
|
|
||||||
$(TOPDIR)/scripts/mkits-qsdk-ipq-image.sh \
|
|
||||||
$@.its ubi $@
|
|
||||||
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/qsdk-ipq-factory-nor
|
|
||||||
$(TOPDIR)/scripts/mkits-qsdk-ipq-image.sh \
|
|
||||||
$@.its hlos $(IMAGE_KERNEL) rootfs $(IMAGE_ROOTFS)
|
|
||||||
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/seama
|
|
||||||
$(STAGING_DIR_HOST)/bin/seama -i $@ \
|
|
||||||
-m "dev=/dev/mtdblock/$(SEAMA_MTDBLOCK)" -m "type=firmware"
|
|
||||||
mv $@.seama $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/seama-seal
|
|
||||||
$(STAGING_DIR_HOST)/bin/seama -i $@ -s $@.seama \
|
|
||||||
-m "signature=$(SEAMA_SIGNATURE)"
|
|
||||||
mv $@.seama $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/senao-header
|
|
||||||
$(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/sysupgrade-tar
|
|
||||||
sh $(TOPDIR)/scripts/sysupgrade-tar.sh \
|
|
||||||
--board $(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)) \
|
|
||||||
--kernel $(call param_get_default,kernel,$(1),$(IMAGE_KERNEL)) \
|
|
||||||
--rootfs $(call param_get_default,rootfs,$(1),$(IMAGE_ROOTFS)) \
|
|
||||||
$@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/tplink-safeloader
|
|
||||||
-$(STAGING_DIR_HOST)/bin/tplink-safeloader \
|
|
||||||
-B $(TPLINK_BOARD_ID) \
|
|
||||||
-V $(REVISION) \
|
|
||||||
-k $(IMAGE_KERNEL) \
|
|
||||||
-r $@ \
|
|
||||||
-o $@.new \
|
|
||||||
-j \
|
|
||||||
$(wordlist 2,$(words $(1)),$(1)) \
|
|
||||||
$(if $(findstring sysupgrade,$(word 1,$(1))),-S) && mv $@.new $@ || rm -f $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/tplink-v1-header
|
|
||||||
$(STAGING_DIR_HOST)/bin/mktplinkfw \
|
|
||||||
-c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \
|
|
||||||
-E $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
|
||||||
-m $(TPLINK_HEADER_VERSION) -N "$(VERSION_DIST)" -V $(REVISION) \
|
|
||||||
-k $@ -o $@.new $(1)
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
# combine kernel and rootfs into one image
|
|
||||||
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
|
|
||||||
# <type> is "sysupgrade" or "factory"
|
|
||||||
#
|
|
||||||
# -a align the rootfs start on an <align> bytes boundary
|
|
||||||
# -j add jffs2 end-of-filesystem markers
|
|
||||||
# -s strip padding from end of the image
|
|
||||||
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
|
|
||||||
define Build/tplink-v1-image
|
|
||||||
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
|
|
||||||
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
|
|
||||||
-N "$(VERSION_DIST)" -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \
|
|
||||||
-k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new -j -X 0x40000 \
|
|
||||||
-a $(call rootfs_align,$(FILESYSTEM)) \
|
|
||||||
$(wordlist 2,$(words $(1)),$(1)) \
|
|
||||||
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/tplink-v2-header
|
|
||||||
$(STAGING_DIR_HOST)/bin/mktplinkfw2 \
|
|
||||||
-c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \
|
|
||||||
-E $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
|
||||||
-w $(TPLINK_HWREVADD) -F "$(TPLINK_FLASHLAYOUT)" \
|
|
||||||
-T $(TPLINK_HVERSION) -V "ver. 2.0" \
|
|
||||||
-k $@ -o $@.new $(1)
|
|
||||||
@mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/tplink-v2-image
|
|
||||||
$(STAGING_DIR_HOST)/bin/mktplinkfw2 \
|
|
||||||
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) \
|
|
||||||
-w $(TPLINK_HWREVADD) -F "$(TPLINK_FLASHLAYOUT)" \
|
|
||||||
-T $(TPLINK_HVERSION) -V "ver. 2.0" -a 0x4 -j \
|
|
||||||
-k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new $(1)
|
|
||||||
cat $@.new >> $@
|
|
||||||
rm -rf $@.new
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/uImage
|
|
||||||
$(if $(UIMAGE_TIME),SOURCE_DATE_EPOCH="$(UIMAGE_TIME)") \
|
|
||||||
mkimage \
|
|
||||||
-A $(LINUX_KARCH) \
|
|
||||||
-O linux \
|
|
||||||
-T kernel \
|
|
||||||
-C $(word 1,$(1)) \
|
|
||||||
-a $(KERNEL_LOADADDR) \
|
|
||||||
-e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
|
||||||
-n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION))' \
|
|
||||||
$(if $(UIMAGE_MAGIC),-M $(UIMAGE_MAGIC)) \
|
|
||||||
$(wordlist 2,$(words $(1)),$(1)) \
|
|
||||||
-d $@ $@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/multiImage
|
|
||||||
$(if $(UIMAGE_TIME),SOURCE_DATE_EPOCH="$(UIMAGE_TIME)") \
|
|
||||||
mkimage \
|
|
||||||
-A $(LINUX_KARCH) \
|
|
||||||
-O linux \
|
|
||||||
-T multi \
|
|
||||||
-C $(word 1,$(1)) \
|
|
||||||
-a $(KERNEL_LOADADDR) \
|
|
||||||
-e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
|
||||||
-n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION))' \
|
|
||||||
$(if $(UIMAGE_MAGIC),-M $(UIMAGE_MAGIC)) \
|
|
||||||
-d $@:$(word 2,$(1)):$(word 3,$(1)) \
|
|
||||||
$(wordlist 4,$(words $(1)),$(1)) \
|
|
||||||
$@.new
|
|
||||||
mv $@.new $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/xor-image
|
|
||||||
$(STAGING_DIR_HOST)/bin/xorimage -i $@ -o $@.xor $(1)
|
|
||||||
mv $@.xor $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/zip
|
|
||||||
rm -rf $@.tmp
|
|
||||||
mkdir $@.tmp
|
|
||||||
mv $@ $@.tmp/$(word 1,$(1))
|
|
||||||
TZ=UTC $(STAGING_DIR_HOST)/bin/zip -j -X \
|
|
||||||
$(wordlist 2,$(words $(1)),$(1)) \
|
|
||||||
$@ $@.tmp/$(if $(word 1,$(1)),$(word 1,$(1)),$$(basename $@))
|
|
||||||
rm -rf $@.tmp
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/zyxel-ras-image
|
|
||||||
let \
|
|
||||||
newsize="$(call exp_units,$(RAS_ROOTFS_SIZE))"; \
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkrasimage \
|
|
||||||
-b $(RAS_BOARD) \
|
|
||||||
-v $(RAS_VERSION) \
|
|
||||||
-r $@ \
|
|
||||||
-s $$newsize \
|
|
||||||
-o $@.new \
|
|
||||||
$(if $(findstring separate-kernel,$(word 1,$(1))),-k $(IMAGE_KERNEL)) \
|
|
||||||
&& mv $@.new $@
|
|
||||||
endef
|
|
910
include/image.mk
910
include/image.mk
@ -1,910 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
override TARGET_BUILD=
|
|
||||||
include $(INCLUDE_DIR)/prereq.mk
|
|
||||||
include $(INCLUDE_DIR)/kernel.mk
|
|
||||||
include $(INCLUDE_DIR)/kernel-defaults.mk
|
|
||||||
include $(INCLUDE_DIR)/version.mk
|
|
||||||
include $(INCLUDE_DIR)/image-commands.mk
|
|
||||||
|
|
||||||
ifndef IB
|
|
||||||
ifdef CONFIG_TARGET_PER_DEVICE_ROOTFS
|
|
||||||
TARGET_PER_DEVICE_ROOTFS := 1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/feeds.mk
|
|
||||||
include $(INCLUDE_DIR)/rootfs.mk
|
|
||||||
|
|
||||||
override MAKE:=$(_SINGLE)$(SUBMAKE)
|
|
||||||
override NO_TRACE_MAKE:=$(_SINGLE)$(NO_TRACE_MAKE)
|
|
||||||
|
|
||||||
exp_units = $(subst k, * 1024,$(subst m, * 1024k,$(subst g, * 1024m,$(1))))
|
|
||||||
|
|
||||||
target_params = $(subst +,$(space),$*)
|
|
||||||
param_get = $(patsubst $(1)=%,%,$(filter $(1)=%,$(2)))
|
|
||||||
param_get_default = $(firstword $(call param_get,$(1),$(2)) $(3))
|
|
||||||
param_mangle = $(subst $(space),_,$(strip $(1)))
|
|
||||||
param_unmangle = $(subst _,$(space),$(1))
|
|
||||||
|
|
||||||
mkfs_packages_id = $(shell echo $(sort $(1)) | $(MKHASH) md5 | cut -b1-8)
|
|
||||||
mkfs_target_dir = $(if $(call param_get,pkg,$(1)),$(KDIR)/target-dir-$(call param_get,pkg,$(1)),$(TARGET_DIR))
|
|
||||||
|
|
||||||
KDIR=$(KERNEL_BUILD_DIR)
|
|
||||||
KDIR_TMP=$(KDIR)/tmp
|
|
||||||
DTS_DIR:=$(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts
|
|
||||||
|
|
||||||
IMG_PREFIX_EXTRA:=$(if $(EXTRA_IMAGE_NAME),$(call sanitize,$(EXTRA_IMAGE_NAME))-)
|
|
||||||
IMG_PREFIX_VERNUM:=$(if $(CONFIG_VERSION_FILENAMES),$(call sanitize,$(VERSION_NUMBER))-)
|
|
||||||
IMG_PREFIX_VERCODE:=$(if $(CONFIG_VERSION_CODE_FILENAMES),$(call sanitize,$(VERSION_CODE))-)
|
|
||||||
|
|
||||||
IMG_PREFIX:=$(VERSION_DIST_SANITIZED)-$(IMG_PREFIX_VERNUM)$(IMG_PREFIX_VERCODE)$(IMG_PREFIX_EXTRA)$(BOARD)-$(SUBTARGET)
|
|
||||||
IMG_ROOTFS:=$(IMG_PREFIX)-rootfs
|
|
||||||
IMG_COMBINED:=$(IMG_PREFIX)-combined
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
IMG_PART_SIGNATURE:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | $(MKHASH) md5 | cut -b1-8)
|
|
||||||
IMG_PART_DISKGUID:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | $(MKHASH) md5 | sed -E 's/(.{8})(.{4})(.{4})(.{4})(.{10})../\1-\2-\3-\4-\500/')
|
|
||||||
endif
|
|
||||||
|
|
||||||
MKFS_DEVTABLE_OPT := -D $(INCLUDE_DIR)/device_table.txt
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_BIG_ENDIAN),)
|
|
||||||
JFFS2OPTS := --big-endian --squash-uids -v
|
|
||||||
else
|
|
||||||
JFFS2OPTS := --little-endian --squash-uids -v
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_JFFS2_RTIME),y)
|
|
||||||
JFFS2OPTS += -X rtime
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_JFFS2_ZLIB),y)
|
|
||||||
JFFS2OPTS += -X zlib
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_JFFS2_LZMA),y)
|
|
||||||
JFFS2OPTS += -X lzma --compression-mode=size
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_JFFS2_RTIME),y)
|
|
||||||
JFFS2OPTS += -x rtime
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_JFFS2_ZLIB),y)
|
|
||||||
JFFS2OPTS += -x zlib
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_JFFS2_LZMA),y)
|
|
||||||
JFFS2OPTS += -x lzma
|
|
||||||
endif
|
|
||||||
|
|
||||||
JFFS2OPTS += $(MKFS_DEVTABLE_OPT)
|
|
||||||
|
|
||||||
SQUASHFS_BLOCKSIZE := $(CONFIG_TARGET_SQUASHFS_BLOCK_SIZE)k
|
|
||||||
SQUASHFSOPT := -b $(SQUASHFS_BLOCKSIZE)
|
|
||||||
SQUASHFSOPT += -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1'
|
|
||||||
SQUASHFSOPT += $(if $(CONFIG_SELINUX),-xattrs,-no-xattrs)
|
|
||||||
SQUASHFSCOMP := gzip
|
|
||||||
LZMA_XZ_OPTIONS := -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2
|
|
||||||
ifeq ($(CONFIG_SQUASHFS_XZ),y)
|
|
||||||
ifneq ($(filter arm x86 powerpc sparc,$(LINUX_KARCH)),)
|
|
||||||
BCJ_FILTER:=-Xbcj $(LINUX_KARCH)
|
|
||||||
endif
|
|
||||||
SQUASHFSCOMP := xz $(LZMA_XZ_OPTIONS) $(BCJ_FILTER)
|
|
||||||
endif
|
|
||||||
|
|
||||||
JFFS2_BLOCKSIZE ?= 64k 128k
|
|
||||||
|
|
||||||
fs-types-$(CONFIG_TARGET_ROOTFS_SQUASHFS) += squashfs
|
|
||||||
fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addprefix jffs2-,$(JFFS2_BLOCKSIZE))
|
|
||||||
fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2_NAND) += $(addprefix jffs2-nand-,$(NAND_BLOCKSIZE))
|
|
||||||
fs-types-$(CONFIG_TARGET_ROOTFS_EXT4FS) += ext4
|
|
||||||
fs-types-$(CONFIG_TARGET_ROOTFS_UBIFS) += ubifs
|
|
||||||
fs-subtypes-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addsuffix -raw,$(addprefix jffs2-,$(JFFS2_BLOCKSIZE)))
|
|
||||||
|
|
||||||
TARGET_FILESYSTEMS := $(fs-types-y)
|
|
||||||
|
|
||||||
FS_64K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-64k
|
|
||||||
FS_128K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-128k
|
|
||||||
FS_256K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-256k
|
|
||||||
|
|
||||||
define add_jffs2_mark
|
|
||||||
echo -ne '\xde\xad\xc0\xde' >> $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
PROFILE_SANITIZED := $(call tolower,$(subst DEVICE_,,$(subst $(space),-,$(PROFILE))))
|
|
||||||
|
|
||||||
define split_args
|
|
||||||
$(foreach data, \
|
|
||||||
$(subst |,$(space),\
|
|
||||||
$(subst $(space),^,$(1))), \
|
|
||||||
$(call $(2),$(strip $(subst ^,$(space),$(data)))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define build_cmd
|
|
||||||
$(if $(Build/$(word 1,$(1))),,$(error Missing Build/$(word 1,$(1))))
|
|
||||||
$(call Build/$(word 1,$(1)),$(wordlist 2,$(words $(1)),$(1)))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define concat_cmd
|
|
||||||
$(call split_args,$(1),build_cmd)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# pad to 4k, 8k, 16k, 64k, 128k, 256k and add jffs2 end-of-filesystem mark
|
|
||||||
define prepare_generic_squashfs
|
|
||||||
$(STAGING_DIR_HOST)/bin/padjffs2 $(1) 4 8 16 64 128 256
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/BuildKernel/Initramfs
|
|
||||||
$(call Image/Build/Initramfs)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/BuildKernel/MkuImage
|
|
||||||
mkimage -A $(ARCH) -O linux -T kernel -C $(1) -a $(2) -e $(3) \
|
|
||||||
-n '$(call toupper,$(ARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' -d $(4) $(5)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef CONFIG_TARGET_IMAGES_GZIP
|
|
||||||
define Image/Gzip
|
|
||||||
rm -f $(1).gz
|
|
||||||
gzip -9n $(1)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
# Disable noisy checks by default as in upstream
|
|
||||||
DTC_WARN_FLAGS := \
|
|
||||||
-Wno-interrupt_provider \
|
|
||||||
-Wno-unique_unit_address \
|
|
||||||
-Wno-unit_address_vs_reg \
|
|
||||||
-Wno-avoid_unnecessary_addr_size \
|
|
||||||
-Wno-alias_paths \
|
|
||||||
-Wno-graph_child_address \
|
|
||||||
-Wno-simple_bus_reg
|
|
||||||
|
|
||||||
DTC_FLAGS += $(DTC_WARN_FLAGS)
|
|
||||||
DTCO_FLAGS += $(DTC_WARN_FLAGS)
|
|
||||||
|
|
||||||
define Image/pad-to
|
|
||||||
dd if=$(1) of=$(1).new bs=$(2) conv=sync
|
|
||||||
mv $(1).new $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
ROOTFS_PARTSIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024)))
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Image/pad-root-squashfs
|
|
||||||
$(call Image/pad-to,$(KDIR)/root.squashfs,$(if $(1),$(1),$(ROOTFS_PARTSIZE)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# $(1) source dts file
|
|
||||||
# $(2) target dtb file
|
|
||||||
# $(3) extra CPP flags
|
|
||||||
# $(4) extra DTC flags
|
|
||||||
define Image/BuildDTB/sub
|
|
||||||
$(TARGET_CROSS)cpp -nostdinc -x assembler-with-cpp \
|
|
||||||
$(DTS_CPPFLAGS) \
|
|
||||||
-I$(DTS_DIR) \
|
|
||||||
-I$(DTS_DIR)/include \
|
|
||||||
-I$(LINUX_DIR)/include/ \
|
|
||||||
-I$(LINUX_DIR)/scripts/dtc/include-prefixes \
|
|
||||||
-undef -D__DTS__ $(3) \
|
|
||||||
-o $(2).tmp $(1)
|
|
||||||
$(LINUX_DIR)/scripts/dtc/dtc -O dtb \
|
|
||||||
-i$(dir $(1)) $(4) \
|
|
||||||
$(if $(CONFIG_HAS_DT_OVERLAY_SUPPORT),-@) \
|
|
||||||
-o $(2) $(2).tmp
|
|
||||||
$(RM) $(2).tmp
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/BuildDTB
|
|
||||||
$(call Image/BuildDTB/sub,$(1),$(2),$(3),$(DTC_FLAGS) $(DEVICE_DTC_FLAGS) $(4))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/BuildDTBO
|
|
||||||
$(call Image/BuildDTB/sub,$(1),$(2),$(3),$(DTCO_FLAGS) $(DEVICE_DTCO_FLAGS) $(4))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/mkfs/jffs2/sub-raw
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 \
|
|
||||||
$(2) \
|
|
||||||
-e $(patsubst %k,%KiB,$(1)) \
|
|
||||||
-o $@ -d $(call mkfs_target_dir,$(3)) \
|
|
||||||
-v 2>&1 1>/dev/null | awk '/^.+$$$$/'
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/mkfs/jffs2/sub
|
|
||||||
$(call Image/mkfs/jffs2/sub-raw,$(1),--pad $(2),$(3))
|
|
||||||
$(call add_jffs2_mark,$@)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/mkfs/jffs2/template
|
|
||||||
Image/mkfs/jffs2-$(1) = $$(call Image/mkfs/jffs2/sub,$(1),$(JFFS2OPTS),$$(1))
|
|
||||||
Image/mkfs/jffs2-$(1)-raw = $$(call Image/mkfs/jffs2/sub-raw,$(1),$(JFFS2OPTS),$$(1))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/mkfs/jffs2-nand/template
|
|
||||||
Image/mkfs/jffs2-nand-$(1) = \
|
|
||||||
$$(call Image/mkfs/jffs2/sub, \
|
|
||||||
$(word 2,$(subst -, ,$(1))), \
|
|
||||||
$(JFFS2OPTS) --no-cleanmarkers --pagesize=$(word 1,$(subst -, ,$(1))),$$(1))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(foreach S,$(JFFS2_BLOCKSIZE),$(call Image/mkfs/jffs2/template,$(S))))
|
|
||||||
$(eval $(foreach S,$(NAND_BLOCKSIZE),$(call Image/mkfs/jffs2-nand/template,$(S))))
|
|
||||||
|
|
||||||
define Image/mkfs/squashfs-common
|
|
||||||
$(STAGING_DIR_HOST)/bin/mksquashfs4 $(call mkfs_target_dir,$(1)) $@ \
|
|
||||||
-nopad -noappend -root-owned \
|
|
||||||
-comp $(SQUASHFSCOMP) $(SQUASHFSOPT)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_TARGET_ROOTFS_SECURITY_LABELS),y)
|
|
||||||
define Image/mkfs/squashfs
|
|
||||||
echo ". $(call mkfs_target_dir,$(1))/etc/selinux/config" > $@.fakeroot-script
|
|
||||||
echo "$(STAGING_DIR_HOST)/bin/setfiles -r" \
|
|
||||||
"$(call mkfs_target_dir,$(1))" \
|
|
||||||
"$(call mkfs_target_dir,$(1))/etc/selinux/\$${SELINUXTYPE}/contexts/files/file_contexts " \
|
|
||||||
"$(call mkfs_target_dir,$(1))" >> $@.fakeroot-script
|
|
||||||
echo "$(Image/mkfs/squashfs-common)" >> $@.fakeroot-script
|
|
||||||
chmod +x $@.fakeroot-script
|
|
||||||
$(FAKEROOT) "$@.fakeroot-script"
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define Image/mkfs/squashfs
|
|
||||||
$(call Image/mkfs/squashfs-common,$(1))
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Image/mkfs/ubifs
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkfs.ubifs \
|
|
||||||
$(UBIFS_OPTS) $(call param_unmangle,$(call param_get,fs,$(1))) \
|
|
||||||
$(if $(CONFIG_TARGET_UBIFS_FREE_SPACE_FIXUP),--space-fixup) \
|
|
||||||
$(if $(CONFIG_TARGET_UBIFS_COMPRESSION_NONE),--compr=none) \
|
|
||||||
$(if $(CONFIG_TARGET_UBIFS_COMPRESSION_LZO),--compr=lzo) \
|
|
||||||
$(if $(CONFIG_TARGET_UBIFS_COMPRESSION_ZLIB),--compr=zlib) \
|
|
||||||
$(if $(shell echo $(CONFIG_TARGET_UBIFS_JOURNAL_SIZE)),--jrn-size=$(CONFIG_TARGET_UBIFS_JOURNAL_SIZE)) \
|
|
||||||
--squash-uids \
|
|
||||||
-o $@ -d $(call mkfs_target_dir,$(1))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/mkfs/ext4
|
|
||||||
$(STAGING_DIR_HOST)/bin/make_ext4fs -L rootfs \
|
|
||||||
-l $(ROOTFS_PARTSIZE) -b $(CONFIG_TARGET_EXT4_BLOCKSIZE) \
|
|
||||||
$(if $(CONFIG_TARGET_EXT4_RESERVED_PCT),-m $(CONFIG_TARGET_EXT4_RESERVED_PCT)) \
|
|
||||||
$(if $(CONFIG_TARGET_EXT4_JOURNAL),,-J) \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),-T $(SOURCE_DATE_EPOCH)) \
|
|
||||||
$@ $(call mkfs_target_dir,$(1))/
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/Manifest
|
|
||||||
$(if $(CONFIG_USE_APK), \
|
|
||||||
$(call apk,$(TARGET_DIR_ORIG)) list --quiet --manifest --no-network | sort | sed 's/ / - /' > \
|
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest, \
|
|
||||||
$(call opkg,$(TARGET_DIR_ORIG)) list-installed > \
|
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest \
|
|
||||||
)
|
|
||||||
ifneq ($(CONFIG_JSON_CYCLONEDX_SBOM),)
|
|
||||||
$(SCRIPT_DIR)/package-metadata.pl imgcyclonedxsbom \
|
|
||||||
$(if $(IB),$(TOPDIR)/.packageinfo, $(TMP_DIR)/.packageinfo) \
|
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest > \
|
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).bom.cdx.json
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/gzip-ext4-padded-squashfs
|
|
||||||
|
|
||||||
define Image/Build/squashfs
|
|
||||||
$(call Image/pad-root-squashfs)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
|
|
||||||
define Image/Build/gzip/ext4
|
|
||||||
$(call Image/Build/gzip,ext4)
|
|
||||||
endef
|
|
||||||
define Image/Build/gzip/squashfs
|
|
||||||
$(call Image/Build/gzip,squashfs)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef CONFIG_TARGET_ROOTFS_TARGZ
|
|
||||||
define Image/Build/targz
|
|
||||||
$(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
|
|
||||||
-C $(TARGET_DIR)/ . | gzip -9n > $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_TARGET_ROOTFS_CPIOGZ
|
|
||||||
define Image/Build/cpiogz
|
|
||||||
( cd $(TARGET_DIR); find . | $(STAGING_DIR_HOST)/bin/cpio -o -H newc -R 0:0 | gzip -9n >$(BIN_DIR)/$(IMG_ROOTFS).cpio.gz )
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
mkfs_packages = $(filter-out @%,$(PACKAGES_$(call param_get,pkg,pkg=$(target_params))))
|
|
||||||
mkfs_packages_add = $(foreach pkg,$(filter-out -%,$(mkfs_packages)),$(pkg)$(call GetABISuffix,$(pkg)))
|
|
||||||
mkfs_packages_remove = $(foreach pkg,$(patsubst -%,%,$(filter -%,$(mkfs_packages))),$(pkg)$(call GetABISuffix,$(pkg)))
|
|
||||||
mkfs_cur_target_dir = $(call mkfs_target_dir,pkg=$(target_params))
|
|
||||||
|
|
||||||
opkg_target = \
|
|
||||||
$(call opkg,$(mkfs_cur_target_dir)) \
|
|
||||||
-f $(mkfs_cur_target_dir).conf
|
|
||||||
|
|
||||||
apk_target = $(call apk,$(mkfs_cur_target_dir)) --no-scripts
|
|
||||||
|
|
||||||
|
|
||||||
target-dir-%: FORCE
|
|
||||||
ifneq ($(CONFIG_USE_APK),)
|
|
||||||
rm -rf $(mkfs_cur_target_dir)
|
|
||||||
$(CP) $(TARGET_DIR_ORIG) $(mkfs_cur_target_dir)
|
|
||||||
mv $(mkfs_cur_target_dir)/etc/apk/repositories $(mkfs_cur_target_dir).repositories
|
|
||||||
$(if $(mkfs_packages_remove), \
|
|
||||||
$(apk_target) del $(mkfs_packages_remove))
|
|
||||||
$(if $(mkfs_packages_add), \
|
|
||||||
$(apk_target) add $(mkfs_packages_add))
|
|
||||||
mv $(mkfs_cur_target_dir).repositories $(mkfs_cur_target_dir)/etc/apk/repositories
|
|
||||||
else
|
|
||||||
rm -rf $(mkfs_cur_target_dir) $(mkfs_cur_target_dir).opkg
|
|
||||||
$(CP) $(TARGET_DIR_ORIG) $(mkfs_cur_target_dir)
|
|
||||||
-mv $(mkfs_cur_target_dir)/etc/opkg $(mkfs_cur_target_dir).opkg
|
|
||||||
echo 'src default file://$(PACKAGE_DIR_ALL)' > $(mkfs_cur_target_dir).conf
|
|
||||||
$(if $(mkfs_packages_remove), \
|
|
||||||
-$(call opkg,$(mkfs_cur_target_dir)) remove \
|
|
||||||
$(mkfs_packages_remove))
|
|
||||||
$(if $(call opkg_package_files,$(mkfs_packages_add)), \
|
|
||||||
$(opkg_target) update && \
|
|
||||||
$(opkg_target) install \
|
|
||||||
$(call opkg_package_files,$(mkfs_packages_add)))
|
|
||||||
-$(CP) -T $(mkfs_cur_target_dir).opkg/ $(mkfs_cur_target_dir)/etc/opkg/
|
|
||||||
rm -rf $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir).conf
|
|
||||||
endif
|
|
||||||
$(call prepare_rootfs,$(mkfs_cur_target_dir),$(TOPDIR)/files)
|
|
||||||
|
|
||||||
$(KDIR)/root.%: kernel_prepare
|
|
||||||
$(call Image/mkfs/$(word 1,$(target_params)),$(target_params))
|
|
||||||
|
|
||||||
define Device/InitProfile
|
|
||||||
PROFILES := $(PROFILE)
|
|
||||||
DEVICE_TITLE = $$(DEVICE_VENDOR) $$(DEVICE_MODEL)$$(if $$(DEVICE_VARIANT), $$(DEVICE_VARIANT))
|
|
||||||
DEVICE_ALT0_TITLE = $$(DEVICE_ALT0_VENDOR) $$(DEVICE_ALT0_MODEL)$$(if $$(DEVICE_ALT0_VARIANT), $$(DEVICE_ALT0_VARIANT))
|
|
||||||
DEVICE_ALT1_TITLE = $$(DEVICE_ALT1_VENDOR) $$(DEVICE_ALT1_MODEL)$$(if $$(DEVICE_ALT1_VARIANT), $$(DEVICE_ALT1_VARIANT))
|
|
||||||
DEVICE_ALT2_TITLE = $$(DEVICE_ALT2_VENDOR) $$(DEVICE_ALT2_MODEL)$$(if $$(DEVICE_ALT2_VARIANT), $$(DEVICE_ALT2_VARIANT))
|
|
||||||
DEVICE_ALT3_TITLE = $$(DEVICE_ALT3_VENDOR) $$(DEVICE_ALT3_MODEL)$$(if $$(DEVICE_ALT3_VARIANT), $$(DEVICE_ALT3_VARIANT))
|
|
||||||
DEVICE_ALT4_TITLE = $$(DEVICE_ALT4_VENDOR) $$(DEVICE_ALT4_MODEL)$$(if $$(DEVICE_ALT4_VARIANT), $$(DEVICE_ALT4_VARIANT))
|
|
||||||
DEVICE_ALT5_TITLE = $$(DEVICE_ALT5_VENDOR) $$(DEVICE_ALT5_MODEL)$$(if $$(DEVICE_ALT5_VARIANT), $$(DEVICE_ALT5_VARIANT))
|
|
||||||
DEVICE_VENDOR :=
|
|
||||||
DEVICE_MODEL :=
|
|
||||||
DEVICE_VARIANT :=
|
|
||||||
DEVICE_ALT0_VENDOR :=
|
|
||||||
DEVICE_ALT0_MODEL :=
|
|
||||||
DEVICE_ALT0_VARIANT :=
|
|
||||||
DEVICE_ALT1_VENDOR :=
|
|
||||||
DEVICE_ALT1_MODEL :=
|
|
||||||
DEVICE_ALT1_VARIANT :=
|
|
||||||
DEVICE_ALT2_VENDOR :=
|
|
||||||
DEVICE_ALT2_MODEL :=
|
|
||||||
DEVICE_ALT2_VARIANT :=
|
|
||||||
DEVICE_ALT3_VENDOR :=
|
|
||||||
DEVICE_ALT3_MODEL :=
|
|
||||||
DEVICE_ALT3_VARIANT :=
|
|
||||||
DEVICE_ALT4_VENDOR :=
|
|
||||||
DEVICE_ALT4_MODEL :=
|
|
||||||
DEVICE_ALT4_VARIANT :=
|
|
||||||
DEVICE_ALT5_VENDOR :=
|
|
||||||
DEVICE_ALT5_MODEL :=
|
|
||||||
DEVICE_ALT5_VARIANT :=
|
|
||||||
DEVICE_PACKAGES :=
|
|
||||||
DEVICE_DESCRIPTION = Build firmware images for $$(DEVICE_TITLE)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Init
|
|
||||||
DEVICE_NAME := $(1)
|
|
||||||
KERNEL:=
|
|
||||||
KERNEL_INITRAMFS = $$(KERNEL)
|
|
||||||
CMDLINE:=
|
|
||||||
|
|
||||||
IMAGES :=
|
|
||||||
ARTIFACTS :=
|
|
||||||
DEVICE_IMG_PREFIX := $(IMG_PREFIX)-$(1)
|
|
||||||
DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1)-$$(2)
|
|
||||||
FACTORY_IMG_NAME :=
|
|
||||||
IMAGE_SIZE :=
|
|
||||||
NAND_SIZE :=
|
|
||||||
KERNEL_PREFIX = $$(DEVICE_IMG_PREFIX)
|
|
||||||
KERNEL_SUFFIX := -kernel.bin
|
|
||||||
KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
|
|
||||||
KERNEL_IMAGE = $$(KERNEL_PREFIX)$$(KERNEL_SUFFIX)
|
|
||||||
KERNEL_INITRAMFS_PREFIX = $$(DEVICE_IMG_PREFIX)-initramfs
|
|
||||||
KERNEL_INITRAMFS_IMAGE = $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_INITRAMFS_SUFFIX)
|
|
||||||
KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
|
|
||||||
KERNEL_INSTALL :=
|
|
||||||
KERNEL_NAME := vmlinux
|
|
||||||
KERNEL_DEPENDS :=
|
|
||||||
KERNEL_SIZE :=
|
|
||||||
|
|
||||||
UBOOTENV_IN_UBI :=
|
|
||||||
KERNEL_IN_UBI :=
|
|
||||||
BLOCKSIZE :=
|
|
||||||
PAGESIZE :=
|
|
||||||
SUBPAGESIZE :=
|
|
||||||
VID_HDR_OFFSET :=
|
|
||||||
UBINIZE_OPTS :=
|
|
||||||
UBINIZE_PARTS :=
|
|
||||||
MKUBIFS_OPTS :=
|
|
||||||
|
|
||||||
FS_OPTIONS/ubifs = $$(MKUBIFS_OPTS)
|
|
||||||
|
|
||||||
DEVICE_DTS :=
|
|
||||||
DEVICE_DTS_CONFIG :=
|
|
||||||
DEVICE_DTS_DELIMITER :=
|
|
||||||
DEVICE_DTS_DIR :=
|
|
||||||
DEVICE_DTS_LOADADDR :=
|
|
||||||
DEVICE_DTS_OVERLAY :=
|
|
||||||
DEVICE_FDT_NUM :=
|
|
||||||
DEVICE_DTC_FLAGS :=
|
|
||||||
DEVICE_DTCO_FLAGS :=
|
|
||||||
SOC :=
|
|
||||||
|
|
||||||
BOARD_NAME :=
|
|
||||||
UIMAGE_MAGIC :=
|
|
||||||
UIMAGE_NAME :=
|
|
||||||
UIMAGE_TIME :=
|
|
||||||
DEVICE_COMPAT_VERSION := 1.0
|
|
||||||
DEVICE_COMPAT_MESSAGE :=
|
|
||||||
SUPPORTED_DEVICES := $(subst _,$(comma),$(1))
|
|
||||||
IMAGE_METADATA :=
|
|
||||||
|
|
||||||
FILESYSTEMS := $(TARGET_FILESYSTEMS)
|
|
||||||
|
|
||||||
UBOOT_PATH := $(STAGING_DIR_IMAGE)/uboot-$(1)
|
|
||||||
|
|
||||||
BROKEN :=
|
|
||||||
DEFAULT :=
|
|
||||||
endef
|
|
||||||
|
|
||||||
DEFAULT_DEVICE_VARS := \
|
|
||||||
DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE KERNEL_SIZE \
|
|
||||||
CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI BLOCKSIZE PAGESIZE SUBPAGESIZE \
|
|
||||||
VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTC_FLAGS \
|
|
||||||
DEVICE_DTCO_FLAGS DEVICE_DTS DEVICE_DTS_CONFIG DEVICE_DTS_DELIMITER \
|
|
||||||
DEVICE_DTS_DIR DEVICE_DTS_OVERLAY DEVICE_DTS_LOADADDR \
|
|
||||||
DEVICE_FDT_NUM DEVICE_IMG_PREFIX SOC BOARD_NAME UIMAGE_MAGIC UIMAGE_NAME \
|
|
||||||
UIMAGE_TIME SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \
|
|
||||||
UBOOT_PATH IMAGE_SIZE NAND_SIZE \
|
|
||||||
FACTORY_IMG_NAME FACTORY_SIZE \
|
|
||||||
DEVICE_PACKAGES DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \
|
|
||||||
DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \
|
|
||||||
DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \
|
|
||||||
DEVICE_ALT1_VENDOR DEVICE_ALT1_MODEL DEVICE_ALT1_VARIANT \
|
|
||||||
DEVICE_ALT2_VENDOR DEVICE_ALT2_MODEL DEVICE_ALT2_VARIANT \
|
|
||||||
DEVICE_ALT3_VENDOR DEVICE_ALT3_MODEL DEVICE_ALT3_VARIANT \
|
|
||||||
DEVICE_ALT4_VENDOR DEVICE_ALT4_MODEL DEVICE_ALT4_VARIANT \
|
|
||||||
DEVICE_ALT5_VENDOR DEVICE_ALT5_MODEL DEVICE_ALT5_VARIANT
|
|
||||||
|
|
||||||
define Device/ExportVar
|
|
||||||
$(1) : $(2):=$$($(2))
|
|
||||||
|
|
||||||
endef
|
|
||||||
define Device/Export
|
|
||||||
$(foreach var,$(DEVICE_VARS) $(DEFAULT_DEVICE_VARS),$(call Device/ExportVar,$(1),$(var)))
|
|
||||||
$(1) : FILESYSTEM:=$(2)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef IB
|
|
||||||
DEVICE_CHECK_PROFILE = $(filter $(1),DEVICE_$(PROFILE) $(PROFILE))
|
|
||||||
else
|
|
||||||
DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(if $(CONFIG_TARGET_MULTI_PROFILE),DEVICE_)$(call target_conf,$(BOARD)_$(SUBTARGET))_$(1))
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEVICE_EXTRA_PACKAGES = $(call qstrip,$(CONFIG_TARGET_DEVICE_PACKAGES_$(call target_conf,$(BOARD)_$(SUBTARGET))_DEVICE_$(1)))
|
|
||||||
|
|
||||||
define merge_packages
|
|
||||||
$(1) :=
|
|
||||||
$(foreach pkg,$(2),
|
|
||||||
$(1) := $$(strip $$(filter-out -$$(patsubst -%,%,$(pkg)) $$(patsubst -%,%,$(pkg)),$$($(1))) $(pkg))
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Check/Common
|
|
||||||
_PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile))))
|
|
||||||
DEVICE_PACKAGES += $$(call extra_packages,$$(DEVICE_PACKAGES))
|
|
||||||
ifdef TARGET_PER_DEVICE_ROOTFS
|
|
||||||
$$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1))))
|
|
||||||
ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(_PACKAGES)))
|
|
||||||
PACKAGES_$$(ROOTFS_ID/$(1)) := $$(_PACKAGES)
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Check
|
|
||||||
$(Device/Check/Common)
|
|
||||||
KDIR_KERNEL_IMAGE := $(KDIR)/$(1)$$(KERNEL_SUFFIX)
|
|
||||||
_TARGET := $$(if $$(_PROFILE_SET),install-images,install-disabled)
|
|
||||||
ifndef IB
|
|
||||||
_COMPILE_TARGET := $$(if $(CONFIG_IB)$$(_PROFILE_SET),compile,compile-disabled)
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef IB
|
|
||||||
define Device/Build/initramfs
|
|
||||||
$(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
|
|
||||||
$$(_TARGET): $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE) \
|
|
||||||
$$(if $$(CONFIG_JSON_OVERVIEW_IMAGE_INFO), $(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,))
|
|
||||||
|
|
||||||
$(KDIR)/$$(KERNEL_INITRAMFS_NAME):: image_prepare
|
|
||||||
ifdef TARGET_PER_DEVICE_ROOTFS
|
|
||||||
$(KDIR)/$$(KERNEL_INITRAMFS_NAME).$$(ROOTFS_ID/$(1)):: image_prepare target-dir-$$(ROOTFS_ID/$(1))
|
|
||||||
$(call Kernel/CompileImage/Initramfs,$(KDIR)/target-dir-$$(ROOTFS_ID/$(1)),.$$(ROOTFS_ID/$(1)))
|
|
||||||
endif
|
|
||||||
$(1)-initramfs-images: $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE))
|
|
||||||
$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
|
|
||||||
cp $$^ $$@
|
|
||||||
|
|
||||||
$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME)$$(strip \
|
|
||||||
$(if $(TARGET_PER_DEVICE_ROOTFS),.$$(ROOTFS_ID/$(1))) \
|
|
||||||
) $(CURDIR)/Makefile $$(KERNEL_DEPENDS) image_prepare
|
|
||||||
@rm -f $$@
|
|
||||||
$$(call concat_cmd,$$(KERNEL_INITRAMFS))
|
|
||||||
|
|
||||||
$(call Device/Export,$(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,$(1))
|
|
||||||
|
|
||||||
$(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json: $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE)
|
|
||||||
@mkdir -p $$(shell dirname $$@)
|
|
||||||
DEVICE_ID="$(1)" \
|
|
||||||
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
|
|
||||||
FILE_NAME="$$(notdir $$^)" \
|
|
||||||
FILE_DIR="$(KDIR)/tmp" \
|
|
||||||
FILE_TYPE="kernel" \
|
|
||||||
FILE_FILESYSTEM="initramfs" \
|
|
||||||
DEVICE_IMG_PREFIX="$$(DEVICE_IMG_PREFIX)" \
|
|
||||||
DEVICE_VENDOR="$$(DEVICE_VENDOR)" \
|
|
||||||
DEVICE_MODEL="$$(DEVICE_MODEL)" \
|
|
||||||
DEVICE_VARIANT="$$(DEVICE_VARIANT)" \
|
|
||||||
DEVICE_ALT0_VENDOR="$$(DEVICE_ALT0_VENDOR)" \
|
|
||||||
DEVICE_ALT0_MODEL="$$(DEVICE_ALT0_MODEL)" \
|
|
||||||
DEVICE_ALT0_VARIANT="$$(DEVICE_ALT0_VARIANT)" \
|
|
||||||
DEVICE_ALT1_VENDOR="$$(DEVICE_ALT1_VENDOR)" \
|
|
||||||
DEVICE_ALT1_MODEL="$$(DEVICE_ALT1_MODEL)" \
|
|
||||||
DEVICE_ALT1_VARIANT="$$(DEVICE_ALT1_VARIANT)" \
|
|
||||||
DEVICE_ALT2_VENDOR="$$(DEVICE_ALT2_VENDOR)" \
|
|
||||||
DEVICE_ALT2_MODEL="$$(DEVICE_ALT2_MODEL)" \
|
|
||||||
DEVICE_ALT2_VARIANT="$$(DEVICE_ALT2_VARIANT)" \
|
|
||||||
DEVICE_ALT3_VENDOR="$$(DEVICE_ALT3_VENDOR)" \
|
|
||||||
DEVICE_ALT3_MODEL="$$(DEVICE_ALT3_MODEL)" \
|
|
||||||
DEVICE_ALT3_VARIANT="$$(DEVICE_ALT3_VARIANT)" \
|
|
||||||
DEVICE_ALT4_VENDOR="$$(DEVICE_ALT4_VENDOR)" \
|
|
||||||
DEVICE_ALT4_MODEL="$$(DEVICE_ALT4_MODEL)" \
|
|
||||||
DEVICE_ALT4_VARIANT="$$(DEVICE_ALT4_VARIANT)" \
|
|
||||||
DEVICE_ALT5_VENDOR="$$(DEVICE_ALT5_VENDOR)" \
|
|
||||||
DEVICE_ALT5_MODEL="$$(DEVICE_ALT5_MODEL)" \
|
|
||||||
DEVICE_ALT5_VARIANT="$$(DEVICE_ALT5_VARIANT)" \
|
|
||||||
DEVICE_TITLE="$$(DEVICE_TITLE)" \
|
|
||||||
DEVICE_PACKAGES="$$(DEVICE_PACKAGES)" \
|
|
||||||
TARGET="$(BOARD)" \
|
|
||||||
SUBTARGET="$(SUBTARGET)" \
|
|
||||||
VERSION_NUMBER="$(VERSION_NUMBER)" \
|
|
||||||
VERSION_CODE="$(VERSION_CODE)" \
|
|
||||||
SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
|
|
||||||
$(TOPDIR)/scripts/json_add_image_info.py $$@
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Device/Build/compile
|
|
||||||
$$(_COMPILE_TARGET): $(KDIR)/$(1)
|
|
||||||
$(eval $(call Device/Export,$(KDIR)/$(1)))
|
|
||||||
$(KDIR)/$(1): FORCE
|
|
||||||
rm -f $(KDIR)/$(1)
|
|
||||||
$$(call concat_cmd,$(COMPILE/$(1)))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef IB
|
|
||||||
define Device/Build/dtb
|
|
||||||
ifndef BUILD_DTS_$(1)
|
|
||||||
BUILD_DTS_$(1) := 1
|
|
||||||
$(KDIR)/image-$(1).dtb: FORCE
|
|
||||||
$(call Image/BuildDTB,$(strip $(2))/$(strip $(3)).dts,$$@)
|
|
||||||
|
|
||||||
compile-dtb: $(KDIR)/image-$(1).dtb
|
|
||||||
endif
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Build/dtbo
|
|
||||||
ifndef BUILD_DTSO_$(1)
|
|
||||||
BUILD_DTSO_$(1) := 1
|
|
||||||
$(KDIR)/image-$(1).dtbo: FORCE
|
|
||||||
$(call Image/BuildDTBO,$(strip $(2))/$(strip $(3)).dtso,$$@)
|
|
||||||
|
|
||||||
compile-dtb: $(KDIR)/image-$(1).dtbo
|
|
||||||
endif
|
|
||||||
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Device/Build/kernel
|
|
||||||
$$(eval $$(foreach dts,$$(DEVICE_DTS), \
|
|
||||||
$$(call Device/Build/dtb,$$(notdir $$(dts)), \
|
|
||||||
$$(if $$(DEVICE_DTS_DIR),$$(DEVICE_DTS_DIR),$$(DTS_DIR)), \
|
|
||||||
$$(dts) \
|
|
||||||
) \
|
|
||||||
))
|
|
||||||
$$(eval $$(foreach dtso,$$(DEVICE_DTS_OVERLAY), \
|
|
||||||
$$(call Device/Build/dtbo,$$(notdir $$(dtso)), \
|
|
||||||
$$(if $$(DEVICE_DTS_DIR),$$(DEVICE_DTS_DIR),$$(DTS_DIR)), \
|
|
||||||
$$(dtso) \
|
|
||||||
) \
|
|
||||||
))
|
|
||||||
|
|
||||||
$(KDIR)/$$(KERNEL_NAME):: image_prepare
|
|
||||||
$$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE))
|
|
||||||
$(call Device/Export,$$(KDIR_KERNEL_IMAGE),$(1))
|
|
||||||
$(BIN_DIR)/$$(KERNEL_IMAGE): $$(KDIR_KERNEL_IMAGE)
|
|
||||||
cp $$^ $$@
|
|
||||||
ifndef IB
|
|
||||||
ifdef CONFIG_IB
|
|
||||||
install: $$(KDIR_KERNEL_IMAGE)
|
|
||||||
endif
|
|
||||||
$$(KDIR_KERNEL_IMAGE): $(KDIR)/$$(KERNEL_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS) image_prepare
|
|
||||||
@rm -f $$@
|
|
||||||
$$(call concat_cmd,$$(KERNEL))
|
|
||||||
$$(if $$(KERNEL_SIZE),$$(call Build/check-size,$$(KERNEL_SIZE)))
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Build/image
|
|
||||||
GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz))
|
|
||||||
$$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
|
|
||||||
$(BUILD_DIR)/json_info_files/$(call DEVICE_IMG_NAME,$(1),$(2)).json, \
|
|
||||||
$(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX))
|
|
||||||
$(eval $(call Device/Export,$(KDIR)/tmp/$(call DEVICE_IMG_NAME,$(1),$(2)),$(1)))
|
|
||||||
$(3)-images: $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX)
|
|
||||||
|
|
||||||
ROOTFS/$(1)/$(3) := \
|
|
||||||
$(KDIR)/root.$(1)$$(strip \
|
|
||||||
$$(if $$(FS_OPTIONS/$(1)),+fs=$$(call param_mangle,$$(FS_OPTIONS/$(1)))) \
|
|
||||||
)$$(strip \
|
|
||||||
$(if $(TARGET_PER_DEVICE_ROOTFS),+pkg=$$(ROOTFS_ID/$(3))) \
|
|
||||||
)
|
|
||||||
ifndef IB
|
|
||||||
$$(ROOTFS/$(1)/$(3)): $(if $(TARGET_PER_DEVICE_ROOTFS),target-dir-$$(ROOTFS_ID/$(3)))
|
|
||||||
endif
|
|
||||||
$(KDIR)/tmp/$(call DEVICE_IMG_NAME,$(1),$(2)): $$(KDIR_KERNEL_IMAGE) $$(ROOTFS/$(1)/$(3)) $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(if $(IB),,$(3)-initramfs-images))
|
|
||||||
@rm -f $$@
|
|
||||||
[ -f $$(word 1,$$^) -a -f $$(word 2,$$^) ]
|
|
||||||
$$(call concat_cmd,$(if $(IMAGE/$(2)/$(1)),$(IMAGE/$(2)/$(1)),$(IMAGE/$(2))))
|
|
||||||
|
|
||||||
.IGNORE: $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))
|
|
||||||
|
|
||||||
$(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2)).gz: $(KDIR)/tmp/$(call DEVICE_IMG_NAME,$(1),$(2))
|
|
||||||
gzip -c -9n $$^ > $$@
|
|
||||||
|
|
||||||
$(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2)): $(KDIR)/tmp/$(call DEVICE_IMG_NAME,$(1),$(2))
|
|
||||||
cp $$^ $$@
|
|
||||||
|
|
||||||
$(BUILD_DIR)/json_info_files/$(call DEVICE_IMG_NAME,$(1),$(2)).json: $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX)
|
|
||||||
@mkdir -p $$(shell dirname $$@)
|
|
||||||
DEVICE_ID="$(DEVICE_NAME)" \
|
|
||||||
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
|
|
||||||
FILE_NAME="$(DEVICE_IMG_NAME)" \
|
|
||||||
FILE_DIR="$(KDIR)/tmp" \
|
|
||||||
FILE_TYPE=$(word 1,$(subst ., ,$(2))) \
|
|
||||||
FILE_FILESYSTEM="$(1)" \
|
|
||||||
DEVICE_IMG_PREFIX="$(DEVICE_IMG_PREFIX)" \
|
|
||||||
DEVICE_VENDOR="$(DEVICE_VENDOR)" \
|
|
||||||
DEVICE_MODEL="$(DEVICE_MODEL)" \
|
|
||||||
DEVICE_VARIANT="$(DEVICE_VARIANT)" \
|
|
||||||
DEVICE_ALT0_VENDOR="$(DEVICE_ALT0_VENDOR)" \
|
|
||||||
DEVICE_ALT0_MODEL="$(DEVICE_ALT0_MODEL)" \
|
|
||||||
DEVICE_ALT0_VARIANT="$(DEVICE_ALT0_VARIANT)" \
|
|
||||||
DEVICE_ALT1_VENDOR="$(DEVICE_ALT1_VENDOR)" \
|
|
||||||
DEVICE_ALT1_MODEL="$(DEVICE_ALT1_MODEL)" \
|
|
||||||
DEVICE_ALT1_VARIANT="$(DEVICE_ALT1_VARIANT)" \
|
|
||||||
DEVICE_ALT2_VENDOR="$(DEVICE_ALT2_VENDOR)" \
|
|
||||||
DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \
|
|
||||||
DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
|
|
||||||
DEVICE_ALT3_VENDOR="$(DEVICE_ALT3_VENDOR)" \
|
|
||||||
DEVICE_ALT3_MODEL="$(DEVICE_ALT3_MODEL)" \
|
|
||||||
DEVICE_ALT3_VARIANT="$(DEVICE_ALT3_VARIANT)" \
|
|
||||||
DEVICE_ALT4_VENDOR="$(DEVICE_ALT4_VENDOR)" \
|
|
||||||
DEVICE_ALT4_MODEL="$(DEVICE_ALT4_MODEL)" \
|
|
||||||
DEVICE_ALT4_VARIANT="$(DEVICE_ALT4_VARIANT)" \
|
|
||||||
DEVICE_ALT5_VENDOR="$(DEVICE_ALT5_VENDOR)" \
|
|
||||||
DEVICE_ALT5_MODEL="$(DEVICE_ALT5_MODEL)" \
|
|
||||||
DEVICE_ALT5_VARIANT="$(DEVICE_ALT5_VARIANT)" \
|
|
||||||
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
|
||||||
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
|
||||||
TARGET="$(BOARD)" \
|
|
||||||
SUBTARGET="$(SUBTARGET)" \
|
|
||||||
VERSION_NUMBER="$(VERSION_NUMBER)" \
|
|
||||||
VERSION_CODE="$(VERSION_CODE)" \
|
|
||||||
SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \
|
|
||||||
$(TOPDIR)/scripts/json_add_image_info.py $$@
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Build/artifact
|
|
||||||
$$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
|
|
||||||
$(BUILD_DIR)/json_info_files/$(DEVICE_IMG_PREFIX)-$(1).json, \
|
|
||||||
$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1))
|
|
||||||
$(eval $(call Device/Export,$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1)))
|
|
||||||
$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1): $$(KDIR_KERNEL_IMAGE) $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(if $(IB),,$(2)-initramfs-images)) $(2)-images
|
|
||||||
@rm -f $$@
|
|
||||||
$$(call concat_cmd,$(ARTIFACT/$(1)))
|
|
||||||
|
|
||||||
.IGNORE: $(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)
|
|
||||||
|
|
||||||
$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1): $(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1)
|
|
||||||
cp $$^ $$@
|
|
||||||
|
|
||||||
$(BUILD_DIR)/json_info_files/$(DEVICE_IMG_PREFIX)-$(1).json: $(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)
|
|
||||||
@mkdir -p $$(shell dirname $$@)
|
|
||||||
DEVICE_ID="$(DEVICE_NAME)" \
|
|
||||||
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
|
|
||||||
FILE_NAME="$(DEVICE_IMG_PREFIX)-$(1)" \
|
|
||||||
FILE_DIR="$(KDIR)/tmp" \
|
|
||||||
FILE_TYPE="$(1)" \
|
|
||||||
DEVICE_IMG_PREFIX="$(DEVICE_IMG_PREFIX)" \
|
|
||||||
DEVICE_VENDOR="$(DEVICE_VENDOR)" \
|
|
||||||
DEVICE_MODEL="$(DEVICE_MODEL)" \
|
|
||||||
DEVICE_VARIANT="$(DEVICE_VARIANT)" \
|
|
||||||
DEVICE_ALT0_VENDOR="$(DEVICE_ALT0_VENDOR)" \
|
|
||||||
DEVICE_ALT0_MODEL="$(DEVICE_ALT0_MODEL)" \
|
|
||||||
DEVICE_ALT0_VARIANT="$(DEVICE_ALT0_VARIANT)" \
|
|
||||||
DEVICE_ALT1_VENDOR="$(DEVICE_ALT1_VENDOR)" \
|
|
||||||
DEVICE_ALT1_MODEL="$(DEVICE_ALT1_MODEL)" \
|
|
||||||
DEVICE_ALT1_VARIANT="$(DEVICE_ALT1_VARIANT)" \
|
|
||||||
DEVICE_ALT2_VENDOR="$(DEVICE_ALT2_VENDOR)" \
|
|
||||||
DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \
|
|
||||||
DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
|
|
||||||
DEVICE_ALT3_VENDOR="$(DEVICE_ALT3_VENDOR)" \
|
|
||||||
DEVICE_ALT3_MODEL="$(DEVICE_ALT3_MODEL)" \
|
|
||||||
DEVICE_ALT3_VARIANT="$(DEVICE_ALT3_VARIANT)" \
|
|
||||||
DEVICE_ALT4_VENDOR="$(DEVICE_ALT4_VENDOR)" \
|
|
||||||
DEVICE_ALT4_MODEL="$(DEVICE_ALT4_MODEL)" \
|
|
||||||
DEVICE_ALT4_VARIANT="$(DEVICE_ALT4_VARIANT)" \
|
|
||||||
DEVICE_ALT5_VENDOR="$(DEVICE_ALT5_VENDOR)" \
|
|
||||||
DEVICE_ALT5_MODEL="$(DEVICE_ALT5_MODEL)" \
|
|
||||||
DEVICE_ALT5_VARIANT="$(DEVICE_ALT5_VARIANT)" \
|
|
||||||
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
|
||||||
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
|
||||||
TARGET="$(BOARD)" \
|
|
||||||
SUBTARGET="$(SUBTARGET)" \
|
|
||||||
VERSION_NUMBER="$(VERSION_NUMBER)" \
|
|
||||||
VERSION_CODE="$(VERSION_CODE)" \
|
|
||||||
SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \
|
|
||||||
$(TOPDIR)/scripts/json_add_image_info.py $$@
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Build
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$$(eval $$(call Device/Build/initramfs,$(1))))
|
|
||||||
$(call Device/Build/kernel,$(1))
|
|
||||||
|
|
||||||
$$(eval $$(foreach compile,$$(COMPILE), \
|
|
||||||
$$(call Device/Build/compile,$$(compile),$(1))))
|
|
||||||
|
|
||||||
$$(eval $$(foreach image,$$(IMAGES), \
|
|
||||||
$$(foreach fs,$$(filter $(TARGET_FILESYSTEMS),$$(FILESYSTEMS)), \
|
|
||||||
$$(call Device/Build/image,$$(fs),$$(image),$(1)))))
|
|
||||||
|
|
||||||
$$(eval $$(foreach artifact,$$(ARTIFACTS), \
|
|
||||||
$$(call Device/Build/artifact,$$(artifact),$(1))))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/DumpInfo
|
|
||||||
Target-Profile: DEVICE_$(1)
|
|
||||||
Target-Profile-Name: $(DEVICE_DISPLAY)
|
|
||||||
Target-Profile-Packages: $(DEVICE_PACKAGES)
|
|
||||||
Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0)
|
|
||||||
Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES)
|
|
||||||
$(if $(BROKEN),Target-Profile-Broken: $(BROKEN))
|
|
||||||
$(if $(DEFAULT),Target-Profile-Default: $(DEFAULT))
|
|
||||||
Target-Profile-Description:
|
|
||||||
$(DEVICE_DESCRIPTION)
|
|
||||||
$(if $(strip $(DEVICE_ALT0_TITLE)),Alternative device titles:
|
|
||||||
- $(DEVICE_ALT0_TITLE))
|
|
||||||
$(if $(strip $(DEVICE_ALT1_TITLE)),- $(DEVICE_ALT1_TITLE))
|
|
||||||
$(if $(strip $(DEVICE_ALT2_TITLE)),- $(DEVICE_ALT2_TITLE))
|
|
||||||
$(if $(strip $(DEVICE_ALT3_TITLE)),- $(DEVICE_ALT3_TITLE))
|
|
||||||
$(if $(strip $(DEVICE_ALT4_TITLE)),- $(DEVICE_ALT4_TITLE))
|
|
||||||
$(if $(strip $(DEVICE_ALT5_TITLE)),- $(DEVICE_ALT5_TITLE))
|
|
||||||
@@
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device/Dump
|
|
||||||
ifneq ($$(strip $$(DEVICE_ALT0_TITLE)),)
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_ALT0_TITLE) ($$(DEVICE_TITLE))
|
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
|
||||||
endif
|
|
||||||
ifneq ($$(strip $$(DEVICE_ALT1_TITLE)),)
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_ALT1_TITLE) ($$(DEVICE_TITLE))
|
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
|
||||||
endif
|
|
||||||
ifneq ($$(strip $$(DEVICE_ALT2_TITLE)),)
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_ALT2_TITLE) ($$(DEVICE_TITLE))
|
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
|
||||||
endif
|
|
||||||
ifneq ($$(strip $$(DEVICE_ALT3_TITLE)),)
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_ALT3_TITLE) ($$(DEVICE_TITLE))
|
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
|
||||||
endif
|
|
||||||
ifneq ($$(strip $$(DEVICE_ALT4_TITLE)),)
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_ALT4_TITLE) ($$(DEVICE_TITLE))
|
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
|
||||||
endif
|
|
||||||
ifneq ($$(strip $$(DEVICE_ALT5_TITLE)),)
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_ALT5_TITLE) ($$(DEVICE_TITLE))
|
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
|
||||||
endif
|
|
||||||
DEVICE_DISPLAY = $$(DEVICE_TITLE)
|
|
||||||
$$(eval $$(if $$(DEVICE_TITLE),$$(info $$(call Device/DumpInfo,$(1)))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Device
|
|
||||||
$(call Device/InitProfile,$(1))
|
|
||||||
$(call Device/Init,$(1))
|
|
||||||
$(call Device/Default,$(1))
|
|
||||||
$(call Device/$(1),$(1))
|
|
||||||
$(call Device/Check,$(1))
|
|
||||||
$(call Device/$(if $(DUMP),Dump,Build),$(1))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define BuildImage
|
|
||||||
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
all: dumpinfo
|
|
||||||
dumpinfo: FORCE
|
|
||||||
@true
|
|
||||||
endif
|
|
||||||
|
|
||||||
download:
|
|
||||||
prepare:
|
|
||||||
compile:
|
|
||||||
compile-dtb:
|
|
||||||
clean:
|
|
||||||
image_prepare:
|
|
||||||
|
|
||||||
ifeq ($(IB),)
|
|
||||||
.PHONY: download prepare compile compile-dtb clean image_prepare kernel_prepare install install-images
|
|
||||||
compile:
|
|
||||||
$(call Build/Compile)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(call Build/Clean)
|
|
||||||
|
|
||||||
compile-dtb:
|
|
||||||
image_prepare: compile compile-dtb
|
|
||||||
mkdir -p $(BIN_DIR) $(KDIR)/tmp
|
|
||||||
rm -rf $(BUILD_DIR)/json_info_files
|
|
||||||
$(call Image/Prepare)
|
|
||||||
|
|
||||||
else
|
|
||||||
image_prepare:
|
|
||||||
rm -rf $(KDIR)/tmp
|
|
||||||
mkdir -p $(BIN_DIR) $(KDIR)/tmp
|
|
||||||
endif
|
|
||||||
|
|
||||||
kernel_prepare: image_prepare
|
|
||||||
$(call Image/Build/targz)
|
|
||||||
$(call Image/Build/cpiogz)
|
|
||||||
$(call Image/BuildKernel)
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(if $(IB),,$(call Image/BuildKernel/Initramfs)))
|
|
||||||
$(call Image/InstallKernel)
|
|
||||||
|
|
||||||
$(foreach device,$(TARGET_DEVICES),$(call Device,$(device)))
|
|
||||||
|
|
||||||
install-images: kernel_prepare $(foreach fs,$(filter-out $(if $(UBIFS_OPTS),,ubifs),$(TARGET_FILESYSTEMS) $(fs-subtypes-y)),$(KDIR)/root.$(fs))
|
|
||||||
$(foreach fs,$(TARGET_FILESYSTEMS),
|
|
||||||
$(call Image/Build,$(fs))
|
|
||||||
)
|
|
||||||
|
|
||||||
install: install-images
|
|
||||||
$(call Image/Manifest)
|
|
||||||
|
|
||||||
endef
|
|
@ -1,2 +0,0 @@
|
|||||||
LINUX_VERSION-6.6 = .54
|
|
||||||
LINUX_KERNEL_HASH-6.6.54 = 5fae869d6a24055c16ffc2d92669e3fb2b258e34d36c850bb8cf9def417ecfa0
|
|
@ -1,187 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/prereq.mk
|
|
||||||
include $(INCLUDE_DIR)/depends.mk
|
|
||||||
|
|
||||||
ifneq ($(DUMP),1)
|
|
||||||
all: compile
|
|
||||||
endif
|
|
||||||
|
|
||||||
KERNEL_FILE_DEPENDS=$(GENERIC_BACKPORT_DIR) $(GENERIC_PATCH_DIR) $(GENERIC_HACK_DIR) $(PATCH_DIR) $(GENERIC_FILES_DIR) $(FILES_DIR)
|
|
||||||
STAMP_PREPARED=$(LINUX_DIR)/.prepared$(if $(QUILT)$(DUMP),,_$(shell $(call $(if $(CONFIG_AUTOREMOVE),find_md5_reproducible,find_md5),$(KERNEL_FILE_DEPENDS),)))
|
|
||||||
STAMP_CONFIGURED:=$(LINUX_DIR)/.configured
|
|
||||||
include $(INCLUDE_DIR)/download.mk
|
|
||||||
include $(INCLUDE_DIR)/quilt.mk
|
|
||||||
include $(INCLUDE_DIR)/kernel-defaults.mk
|
|
||||||
|
|
||||||
define Kernel/Prepare
|
|
||||||
$(call Kernel/Prepare/Default)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/Configure
|
|
||||||
$(call Kernel/Configure/Default)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/CompileModules
|
|
||||||
$(call Kernel/CompileModules/Default)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/CompileImage
|
|
||||||
$(call Kernel/CompileImage/Default)
|
|
||||||
$(call Kernel/CompileImage/Initramfs)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/Clean
|
|
||||||
$(call Kernel/Clean/Default)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Download/kernel
|
|
||||||
URL:=$(LINUX_SITE)
|
|
||||||
FILE:=$(LINUX_SOURCE)
|
|
||||||
HASH:=$(LINUX_KERNEL_HASH)
|
|
||||||
endef
|
|
||||||
|
|
||||||
KERNEL_GIT_OPTS:=
|
|
||||||
ifneq ($(strip $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY)),"")
|
|
||||||
KERNEL_GIT_OPTS+=--reference $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY)
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Download/git-kernel
|
|
||||||
URL:=$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI))
|
|
||||||
PROTO:=git
|
|
||||||
SOURCE_VERSION:=$(CONFIG_KERNEL_GIT_REF)
|
|
||||||
FILE:=$(LINUX_SOURCE)
|
|
||||||
SUBDIR:=linux-$(LINUX_VERSION)
|
|
||||||
OPTS:=$(KERNEL_GIT_OPTS)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef CONFIG_COLLECT_KERNEL_DEBUG
|
|
||||||
define Kernel/CollectDebug
|
|
||||||
rm -rf $(KERNEL_BUILD_DIR)/debug
|
|
||||||
mkdir -p $(KERNEL_BUILD_DIR)/debug/modules
|
|
||||||
$(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/debug/
|
|
||||||
-$(CP) \
|
|
||||||
$(STAGING_DIR_ROOT)/lib/modules/$(LINUX_VERSION)/*.ko \
|
|
||||||
$(KERNEL_BUILD_DIR)/debug/modules/
|
|
||||||
$(FIND) $(KERNEL_BUILD_DIR)/debug -type f | $(XARGS) $(KERNEL_CROSS)strip --only-keep-debug
|
|
||||||
$(TAR) c -C $(KERNEL_BUILD_DIR) debug \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
|
|
||||||
| zstd -T0 -f -o $(BIN_DIR)/kernel-debug.tar.zst
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(DUMP)$(filter prereq clean refresh update,$(MAKECMDGOALS)),)
|
|
||||||
ifneq ($(if $(QUILT),,$(CONFIG_AUTOREBUILD)),)
|
|
||||||
define Kernel/Autoclean
|
|
||||||
$(PKG_BUILD_DIR)/.dep_files: $(STAMP_PREPARED)
|
|
||||||
$(call rdep,$(KERNEL_FILE_DEPENDS),$(STAMP_PREPARED),$(PKG_BUILD_DIR)/.dep_files,-x "*/.dep_*")
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
define BuildKernel
|
|
||||||
$(if $(QUILT),$(Build/Quilt))
|
|
||||||
$(if $(LINUX_SITE),$(call Download,kernel))
|
|
||||||
$(if $(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),$(call Download,git-kernel))
|
|
||||||
|
|
||||||
.NOTPARALLEL:
|
|
||||||
|
|
||||||
$(Kernel/Autoclean)
|
|
||||||
$(STAMP_PREPARED): $(if $(LINUX_SITE),$(DL_DIR)/$(LINUX_SOURCE))
|
|
||||||
-rm -rf $(KERNEL_BUILD_DIR)
|
|
||||||
-mkdir -p $(KERNEL_BUILD_DIR)
|
|
||||||
$(Kernel/Prepare)
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(KERNEL_BUILD_DIR)/symtab.h: FORCE
|
|
||||||
rm -f $(KERNEL_BUILD_DIR)/symtab.h
|
|
||||||
touch $(KERNEL_BUILD_DIR)/symtab.h
|
|
||||||
+$(KERNEL_MAKE) vmlinux
|
|
||||||
find $(LINUX_DIR) $(STAGING_DIR_ROOT)/lib/modules -name \*.ko | \
|
|
||||||
xargs $(TARGET_CROSS)nm | \
|
|
||||||
awk '$$$$1 == "U" { print $$$$2 } ' | \
|
|
||||||
sort -u > $(KERNEL_BUILD_DIR)/mod_symtab.txt
|
|
||||||
$(TARGET_CROSS)nm -n $(LINUX_DIR)/vmlinux.o | awk '/^[0-9a-f]+ [rR] __ksymtab_/ {print substr($$$$3,11)}' > $(KERNEL_BUILD_DIR)/kernel_symtab.txt
|
|
||||||
grep -Ff $(KERNEL_BUILD_DIR)/mod_symtab.txt $(KERNEL_BUILD_DIR)/kernel_symtab.txt > $(KERNEL_BUILD_DIR)/sym_include.txt
|
|
||||||
grep -Fvf $(KERNEL_BUILD_DIR)/mod_symtab.txt $(KERNEL_BUILD_DIR)/kernel_symtab.txt > $(KERNEL_BUILD_DIR)/sym_exclude.txt
|
|
||||||
( \
|
|
||||||
echo '#define SYMTAB_KEEP \'; \
|
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
|
||||||
awk '{print "KEEP(*(___ksymtab+" $$$$1 ")) \\" }'; \
|
|
||||||
echo; \
|
|
||||||
echo '#define SYMTAB_KEEP_GPL \'; \
|
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
|
||||||
awk '{print "KEEP(*(___ksymtab_gpl+" $$$$1 ")) \\" }'; \
|
|
||||||
echo; \
|
|
||||||
echo '#define SYMTAB_DISCARD \'; \
|
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
|
||||||
awk '{print "*(___ksymtab+" $$$$1 ") \\" }'; \
|
|
||||||
echo; \
|
|
||||||
echo '#define SYMTAB_DISCARD_GPL \'; \
|
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
|
||||||
awk '{print "*(___ksymtab_gpl+" $$$$1 ") \\" }'; \
|
|
||||||
echo; \
|
|
||||||
) > $$@
|
|
||||||
|
|
||||||
$(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config FORCE
|
|
||||||
$(Kernel/Configure)
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(LINUX_DIR)/.modules: export STAGING_PREFIX=$$(STAGING_DIR_HOST)
|
|
||||||
$(LINUX_DIR)/.modules: export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig
|
|
||||||
$(LINUX_DIR)/.modules: export PKG_CONFIG_LIBDIR=$$(STAGING_DIR_HOST)/lib/pkgconfig
|
|
||||||
$(LINUX_DIR)/.modules: export FAIL_ON_UNCONFIGURED=1
|
|
||||||
$(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE
|
|
||||||
$(Kernel/CompileModules)
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(LINUX_DIR)/.image: export STAGING_PREFIX=$$(STAGING_DIR_HOST)
|
|
||||||
$(LINUX_DIR)/.image: export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig
|
|
||||||
$(LINUX_DIR)/.image: export PKG_CONFIG_LIBDIR=$$(STAGING_DIR_HOST)/lib/pkgconfig
|
|
||||||
$(LINUX_DIR)/.image: $(STAMP_CONFIGURED) $(if $(CONFIG_STRIP_KERNEL_EXPORTS),$(KERNEL_BUILD_DIR)/symtab.h) FORCE
|
|
||||||
$(Kernel/CompileImage)
|
|
||||||
$(Kernel/CollectDebug)
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
mostlyclean: FORCE
|
|
||||||
$(Kernel/Clean)
|
|
||||||
|
|
||||||
define BuildKernel
|
|
||||||
endef
|
|
||||||
|
|
||||||
download: $(if $(LINUX_SITE),$(DL_DIR)/$(LINUX_SOURCE))
|
|
||||||
prepare: $(STAMP_PREPARED)
|
|
||||||
compile: $(LINUX_DIR)/.modules
|
|
||||||
+$(MAKE) -C image compile TARGET_BUILD=
|
|
||||||
|
|
||||||
dtb: $(STAMP_CONFIGURED)
|
|
||||||
$(_SINGLE)$(KERNEL_MAKE) scripts_dtc
|
|
||||||
$(MAKE) -C image compile-dtb TARGET_BUILD=
|
|
||||||
|
|
||||||
oldconfig menuconfig nconfig xconfig: $(STAMP_PREPARED) $(STAMP_CHECKED) FORCE
|
|
||||||
rm -f $(LINUX_DIR)/.config.prev
|
|
||||||
rm -f $(STAMP_CONFIGURED)
|
|
||||||
$(LINUX_RECONF_CMD) > $(LINUX_DIR)/.config
|
|
||||||
$(_SINGLE)$(KERNEL_MAKE) \
|
|
||||||
$(if $(findstring Darwin,$(HOST_OS)), \
|
|
||||||
HOSTLDLIBS_mconf="-L$(STAGING_DIR_HOST)/lib -lncurses" \
|
|
||||||
filechk_conf_cfg=" :" \
|
|
||||||
) \
|
|
||||||
YACC=$(STAGING_DIR_HOST)/bin/bison \
|
|
||||||
$$@
|
|
||||||
$(call LINUX_RECONF_DIFF,$(LINUX_DIR)/.config) > $(LINUX_RECONFIG_TARGET)
|
|
||||||
|
|
||||||
install: $(LINUX_DIR)/.image
|
|
||||||
+$(MAKE) -C image compile install TARGET_BUILD=
|
|
||||||
|
|
||||||
clean: FORCE
|
|
||||||
rm -rf $(KERNEL_BUILD_DIR)
|
|
||||||
|
|
||||||
image-prereq:
|
|
||||||
@+$(NO_TRACE_MAKE) -s -C image prereq TARGET_BUILD=
|
|
||||||
|
|
||||||
prereq: image-prereq
|
|
||||||
|
|
||||||
endef
|
|
@ -1,230 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifdef CONFIG_STRIP_KERNEL_EXPORTS
|
|
||||||
KERNEL_MAKEOPTS_IMAGE += \
|
|
||||||
EXTRA_LDSFLAGS="-I$(KERNEL_BUILD_DIR) -include symtab.h"
|
|
||||||
endif
|
|
||||||
|
|
||||||
INITRAMFS_EXTRA_FILES ?= $(GENERIC_PLATFORM_DIR)/image/initramfs-base-files.txt
|
|
||||||
|
|
||||||
export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include
|
|
||||||
|
|
||||||
# defined in quilt.mk
|
|
||||||
Kernel/Patch:=$(Kernel/Patch/Default)
|
|
||||||
|
|
||||||
ifneq (,$(findstring .xz,$(LINUX_SOURCE)))
|
|
||||||
LINUX_CAT:=xzcat
|
|
||||||
else
|
|
||||||
LINUX_CAT:=$(STAGING_DIR_HOST)/bin/libdeflate-gzip -dc
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
|
|
||||||
ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"")
|
|
||||||
define Kernel/Prepare/Default
|
|
||||||
$(LINUX_CAT) $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
|
|
||||||
$(Kernel/Patch)
|
|
||||||
$(if $(QUILT),touch $(LINUX_DIR)/.quilt_used)
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define Kernel/Prepare/Default
|
|
||||||
$(LINUX_CAT) $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
define Kernel/Prepare/Default
|
|
||||||
mkdir -p $(KERNEL_BUILD_DIR)
|
|
||||||
if [ -d $(LINUX_DIR) ]; then \
|
|
||||||
rmdir $(LINUX_DIR); \
|
|
||||||
fi
|
|
||||||
ln -s $(CONFIG_EXTERNAL_KERNEL_TREE) $(LINUX_DIR)
|
|
||||||
if [ -d $(LINUX_DIR)/user_headers ]; then \
|
|
||||||
rm -rf $(LINUX_DIR)/user_headers; \
|
|
||||||
fi
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
|
|
||||||
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE),y)
|
|
||||||
define Kernel/SetInitramfs/PreConfigure
|
|
||||||
{ \
|
|
||||||
grep -v -e CONFIG_BLK_DEV_INITRD $(2)/.config.old > $(2)/.config; \
|
|
||||||
echo 'CONFIG_BLK_DEV_INITRD=y' >> $(2)/.config; \
|
|
||||||
echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(2)/.config; \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
ifeq ($(strip $(CONFIG_EXTERNAL_CPIO)),"")
|
|
||||||
define Kernel/SetInitramfs/PreConfigure
|
|
||||||
{ \
|
|
||||||
grep -v -e INITRAMFS -e CONFIG_RD_ -e CONFIG_BLK_DEV_INITRD $(2)/.config.old > $(2)/.config; \
|
|
||||||
echo 'CONFIG_BLK_DEV_INITRD=y' >> $(2)/.config; \
|
|
||||||
echo 'CONFIG_INITRAMFS_SOURCE="$(strip $(1) $(INITRAMFS_EXTRA_FILES))"' >> $(2)/.config; \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define Kernel/SetInitramfs/PreConfigure
|
|
||||||
{ \
|
|
||||||
grep -v INITRAMFS $(2)/.config.old > $(2)/.config; \
|
|
||||||
echo 'CONFIG_INITRAMFS_SOURCE="$(call qstrip,$(CONFIG_EXTERNAL_CPIO))"' >> $(2)/.config; \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Kernel/SetInitramfs
|
|
||||||
{ \
|
|
||||||
rm -f $(2)/.config.prev; \
|
|
||||||
mv $(2)/.config $(2)/.config.old; \
|
|
||||||
$(call Kernel/SetInitramfs/PreConfigure,$(1),$(2)); \
|
|
||||||
echo "# CONFIG_INITRAMFS_PRESERVE_MTIME is not set" >> $(2)/.config; \
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE),,echo "CONFIG_INITRAMFS_ROOT_UID=$(shell id -u)" >> $(2)/.config;) \
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE),,echo "CONFIG_INITRAMFS_ROOT_GID=$(shell id -g)" >> $(2)/.config;) \
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \
|
|
||||||
echo "# CONFIG_INITRAMFS_FORCE is not set" >> $(2)/.config;, \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_FORCE), \
|
|
||||||
echo "CONFIG_INITRAMFS_FORCE=y" >> $(2)/.config;, \
|
|
||||||
echo "# CONFIG_INITRAMFS_FORCE is not set" >> $(2)/.config;)) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE), \
|
|
||||||
echo "CONFIG_INITRAMFS_COMPRESSION_NONE=y" >> $(2)/.config;, \
|
|
||||||
echo "# CONFIG_INITRAMFS_COMPRESSION_NONE is not set" >> $(2)/.config; ) \
|
|
||||||
$(foreach ALGO,GZIP BZIP2 LZMA LZO XZ LZ4 ZSTD, \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_$(ALGO)), \
|
|
||||||
echo "CONFIG_INITRAMFS_COMPRESSION_$(ALGO)=y" >> $(2)/.config; $\, \
|
|
||||||
echo "# CONFIG_INITRAMFS_COMPRESSION_$(ALGO) is not set" >> $(2)/.config; $\) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_$(ALGO)), \
|
|
||||||
echo "CONFIG_RD_$(ALGO)=y" >> $(2)/.config; $\, \
|
|
||||||
echo "# CONFIG_RD_$(ALGO) is not set" >> $(2)/.config; $\) \
|
|
||||||
) \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Kernel/SetNoInitramfs
|
|
||||||
mv $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.old
|
|
||||||
grep -v INITRAMFS $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config.set
|
|
||||||
echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(LINUX_DIR)/.config.set
|
|
||||||
echo '# CONFIG_INITRAMFS_FORCE is not set' >> $(LINUX_DIR)/.config.set
|
|
||||||
echo "# CONFIG_INITRAMFS_PRESERVE_MTIME is not set" >> $(LINUX_DIR)/.config.set
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/Configure/Default
|
|
||||||
rm -f $(LINUX_DIR)/localversion
|
|
||||||
$(LINUX_CONF_CMD) > $(LINUX_DIR)/.config.target
|
|
||||||
# copy CONFIG_KERNEL_* settings over to .config.target
|
|
||||||
awk '/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}' $(TOPDIR)/.config >> $(LINUX_DIR)/.config.target
|
|
||||||
echo "# CONFIG_KALLSYMS_EXTRA_PASS is not set" >> $(LINUX_DIR)/.config.target
|
|
||||||
echo "# CONFIG_KALLSYMS_ALL is not set" >> $(LINUX_DIR)/.config.target
|
|
||||||
echo "CONFIG_KALLSYMS_UNCOMPRESSED=y" >> $(LINUX_DIR)/.config.target
|
|
||||||
$(SCRIPT_DIR)/package-metadata.pl kconfig $(TMP_DIR)/.packageinfo $(TOPDIR)/.config $(KERNEL_PATCHVER) > $(LINUX_DIR)/.config.override
|
|
||||||
$(SCRIPT_DIR)/kconfig.pl 'm+' '+' $(LINUX_DIR)/.config.target /dev/null $(LINUX_DIR)/.config.override > $(LINUX_DIR)/.config.set
|
|
||||||
$(call Kernel/SetNoInitramfs)
|
|
||||||
rm -rf $(KERNEL_BUILD_DIR)/modules
|
|
||||||
cmp -s $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.prev || { \
|
|
||||||
cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config; \
|
|
||||||
cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.prev; \
|
|
||||||
}
|
|
||||||
$(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(KERNEL_MAKE) $(if $(findstring uml,$(BOARD)),ARCH=$(ARCH)) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install
|
|
||||||
grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | $(MKHASH) md5 > $(LINUX_DIR)/.vermagic
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/Configure/Initramfs
|
|
||||||
$(call Kernel/SetInitramfs,$(1),$(2))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/CompileModules/Default
|
|
||||||
rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map
|
|
||||||
+$(KERNEL_MAKE) $(if $(KERNELNAME),$(KERNELNAME),all) modules
|
|
||||||
# If .config did not change, use the previous timestamp to avoid package rebuilds
|
|
||||||
cmp -s $(LINUX_DIR)/.config $(LINUX_DIR)/.config.modules.save && \
|
|
||||||
mv $(LINUX_DIR)/.config.modules.save $(LINUX_DIR)/.config; \
|
|
||||||
$(CP) $(LINUX_DIR)/.config $(LINUX_DIR)/.config.modules.save
|
|
||||||
endef
|
|
||||||
|
|
||||||
OBJCOPY_STRIP = -R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id
|
|
||||||
|
|
||||||
# AMD64 shares the location with x86
|
|
||||||
ifeq ($(LINUX_KARCH),x86_64)
|
|
||||||
IMAGES_DIR:=../../x86/boot
|
|
||||||
endif
|
|
||||||
|
|
||||||
# $1: image suffix
|
|
||||||
# $2: Per Device Rootfs ID
|
|
||||||
define Kernel/CopyImage
|
|
||||||
cmp -s $(LINUX_DIR)$(2)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug$(2) || { \
|
|
||||||
$(KERNEL_CROSS)objcopy -O binary $(OBJCOPY_STRIP) -S $(LINUX_DIR)$(2)/vmlinux $(LINUX_KERNEL)$(1)$(2); \
|
|
||||||
$(KERNEL_CROSS)objcopy $(OBJCOPY_STRIP) -S $(LINUX_DIR)$(2)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).elf$(2); \
|
|
||||||
$(CP) $(LINUX_DIR)$(2)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug$(2); \
|
|
||||||
$(foreach k, \
|
|
||||||
$(if $(KERNEL_IMAGES),$(KERNEL_IMAGES),$(filter-out vmlinux dtbs,$(KERNELNAME))), \
|
|
||||||
$(CP) $(LINUX_DIR)$(2)/arch/$(LINUX_KARCH)/boot/$(IMAGES_DIR)/$(k) $(KERNEL_BUILD_DIR)/$(k)$(1)$(2); \
|
|
||||||
) \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/CompileImage/Default
|
|
||||||
rm -f $(TARGET_DIR)/init
|
|
||||||
+$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all)
|
|
||||||
$(call Kernel/CopyImage)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Kernel/PrepareConfigPerRootfs
|
|
||||||
{ \
|
|
||||||
[ ! -d "$(1)" ] || rm -rf $(1); \
|
|
||||||
mkdir $(1) && $(CP) -T $(LINUX_DIR) $(1); \
|
|
||||||
touch $(1)/.config; \
|
|
||||||
rm -rf $(1)/usr/initramfs_data.cpio*; \
|
|
||||||
}
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
|
||||||
# $1: Custom TARGET_DIR. If omitted TARGET_DIR is used.
|
|
||||||
# $2: If defined Generate Per Rootfs Kernel Directory and use it
|
|
||||||
# For Separate Initramf with $2 declared, skip kernel compile, it has
|
|
||||||
# already been done previously on generic image build
|
|
||||||
define Kernel/CompileImage/Initramfs
|
|
||||||
$(call locked,{ \
|
|
||||||
$(if $(2),$(call Kernel/PrepareConfigPerRootfs,$(LINUX_DIR)$(2));) \
|
|
||||||
$(call Kernel/Configure/Initramfs,$(if $(1),$(1),$(TARGET_DIR)),$(LINUX_DIR)$(2)); \
|
|
||||||
$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(if $(1),$(1),$(TARGET_DIR))/init; \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(if $(1),$(1),$(TARGET_DIR)) $(if $(1),$(1),$(TARGET_DIR))/init;) \
|
|
||||||
$(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \
|
|
||||||
$(call locked,{ \
|
|
||||||
$(if $(call qstrip,$(CONFIG_EXTERNAL_CPIO)), \
|
|
||||||
$(CP) $(CONFIG_EXTERNAL_CPIO) $(KERNEL_BUILD_DIR)/initrd$(2).cpio;,\
|
|
||||||
( cd $(if $(1),$(1),$(TARGET_DIR)); find . | LC_ALL=C sort | $(STAGING_DIR_HOST)/bin/cpio --reproducible -o -H newc -R 0:0 > $(KERNEL_BUILD_DIR)/initrd$(2).cpio );) \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH), \
|
|
||||||
touch -hcd "@$(SOURCE_DATE_EPOCH)" $(KERNEL_BUILD_DIR)/initrd$(2).cpio;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/bzip2 -9 -c < $(KERNEL_BUILD_DIR)/initrd$(2).cpio > $(KERNEL_BUILD_DIR)/initrd$(2).cpio.bzip2;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/libdeflate-gzip -n -f -S .gzip -12 $(KERNEL_BUILD_DIR)/initrd$(2).cpio;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/lz4c -l -c1 -fz --favor-decSpeed $(KERNEL_BUILD_DIR)/initrd$(2).cpio;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/lzma e -lc1 -lp2 -pb2 $(KERNEL_BUILD_DIR)/initrd$(2).cpio $(KERNEL_BUILD_DIR)/initrd$(2).cpio.lzma;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/lzop -9 -f $(KERNEL_BUILD_DIR)/initrd$(2).cpio;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/xz -T$(if $(filter 1,$(NPROC)),2,0) -9 -fz --check=crc32 $(KERNEL_BUILD_DIR)/initrd$(2).cpio;) \
|
|
||||||
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD), \
|
|
||||||
$(STAGING_DIR_HOST)/bin/zstd -T0 -f -o $(KERNEL_BUILD_DIR)/initrd$(2).cpio.zstd $(KERNEL_BUILD_DIR)/initrd$(2).cpio;) \
|
|
||||||
}, gen-cpio$(2)); \
|
|
||||||
$(if $(2),,$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all);),\
|
|
||||||
$(KERNEL_MAKE) $(if $(2),-C $(LINUX_DIR)$(2)) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all);) \
|
|
||||||
$(call Kernel/CopyImage,-initramfs,$(2)); \
|
|
||||||
$(if $(2),rm -rf $(LINUX_DIR)$(2);) \
|
|
||||||
}, gen-initramfs$(2));
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define Kernel/CompileImage/Initramfs
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Kernel/Clean/Default
|
|
||||||
rm -f $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/.configured
|
|
||||||
rm -f $(LINUX_KERNEL)
|
|
||||||
$(_SINGLE)$(MAKE) -C $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) clean
|
|
||||||
endef
|
|
@ -1,51 +0,0 @@
|
|||||||
|
|
||||||
# Use the default kernel version if the Makefile doesn't override it
|
|
||||||
LINUX_RELEASE?=1
|
|
||||||
|
|
||||||
ifdef CONFIG_TESTING_KERNEL
|
|
||||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
|
||||||
endif
|
|
||||||
|
|
||||||
KERNEL_DETAILS_FILE=$(INCLUDE_DIR)/kernel-$(KERNEL_PATCHVER)
|
|
||||||
ifeq ($(wildcard $(KERNEL_DETAILS_FILE)),)
|
|
||||||
$(error Missing kernel version/hash file for $(KERNEL_PATCHVER). Please create $(KERNEL_DETAILS_FILE))
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(KERNEL_DETAILS_FILE)
|
|
||||||
|
|
||||||
ifdef KERNEL_TESTING_PATCHVER
|
|
||||||
KERNEL_TESTING_DETAILS_FILE=$(INCLUDE_DIR)/kernel-$(KERNEL_TESTING_PATCHVER)
|
|
||||||
ifeq ($(wildcard $(KERNEL_TESTING_DETAILS_FILE)),)
|
|
||||||
$(error Missing kernel version/hash file for $(KERNEL_TESTING_PATCHVER). Please create $(KERNEL_TESTING_DETAILS_FILE))
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(KERNEL_TESTING_DETAILS_FILE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
|
||||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
|
||||||
|
|
||||||
ifneq ($(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
|
|
||||||
LINUX_VERSION:=$(call sanitize_uri,$(call remove_uri_prefix,$(CONFIG_KERNEL_GIT_CLONE_URI)))
|
|
||||||
ifeq ($(call qstrip,$(CONFIG_KERNEL_GIT_REF)),)
|
|
||||||
CONFIG_KERNEL_GIT_REF:=HEAD
|
|
||||||
endif
|
|
||||||
LINUX_VERSION:=$(LINUX_VERSION)-$(call sanitize_uri,$(CONFIG_KERNEL_GIT_REF))
|
|
||||||
else
|
|
||||||
ifdef KERNEL_PATCHVER
|
|
||||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
|
||||||
endif
|
|
||||||
ifdef KERNEL_TESTING_PATCHVER
|
|
||||||
LINUX_TESTING_VERSION:=$(KERNEL_TESTING_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_TESTING_PATCHVER)))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
split_version=$(subst ., ,$(1))
|
|
||||||
merge_version=$(subst $(space),.,$(1))
|
|
||||||
KERNEL_BASE=$(firstword $(subst -, ,$(LINUX_VERSION)))
|
|
||||||
KERNEL=$(call merge_version,$(wordlist 1,2,$(call split_version,$(KERNEL_BASE))))
|
|
||||||
KERNEL_PATCHVER ?= $(KERNEL)
|
|
||||||
|
|
||||||
# disable the md5sum check for unknown kernel versions
|
|
||||||
LINUX_KERNEL_HASH:=$(LINUX_KERNEL_HASH-$(strip $(LINUX_VERSION)))
|
|
||||||
LINUX_KERNEL_HASH?=x
|
|
@ -1,309 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifneq ($(filter check,$(MAKECMDGOALS)),)
|
|
||||||
CHECK:=1
|
|
||||||
DUMP:=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(SOURCE_DATE_EPOCH),)
|
|
||||||
ifndef DUMP
|
|
||||||
KBUILD_BUILD_TIMESTAMP:=$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))')
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(__target_inc),)
|
|
||||||
ifndef CHECK
|
|
||||||
include $(INCLUDE_DIR)/target.mk
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(DUMP),1)
|
|
||||||
KERNEL?=<KERNEL>
|
|
||||||
BOARD?=<BOARD>
|
|
||||||
LINUX_VERSION?=<LINUX_VERSION>
|
|
||||||
LINUX_VERMAGIC?=<LINUX_VERMAGIC>
|
|
||||||
else
|
|
||||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
||||||
export GCC_HONOUR_COPTS=s
|
|
||||||
endif
|
|
||||||
|
|
||||||
LINUX_KMOD_SUFFIX=ko
|
|
||||||
|
|
||||||
ifneq (,$(findstring uml,$(BOARD)))
|
|
||||||
KERNEL_CC?=$(HOSTCC)
|
|
||||||
KERNEL_CROSS?=
|
|
||||||
else
|
|
||||||
KERNEL_CC?=$(TARGET_CC)
|
|
||||||
KERNEL_CROSS?=$(TARGET_CROSS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(TARGET_BUILD),1)
|
|
||||||
PATCH_DIR ?= $(CURDIR)/patches$(if $(wildcard ./patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
FILES_DIR ?= $(foreach dir,$(wildcard $(CURDIR)/files $(CURDIR)/files-$(KERNEL_PATCHVER)),"$(dir)")
|
|
||||||
endif
|
|
||||||
KERNEL_BUILD_DIR ?= $(BUILD_DIR)/linux-$(BOARD)_$(SUBTARGET)
|
|
||||||
LINUX_DIR ?= $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
|
|
||||||
LINUX_UAPI_DIR=uapi/
|
|
||||||
LINUX_VERMAGIC:=$(strip $(shell cat $(LINUX_DIR)/.vermagic 2>/dev/null))
|
|
||||||
LINUX_VERMAGIC:=$(if $(LINUX_VERMAGIC),$(LINUX_VERMAGIC),unknown)
|
|
||||||
|
|
||||||
LINUX_UNAME_VERSION:=$(KERNEL_BASE)
|
|
||||||
ifneq ($(findstring -rc,$(LINUX_VERSION)),)
|
|
||||||
LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION))))
|
|
||||||
endif
|
|
||||||
|
|
||||||
LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
|
|
||||||
|
|
||||||
ifneq (,$(findstring -rc,$(LINUX_VERSION)))
|
|
||||||
LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.gz
|
|
||||||
else
|
|
||||||
LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.xz
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(findstring -rc,$(LINUX_VERSION)))
|
|
||||||
LINUX_SITE:=https://git.kernel.org/torvalds/t
|
|
||||||
else ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
|
|
||||||
LINUX_SITE:=@KERNEL/linux/kernel/v$(word 1,$(subst ., ,$(KERNEL_BASE))).x
|
|
||||||
else
|
|
||||||
LINUX_UNAME_VERSION:=$(strip $(shell cat $(LINUX_DIR)/include/config/kernel.release 2>/dev/null))
|
|
||||||
endif
|
|
||||||
|
|
||||||
MODULES_SUBDIR:=lib/modules/$(LINUX_UNAME_VERSION)
|
|
||||||
TARGET_MODULES_DIR:=$(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
|
|
||||||
|
|
||||||
ifneq ($(TARGET_BUILD),1)
|
|
||||||
PKG_BUILD_DIR ?= $(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(findstring uml,$(BOARD)))
|
|
||||||
LINUX_KARCH=um
|
|
||||||
else ifneq (,$(findstring $(ARCH) , aarch64 aarch64_be ))
|
|
||||||
LINUX_KARCH := arm64
|
|
||||||
else ifneq (,$(findstring $(ARCH) , arceb ))
|
|
||||||
LINUX_KARCH := arc
|
|
||||||
else ifneq (,$(findstring $(ARCH) , armeb ))
|
|
||||||
LINUX_KARCH := arm
|
|
||||||
else ifneq (,$(findstring $(ARCH) , loongarch64 ))
|
|
||||||
LINUX_KARCH := loongarch
|
|
||||||
else ifneq (,$(findstring $(ARCH) , mipsel mips64 mips64el ))
|
|
||||||
LINUX_KARCH := mips
|
|
||||||
else ifneq (,$(findstring $(ARCH) , powerpc64 ))
|
|
||||||
LINUX_KARCH := powerpc
|
|
||||||
else ifneq (,$(findstring $(ARCH) , riscv64 ))
|
|
||||||
LINUX_KARCH := riscv
|
|
||||||
else ifneq (,$(findstring $(ARCH) , sh2 sh3 sh4 ))
|
|
||||||
LINUX_KARCH := sh
|
|
||||||
else ifneq (,$(findstring $(ARCH) , i386 x86_64 ))
|
|
||||||
LINUX_KARCH := x86
|
|
||||||
else
|
|
||||||
LINUX_KARCH := $(ARCH)
|
|
||||||
endif
|
|
||||||
|
|
||||||
KERNEL_MAKE = $(MAKE) $(KERNEL_MAKEOPTS)
|
|
||||||
|
|
||||||
KERNEL_MAKE_FLAGS = \
|
|
||||||
KCFLAGS="$(call iremap,$(BUILD_DIR),$(notdir $(BUILD_DIR))) $(filter-out -fno-plt,$(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))) $(call qstrip,$(CONFIG_KERNEL_CFLAGS))" \
|
|
||||||
HOSTCFLAGS="$(HOST_CFLAGS) -Wall -Wmissing-prototypes -Wstrict-prototypes" \
|
|
||||||
CROSS_COMPILE="$(KERNEL_CROSS)" \
|
|
||||||
ARCH="$(LINUX_KARCH)" \
|
|
||||||
KBUILD_HAVE_NLS=no \
|
|
||||||
KBUILD_BUILD_USER="$(call qstrip,$(CONFIG_KERNEL_BUILD_USER))" \
|
|
||||||
KBUILD_BUILD_HOST="$(call qstrip,$(CONFIG_KERNEL_BUILD_DOMAIN))" \
|
|
||||||
KBUILD_BUILD_TIMESTAMP="$(KBUILD_BUILD_TIMESTAMP)" \
|
|
||||||
KBUILD_BUILD_VERSION="0" \
|
|
||||||
KBUILD_HOSTLDFLAGS="-L$(STAGING_DIR_HOST)/lib" \
|
|
||||||
CONFIG_SHELL="$(BASH)" \
|
|
||||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
|
|
||||||
$(if $(PKG_BUILD_ID),LDFLAGS_MODULE=--build-id=0x$(PKG_BUILD_ID)) \
|
|
||||||
cmd_syscalls= \
|
|
||||||
$(if $(__package_mk),KBUILD_EXTRA_SYMBOLS="$(wildcard $(PKG_SYMVERS_DIR)/*.symvers)")
|
|
||||||
|
|
||||||
ifneq (,$(KERNEL_CC))
|
|
||||||
KERNEL_MAKE_FLAGS += CC="$(KERNEL_CC)"
|
|
||||||
endif
|
|
||||||
|
|
||||||
KERNEL_NOSTDINC_FLAGS = \
|
|
||||||
-nostdinc $(if $(DUMP),, -isystem $(shell $(TARGET_CC) -print-file-name=include))
|
|
||||||
|
|
||||||
ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
|
|
||||||
KERNEL_MAKE_FLAGS += \
|
|
||||||
KERNELRELEASE=$(LINUX_VERSION)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(HOST_OS),Linux)
|
|
||||||
KERNEL_MAKE_FLAGS += CONFIG_STACK_VALIDATION=
|
|
||||||
export SKIP_STACK_VALIDATION:=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
KERNEL_MAKEOPTS = -C $(LINUX_DIR) $(KERNEL_MAKE_FLAGS)
|
|
||||||
|
|
||||||
ifdef CONFIG_USE_SPARSE
|
|
||||||
KERNEL_MAKEOPTS += C=1 CHECK=$(STAGING_DIR_HOST)/bin/sparse
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_EXTMOD_SUBDIRS ?= .
|
|
||||||
|
|
||||||
PKG_SYMVERS_DIR = $(KERNEL_BUILD_DIR)/symvers
|
|
||||||
|
|
||||||
define collect_module_symvers
|
|
||||||
for subdir in $(PKG_EXTMOD_SUBDIRS); do \
|
|
||||||
realdir=$$$$(readlink -f $(PKG_BUILD_DIR)); \
|
|
||||||
grep -F $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
|
|
||||||
[ "$(PKG_BUILD_DIR)" = "$$$$realdir" ] || \
|
|
||||||
grep -F $$$$realdir $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
|
|
||||||
done; \
|
|
||||||
sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \
|
|
||||||
mkdir -p $(PKG_SYMVERS_DIR); \
|
|
||||||
mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_SYMVERS_DIR)/$(PKG_NAME).symvers
|
|
||||||
endef
|
|
||||||
|
|
||||||
define KernelPackage/hooks
|
|
||||||
ifneq ($(PKG_NAME),kernel)
|
|
||||||
Hooks/Compile/Post += collect_module_symvers
|
|
||||||
endif
|
|
||||||
define KernelPackage/hooks
|
|
||||||
endef
|
|
||||||
endef
|
|
||||||
|
|
||||||
define KernelPackage/Defaults
|
|
||||||
FILES:=
|
|
||||||
AUTOLOAD:=
|
|
||||||
MODPARAMS:=
|
|
||||||
PKGFLAGS+=nonshared
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: name
|
|
||||||
# 2: install prefix
|
|
||||||
# 3: module priority prefix
|
|
||||||
# 4: required for boot
|
|
||||||
# 5: module list
|
|
||||||
define ModuleAutoLoad
|
|
||||||
$(if $(5), \
|
|
||||||
mkdir -p $(2)/etc/modules.d; \
|
|
||||||
($(foreach mod,$(5), \
|
|
||||||
echo "$(mod)$(if $(MODPARAMS.$(mod)), $(MODPARAMS.$(mod)),$(if $(MODPARAMS), $(MODPARAMS)))"; )) > $(2)/etc/modules.d/$(3)$(1); \
|
|
||||||
$(if $(4), \
|
|
||||||
mkdir -p $(2)/etc/modules-boot.d; \
|
|
||||||
ln -sf ../modules.d/$(3)$(1) $(2)/etc/modules-boot.d/;))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(DUMP)$(TARGET_BUILD),)
|
|
||||||
-include $(LINUX_DIR)/.config
|
|
||||||
endif
|
|
||||||
|
|
||||||
define KernelPackage/depends
|
|
||||||
$(STAMP_BUILT): $(LINUX_DIR)/.config
|
|
||||||
define KernelPackage/depends
|
|
||||||
endef
|
|
||||||
endef
|
|
||||||
|
|
||||||
define KernelPackage
|
|
||||||
NAME:=$(1)
|
|
||||||
$(eval $(call Package/Default))
|
|
||||||
$(eval $(call KernelPackage/Defaults))
|
|
||||||
$(eval $(call KernelPackage/$(1)))
|
|
||||||
$(eval $(call KernelPackage/$(1)/$(BOARD)))
|
|
||||||
$(eval $(call KernelPackage/$(1)/$(BOARD)/$(SUBTARGET)))
|
|
||||||
|
|
||||||
define Package/kmod-$(1)
|
|
||||||
TITLE:=$(TITLE)
|
|
||||||
SECTION:=kernel
|
|
||||||
CATEGORY:=Kernel modules
|
|
||||||
DESCRIPTION:=$(DESCRIPTION)
|
|
||||||
EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)~$(LINUX_VERMAGIC)-r$(LINUX_RELEASE))
|
|
||||||
VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),.$(PKG_VERSION))-r$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
|
|
||||||
PKGFLAGS:=$(PKGFLAGS)
|
|
||||||
$(call KernelPackage/$(1))
|
|
||||||
$(call KernelPackage/$(1)/$(BOARD))
|
|
||||||
$(call KernelPackage/$(1)/$(BOARD)/$(SUBTARGET))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifdef KernelPackage/$(1)/conffiles
|
|
||||||
define Package/kmod-$(1)/conffiles
|
|
||||||
$(call KernelPackage/$(1)/conffiles)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef KernelPackage/$(1)/description
|
|
||||||
define Package/kmod-$(1)/description
|
|
||||||
$(call KernelPackage/$(1)/description)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef KernelPackage/$(1)/config
|
|
||||||
define Package/kmod-$(1)/config
|
|
||||||
$(call KernelPackage/$(1)/config)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(call KernelPackage/depends)
|
|
||||||
$(call KernelPackage/hooks)
|
|
||||||
|
|
||||||
ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(call version_filter,$(filter-out %=y %=n %=m,$(KCONFIG))),$($(c)))),.),)
|
|
||||||
define Package/kmod-$(1)/install
|
|
||||||
@for mod in $$(call version_filter,$$(FILES)); do \
|
|
||||||
if grep -q "$$$$$$$${mod##$(LINUX_DIR)/}" "$(LINUX_DIR)/modules.builtin"; then \
|
|
||||||
echo "NOTICE: module '$$$$$$$$mod' is built-in."; \
|
|
||||||
elif [ -e $$$$$$$$mod ]; then \
|
|
||||||
mkdir -p $$(1)/$(MODULES_SUBDIR) ; \
|
|
||||||
$(CP) -L $$$$$$$$mod $$(1)/$(MODULES_SUBDIR)/ ; \
|
|
||||||
else \
|
|
||||||
echo "ERROR: module '$$$$$$$$mod' is missing." >&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
done;
|
|
||||||
$(call ModuleAutoLoad,$(1),$$(1),$(filter-out 0-,$(word 1,$(AUTOLOAD))-),$(filter-out 0,$(word 2,$(AUTOLOAD))),$(sort $(wordlist 3,99,$(AUTOLOAD))))
|
|
||||||
$(call KernelPackage/$(1)/install,$$(1))
|
|
||||||
endef
|
|
||||||
$(if $(CONFIG_PACKAGE_kmod-$(1)),
|
|
||||||
else
|
|
||||||
compile: $(1)-disabled
|
|
||||||
$(1)-disabled:
|
|
||||||
@echo "WARNING: kmod-$(1) is not available in the kernel config - generating empty package" >&2
|
|
||||||
|
|
||||||
define Package/kmod-$(1)/install
|
|
||||||
true
|
|
||||||
endef
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
$$(eval $$(call BuildPackage,kmod-$(1)))
|
|
||||||
|
|
||||||
$$(IPKG_kmod-$(1)): $$(wildcard $$(call version_filter,$$(FILES)))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
version_filter=$(if $(findstring @,$(1)),$(shell $(SCRIPT_DIR)/package-metadata.pl version_filter $(KERNEL_PATCHVER) $(1)),$(1))
|
|
||||||
|
|
||||||
# 1: priority (optional)
|
|
||||||
# 2: module list
|
|
||||||
# 3: boot flag
|
|
||||||
define AutoLoad
|
|
||||||
$(if $(1),$(1),0) $(if $(3),1,0) $(call version_filter,$(2))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: module list
|
|
||||||
# 2: boot flag
|
|
||||||
define AutoProbe
|
|
||||||
$(call AutoLoad,,$(1),$(2))
|
|
||||||
endef
|
|
||||||
|
|
||||||
version_field=$(if $(word $(1),$(2)),$(word $(1),$(2)),0)
|
|
||||||
kernel_version_merge=$$(( ($(call version_field,1,$(1)) << 24) + ($(call version_field,2,$(1)) << 16) + ($(call version_field,3,$(1)) << 8) + $(call version_field,4,$(1)) ))
|
|
||||||
|
|
||||||
ifdef DUMP
|
|
||||||
kernel_version_cmp=
|
|
||||||
else
|
|
||||||
kernel_version_cmp=$(shell [ $(call kernel_version_merge,$(call split_version,$(2))) $(1) $(call kernel_version_merge,$(call split_version,$(3))) ] && echo 1 )
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompareKernelPatchVer=$(if $(call kernel_version_cmp,-$(2),$(1),$(3)),1,0)
|
|
||||||
|
|
||||||
kernel_patchver_gt=$(call kernel_version_cmp,-gt,$(KERNEL_PATCHVER),$(1))
|
|
||||||
kernel_patchver_ge=$(call kernel_version_cmp,-ge,$(KERNEL_PATCHVER),$(1))
|
|
||||||
kernel_patchver_eq=$(call kernel_version_cmp,-eq,$(KERNEL_PATCHVER),$(1))
|
|
||||||
kernel_patchver_le=$(call kernel_version_cmp,-le,$(KERNEL_PATCHVER),$(1))
|
|
||||||
kernel_patchver_lt=$(call kernel_version_cmp,-lt,$(KERNEL_PATCHVER),$(1))
|
|
||||||
|
|
BIN
include/logo.png
BIN
include/logo.png
Binary file not shown.
Before Width: | Height: | Size: 80 KiB |
398
include/logo.svg
398
include/logo.svg
@ -1,398 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="2000mm"
|
|
||||||
height="595.20099mm"
|
|
||||||
viewBox="0 0 2000.0002 595.20098"
|
|
||||||
version="1.1"
|
|
||||||
id="svg971"
|
|
||||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
|
||||||
sodipodi:docname="logo.svg">
|
|
||||||
<defs
|
|
||||||
id="defs965">
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath78">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path76" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath106">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path104" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath130">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path128" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath154">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path152" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath174">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path172" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath194">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path192" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath214">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 792 V 612 H 0 Z"
|
|
||||||
id="path212" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.35"
|
|
||||||
inkscape:cx="1579.8791"
|
|
||||||
inkscape:cy="728.41283"
|
|
||||||
inkscape:document-units="mm"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
inkscape:document-rotation="0"
|
|
||||||
showgrid="false"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1016"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1" />
|
|
||||||
<metadata
|
|
||||||
id="metadata968">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(312.17635,44.559227)">
|
|
||||||
<g
|
|
||||||
id="g72"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g74"
|
|
||||||
clip-path="url(#clipPath78)">
|
|
||||||
<g
|
|
||||||
id="g80"
|
|
||||||
transform="translate(173.1753,319.1396)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c 0,-5.745 -4.627,-10.263 -10.545,-10.263 -5.918,0 -10.544,4.518 -10.544,10.263 0,5.771 4.626,10.367 10.544,10.367 C -4.627,10.367 0,5.771 0,0 m -3.685,0 c 0,3.995 -3.013,7.024 -6.86,7.024 -3.846,0 -6.859,-3.029 -6.859,-7.024 0,-3.995 3.013,-6.946 6.859,-6.946 3.847,0 6.86,2.95 6.86,6.946"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path82" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g84"
|
|
||||||
transform="translate(189.0894,315.771)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c 0,-4.099 -3.174,-6.894 -6.591,-6.894 -1.829,0 -3.308,0.523 -4.438,1.41 v -8.329 H -14.58 V 6.528 h 3.552 V 5.484 C -9.898,6.397 -8.419,6.92 -6.59,6.92 -3.174,6.92 0,4.1 0,0 m -3.443,0 c 0,2.402 -1.614,3.917 -3.766,3.917 -1.91,0 -3.82,-1.515 -3.82,-3.917 0,-2.402 1.91,-3.889 3.82,-3.889 2.152,-0.002 3.766,1.486 3.766,3.889"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path86" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g88"
|
|
||||||
transform="translate(203.958,314.8574)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h -10.222 c 0.349,-1.88 1.721,-3.029 3.362,-3.029 1.049,0 2.367,0.131 3.336,1.723 l 3.174,-0.652 c -1.183,-2.716 -3.577,-4.022 -6.51,-4.022 -3.793,0 -6.887,2.794 -6.887,6.894 0,4.099 3.094,6.918 6.94,6.918 3.578,0 6.671,-2.689 6.806,-6.659 z m -10.115,2.429 h 6.485 c -0.457,1.671 -1.749,2.402 -3.174,2.402 -1.347,0 -2.88,-0.784 -3.311,-2.402"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path90" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g92"
|
|
||||||
transform="translate(218.446,317.2075)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 v -7.938 h -3.551 v 7.207 c 0,1.827 -1.076,3.055 -2.717,3.055 -2.017,0 -3.335,-1.306 -3.335,-4.492 v -5.77 h -3.551 v 13.03 h 3.55 V 3.917 c 1.049,1.018 2.447,1.566 4.223,1.566 C -2.152,5.483 0,3.238 0,0"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path94" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g96"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,1281.2351,460.31368)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H -2.851 L -7.854,12.874 -12.885,0 h -2.824 l -6.699,19.846 h 3.82 l 4.492,-13.109 5.138,13.109 h 2.179 L -1.641,6.737 2.851,19.846 h 3.846 z"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path98" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g100"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g102"
|
|
||||||
clip-path="url(#clipPath106)">
|
|
||||||
<g
|
|
||||||
id="g108"
|
|
||||||
transform="translate(255.7183,322.3774)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 -0.188,-3.316 h -0.78 c -3.282,0 -4.789,-1.959 -4.789,-5.588 v -4.204 h -3.551 v 13.03 h 3.551 V -2.35 c 0.996,1.515 2.556,2.454 4.816,2.454 0.349,0 0.618,0 0.941,-0.104"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path110" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g112"
|
|
||||||
transform="translate(263.2698,314.0737)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c 0,-1.279 0.619,-1.985 1.695,-1.985 0.618,0 1.533,0.262 2.234,0.627 L 4.952,-4.23 C 3.553,-4.961 2.584,-5.197 1.455,-5.197 c -3.201,0 -5.004,1.776 -5.004,4.937 v 5.665 h -2.879 v 2.821 h 2.879 v 4.726 l 3.55,1.045 V 8.226 H 5.193 V 5.405 H 0 Z"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path114" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g116"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,612.14009,549.73584)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H -0.799 L -1.549,2 -2.304,0 H -3.1 l -1.224,3.689 h 1.02 l 0.635,-1.99 0.795,1.99 h 0.65 l 0.79,-1.99 0.64,1.99 h 1.02 z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path118" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g120"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,674.30011,539.84385)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h 0.785 v -0.801 h -2.53 V 0 h 0.785 v 2.083 h -0.785 v 0.805 h 2.53 V 2.083 H 0 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path122" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g124"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g126"
|
|
||||||
clip-path="url(#clipPath130)">
|
|
||||||
<g
|
|
||||||
id="g132"
|
|
||||||
transform="translate(196.9004,302.0308)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 -0.7,0.801 H -1.449 V 0 H -2.41 v 3.689 h 1.771 c 1,0 1.605,-0.573 1.605,-1.427 0,-0.549 -0.255,-0.991 -0.695,-1.238 L 1.206,0 Z m -0.675,1.602 c 0.4,0 0.73,0.262 0.73,0.66 0,0.388 -0.33,0.628 -0.73,0.628 H -1.449 V 1.604 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path134" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g136"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,820.47493,549.73584)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h -2.9 v 3.689 h 2.87 V 2.888 H -1.94 V 2.257 h 1.88 V 1.456 H -1.94 V 0.801 h 1.941 z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path138" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g140"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,886.62894,549.73584)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h -2.805 v 3.689 h 0.96 V 0.801 H 0 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path142" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g144"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,953.79261,549.73584)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h -2.9 v 3.689 h 2.87 V 2.888 H -1.94 V 2.257 h 1.88 V 1.456 H -1.94 V 0.801 H 0 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path146" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g148"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g150"
|
|
||||||
clip-path="url(#clipPath154)">
|
|
||||||
<g
|
|
||||||
id="g156"
|
|
||||||
transform="translate(219.3787,304.7295)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 -0.94,-0.185 c -0.08,0.374 -0.34,0.481 -0.565,0.481 -0.225,0 -0.41,-0.111 -0.41,-0.316 0,-0.146 0.08,-0.238 0.245,-0.286 l 0.74,-0.228 c 0.625,-0.199 0.965,-0.481 0.965,-1.058 0,-0.83 -0.75,-1.18 -1.495,-1.18 -0.825,0 -1.495,0.422 -1.59,1.126 l 0.985,0.194 c 0.08,-0.364 0.304,-0.519 0.635,-0.519 0.28,0 0.45,0.126 0.45,0.321 0,0.145 -0.08,0.247 -0.29,0.3 l -0.705,0.199 c -0.575,0.16 -0.965,0.447 -0.965,1.044 0,0.752 0.609,1.165 1.44,1.165 0.79,0 1.375,-0.369 1.5,-1.058"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path158" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g160"
|
|
||||||
transform="translate(224.4026,304.7295)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 -0.94,-0.185 c -0.08,0.374 -0.34,0.481 -0.565,0.481 -0.225,0 -0.41,-0.111 -0.41,-0.316 0,-0.146 0.08,-0.238 0.245,-0.286 l 0.74,-0.228 c 0.625,-0.199 0.965,-0.481 0.965,-1.058 0,-0.83 -0.75,-1.18 -1.495,-1.18 -0.825,0 -1.495,0.422 -1.591,1.126 l 0.986,0.194 c 0.08,-0.364 0.304,-0.519 0.635,-0.519 0.28,0 0.45,0.126 0.45,0.321 0,0.145 -0.08,0.247 -0.29,0.3 l -0.705,0.2 c -0.575,0.16 -0.965,0.446 -0.965,1.044 0,0.752 0.608,1.165 1.44,1.165 C -0.71,1.058 -0.125,0.689 0,0"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path162" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g164"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,1170.9286,521.84896)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 1.785 V -0.801 H 0 V -2.257 H -0.96 V 1.432 H 1.915 V 0.631 H 0 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path166" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g168"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g170"
|
|
||||||
clip-path="url(#clipPath174)">
|
|
||||||
<g
|
|
||||||
id="g176"
|
|
||||||
transform="translate(238.2297,302.0308)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 -0.7,0.801 H -1.45 V 0 h -0.96 v 3.689 h 1.77 c 1,0 1.605,-0.573 1.605,-1.427 C 0.965,1.713 0.71,1.271 0.27,1.024 L 1.205,0 Z m -0.675,1.602 c 0.4,0 0.73,0.262 0.73,0.66 0,0.388 -0.33,0.628 -0.73,0.628 H -1.45 V 1.604 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path178" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g180"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,1331.0682,549.73584)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h -2.9 v 3.689 h 2.87 V 2.888 H -1.94 V 2.257 h 1.88 V 1.456 H -1.94 V 0.801 H 0 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path182" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g184"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,1398.3947,549.73584)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 h -2.9 v 3.689 h 2.87 V 2.888 H -1.94 V 2.257 h 1.88 V 1.456 H -1.94 V 0.801 h 1.941 z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path186" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g188"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g190"
|
|
||||||
clip-path="url(#clipPath194)">
|
|
||||||
<g
|
|
||||||
id="g196"
|
|
||||||
transform="translate(254.0122,305.7197)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 C 1.21,0 2.01,-0.739 2.01,-1.844 2.01,-2.95 1.211,-3.689 0,-3.689 H -1.695 V 0 Z m -0.01,-2.888 c 0.655,0 1.055,0.417 1.055,1.044 0,0.626 -0.4,1.043 -1.055,1.043 h -0.723 v -2.087 z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path198" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g200"
|
|
||||||
transform="translate(262.0693,303.8706)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c 0,-1.078 -0.91,-1.913 -2.03,-1.913 -1.12,0 -2.035,0.835 -2.035,1.913 0,1.077 0.91,1.917 2.035,1.917 C -0.905,1.917 0,1.073 0,0 m -0.965,0 c 0,0.606 -0.47,1.077 -1.066,1.077 -0.595,0 -1.065,-0.471 -1.065,-1.077 0,-0.607 0.47,-1.078 1.065,-1.078 0.596,0 1.066,0.466 1.066,1.078"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path202" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g204"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,1629.3552,549.73584)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H -0.94 V 1.752 L -2.06,0.256 H -2.35 L -3.47,1.75 v -1.751 h -0.94 v 3.689 h 0.615 l 1.59,-2.17 1.59,2.17 H 0 Z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path206" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g208"
|
|
||||||
transform="matrix(12.354182,0,0,-12.354182,-1687.2697,4281.0797)">
|
|
||||||
<g
|
|
||||||
id="g210"
|
|
||||||
clip-path="url(#clipPath214)">
|
|
||||||
<g
|
|
||||||
id="g216"
|
|
||||||
transform="translate(271.6895,328.4058)">
|
|
||||||
<path
|
|
||||||
d="M 0,0 -0.99,1.042 H -1.398 V 0 h -0.455 v 2.468 h 0.95 c 0.533,0 0.856,-0.296 0.856,-0.712 0.008,-0.283 -0.169,-0.54 -0.441,-0.642 L 0.569,0 Z m -0.903,1.441 c 0.267,0 0.405,0.137 0.405,0.315 0,0.179 -0.141,0.311 -0.405,0.311 H -1.398 V 1.44 Z"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path218" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g220"
|
|
||||||
transform="translate(270.8284,327.209)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c -1.307,0 -2.366,1.028 -2.367,2.296 0,1.269 1.059,2.298 2.366,2.298 1.307,0 2.366,-1.028 2.367,-2.296 V 2.297 C 2.365,1.029 1.306,0.002 0,0 m 0,4.269 c -1.122,0 -2.031,-0.883 -2.031,-1.972 0,-1.089 0.909,-1.971 2.031,-1.971 1.122,0 2.031,0.882 2.031,1.971 C 2.03,3.386 1.121,4.268 0,4.269 Z"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path222" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g224"
|
|
||||||
transform="translate(130.3613,326.9673)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c -1.713,0 -3.102,-1.348 -3.102,-3.011 0,-1.663 1.389,-3.011 3.102,-3.011 1.713,0 3.102,1.348 3.102,3.011 C 3.099,-1.35 1.712,-0.003 0,0"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path226" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g228"
|
|
||||||
transform="translate(111.3059,342.4536)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 3.229,-3.134 c 4.051,3.933 9.653,6.36 15.826,6.36 6.174,0 11.776,-2.428 15.827,-6.36 L 38.111,0 C 33.236,4.732 26.494,7.682 19.055,7.682 11.617,7.682 4.875,4.732 0,0"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path230" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g232"
|
|
||||||
transform="translate(117.1301,336.7998)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 3.229,-3.134 c 2.564,2.488 6.109,4.025 10.001,4.025 3.892,0 7.44,-1.537 10.004,-4.025 L 26.463,0 C 23.076,3.288 18.391,5.348 13.232,5.348 8.072,5.348 3.388,3.289 0,0"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path234" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g236"
|
|
||||||
transform="translate(122.9229,331.1763)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 3.229,-3.134 c 2.326,2.253 6.093,2.253 8.419,0 L 14.877,0 C 12.905,1.915 10.228,2.988 7.438,2.98 4.558,2.98 1.93,1.844 0,0"
|
|
||||||
style="fill:#00ace2;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path238" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g240"
|
|
||||||
transform="translate(141.8201,332.0371)">
|
|
||||||
<path
|
|
||||||
d="m 0,0 c 1.709,-2.274 2.722,-5.07 2.722,-8.081 0,-7.589 -6.362,-13.766 -14.181,-13.766 -7.818,0 -14.18,6.177 -14.18,13.766 0,3.011 1.013,5.807 2.722,8.081 l -3.26,3.165 c -2.533,-3.103 -4.021,-7.006 -4.021,-11.246 0,-10.017 8.42,-18.19 18.739,-18.19 10.32,0 18.739,8.173 18.739,18.19 0,4.24 -1.519,8.143 -4.02,11.246 z"
|
|
||||||
style="fill:#002843;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
id="path242" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 17 KiB |
151
include/meson.mk
151
include/meson.mk
@ -1,151 +0,0 @@
|
|||||||
# To build your package using meson:
|
|
||||||
#
|
|
||||||
# include $(INCLUDE_DIR)/meson.mk
|
|
||||||
# MESON_ARGS+=-Dfoo -Dbar=baz
|
|
||||||
#
|
|
||||||
# To pass additional environment variables to meson:
|
|
||||||
#
|
|
||||||
# MESON_VARS+=FOO=bar
|
|
||||||
#
|
|
||||||
# Default configure/compile/install targets are provided, but can be
|
|
||||||
# overwritten if required:
|
|
||||||
#
|
|
||||||
# define Build/Configure
|
|
||||||
# $(call Build/Configure/Meson)
|
|
||||||
# ...
|
|
||||||
# endef
|
|
||||||
#
|
|
||||||
# same for Build/Compile and Build/Install
|
|
||||||
#
|
|
||||||
# Host packages are built in the same fashion, just use these vars instead:
|
|
||||||
#
|
|
||||||
# MESON_HOST_ARGS+=-Dfoo -Dbar=baz
|
|
||||||
# MESON_HOST_VARS+=FOO=bar
|
|
||||||
|
|
||||||
MESON_DIR:=$(STAGING_DIR_HOST)/lib/meson
|
|
||||||
|
|
||||||
MESON_HOST_BUILD_DIR:=$(HOST_BUILD_DIR)/openwrt-build
|
|
||||||
MESON_HOST_VARS:=
|
|
||||||
MESON_HOST_ARGS:=
|
|
||||||
|
|
||||||
MESON_BUILD_DIR:=$(PKG_BUILD_DIR)/openwrt-build
|
|
||||||
MESON_VARS:=
|
|
||||||
MESON_ARGS:=
|
|
||||||
|
|
||||||
ifneq ($(findstring i386,$(CONFIG_ARCH)),)
|
|
||||||
MESON_ARCH:="x86"
|
|
||||||
else ifneq ($(findstring powerpc64,$(CONFIG_ARCH)),)
|
|
||||||
MESON_ARCH:="ppc64"
|
|
||||||
else ifneq ($(findstring powerpc,$(CONFIG_ARCH)),)
|
|
||||||
MESON_ARCH:="ppc"
|
|
||||||
else ifneq ($(findstring mips64el,$(CONFIG_ARCH)),)
|
|
||||||
MESON_ARCH:="mips64"
|
|
||||||
else ifneq ($(findstring mipsel,$(CONFIG_ARCH)),)
|
|
||||||
MESON_ARCH:="mips"
|
|
||||||
else ifneq ($(findstring armeb,$(CONFIG_ARCH)),)
|
|
||||||
MESON_ARCH:="arm"
|
|
||||||
else
|
|
||||||
MESON_ARCH:=$(CONFIG_ARCH)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# this is undefined for just x64_64
|
|
||||||
ifeq ($(origin CPU_TYPE),undefined)
|
|
||||||
MESON_CPU:="generic"
|
|
||||||
else
|
|
||||||
MESON_CPU:="$(CPU_TYPE)$(if $(CPU_SUBTYPE),+$(CPU_SUBTYPE))"
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Meson
|
|
||||||
$(2) $(STAGING_DIR_HOST)/bin/$(PYTHON) $(STAGING_DIR_HOST)/bin/meson.py $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Meson/CreateNativeFile
|
|
||||||
$(STAGING_DIR_HOST)/bin/sed \
|
|
||||||
-e "s|@CC@|$(foreach BIN,$(HOSTCC),'$(BIN)',)|" \
|
|
||||||
-e "s|@CXX@|$(foreach BIN,$(HOSTCXX),'$(BIN)',)|" \
|
|
||||||
-e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
|
|
||||||
-e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
|
|
||||||
-e "s|@PYTHON@|$(STAGING_DIR_HOST)/bin/python3|" \
|
|
||||||
-e "s|@CFLAGS@|$(foreach FLAG,$(HOST_CFLAGS) $(HOST_CPPFLAGS),'$(FLAG)',)|" \
|
|
||||||
-e "s|@CXXFLAGS@|$(foreach FLAG,$(HOST_CXXFLAGS) $(HOST_CPPFLAGS),'$(FLAG)',)|" \
|
|
||||||
-e "s|@LDFLAGS@|$(foreach FLAG,$(HOST_LDFLAGS),'$(FLAG)',)|" \
|
|
||||||
-e "s|@PREFIX@|$(HOST_BUILD_PREFIX)|" \
|
|
||||||
< $(MESON_DIR)/openwrt-native.txt.in \
|
|
||||||
> $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Meson/CreateCrossFile
|
|
||||||
$(STAGING_DIR_HOST)/bin/sed \
|
|
||||||
-e "s|@CC@|$(foreach BIN,$(TARGET_CC),'$(BIN)',)|" \
|
|
||||||
-e "s|@CXX@|$(foreach BIN,$(TARGET_CXX),'$(BIN)',)|" \
|
|
||||||
-e "s|@LD@|$(foreach FLAG,$(TARGET_LINKER),'$(FLAG)',)|" \
|
|
||||||
-e "s|@AR@|$(TARGET_AR)|" \
|
|
||||||
-e "s|@STRIP@|$(TARGET_CROSS)strip|" \
|
|
||||||
-e "s|@NM@|$(TARGET_NM)|" \
|
|
||||||
-e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
|
|
||||||
-e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
|
|
||||||
-e "s|@PYTHON@|$(STAGING_DIR_HOST)/bin/python3|" \
|
|
||||||
-e "s|@CFLAGS@|$(foreach FLAG,$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
|
|
||||||
-e "s|@CXXFLAGS@|$(foreach FLAG,$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
|
|
||||||
-e "s|@LDFLAGS@|$(foreach FLAG,$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS),'$(FLAG)',)|" \
|
|
||||||
-e "s|@ARCH@|$(MESON_ARCH)|" \
|
|
||||||
-e "s|@CPU@|$(MESON_CPU)|" \
|
|
||||||
-e "s|@ENDIAN@|$(if $(CONFIG_BIG_ENDIAN),big,little)|" \
|
|
||||||
< $(MESON_DIR)/openwrt-cross.txt.in \
|
|
||||||
> $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Configure/Meson
|
|
||||||
$(call Meson/CreateNativeFile,$(HOST_BUILD_DIR)/openwrt-native.txt)
|
|
||||||
$(call Meson, \
|
|
||||||
setup \
|
|
||||||
--native-file $(HOST_BUILD_DIR)/openwrt-native.txt \
|
|
||||||
-Ddefault_library=static \
|
|
||||||
$(MESON_HOST_ARGS) \
|
|
||||||
$(MESON_HOST_BUILD_DIR) \
|
|
||||||
$(MESON_HOST_BUILD_DIR)/.., \
|
|
||||||
$(MESON_HOST_VARS))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Compile/Meson
|
|
||||||
+$(NINJA) -C $(MESON_HOST_BUILD_DIR) $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Install/Meson
|
|
||||||
+$(NINJA) -C $(MESON_HOST_BUILD_DIR) install
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Uninstall/Meson
|
|
||||||
+$(NINJA) -C $(MESON_HOST_BUILD_DIR) uninstall || true
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Configure/Meson
|
|
||||||
$(call Meson/CreateNativeFile,$(PKG_BUILD_DIR)/openwrt-native.txt)
|
|
||||||
$(call Meson/CreateCrossFile,$(PKG_BUILD_DIR)/openwrt-cross.txt)
|
|
||||||
$(call Meson, \
|
|
||||||
setup \
|
|
||||||
--buildtype plain \
|
|
||||||
--native-file $(PKG_BUILD_DIR)/openwrt-native.txt \
|
|
||||||
--cross-file $(PKG_BUILD_DIR)/openwrt-cross.txt \
|
|
||||||
-Ddefault_library=both \
|
|
||||||
$(MESON_ARGS) \
|
|
||||||
$(MESON_BUILD_DIR) \
|
|
||||||
$(MESON_BUILD_DIR)/.., \
|
|
||||||
$(MESON_VARS))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Compile/Meson
|
|
||||||
+$(NINJA) -C $(MESON_BUILD_DIR) $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Install/Meson
|
|
||||||
+DESTDIR="$(PKG_INSTALL_DIR)" $(NINJA) -C $(MESON_BUILD_DIR) install
|
|
||||||
endef
|
|
||||||
|
|
||||||
Host/Configure=$(call Host/Configure/Meson)
|
|
||||||
Host/Compile=$(call Host/Compile/Meson)
|
|
||||||
Host/Install=$(call Host/Install/Meson)
|
|
||||||
Host/Uninstall=$(call Host/Uninstall/Meson)
|
|
||||||
Build/Configure=$(call Build/Configure/Meson)
|
|
||||||
Build/Compile=$(call Build/Compile/Meson)
|
|
||||||
Build/Install=$(call Build/Install/Meson)
|
|
@ -1,389 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifneq ($(__inc_netfilter),1)
|
|
||||||
__inc_netfilter:=1
|
|
||||||
|
|
||||||
ifeq ($(NF_KMOD),1)
|
|
||||||
P_V4:=ipv4/netfilter/
|
|
||||||
P_V6:=ipv6/netfilter/
|
|
||||||
P_XT:=netfilter/
|
|
||||||
P_EBT:=bridge/netfilter/
|
|
||||||
endif
|
|
||||||
|
|
||||||
# 1: variable
|
|
||||||
# 2: kconfig symbols
|
|
||||||
# 3: file list
|
|
||||||
# 4: version dependency
|
|
||||||
define nf_add
|
|
||||||
$(if $(4),ifeq ($$(strip $$(call CompareKernelPatchVer,$$(KERNEL_PATCHVER),$(firstword $(4)),$(lastword $(4)))),1))
|
|
||||||
$(1)-$$($(2)) += $(3)
|
|
||||||
$(if $(4),endif)
|
|
||||||
KCONFIG_$(1) = $(filter-out $(2),$(KCONFIG_$(1))) $(2)
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
# core
|
|
||||||
|
|
||||||
# kernel only
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_REJECT,CONFIG_NF_REJECT_IPV4, $(P_V4)nf_reject_ipv4),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_IP_NF_IPTABLES, $(P_V4)ip_tables),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_NETFILTER_XTABLES, $(P_XT)x_tables),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_NETFILTER_XTABLES, $(P_XT)xt_tcpudp),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_IP_NF_FILTER, $(P_V4)iptable_filter),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_IP_NF_MANGLE, $(P_V4)iptable_mangle),))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CORE,CONFIG_IP_NF_IPTABLES, xt_standard ipt_icmp xt_tcp xt_udp xt_comment xt_set xt_SET)))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_LIMIT, $(P_XT)xt_limit))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_MAC, $(P_XT)xt_mac))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_MULTIPORT, $(P_XT)xt_multiport))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_COMMENT, $(P_XT)xt_comment))
|
|
||||||
|
|
||||||
#cluster
|
|
||||||
$(eval $(call nf_add,IPT_CLUSTER,CONFIG_NETFILTER_XT_MATCH_CLUSTER, $(P_XT)xt_cluster))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_LOG, $(P_XT)xt_LOG))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_TCPMSS, $(P_XT)xt_TCPMSS))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_IP_NF_TARGET_REJECT, $(P_V4)ipt_REJECT))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_TIME, $(P_XT)xt_time))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MARK, $(P_XT)xt_mark))
|
|
||||||
|
|
||||||
# kernel has xt_MARK.ko merged into xt_mark.ko, userspace is still separate
|
|
||||||
# userland: xt_MARK.so
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MARK, $(P_XT)xt_MARK)))
|
|
||||||
|
|
||||||
|
|
||||||
# conntrack
|
|
||||||
|
|
||||||
# kernel only
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK,CONFIG_NF_CONNTRACK, $(P_XT)nf_conntrack),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK,CONFIG_NF_DEFRAG_IPV4, $(P_V4)nf_defrag_ipv4),))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK,CONFIG_NETFILTER_XT_MATCH_STATE, $(P_XT)xt_state))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK,CONFIG_NETFILTER_XT_TARGET_CT, $(P_XT)xt_CT))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK,CONFIG_NETFILTER_XT_MATCH_CONNTRACK, $(P_XT)xt_conntrack))
|
|
||||||
|
|
||||||
|
|
||||||
# conntrack-extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_CONNBYTES, $(P_XT)xt_connbytes))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_CONNLIMIT, $(P_XT)xt_connlimit))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_CONNMARK, $(P_XT)xt_connmark))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_HELPER, $(P_XT)xt_helper))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_RECENT, $(P_XT)xt_recent))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_CONNMARK, $(P_XT)xt_CONNMARK)))
|
|
||||||
|
|
||||||
#conntrack-label
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_LABEL,CONFIG_NETFILTER_XT_MATCH_CONNLABEL, $(P_XT)xt_connlabel))
|
|
||||||
|
|
||||||
# extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE, $(if $(NF_KMOD),$(P_XT)xt_addrtype,$(P_XT)ipt_addrtype)))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_OWNER, $(P_XT)xt_owner))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_PKTTYPE, $(P_XT)xt_pkttype))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_QUOTA, $(P_XT)xt_quota))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_CGROUP, $(P_XT)xt_cgroup))
|
|
||||||
|
|
||||||
#$(eval $(call nf_add,IPT_EXTRA,CONFIG_IP_NF_TARGET_ROUTE, $(P_V4)ipt_ROUTE))
|
|
||||||
|
|
||||||
# physdev
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_PHYSDEV,CONFIG_NETFILTER_XT_MATCH_PHYSDEV, $(P_XT)xt_physdev))
|
|
||||||
|
|
||||||
# filter
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_STRING, $(P_XT)xt_string))
|
|
||||||
$(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_BPF, $(P_XT)xt_bpf))
|
|
||||||
|
|
||||||
|
|
||||||
# ipopt
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, $(P_XT)xt_dscp))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, $(P_XT)xt_DSCP))
|
|
||||||
$(eval $(call nf_add,IPT_HASHLIMIT,CONFIG_NETFILTER_XT_MATCH_HASHLIMIT, $(P_XT)xt_hashlimit))
|
|
||||||
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP_NF_MATCH_RPFILTER, $(P_V4)ipt_rpfilter))
|
|
||||||
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP6_NF_MATCH_RPFILTER, $(P_V6)ip6t_rpfilter))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_LENGTH, $(P_XT)xt_length))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_STATISTIC, $(P_XT)xt_statistic))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_TCPMSS, $(P_XT)xt_tcpmss))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_CLASSIFY, $(P_XT)xt_CLASSIFY))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_IP_NF_TARGET_ECN, $(P_V4)ipt_ECN))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_ECN, $(P_XT)xt_ecn))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, xt_tos)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, xt_TOS)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_HL, ipt_ttl)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_HL, ipt_TTL)))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_HL, $(P_XT)xt_hl))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_HL, $(P_XT)xt_HL))
|
|
||||||
|
|
||||||
# iprange
|
|
||||||
$(eval $(call nf_add,IPT_IPRANGE,CONFIG_NETFILTER_XT_MATCH_IPRANGE, $(P_XT)xt_iprange))
|
|
||||||
|
|
||||||
# ipsec
|
|
||||||
$(eval $(call nf_add,IPT_IPSEC,CONFIG_IP_NF_MATCH_AH, $(P_V4)ipt_ah))
|
|
||||||
$(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_ESP, $(P_XT)xt_esp))
|
|
||||||
$(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_POLICY, $(P_XT)xt_policy))
|
|
||||||
|
|
||||||
# flow offload support
|
|
||||||
$(eval $(call nf_add,IPT_FLOW,CONFIG_NETFILTER_XT_TARGET_FLOWOFFLOAD, $(P_XT)xt_FLOWOFFLOAD))
|
|
||||||
|
|
||||||
# IPv6
|
|
||||||
|
|
||||||
# kernel only
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_REJECT6,CONFIG_NF_REJECT_IPV6, $(P_V6)nf_reject_ipv6),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT6,CONFIG_IP6_NF_IPTABLES, $(P_V6)ip6_tables),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK,CONFIG_NF_DEFRAG_IPV6, $(P_V6)nf_defrag_ipv6),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_IPV6,CONFIG_IP6_NF_FILTER, $(P_V6)ip6table_filter),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_IPV6,CONFIG_IP6_NF_MANGLE, $(P_V6)ip6table_mangle),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPV6,CONFIG_IP6_NF_IPTABLES, ip6t_icmp6)))
|
|
||||||
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPV6,CONFIG_IP6_NF_TARGET_REJECT, $(P_V6)ip6t_REJECT))
|
|
||||||
|
|
||||||
# ipv6 extra
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_IPV6HEADER, $(P_V6)ip6t_ipv6header))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_AH, $(P_V6)ip6t_ah))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_MH, $(P_V6)ip6t_mh))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_EUI64, $(P_V6)ip6t_eui64))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_OPTS, $(P_V6)ip6t_hbh))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_FRAG, $(P_V6)ip6t_frag))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_RT, $(P_V6)ip6t_rt))
|
|
||||||
|
|
||||||
# log
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NF_LOG,CONFIG_NF_LOG_COMMON, $(P_XT)nf_log_common, lt 5.13))
|
|
||||||
$(eval $(call nf_add,NF_LOG,CONFIG_NF_LOG_IPV4, $(P_V4)nf_log_ipv4, lt 5.13))
|
|
||||||
$(eval $(call nf_add,NF_LOG,CONFIG_NF_LOG_SYSLOG, $(P_XT)nf_log_syslog, ge 5.13))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_LOG6,CONFIG_NF_LOG_IPV6, $(P_V6)nf_log_ipv6,lt 5.13),))
|
|
||||||
|
|
||||||
# nat
|
|
||||||
|
|
||||||
# kernel only
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_NAT,CONFIG_NF_NAT, $(P_XT)nf_nat),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_NAT, $(P_XT)xt_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT,CONFIG_IP_NF_NAT, $(P_V4)iptable_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_NAT, $(P_V6)ip6table_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_TARGET_NPT, $(P_V6)ip6t_NPT),))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_NAT,CONFIG_NF_NAT, ipt_SNAT ipt_DNAT)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_TARGET_NPT, ip6t_DNPT ip6t_SNPT)))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_TARGET_MASQUERADE, $(P_XT)xt_MASQUERADE))
|
|
||||||
$(eval $(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_TARGET_REDIRECT, $(P_XT)xt_REDIRECT))
|
|
||||||
|
|
||||||
|
|
||||||
# nat-extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NAT_EXTRA,CONFIG_IP_NF_TARGET_NETMAP, $(P_XT)xt_NETMAP))
|
|
||||||
|
|
||||||
|
|
||||||
# nathelper
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER,CONFIG_NF_CONNTRACK_FTP, $(P_XT)nf_conntrack_ftp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER,CONFIG_NF_NAT_FTP, $(P_XT)nf_nat_ftp))
|
|
||||||
|
|
||||||
|
|
||||||
# nathelper-extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_BROADCAST, $(P_XT)nf_conntrack_broadcast))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_NETBIOS_NS, $(P_XT)nf_conntrack_netbios_ns))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_SANE, $(P_XT)nf_conntrack_sane))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_AMANDA, $(P_XT)nf_conntrack_amanda))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_AMANDA, $(P_XT)nf_nat_amanda))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_H323, $(P_XT)nf_conntrack_h323))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_H323, $(P_V4)nf_nat_h323))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_PPTP, $(P_XT)nf_conntrack_pptp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_PPTP, $(P_V4)nf_nat_pptp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_SIP, $(P_XT)nf_conntrack_sip))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_SIP, $(P_XT)nf_nat_sip))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_SNMP, $(P_XT)nf_conntrack_snmp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_SNMP_BASIC, $(P_V4)nf_nat_snmp_basic))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_TFTP, $(P_XT)nf_conntrack_tftp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_TFTP, $(P_XT)nf_nat_tftp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_IRC, $(P_XT)nf_conntrack_irc))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_IRC, $(P_XT)nf_nat_irc))
|
|
||||||
|
|
||||||
|
|
||||||
# nflog
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NFLOG,CONFIG_NETFILTER_XT_TARGET_NFLOG, $(P_XT)xt_NFLOG))
|
|
||||||
|
|
||||||
|
|
||||||
# nfqueue
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NFQUEUE,CONFIG_NETFILTER_XT_TARGET_NFQUEUE, $(P_XT)xt_NFQUEUE))
|
|
||||||
|
|
||||||
|
|
||||||
# debugging
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_DEBUG,CONFIG_NETFILTER_XT_TARGET_TRACE, $(P_XT)xt_TRACE))
|
|
||||||
|
|
||||||
# socket
|
|
||||||
$(eval $(call nf_add,NF_SOCKET,CONFIG_NF_SOCKET_IPV4, $(P_V4)nf_socket_ipv4))
|
|
||||||
$(eval $(call nf_add,NF_SOCKET,CONFIG_NF_SOCKET_IPV6, $(P_V6)nf_socket_ipv6))
|
|
||||||
$(eval $(call nf_add,IPT_SOCKET,CONFIG_NETFILTER_XT_MATCH_SOCKET, $(P_XT)xt_socket))
|
|
||||||
|
|
||||||
# tproxy
|
|
||||||
$(eval $(call nf_add,NF_TPROXY,CONFIG_NF_TPROXY_IPV4, $(P_V4)nf_tproxy_ipv4))
|
|
||||||
$(eval $(call nf_add,NF_TPROXY,CONFIG_NF_TPROXY_IPV6, $(P_V6)nf_tproxy_ipv6))
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NETFILTER_XT_TARGET_TPROXY, $(P_XT)xt_TPROXY))
|
|
||||||
|
|
||||||
# led
|
|
||||||
$(eval $(call nf_add,IPT_LED,CONFIG_NETFILTER_XT_TARGET_LED, $(P_XT)xt_LED))
|
|
||||||
|
|
||||||
# tee
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_TEE,CONFIG_NETFILTER_XT_TARGET_TEE, $(P_XT)xt_TEE))
|
|
||||||
|
|
||||||
# u32
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_U32,CONFIG_NETFILTER_XT_MATCH_U32, $(P_XT)xt_u32))
|
|
||||||
|
|
||||||
# checksum
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CHECKSUM,CONFIG_NETFILTER_XT_TARGET_CHECKSUM, $(P_XT)xt_CHECKSUM))
|
|
||||||
|
|
||||||
|
|
||||||
# netlink
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NFNETLINK,CONFIG_NETFILTER_NETLINK, $(P_XT)nfnetlink))
|
|
||||||
|
|
||||||
# nflog
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NFNETLINK_LOG,CONFIG_NETFILTER_NETLINK_LOG, $(P_XT)nfnetlink_log))
|
|
||||||
|
|
||||||
# nfqueue
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NFNETLINK_QUEUE,CONFIG_NETFILTER_NETLINK_QUEUE, $(P_XT)nfnetlink_queue))
|
|
||||||
|
|
||||||
# conncount
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNCOUNT,CONFIG_NETFILTER_CONNCOUNT, $(P_XT)nf_conncount),))
|
|
||||||
|
|
||||||
#
|
|
||||||
# ebtables
|
|
||||||
#
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,EBTABLES,CONFIG_BRIDGE_NF_EBTABLES, $(P_EBT)ebtables),))
|
|
||||||
|
|
||||||
# ebtables: tables
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_BROUTE, $(P_EBT)ebtable_broute))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_T_FILTER, $(P_EBT)ebtable_filter))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_T_NAT, $(P_EBT)ebtable_nat))
|
|
||||||
|
|
||||||
# ebtables: matches
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_802_3, $(P_EBT)ebt_802_3))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_AMONG, $(P_EBT)ebt_among))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_ARP, $(P_EBT)ebt_arp))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_IP, $(P_EBT)ebt_ip))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP6,CONFIG_BRIDGE_EBT_IP6, $(P_EBT)ebt_ip6))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_LIMIT, $(P_EBT)ebt_limit))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_MARK, $(P_EBT)ebt_mark_m))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_PKTTYPE, $(P_EBT)ebt_pkttype))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_STP, $(P_EBT)ebt_stp))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_VLAN, $(P_EBT)ebt_vlan))
|
|
||||||
|
|
||||||
# targets
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_ARPREPLY, $(P_EBT)ebt_arpreply))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_MARK_T, $(P_EBT)ebt_mark))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_DNAT, $(P_EBT)ebt_dnat))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_REDIRECT, $(P_EBT)ebt_redirect))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_SNAT, $(P_EBT)ebt_snat))
|
|
||||||
|
|
||||||
# watchers
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_LOG, $(P_EBT)ebt_log))
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_NFLOG, $(P_EBT)ebt_nflog))
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_NFQUEUE, $(P_EBT)ebt_nfqueue))
|
|
||||||
|
|
||||||
# nftables
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES, $(P_XT)nf_tables),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES_SET, $(P_XT)nf_tables_set),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_COUNTER, $(P_XT)nft_counter),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_CT, $(P_XT)nft_ct),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_HASH, $(P_XT)nft_hash),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_LIMIT, $(P_XT)nft_limit),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_LOG, $(P_XT)nft_log),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_META, $(P_XT)nft_meta),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_NUMGEN, $(P_XT)nft_numgen),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_OBJREF, $(P_XT)nft_objref),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_QUOTA, $(P_XT)nft_quota),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REDIR, $(P_XT)nft_redir),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REJECT, $(P_XT)nft_reject $(P_V4)nft_reject_ipv4 $(P_V6)nft_reject_ipv6),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REJECT_INET, $(P_XT)nft_reject_inet),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NFT_BRIDGE_META, $(P_EBT)nft_meta_bridge),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NFT_BRIDGE_REJECT, $(P_EBT)nft_reject_bridge),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NF_CONNTRACK_BRIDGE, $(P_EBT)nf_conntrack_bridge),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_NAT, $(P_XT)nft_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_NAT, $(P_XT)nft_chain_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ, $(P_XT)nft_masq),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB, $(P_XT)nft_fib),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB_INET, $(P_XT)nft_fib_inet),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB_IPV4, $(P_V4)nft_fib_ipv4),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB_IPV6, $(P_V6)nft_fib_ipv6),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_QUEUE,CONFIG_NFT_QUEUE, $(P_XT)nft_queue),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_SOCKET,CONFIG_NFT_SOCKET, $(P_XT)nft_socket),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_TPROXY,CONFIG_NFT_TPROXY, $(P_XT)nft_tproxy),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_COMPAT,CONFIG_NFT_COMPAT, $(P_XT)nft_compat),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_XFRM,CONFIG_NFT_XFRM, $(P_XT)nft_xfrm),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CONNLIMIT,CONFIG_NFT_CONNLIMIT, $(P_XT)nft_connlimit),))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
IPT_BUILTIN += $(NF_IPT-y) $(NF_IPT-m)
|
|
||||||
IPT_BUILTIN += $(IPT_CORE-y) $(IPT_CORE-m)
|
|
||||||
IPT_BUILTIN += $(NF_CONNTRACK-y)
|
|
||||||
IPT_BUILTIN += $(NF_CONNTRACK6-y)
|
|
||||||
IPT_BUILTIN += $(IPT_CONNTRACK-y)
|
|
||||||
IPT_BUILTIN += $(IPT_CONNTRACK_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(IPT_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(IPT_PHYSDEV-y)
|
|
||||||
IPT_BUILTIN += $(IPT_FILTER-y)
|
|
||||||
IPT_BUILTIN += $(IPT_FLOW-y) $(IPT_FLOW-m)
|
|
||||||
IPT_BUILTIN += $(IPT_IPOPT-y)
|
|
||||||
IPT_BUILTIN += $(IPT_IPRANGE-y)
|
|
||||||
IPT_BUILTIN += $(IPT_CLUSTER-y)
|
|
||||||
IPT_BUILTIN += $(IPT_IPSEC-y)
|
|
||||||
IPT_BUILTIN += $(IPT_IPV6-y) $(IPT_IPV6-m)
|
|
||||||
IPT_BUILTIN += $(NF_NAT-y)
|
|
||||||
IPT_BUILTIN += $(NF_NAT6-y)
|
|
||||||
IPT_BUILTIN += $(IPT_NAT-y)
|
|
||||||
IPT_BUILTIN += $(IPT_NAT6-y)
|
|
||||||
IPT_BUILTIN += $(IPT_NAT_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(NF_NATHELPER-y)
|
|
||||||
IPT_BUILTIN += $(NF_NATHELPER_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(IPT_TPROXY-y)
|
|
||||||
IPT_BUILTIN += $(NFNETLINK-y)
|
|
||||||
IPT_BUILTIN += $(NFNETLINK_LOG-y)
|
|
||||||
IPT_BUILTIN += $(NFNETLINK_QUEUE-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES_IP4-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES_IP6-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES_WATCHERS-y)
|
|
||||||
|
|
||||||
endif # __inc_netfilter
|
|
@ -1,48 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2011-2020 OpenWrt.org
|
|
||||||
|
|
||||||
# iconv full
|
|
||||||
ifeq ($(CONFIG_BUILD_NLS),y)
|
|
||||||
ICONV_PREFIX:=$(STAGING_DIR)/usr/lib/libiconv-full
|
|
||||||
ICONV_FULL:=1
|
|
||||||
|
|
||||||
INTL_PREFIX:=$(STAGING_DIR)/usr/lib/libintl-full
|
|
||||||
INTL_FULL:=1
|
|
||||||
|
|
||||||
CMAKE_OPTIONS += -DCMAKE_PREFIX_PATH="$(ICONV_PREFIX);$(INTL_PREFIX)"
|
|
||||||
else
|
|
||||||
ICONV_PREFIX:=
|
|
||||||
ICONV_FULL:=
|
|
||||||
|
|
||||||
INTL_PREFIX:=
|
|
||||||
INTL_FULL:=
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS += CONFIG_BUILD_NLS
|
|
||||||
|
|
||||||
ICONV_DEPENDS:=+BUILD_NLS:libiconv-full
|
|
||||||
ifeq ($(CONFIG_BUILD_NLS),y)
|
|
||||||
ICONV_CFLAGS:=-I$(ICONV_PREFIX)/include
|
|
||||||
ICONV_CPPFLAGS:=-I$(ICONV_PREFIX)/include
|
|
||||||
ICONV_LDFLAGS:=-L$(ICONV_PREFIX)/lib -Wl,-rpath-link=$(ICONV_PREFIX)/lib
|
|
||||||
else
|
|
||||||
ICONV_CFLAGS:=
|
|
||||||
ICONV_CPPFLAGS:=
|
|
||||||
ICONV_LDFLAGS:=
|
|
||||||
endif
|
|
||||||
|
|
||||||
INTL_DEPENDS:=+BUILD_NLS:libintl-full
|
|
||||||
ifeq ($(CONFIG_BUILD_NLS),y)
|
|
||||||
INTL_CFLAGS:=-I$(INTL_PREFIX)/include
|
|
||||||
INTL_CPPFLAGS:=-I$(INTL_PREFIX)/include
|
|
||||||
INTL_LDFLAGS:=-L$(INTL_PREFIX)/lib -Wl,-rpath-link=$(INTL_PREFIX)/lib
|
|
||||||
else
|
|
||||||
INTL_CFLAGS:=
|
|
||||||
INTL_CPPFLAGS:=
|
|
||||||
INTL_LDFLAGS:=
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGET_CFLAGS += $(ICONV_CFLAGS) $(INTL_CFLAGS)
|
|
||||||
TARGET_CPPFLAGS += $(ICONV_CPPFLAGS) $(INTL_CPPFLAGS)
|
|
||||||
TARGET_LDFLAGS += $(ICONV_LDFLAGS) $(INTL_LDFLAGS)
|
|
@ -1,79 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2022-2023 Enéas Ulir de Queiroz
|
|
||||||
|
|
||||||
ENGINES_DIR=engines-3
|
|
||||||
|
|
||||||
define Package/openssl/module/Default
|
|
||||||
SECTION:=libs
|
|
||||||
CATEGORY:=Libraries
|
|
||||||
SUBMENU:=SSL
|
|
||||||
DEPENDS:=libopenssl +libopenssl-conf
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/openssl/engine/Default
|
|
||||||
$(Package/openssl/module/Default)
|
|
||||||
DEPENDS+=@OPENSSL_ENGINE
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
# 1 = moudule type (engine|provider)
|
|
||||||
# 2 = module name
|
|
||||||
# 3 = directory to save .so file
|
|
||||||
# 4 = [ package name, defaults to libopenssl-$(2) ]
|
|
||||||
define Package/openssl/add-module
|
|
||||||
$(eval MOD_TYPE:=$(1))
|
|
||||||
$(eval MOD_NAME:=$(2))
|
|
||||||
$(eval MOD_DIR:=$(3))
|
|
||||||
$(eval OSSL_PKG:=$(if $(4),$(4),libopenssl-$(MOD_NAME)))
|
|
||||||
$(info Package/openssl/add-module 1='$(1)'; 2='$(2)'; 3='$(3)' 4='$(4)')
|
|
||||||
$(info MOD_TYPE='$(MOD_TYPE)'; MOD_NAME='$(MOD_NAME)'; MOD_DIR='$(MOD_DIR)' OSSL_PKG='$(OSSL_PKG)')
|
|
||||||
Package/$(OSSL_PKG)/conffiles:=/etc/ssl/modules.cnf.d/$(MOD_NAME).cnf
|
|
||||||
|
|
||||||
define Package/$(OSSL_PKG)/install
|
|
||||||
$$(INSTALL_DIR) $$(1)/$(MOD_DIR)
|
|
||||||
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/$(MOD_DIR)/$(MOD_NAME).so \
|
|
||||||
$$(1)/$(MOD_DIR)
|
|
||||||
$$(INSTALL_DIR) $$(1)/etc/ssl/modules.cnf.d
|
|
||||||
$$(INSTALL_DATA) ./files/$(MOD_NAME).cnf $$(1)/etc/ssl/modules.cnf.d/
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(OSSL_PKG)/postinst
|
|
||||||
#!/bin/sh
|
|
||||||
OPENSSL_UCI="$$$${IPKG_INSTROOT}/etc/config/openssl"
|
|
||||||
|
|
||||||
[ -z "$$$${IPKG_INSTROOT}" ] \
|
|
||||||
&& uci -q get openssl.$(MOD_NAME) >/dev/null \
|
|
||||||
&& exit 0
|
|
||||||
|
|
||||||
cat << EOF >> "$$$${OPENSSL_UCI}"
|
|
||||||
|
|
||||||
config $(MOD_TYPE) '$(MOD_NAME)'
|
|
||||||
option enabled '1'
|
|
||||||
EOF
|
|
||||||
|
|
||||||
[ -n "$$$${IPKG_INSTROOT}" ] || /etc/init.d/openssl reload
|
|
||||||
exit 0
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(OSSL_PKG)/postrm
|
|
||||||
#!/bin/sh
|
|
||||||
[ -n "$$$${IPKG_INSTROOT}" ] && exit 0
|
|
||||||
uci -q delete openssl.$(MOD_NAME) && uci commit openssl
|
|
||||||
/etc/init.d/openssl reload
|
|
||||||
exit 0
|
|
||||||
endef
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1 = engine name
|
|
||||||
# 2 - package name, defaults to libopenssl-$(1)
|
|
||||||
define Package/openssl/add-engine
|
|
||||||
$(call Package/openssl/add-module,engine,$(1),/usr/lib/$(ENGINES_DIR),$(2))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1 = provider name
|
|
||||||
# 2 = [ package name, defaults to libopenssl-$(1) ]
|
|
||||||
define Package/openssl/add-provider
|
|
||||||
$(call Package/openssl/add-module,provider,$(1),/usr/lib/ossl-modules,$(2))
|
|
||||||
endef
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
define BuildTarget/bin
|
|
||||||
TARGET_VARIANT=$(if $(ALL_VARIANTS),$(if $(VARIANT),$(filter-out *,$(VARIANT)),$(firstword $(ALL_VARIANTS))))
|
|
||||||
ifeq ($(if $(TARGET_VARIANT),$(BUILD_VARIANT)),$(TARGET_VARIANT))
|
|
||||||
ifdef Package/$(1)/install
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
|
|
||||||
$(_pkg_target)compile: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
|
|
||||||
compile: install-bin-$(1)
|
|
||||||
else
|
|
||||||
compile: $(1)-disabled
|
|
||||||
$(1)-disabled:
|
|
||||||
@echo "WARNING: skipping $(1) -- package not selected" >&2
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(PKG_BUILD_DIR)/.pkgdir/$(1).installed: $(STAMP_BUILT)
|
|
||||||
rm -rf $(PKG_BUILD_DIR)/.pkgdir/$(1) $$@
|
|
||||||
mkdir -p $(PKG_BUILD_DIR)/.pkgdir/$(1)
|
|
||||||
$(call Package/$(1)/install,$(PKG_BUILD_DIR)/.pkgdir/$(1))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
install-bin-$(1): $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
|
|
||||||
rm -rf $(BIN_DIR)/$(1)
|
|
||||||
-rmdir $(PKG_BUILD_DIR)/.pkgdir/$(1) >/dev/null 2>/dev/null
|
|
||||||
if [ -d $(PKG_BUILD_DIR)/.pkgdir/$(1) ]; then \
|
|
||||||
$(INSTALL_DIR) $(BIN_DIR)/$(1) && \
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(BIN_DIR)/$(1)/; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
clean-$(1):
|
|
||||||
rm -rf $(BIN_DIR)/$(1)
|
|
||||||
|
|
||||||
clean: clean-$(1)
|
|
||||||
.PHONY: install-bin-$(1)
|
|
||||||
endef
|
|
||||||
endif
|
|
@ -1,164 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
PKG_DEFAULT_DEPENDS = +libc
|
|
||||||
|
|
||||||
ifneq ($(PKG_NAME),toolchain)
|
|
||||||
PKG_FIXUP_DEPENDS = $(if $(filter kmod-%,$(1)),$(2),$(PKG_DEFAULT_DEPENDS) $(filter-out $(PKG_DEFAULT_DEPENDS),$(2)))
|
|
||||||
else
|
|
||||||
PKG_FIXUP_DEPENDS = $(2)
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/Default
|
|
||||||
CONFIGFILE:=
|
|
||||||
SECTION:=opt
|
|
||||||
CATEGORY:=Extra packages
|
|
||||||
DEPENDS:=
|
|
||||||
MDEPENDS:=
|
|
||||||
CONFLICTS:=
|
|
||||||
PROVIDES:=
|
|
||||||
EXTRA_DEPENDS:=
|
|
||||||
MAINTAINER:=$(PKG_MAINTAINER)
|
|
||||||
SOURCE:=$(patsubst $(TOPDIR)/%,%,$(patsubst $(TOPDIR)/package/%,feeds/base/%,$(CURDIR)))
|
|
||||||
ifneq ($(PKG_VERSION),)
|
|
||||||
ifneq ($(PKG_RELEASE),)
|
|
||||||
VERSION:=$(PKG_VERSION)-r$(PKG_RELEASE)
|
|
||||||
else
|
|
||||||
VERSION:=$(PKG_VERSION)
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
VERSION:=$(PKG_RELEASE)
|
|
||||||
endif
|
|
||||||
ABI_VERSION:=
|
|
||||||
ifneq ($(PKG_FLAGS),)
|
|
||||||
PKGFLAGS:=$(PKG_FLAGS)
|
|
||||||
else
|
|
||||||
PKGFLAGS:=
|
|
||||||
endif
|
|
||||||
ifneq ($(ARCH_PACKAGES),)
|
|
||||||
PKGARCH:=$(ARCH_PACKAGES)
|
|
||||||
else
|
|
||||||
PKGARCH:=$(BOARD)
|
|
||||||
endif
|
|
||||||
DEFAULT:=
|
|
||||||
MENU:=
|
|
||||||
SUBMENU:=
|
|
||||||
SUBMENUDEP:=
|
|
||||||
TITLE:=
|
|
||||||
KCONFIG:=
|
|
||||||
BUILDONLY:=
|
|
||||||
HIDDEN:=
|
|
||||||
URL:=$(PKG_URL)
|
|
||||||
VARIANT:=
|
|
||||||
DEFAULT_VARIANT:=
|
|
||||||
USERID:=
|
|
||||||
ALTERNATIVES:=
|
|
||||||
LICENSE:=$(PKG_LICENSE)
|
|
||||||
LICENSE_FILES:=$(PKG_LICENSE_FILES)
|
|
||||||
FILE_MODES:=$(PKG_FILE_MODES)
|
|
||||||
endef
|
|
||||||
|
|
||||||
Build/Patch:=$(Build/Patch/Default)
|
|
||||||
ifneq ($(strip $(PKG_UNPACK)),)
|
|
||||||
define Build/Prepare/Default
|
|
||||||
$(PKG_UNPACK)
|
|
||||||
[ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR)
|
|
||||||
$(Build/Patch)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXTRA_CXXFLAGS = $(EXTRA_CFLAGS)
|
|
||||||
ifeq ($(CONFIG_BUILD_NLS),y)
|
|
||||||
DISABLE_NLS:=
|
|
||||||
else
|
|
||||||
DISABLE_NLS:=--disable-nls
|
|
||||||
endif
|
|
||||||
|
|
||||||
CONFIGURE_PREFIX:=/usr
|
|
||||||
CONFIGURE_ARGS = \
|
|
||||||
--target=$(GNU_TARGET_NAME) \
|
|
||||||
--host=$(GNU_TARGET_NAME) \
|
|
||||||
--build=$(GNU_HOST_NAME) \
|
|
||||||
--disable-dependency-tracking \
|
|
||||||
--program-prefix="" \
|
|
||||||
--program-suffix="" \
|
|
||||||
--prefix=$(CONFIGURE_PREFIX) \
|
|
||||||
--exec-prefix=$(CONFIGURE_PREFIX) \
|
|
||||||
--bindir=$(CONFIGURE_PREFIX)/bin \
|
|
||||||
--sbindir=$(CONFIGURE_PREFIX)/sbin \
|
|
||||||
--libexecdir=$(CONFIGURE_PREFIX)/lib \
|
|
||||||
--sysconfdir=/etc \
|
|
||||||
--datadir=$(CONFIGURE_PREFIX)/share \
|
|
||||||
--localstatedir=/var \
|
|
||||||
--mandir=$(CONFIGURE_PREFIX)/man \
|
|
||||||
--infodir=$(CONFIGURE_PREFIX)/info \
|
|
||||||
$(DISABLE_NLS) \
|
|
||||||
$(DISABLE_IPV6)
|
|
||||||
|
|
||||||
CONFIGURE_VARS = \
|
|
||||||
$(TARGET_CONFIGURE_OPTS) \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
|
|
||||||
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)" \
|
|
||||||
CPPFLAGS="$(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
|
|
||||||
|
|
||||||
CONFIGURE_PATH = .
|
|
||||||
CONFIGURE_CMD = ./configure
|
|
||||||
|
|
||||||
replace_script=$(FIND) $(1) -name $(2) | $(XARGS) chmod u+w; \
|
|
||||||
$(FIND) $(1) -name $(2) | $(XARGS) -n1 cp --remove-destination \
|
|
||||||
$(SCRIPT_DIR)/$(2);
|
|
||||||
|
|
||||||
define Build/Configure/Default
|
|
||||||
(cd $(PKG_BUILD_DIR)/$(CONFIGURE_PATH)/$(strip $(3)); \
|
|
||||||
if [ -x $(CONFIGURE_CMD) ]; then \
|
|
||||||
$(call replace_script,$(PKG_BUILD_DIR)/$(3),config.guess) \
|
|
||||||
$(call replace_script,$(PKG_BUILD_DIR)/$(3),config.sub) \
|
|
||||||
$(CONFIGURE_VARS) \
|
|
||||||
$(2) \
|
|
||||||
$(CONFIGURE_CMD) \
|
|
||||||
$(CONFIGURE_ARGS) \
|
|
||||||
$(1); \
|
|
||||||
fi; \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKE_VARS = \
|
|
||||||
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
|
|
||||||
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)"
|
|
||||||
|
|
||||||
MAKE_FLAGS = \
|
|
||||||
$(TARGET_CONFIGURE_OPTS) \
|
|
||||||
CROSS="$(TARGET_CROSS)" \
|
|
||||||
ARCH="$(ARCH)"
|
|
||||||
|
|
||||||
MAKE_INSTALL_FLAGS = \
|
|
||||||
$(MAKE_FLAGS) \
|
|
||||||
DESTDIR="$(PKG_INSTALL_DIR)"
|
|
||||||
|
|
||||||
MAKE_PATH ?= .
|
|
||||||
|
|
||||||
define Build/Compile/Default
|
|
||||||
+$(MAKE_VARS) \
|
|
||||||
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
|
|
||||||
$(MAKE_FLAGS) \
|
|
||||||
$(1);
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Install/Default
|
|
||||||
$(MAKE_VARS) \
|
|
||||||
$(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
|
|
||||||
$(MAKE_INSTALL_FLAGS) \
|
|
||||||
$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))') \
|
|
||||||
$(if $(1), $(1), install);
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Dist/Default
|
|
||||||
$(call Build/Compile/Default, DESTDIR="$(PKG_BUILD_DIR)/tmp" CC="$(TARGET_CC)" dist)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/DistCheck/Default
|
|
||||||
$(call Build/Compile/Default, DESTDIR="$(PKG_BUILD_DIR)/tmp" CC="$(TARGET_CC)" distcheck)
|
|
||||||
endef
|
|
@ -1,58 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
|
|
||||||
|
|
||||||
define SOURCE_INFO
|
|
||||||
$(if $(PKG_BUILD_DEPENDS),Build-Depends: $(PKG_BUILD_DEPENDS)
|
|
||||||
)$(if $(HOST_BUILD_DEPENDS),Build-Depends/host: $(HOST_BUILD_DEPENDS)
|
|
||||||
)$(if $(BUILD_TYPES),Build-Types: $(BUILD_TYPES)
|
|
||||||
)
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Dumpinfo/Package
|
|
||||||
$(info $(SOURCE_INFO)Package: $(1)
|
|
||||||
$(if $(MENU),Menu: $(MENU)
|
|
||||||
)$(if $(SUBMENU),Submenu: $(SUBMENU)
|
|
||||||
)$(if $(SUBMENUDEP),Submenu-Depends: $(SUBMENUDEP)
|
|
||||||
)$(if $(DEFAULT),Default: $(DEFAULT)
|
|
||||||
)$(if $(findstring $(PREREQ_CHECK),1),Prereq-Check: 1
|
|
||||||
)Version: $(VERSION)
|
|
||||||
Depends: $(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS))
|
|
||||||
Conflicts: $(CONFLICTS)
|
|
||||||
Menu-Depends: $(MDEPENDS)
|
|
||||||
Provides: $(PROVIDES)
|
|
||||||
$(if $(VARIANT),Build-Variant: $(VARIANT)
|
|
||||||
$(if $(DEFAULT_VARIANT),Default-Variant: $(VARIANT)
|
|
||||||
))Section: $(SECTION)
|
|
||||||
Category: $(CATEGORY)
|
|
||||||
$(if $(filter nonshared,$(PKGFLAGS)),,Repository: $(if $(FEED),$(FEED),base)
|
|
||||||
)Title: $(TITLE)
|
|
||||||
Maintainer: $(MAINTAINER)
|
|
||||||
$(if $(USERID),Require-User: $(USERID)
|
|
||||||
)Source: $(PKG_SOURCE)
|
|
||||||
$(if $(LICENSE),License: $(LICENSE)
|
|
||||||
)$(if $(LICENSE_FILES),LicenseFiles: $(LICENSE_FILES)
|
|
||||||
)$(if $(PKG_CPE_ID),CPE-ID: $(PKG_CPE_ID)
|
|
||||||
)$(if $(URL),URL: $(URL)
|
|
||||||
)$(if $(ABI_VERSION),ABI-Version: $(ABI_VERSION)
|
|
||||||
)Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))
|
|
||||||
$(if $(KCONFIG),Kernel-Config: $(KCONFIG)
|
|
||||||
)$(if $(BUILDONLY),Build-Only: $(BUILDONLY)
|
|
||||||
)$(if $(HIDDEN),Hidden: $(HIDDEN)
|
|
||||||
)Description: $(if $(Package/$(1)/description),$(Package/$(1)/description),$(TITLE))
|
|
||||||
@@
|
|
||||||
$(if $(Package/$(1)/config),Config:
|
|
||||||
$(Package/$(1)/config)
|
|
||||||
@@
|
|
||||||
))
|
|
||||||
SOURCE_INFO :=
|
|
||||||
endef
|
|
||||||
|
|
||||||
dumpinfo: FORCE
|
|
||||||
$(if $(SOURCE_INFO),$(info $(SOURCE_INFO)))
|
|
||||||
|
|
||||||
endif
|
|
@ -1,369 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2022 OpenWrt.org
|
|
||||||
|
|
||||||
ifndef DUMP
|
|
||||||
include $(INCLUDE_DIR)/feeds.mk
|
|
||||||
endif
|
|
||||||
|
|
||||||
IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg
|
|
||||||
|
|
||||||
# Generates a make statement to return a wildcard for candidate ipkg files
|
|
||||||
# 1: package name
|
|
||||||
define gen_package_wildcard
|
|
||||||
$(1)$$(if $$(filter -%,$$(ABIV_$(1))),,[^a-z-])*
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: package name
|
|
||||||
# 2: candidate ipk files
|
|
||||||
define remove_ipkg_files
|
|
||||||
$(if $(strip $(2)),$(SCRIPT_DIR)/ipkg-remove $(1) $(2))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: package name
|
|
||||||
# 2: variable name
|
|
||||||
# 3: variable suffix
|
|
||||||
# 4: file is a script
|
|
||||||
define BuildPackVariable
|
|
||||||
ifdef Package/$(1)/$(2)
|
|
||||||
$$(PACK_$(1)) : VAR_$(2)$(3)=$$(Package/$(1)/$(2))
|
|
||||||
$(call shexport,Package/$(1)/$(2))
|
|
||||||
$(1)_COMMANDS += echo "$$$$$$$$$(call shvar,Package/$(1)/$(2))" > $(2)$(3); $(if $(4),chmod 0755 $(2)$(3);)
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
PARENL :=(
|
|
||||||
PARENR :=)
|
|
||||||
|
|
||||||
dep_split=$(subst :,$(space),$(1))
|
|
||||||
dep_rem=$(subst !,,$(subst $(strip $(PARENL)),,$(subst $(strip $(PARENR)),,$(word 1,$(call dep_split,$(1))))))
|
|
||||||
dep_and=dep_and_res:=$$(and $(subst $(space),$(comma),$(foreach cond,$(subst &&, ,$(1)),$$(CONFIG_$(cond)))))
|
|
||||||
dep_confvar=$(strip $(foreach cond,$(subst ||, ,$(call dep_rem,$(1))),$(eval $(call dep_and,$(cond)))$(dep_and_res)))
|
|
||||||
dep_pos=$(if $(call dep_confvar,$(1)),$(call dep_val,$(1)))
|
|
||||||
dep_neg=$(if $(call dep_confvar,$(1)),,$(call dep_val,$(1)))
|
|
||||||
dep_if=$(if $(findstring !,$(1)),$(call dep_neg,$(1)),$(call dep_pos,$(1)))
|
|
||||||
dep_val=$(word 2,$(call dep_split,$(1)))
|
|
||||||
strip_deps=$(strip $(subst +,,$(filter-out @%,$(1))))
|
|
||||||
filter_deps=$(foreach dep,$(call strip_deps,$(1)),$(if $(findstring :,$(dep)),$(call dep_if,$(dep)),$(dep)))
|
|
||||||
|
|
||||||
define AddDependency
|
|
||||||
$$(if $(1),$$(if $(2),$$(foreach pkg,$(1),$$(PACK_$$(pkg))): $$(foreach pkg,$(2),$$(PACK_$$(pkg)))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define FixupReverseDependencies
|
|
||||||
DEPS := $$(filter %:$(1),$$(IDEPEND))
|
|
||||||
DEPS := $$(patsubst %:$(1),%,$$(DEPS))
|
|
||||||
DEPS := $$(filter $$(DEPS),$$(IPKGS))
|
|
||||||
$(call AddDependency,$$(DEPS),$(1))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define FixupDependencies
|
|
||||||
DEPS := $$(filter $(1):%,$$(IDEPEND))
|
|
||||||
DEPS := $$(patsubst $(1):%,%,$$(DEPS))
|
|
||||||
DEPS := $$(filter $$(DEPS),$$(IPKGS))
|
|
||||||
$(call AddDependency,$(1),$$(DEPS))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq ($(PKG_NAME),toolchain)
|
|
||||||
define CheckDependencies
|
|
||||||
@( \
|
|
||||||
rm -f $(PKG_INFO_DIR)/$(1).missing; \
|
|
||||||
( \
|
|
||||||
export \
|
|
||||||
READELF=$(TARGET_CROSS)readelf \
|
|
||||||
OBJCOPY=$(TARGET_CROSS)objcopy \
|
|
||||||
XARGS="$(XARGS)"; \
|
|
||||||
$(SCRIPT_DIR)/gen-dependencies.sh "$$(IDIR_$(1))"; \
|
|
||||||
) | while read FILE; do \
|
|
||||||
grep -qxF "$$$$FILE" $(PKG_INFO_DIR)/$(1).provides || \
|
|
||||||
echo "$$$$FILE" >> $(PKG_INFO_DIR)/$(1).missing; \
|
|
||||||
done; \
|
|
||||||
if [ -f "$(PKG_INFO_DIR)/$(1).missing" ]; then \
|
|
||||||
echo "Package $(1) is missing dependencies for the following libraries:" >&2; \
|
|
||||||
cat "$(PKG_INFO_DIR)/$(1).missing" >&2; \
|
|
||||||
false; \
|
|
||||||
fi; \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
_addsep=$(word 1,$(1))$(foreach w,$(wordlist 2,$(words $(1)),$(1)),$(strip $(2) $(w)))
|
|
||||||
_cleansep=$(subst $(space)$(2)$(space),$(2)$(space),$(1))
|
|
||||||
mergelist=$(call _cleansep,$(call _addsep,$(1),$(comma)),$(comma))
|
|
||||||
addfield=$(if $(strip $(2)),$(1): $(2))
|
|
||||||
_define=define
|
|
||||||
_endef=endef
|
|
||||||
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
define BuildTarget/ipkg
|
|
||||||
ABIV_$(1):=$(call FormatABISuffix,$(1),$(ABI_VERSION))
|
|
||||||
PDIR_$(1):=$(call FeedPackageDir,$(1))
|
|
||||||
ifeq ($(CONFIG_USE_APK),)
|
|
||||||
PACK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).ipk
|
|
||||||
else
|
|
||||||
PACK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))-$(VERSION).apk
|
|
||||||
endif
|
|
||||||
IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)
|
|
||||||
ADIR_$(1):=$(PKG_BUILD_DIR)/apk-$(PKGARCH)/$(1)
|
|
||||||
KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))
|
|
||||||
|
|
||||||
TARGET_VARIANT:=$$(if $(ALL_VARIANTS),$$(if $$(VARIANT),$$(filter-out *,$$(VARIANT)),$(firstword $(ALL_VARIANTS))))
|
|
||||||
ifeq ($(BUILD_VARIANT),$$(if $$(TARGET_VARIANT),$$(TARGET_VARIANT),$(BUILD_VARIANT)))
|
|
||||||
do_install=
|
|
||||||
ifdef Package/$(1)/install
|
|
||||||
do_install=yes
|
|
||||||
endif
|
|
||||||
ifdef Package/$(1)/install-overlay
|
|
||||||
do_install=yes
|
|
||||||
endif
|
|
||||||
ifdef do_install
|
|
||||||
ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
|
|
||||||
IPKGS += $(1)
|
|
||||||
$(_pkg_target)compile: $$(PACK_$(1)) $(PKG_INFO_DIR)/$(1).provides $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
|
|
||||||
prepare-package-install: $$(PACK_$(1))
|
|
||||||
compile: $(STAGING_DIR_ROOT)/stamp/.$(1)_installed
|
|
||||||
else
|
|
||||||
$(if $(CONFIG_PACKAGE_$(1)),$$(info WARNING: skipping $(1) -- package not selected))
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: $(PKG_INSTALL_STAMP).$(1)
|
|
||||||
ifeq ($(CONFIG_PACKAGE_$(1)),y)
|
|
||||||
compile: $(PKG_INSTALL_STAMP).$(1)
|
|
||||||
endif
|
|
||||||
$(PKG_INSTALL_STAMP).$(1): prepare-package-install
|
|
||||||
echo "$(1)" >> $(PKG_INSTALL_STAMP)
|
|
||||||
else
|
|
||||||
$(if $(CONFIG_PACKAGE_$(1)),$$(warning WARNING: skipping $(1) -- package has no install section))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEPENDS:=$(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS))
|
|
||||||
IDEPEND_$(1):=$$(call filter_deps,$$(DEPENDS))
|
|
||||||
IDEPEND += $$(patsubst %,$(1):%,$$(IDEPEND_$(1)))
|
|
||||||
$(FixupDependencies)
|
|
||||||
$(FixupReverseDependencies)
|
|
||||||
|
|
||||||
$(eval $(call BuildPackVariable,$(1),conffiles))
|
|
||||||
$(eval $(call BuildPackVariable,$(1),preinst,,1))
|
|
||||||
$(eval $(call BuildPackVariable,$(1),postinst,-pkg,1))
|
|
||||||
$(eval $(call BuildPackVariable,$(1),prerm,-pkg,1))
|
|
||||||
$(eval $(call BuildPackVariable,$(1),postrm,,1))
|
|
||||||
|
|
||||||
$(PKG_BUILD_DIR)/.pkgdir/$(1).installed : export PATH=$$(TARGET_PATH_PKG)
|
|
||||||
$(PKG_BUILD_DIR)/.pkgdir/$(1).installed: $(STAMP_BUILT)
|
|
||||||
rm -rf $$@ $(PKG_BUILD_DIR)/.pkgdir/$(1)
|
|
||||||
mkdir -p $(PKG_BUILD_DIR)/.pkgdir/$(1)
|
|
||||||
$(call Package/$(1)/install,$(PKG_BUILD_DIR)/.pkgdir/$(1))
|
|
||||||
$(call Package/$(1)/install_lib,$(PKG_BUILD_DIR)/.pkgdir/$(1))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
|
|
||||||
mkdir -p $(STAGING_DIR_ROOT)/stamp
|
|
||||||
$(if $(ABI_VERSION),echo '$(ABI_VERSION)' | cmp -s - $(PKG_INFO_DIR)/$(1).version || { \
|
|
||||||
echo '$(ABI_VERSION)' > $(PKG_INFO_DIR)/$(1).version; \
|
|
||||||
$(foreach pkg,$(filter-out $(1),$(PROVIDES)), \
|
|
||||||
cp $(PKG_INFO_DIR)/$(1).version $(PKG_INFO_DIR)/$(pkg).version; \
|
|
||||||
) \
|
|
||||||
} )
|
|
||||||
$(call locked,$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(STAGING_DIR_ROOT)/,root-copy)
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
Package/$(1)/DEPENDS := $$(call mergelist,$$(foreach dep,$$(filter-out @%,$$(IDEPEND_$(1))),$$(dep)$$(call GetABISuffix,$$(dep))))
|
|
||||||
ifneq ($$(EXTRA_DEPENDS),)
|
|
||||||
Package/$(1)/DEPENDS := $$(EXTRA_DEPENDS)$$(if $$(Package/$(1)/DEPENDS),$$(comma) $$(Package/$(1)/DEPENDS))
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(_define) Package/$(1)/CONTROL
|
|
||||||
Package: $(1)$$(ABIV_$(1))
|
|
||||||
Version: $(VERSION)
|
|
||||||
$$(call addfield,Depends,$$(Package/$(1)/DEPENDS)
|
|
||||||
)$$(call addfield,Conflicts,$$(call mergelist,$(CONFLICTS))
|
|
||||||
)$$(call addfield,Provides,$$(call mergelist,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), $(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))))
|
|
||||||
)$$(call addfield,Alternatives,$$(call mergelist,$(ALTERNATIVES))
|
|
||||||
)$$(call addfield,Source,$(SOURCE)
|
|
||||||
)$$(call addfield,SourceName,$(PKG_NAME)
|
|
||||||
)$$(call addfield,License,$(LICENSE)
|
|
||||||
)$$(call addfield,LicenseFiles,$(LICENSE_FILES)
|
|
||||||
)$$(call addfield,Section,$(SECTION)
|
|
||||||
)$$(call addfield,Require-User,$(USERID)
|
|
||||||
)$$(call addfield,SourceDateEpoch,$(PKG_SOURCE_DATE_EPOCH)
|
|
||||||
)$$(call addfield,URL,$(URL)
|
|
||||||
)$$(if $$(ABIV_$(1)),ABIVersion: $$(ABIV_$(1))
|
|
||||||
)$(if $(PKG_CPE_ID),CPE-ID: $(PKG_CPE_ID)
|
|
||||||
)$(if $(filter hold,$(PKG_FLAGS)),Status: unknown hold not-installed
|
|
||||||
)$(if $(filter essential,$(PKG_FLAGS)),Essential: yes
|
|
||||||
)$(if $(MAINTAINER),Maintainer: $(MAINTAINER)
|
|
||||||
)Architecture: $(PKGARCH)
|
|
||||||
Installed-Size: 0
|
|
||||||
$(_endef)
|
|
||||||
|
|
||||||
$$(PACK_$(1)) : export CONTROL=$$(Package/$(1)/CONTROL)
|
|
||||||
$$(PACK_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
|
|
||||||
$$(PACK_$(1)) : export PATH=$$(TARGET_PATH_PKG)
|
|
||||||
$$(PACK_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
|
|
||||||
$(PKG_INFO_DIR)/$(1).provides $$(PACK_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-pack.mk
|
|
||||||
rm -rf $$(IDIR_$(1))
|
|
||||||
ifeq ($$(CONFIG_USE_APK),)
|
|
||||||
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_package_wildcard,$(1))))
|
|
||||||
else
|
|
||||||
$$(call remove_ipkg_files,$(1),$$(call apk_package_files,$(call gen_package_wildcard,$(1))))
|
|
||||||
endif
|
|
||||||
mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1)) $(PKG_INFO_DIR)
|
|
||||||
$(call Package/$(1)/install,$$(IDIR_$(1)))
|
|
||||||
$(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay)
|
|
||||||
$(call Package/$(1)/install-overlay,$$(IDIR_$(1))/rootfs-overlay)
|
|
||||||
-find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| $(XARGS) rm -rf
|
|
||||||
@( \
|
|
||||||
find $$(IDIR_$(1)) -name lib\*.so\* -or -name \*.ko | awk -F/ '{ print $$$$NF }'; \
|
|
||||||
for file in $$(patsubst %,$(PKG_INFO_DIR)/%.provides,$$(IDEPEND_$(1))); do \
|
|
||||||
if [ -f "$$$$file" ]; then \
|
|
||||||
cat $$$$file; \
|
|
||||||
fi; \
|
|
||||||
done; $(Package/$(1)/extra_provides) \
|
|
||||||
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
|
|
||||||
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
|
|
||||||
$(CheckDependencies)
|
|
||||||
|
|
||||||
$(RSTRIP) $$(IDIR_$(1))
|
|
||||||
|
|
||||||
ifneq ($$(CONFIG_IPK_FILES_CHECKSUMS),)
|
|
||||||
(cd $$(IDIR_$(1)); \
|
|
||||||
( \
|
|
||||||
find . -type f \! -path ./CONTROL/\* -exec $(MKHASH) sha256 -n \{\} \; 2> /dev/null | \
|
|
||||||
sed 's|\([[:blank:]]\)\./| \1/|' > $$(IDIR_$(1))/CONTROL/files-sha256sum \
|
|
||||||
) || true \
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($$(KEEP_$(1)),)
|
|
||||||
@( \
|
|
||||||
keepfiles=""; \
|
|
||||||
for x in $$(KEEP_$(1)); do \
|
|
||||||
[ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \
|
|
||||||
done; \
|
|
||||||
[ -z "$$$$keepfiles" ] || { \
|
|
||||||
mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \
|
|
||||||
for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \
|
|
||||||
}; \
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $$(PDIR_$(1))/tmp
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_USE_APK),)
|
|
||||||
mkdir -p $$(IDIR_$(1))/CONTROL
|
|
||||||
(cd $$(IDIR_$(1))/CONTROL; \
|
|
||||||
( \
|
|
||||||
echo "$$$$CONTROL"; \
|
|
||||||
printf "Description: "; echo "$$$$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; \
|
|
||||||
) > control; \
|
|
||||||
chmod 644 control; \
|
|
||||||
( \
|
|
||||||
echo "#!/bin/sh"; \
|
|
||||||
echo "[ \"\$$$${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; \
|
|
||||||
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
|
|
||||||
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
|
|
||||||
echo "default_postinst \$$$$0 \$$$$@"; \
|
|
||||||
) > postinst; \
|
|
||||||
( \
|
|
||||||
echo "#!/bin/sh"; \
|
|
||||||
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
|
|
||||||
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
|
|
||||||
echo "default_prerm \$$$$0 \$$$$@"; \
|
|
||||||
) > prerm; \
|
|
||||||
chmod 0755 postinst prerm; \
|
|
||||||
$($(1)_COMMANDS) \
|
|
||||||
)
|
|
||||||
|
|
||||||
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/bash $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1))
|
|
||||||
else
|
|
||||||
mkdir -p $$(ADIR_$(1))/
|
|
||||||
mkdir -p $$(IDIR_$(1))/lib/apk/packages/
|
|
||||||
|
|
||||||
(cd $$(ADIR_$(1)); $($(1)_COMMANDS))
|
|
||||||
|
|
||||||
( \
|
|
||||||
echo "#!/bin/sh"; \
|
|
||||||
echo "[ \"\$$$${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; \
|
|
||||||
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
|
|
||||||
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
|
|
||||||
echo 'export root="$$$${IPKG_INSTROOT}"'; \
|
|
||||||
echo 'export pkgname="$(1)"'; \
|
|
||||||
echo "add_group_and_user"; \
|
|
||||||
[ ! -f $$(ADIR_$(1))/postinst-pkg ] || cat "$$(ADIR_$(1))/postinst-pkg"; \
|
|
||||||
echo "default_postinst"; \
|
|
||||||
) > $$(ADIR_$(1))/post-install;
|
|
||||||
|
|
||||||
( \
|
|
||||||
echo "#!/bin/sh"; \
|
|
||||||
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
|
|
||||||
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
|
|
||||||
echo 'export root="$$$${IPKG_INSTROOT}"'; \
|
|
||||||
echo 'export pkgname="$(1)"'; \
|
|
||||||
[ ! -f $$(ADIR_$(1))/prerm-pkg ] || cat "$$(ADIR_$(1))/prerm-pkg"; \
|
|
||||||
echo "default_prerm"; \
|
|
||||||
) > $$(ADIR_$(1))/pre-deinstall;
|
|
||||||
|
|
||||||
if [ -n "$(USERID)" ]; then echo $(USERID) > $$(IDIR_$(1))/lib/apk/packages/$(1).rusers; fi;
|
|
||||||
if [ -n "$(ALTERNATIVES)" ]; then echo $(ALTERNATIVES) > $$(IDIR_$(1))/lib/apk/packages/$(1).alternatives; fi;
|
|
||||||
(cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" > $$(IDIR_$(1))/lib/apk/packages/$(1).list)
|
|
||||||
# Move conffiles to IDIR and build conffiles_static with csums
|
|
||||||
if [ -f $$(ADIR_$(1))/conffiles ]; then \
|
|
||||||
mv -f $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
|
||||||
for file in $$$$(cat $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles); do \
|
|
||||||
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
|
|
||||||
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
|
|
||||||
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
|
|
||||||
done; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Some package (base-files) manually append stuff to conffiles
|
|
||||||
# Append stuff from it and delete the CONTROL directory since everything else should be migrated
|
|
||||||
if [ -f $$(IDIR_$(1))/CONTROL/conffiles ]; then \
|
|
||||||
echo $$$$(IDIR_$(1))/CONTROL/conffiles >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
|
||||||
for file in $$$$(cat $$(IDIR_$(1))/CONTROL/conffiles); do \
|
|
||||||
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
|
|
||||||
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
|
|
||||||
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
|
|
||||||
done; \
|
|
||||||
rm -rf $$(IDIR_$(1))/CONTROL/conffiles; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$$$$(ls -A $$(IDIR_$(1))/CONTROL 2>/dev/null)" ]; then \
|
|
||||||
rm -rf $$(IDIR_$(1))/CONTROL; \
|
|
||||||
else \
|
|
||||||
echo "CONTROL directory $$(IDIR_$(1))/CONTROL is not empty! This is not right and should be checked!" >&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk mkpkg \
|
|
||||||
--info "name:$(1)$$(ABIV_$(1))" \
|
|
||||||
--info "version:$(VERSION)" \
|
|
||||||
--info "description:" \
|
|
||||||
--info "arch:$(PKGARCH)" \
|
|
||||||
--info "license:$(LICENSE)" \
|
|
||||||
--info "origin:$(SOURCE)" \
|
|
||||||
--info "provides:$$(foreach prov,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), \
|
|
||||||
$(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))),$$(prov)=$(VERSION) )" \
|
|
||||||
--script "post-install:$$(ADIR_$(1))/post-install" \
|
|
||||||
--script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall" \
|
|
||||||
--info "depends:$$(foreach depends,$$(subst $$(comma),$$(space),$$(subst $$(space),,$$(subst $$(paren_right),,$$(subst $$(paren_left),,$$(Package/$(1)/DEPENDS))))),$$(depends))" \
|
|
||||||
--files "$$(IDIR_$(1))" \
|
|
||||||
--output "$$(PACK_$(1))" \
|
|
||||||
--sign "$(BUILD_KEY_APK_SEC)"
|
|
||||||
endif
|
|
||||||
|
|
||||||
@[ -f $$(PACK_$(1)) ]
|
|
||||||
|
|
||||||
$(1)-clean:
|
|
||||||
ifeq ($(CONFIG_USE_APK),)
|
|
||||||
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_package_wildcard,$(1))))
|
|
||||||
else
|
|
||||||
$$(call remove_ipkg_files,$(1),$$(call apk_package_files,$(call gen_package_wildcard,$(1))))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
clean: $(1)-clean
|
|
||||||
|
|
||||||
endef
|
|
||||||
endif
|
|
@ -1,12 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2015-2020 OpenWrt.org
|
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS+= CONFIG_KERNEL_SECCOMP
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_KERNEL_SECCOMP),y)
|
|
||||||
define InstallSeccomp
|
|
||||||
$(INSTALL_DIR) $(1)/etc/seccomp
|
|
||||||
$(INSTALL_DATA) $(2) $(1)/etc/seccomp/
|
|
||||||
endef
|
|
||||||
endif
|
|
@ -1,381 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
__package_mk:=1
|
|
||||||
|
|
||||||
all: $(if $(DUMP),dumpinfo,$(if $(CHECK),check,compile))
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/download.mk
|
|
||||||
|
|
||||||
PKG_BUILD_DIR ?= $(BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION))
|
|
||||||
PKG_INSTALL_DIR ?= $(PKG_BUILD_DIR)/ipkg-install
|
|
||||||
PKG_BUILD_PARALLEL ?=
|
|
||||||
PKG_SKIP_DOWNLOAD=$(USE_SOURCE_DIR)$(USE_GIT_TREE)$(USE_GIT_SRC_CHECKOUT)
|
|
||||||
|
|
||||||
MAKE_J:=$(if $(MAKE_JOBSERVER),$(MAKE_JOBSERVER) $(if $(filter 3.% 4.0 4.1,$(MAKE_VERSION)),-j))
|
|
||||||
|
|
||||||
PKG_SOURCE_DATE_EPOCH:=$(if $(DUMP),,$(shell $(TOPDIR)/scripts/get_source_date_epoch.sh $(CURDIR)))
|
|
||||||
|
|
||||||
ifeq ($(strip $(PKG_BUILD_PARALLEL)),0)
|
|
||||||
PKG_JOBS?=-j1
|
|
||||||
else
|
|
||||||
PKG_JOBS?=$(if $(PKG_BUILD_PARALLEL),$(MAKE_J),-j1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_BUILD_FLAGS?=
|
|
||||||
__unknown_flags=$(filter-out no-iremap no-mips16 gc-sections no-gc-sections lto no-lto no-mold,$(PKG_BUILD_FLAGS))
|
|
||||||
ifneq ($(__unknown_flags),)
|
|
||||||
$(error unknown PKG_BUILD_FLAGS: $(__unknown_flags))
|
|
||||||
endif
|
|
||||||
|
|
||||||
# $1=flagname, $2=default (0/1)
|
|
||||||
define pkg_build_flag
|
|
||||||
$(if $(filter no-$(1),$(PKG_BUILD_FLAGS)),0,$(if $(filter $(1),$(PKG_BUILD_FLAGS)),1,$(2)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(call pkg_build_flag,iremap,1),1)
|
|
||||||
IREMAP_CFLAGS = $(call iremap,$(PKG_BUILD_DIR),$(notdir $(PKG_BUILD_DIR)))
|
|
||||||
TARGET_CFLAGS += $(IREMAP_CFLAGS)
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_USE_MIPS16
|
|
||||||
ifeq ($(call pkg_build_flag,mips16,1),1)
|
|
||||||
TARGET_ASFLAGS_DEFAULT = $(filter-out -mips16 -minterlink-mips16,$(TARGET_CFLAGS))
|
|
||||||
TARGET_CFLAGS += -mips16 -minterlink-mips16
|
|
||||||
TARGET_CXXFLAGS += -mips16 -minterlink-mips16
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(call pkg_build_flag,gc-sections,$(if $(CONFIG_USE_GC_SECTIONS),1,0)),1)
|
|
||||||
TARGET_CFLAGS+= -ffunction-sections -fdata-sections
|
|
||||||
TARGET_CXXFLAGS+= -ffunction-sections -fdata-sections
|
|
||||||
TARGET_LDFLAGS+= -Wl,--gc-sections
|
|
||||||
endif
|
|
||||||
ifeq ($(call pkg_build_flag,lto,$(if $(CONFIG_USE_LTO),1,0)),1)
|
|
||||||
TARGET_CFLAGS+= -flto=auto -fno-fat-lto-objects
|
|
||||||
TARGET_CXXFLAGS+= -flto=auto -fno-fat-lto-objects
|
|
||||||
TARGET_LDFLAGS+= -flto=auto -fuse-linker-plugin
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_USE_MOLD
|
|
||||||
ifeq ($(call pkg_build_flag,mold,1),1)
|
|
||||||
TARGET_LINKER:=mold
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/hardening.mk
|
|
||||||
include $(INCLUDE_DIR)/prereq.mk
|
|
||||||
include $(INCLUDE_DIR)/unpack.mk
|
|
||||||
include $(INCLUDE_DIR)/depends.mk
|
|
||||||
|
|
||||||
ifneq ($(wildcard $(TOPDIR)/git-src/$(PKG_NAME)/.git),)
|
|
||||||
USE_GIT_SRC_CHECKOUT:=1
|
|
||||||
QUILT:=1
|
|
||||||
endif
|
|
||||||
ifneq ($(if $(CONFIG_SRC_TREE_OVERRIDE),$(wildcard ./git-src)),)
|
|
||||||
USE_GIT_TREE:=1
|
|
||||||
QUILT:=1
|
|
||||||
endif
|
|
||||||
ifdef USE_SOURCE_DIR
|
|
||||||
QUILT:=1
|
|
||||||
endif
|
|
||||||
ifneq ($(wildcard $(PKG_BUILD_DIR)/.source_dir),)
|
|
||||||
QUILT:=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/quilt.mk
|
|
||||||
|
|
||||||
find_library_dependencies = \
|
|
||||||
$(wildcard $(patsubst %,$(STAGING_DIR)/pkginfo/%.version, \
|
|
||||||
$(filter-out $(BUILD_PACKAGES), $(sort $(foreach dep4, \
|
|
||||||
$(sort $(foreach dep3, \
|
|
||||||
$(sort $(foreach dep2, \
|
|
||||||
$(sort $(foreach dep1, \
|
|
||||||
$(sort $(foreach dep0, \
|
|
||||||
$(Package/$(1)/depends), \
|
|
||||||
$(Package/$(dep0)/depends) $(dep0) \
|
|
||||||
)), \
|
|
||||||
$(Package/$(dep1)/depends) $(dep1) \
|
|
||||||
)), \
|
|
||||||
$(Package/$(dep2)/depends) $(dep2) \
|
|
||||||
)), \
|
|
||||||
$(Package/$(dep3)/depends) $(dep3) \
|
|
||||||
)), \
|
|
||||||
$(Package/$(dep4)/depends) $(dep4) \
|
|
||||||
))) \
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
PKG_DIR_NAME:=$(lastword $(subst /,$(space),$(CURDIR)))
|
|
||||||
STAMP_NO_AUTOREBUILD=$(wildcard $(PKG_BUILD_DIR)/.no_autorebuild)
|
|
||||||
PREV_STAMP_PREPARED:=$(if $(STAMP_NO_AUTOREBUILD),$(wildcard $(PKG_BUILD_DIR)/.prepared*))
|
|
||||||
ifneq ($(PREV_STAMP_PREPARED),)
|
|
||||||
STAMP_PREPARED:=$(PREV_STAMP_PREPARED)
|
|
||||||
CONFIG_AUTOREBUILD:=
|
|
||||||
else
|
|
||||||
STAMP_PREPARED=$(PKG_BUILD_DIR)/.prepared$(if $(QUILT)$(DUMP),,_$(shell $(call $(if $(CONFIG_AUTOREMOVE),find_md5_reproducible,find_md5),${CURDIR} $(PKG_FILE_DEPENDS),))_$(call confvar,CONFIG_AUTOREMOVE $(PKG_PREPARED_DEPENDS)))
|
|
||||||
endif
|
|
||||||
STAMP_CONFIGURED=$(PKG_BUILD_DIR)/.configured$(if $(DUMP),,_$(call confvar,$(PKG_CONFIG_DEPENDS)))
|
|
||||||
STAMP_CONFIGURED_WILDCARD=$(PKG_BUILD_DIR)/.configured_*
|
|
||||||
STAMP_BUILT:=$(PKG_BUILD_DIR)/.built
|
|
||||||
STAMP_INSTALLED:=$(STAGING_DIR)/stamp/.$(PKG_DIR_NAME)$(if $(BUILD_VARIANT),.$(BUILD_VARIANT),)_installed
|
|
||||||
|
|
||||||
STAGING_FILES_LIST:=$(PKG_DIR_NAME)$(if $(BUILD_VARIANT),.$(BUILD_VARIANT),).list
|
|
||||||
|
|
||||||
define CleanStaging
|
|
||||||
rm -f $(STAMP_INSTALLED)
|
|
||||||
@-(\
|
|
||||||
if [ -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) ]; then \
|
|
||||||
$(SCRIPT_DIR)/clean-package.sh \
|
|
||||||
"$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)" \
|
|
||||||
"$(STAGING_DIR)"; \
|
|
||||||
fi; \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
PKG_INSTALL_STAMP:=$(PKG_INFO_DIR)/$(PKG_DIR_NAME).$(if $(BUILD_VARIANT),$(BUILD_VARIANT),default).install
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package-defaults.mk
|
|
||||||
include $(INCLUDE_DIR)/package-dumpinfo.mk
|
|
||||||
include $(INCLUDE_DIR)/package-pack.mk
|
|
||||||
include $(INCLUDE_DIR)/package-bin.mk
|
|
||||||
include $(INCLUDE_DIR)/autotools.mk
|
|
||||||
|
|
||||||
_pkg_target:=$(if $(QUILT),,.)
|
|
||||||
|
|
||||||
override MAKEFLAGS=
|
|
||||||
CONFIG_SITE:=$(INCLUDE_DIR)/site/$(ARCH)
|
|
||||||
CUR_MAKEFILE:=$(filter-out Makefile,$(firstword $(MAKEFILE_LIST)))
|
|
||||||
SUBMAKE:=$(NO_TRACE_MAKE) $(if $(CUR_MAKEFILE),-f $(CUR_MAKEFILE))
|
|
||||||
PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig:$(STAGING_DIR)/usr/share/pkgconfig
|
|
||||||
unexport QUIET CONFIG_SITE
|
|
||||||
|
|
||||||
ifeq ($(DUMP)$(filter prereq clean refresh update,$(MAKECMDGOALS)),)
|
|
||||||
ifneq ($(if $(QUILT),,$(CONFIG_AUTOREBUILD)),)
|
|
||||||
define Build/Autoclean
|
|
||||||
$(PKG_BUILD_DIR)/.dep_files: $(STAMP_PREPARED)
|
|
||||||
$(call rdep,${CURDIR} $(PKG_FILE_DEPENDS),$(STAMP_PREPARED),$(PKG_BUILD_DIR)/.dep_files,-x "*/.dep_*")
|
|
||||||
$(if $(filter prepare,$(MAKECMDGOALS)),,$(call rdep,$(PKG_BUILD_DIR),$(STAMP_BUILT),,-x "*/.dep_*" -x "*/ipkg*"))
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef USE_GIT_SRC_CHECKOUT
|
|
||||||
define Build/Prepare/Default
|
|
||||||
mkdir -p $(PKG_BUILD_DIR)
|
|
||||||
ln -s $(TOPDIR)/git-src/$(PKG_NAME)/.git $(PKG_BUILD_DIR)/.git
|
|
||||||
( cd $(PKG_BUILD_DIR); \
|
|
||||||
git checkout .; \
|
|
||||||
git submodule update --recursive; \
|
|
||||||
git submodule foreach git config --unset core.worktree; \
|
|
||||||
git submodule foreach git checkout .; \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
ifdef USE_GIT_TREE
|
|
||||||
define Build/Prepare/Default
|
|
||||||
mkdir -p $(PKG_BUILD_DIR)
|
|
||||||
ln -s $(CURDIR)/git-src $(PKG_BUILD_DIR)/.git
|
|
||||||
( cd $(PKG_BUILD_DIR); \
|
|
||||||
git checkout .; \
|
|
||||||
git submodule update --recursive; \
|
|
||||||
git submodule foreach git config --unset core.worktree; \
|
|
||||||
git submodule foreach git checkout .; \
|
|
||||||
)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
ifdef USE_SOURCE_DIR
|
|
||||||
define Build/Prepare/Default
|
|
||||||
rm -rf $(PKG_BUILD_DIR)
|
|
||||||
$(if $(wildcard $(USE_SOURCE_DIR)/*),,@echo "Error: USE_SOURCE_DIR=$(USE_SOURCE_DIR) path not found"; false)
|
|
||||||
ln -snf $(USE_SOURCE_DIR) $(PKG_BUILD_DIR)
|
|
||||||
touch $(PKG_BUILD_DIR)/.source_dir
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Build/Exports/Default
|
|
||||||
$(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR)/usr/share/aclocal $$(STAGING_DIR)/usr/share/aclocal-* $$(STAGING_DIR_HOSTPKG)/share/aclocal $$(STAGING_DIR_HOSTPKG)/share/aclocal-* $$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*),-I $$(p))
|
|
||||||
$(1) : export STAGING_PREFIX=$$(STAGING_DIR)/usr
|
|
||||||
$(1) : export PATH=$$(TARGET_PATH_PKG)
|
|
||||||
$(1) : export CONFIG_SITE:=$$(CONFIG_SITE)
|
|
||||||
$(1) : export PKG_CONFIG_PATH:=$$(PKG_CONFIG_PATH)
|
|
||||||
$(1) : export PKG_CONFIG_LIBDIR:=$$(PKG_CONFIG_PATH)
|
|
||||||
$(1) : export GIT_CEILING_DIRECTORIES:=$$(BUILD_DIR)
|
|
||||||
endef
|
|
||||||
Build/Exports=$(Build/Exports/Default)
|
|
||||||
|
|
||||||
define Build/CoreTargets
|
|
||||||
STAMP_PREPARED:=$$(STAMP_PREPARED)
|
|
||||||
STAMP_CONFIGURED:=$$(STAMP_CONFIGURED)
|
|
||||||
|
|
||||||
$(if $(QUILT),$(Build/Quilt))
|
|
||||||
$(call Build/Autoclean)
|
|
||||||
$(call DefaultTargets)
|
|
||||||
|
|
||||||
$(call check_download_integrity)
|
|
||||||
|
|
||||||
download:
|
|
||||||
$(foreach hook,$(Hooks/Download),
|
|
||||||
$(call $(hook))$(sep)
|
|
||||||
)
|
|
||||||
|
|
||||||
$(STAMP_PREPARED) : export PATH=$$(TARGET_PATH_PKG)
|
|
||||||
$(STAMP_PREPARED): $(STAMP_PREPARED_DEPENDS)
|
|
||||||
@-rm -rf $(PKG_BUILD_DIR)
|
|
||||||
@mkdir -p $(PKG_BUILD_DIR)
|
|
||||||
touch $$@_check
|
|
||||||
$(foreach hook,$(Hooks/Prepare/Pre),$(call $(hook))$(sep))
|
|
||||||
$(Build/Prepare)
|
|
||||||
$(foreach hook,$(Hooks/Prepare/Post),$(call $(hook))$(sep))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(call Build/Exports,$(STAMP_CONFIGURED))
|
|
||||||
$(STAMP_CONFIGURED): $(STAMP_PREPARED) $(STAMP_CONFIGURED_DEPENDS)
|
|
||||||
rm -f $(STAMP_CONFIGURED_WILDCARD)
|
|
||||||
$(CleanStaging)
|
|
||||||
$(foreach hook,$(Hooks/Configure/Pre),$(call $(hook))$(sep))
|
|
||||||
$(Build/Configure)
|
|
||||||
$(foreach hook,$(Hooks/Configure/Post),$(call $(hook))$(sep))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(call Build/Exports,$(STAMP_BUILT))
|
|
||||||
$(STAMP_BUILT): $(STAMP_CONFIGURED) $(STAMP_BUILT_DEPENDS)
|
|
||||||
rm -f $$@
|
|
||||||
touch $$@_check
|
|
||||||
$(foreach hook,$(Hooks/Compile/Pre),$(call $(hook))$(sep))
|
|
||||||
$(Build/Compile)
|
|
||||||
$(foreach hook,$(Hooks/Compile/Post),$(call $(hook))$(sep))
|
|
||||||
$(Build/Install)
|
|
||||||
$(foreach hook,$(Hooks/Install/Post),$(call $(hook))$(sep))
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
$(STAMP_INSTALLED) : export PATH=$$(TARGET_PATH_PKG)
|
|
||||||
$(STAMP_INSTALLED): $(STAMP_BUILT)
|
|
||||||
rm -rf $(TMP_DIR)/stage-$(PKG_DIR_NAME)
|
|
||||||
mkdir -p $(TMP_DIR)/stage-$(PKG_DIR_NAME)/host $(STAGING_DIR)/packages
|
|
||||||
$(foreach hook,$(Hooks/InstallDev/Pre),\
|
|
||||||
$(call $(hook),$(TMP_DIR)/stage-$(PKG_DIR_NAME),$(TMP_DIR)/stage-$(PKG_DIR_NAME)/host)$(sep)\
|
|
||||||
)
|
|
||||||
$(call Build/InstallDev,$(TMP_DIR)/stage-$(PKG_DIR_NAME),$(TMP_DIR)/stage-$(PKG_DIR_NAME)/host)
|
|
||||||
$(foreach hook,$(Hooks/InstallDev/Post),\
|
|
||||||
$(call $(hook),$(TMP_DIR)/stage-$(PKG_DIR_NAME),$(TMP_DIR)/stage-$(PKG_DIR_NAME)/host)$(sep)\
|
|
||||||
)
|
|
||||||
if [ -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) ]; then \
|
|
||||||
$(SCRIPT_DIR)/clean-package.sh \
|
|
||||||
"$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)" \
|
|
||||||
"$(STAGING_DIR)"; \
|
|
||||||
fi
|
|
||||||
if [ -d $(TMP_DIR)/stage-$(PKG_DIR_NAME) ]; then \
|
|
||||||
(cd $(TMP_DIR)/stage-$(PKG_DIR_NAME); find ./ > $(TMP_DIR)/stage-$(PKG_DIR_NAME).files); \
|
|
||||||
$(call locked, \
|
|
||||||
mv $(TMP_DIR)/stage-$(PKG_DIR_NAME).files $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) && \
|
|
||||||
$(CP) $(TMP_DIR)/stage-$(PKG_DIR_NAME)/* $(STAGING_DIR)/; \
|
|
||||||
,staging-dir); \
|
|
||||||
fi
|
|
||||||
rm -rf $(TMP_DIR)/stage-$(PKG_DIR_NAME)
|
|
||||||
touch $$@
|
|
||||||
|
|
||||||
ifdef Build/InstallDev
|
|
||||||
$(_pkg_target)compile: $(STAMP_INSTALLED)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(_pkg_target)prepare: $(STAMP_PREPARED)
|
|
||||||
$(_pkg_target)configure: $(STAMP_CONFIGURED)
|
|
||||||
$(_pkg_target)dist: $(STAMP_CONFIGURED)
|
|
||||||
$(_pkg_target)distcheck: $(STAMP_CONFIGURED)
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_AUTOREMOVE),)
|
|
||||||
compile:
|
|
||||||
-touch -r $(PKG_BUILD_DIR)/.built $(PKG_BUILD_DIR)/.autoremove 2>/dev/null >/dev/null
|
|
||||||
$(FIND) $(PKG_BUILD_DIR) -mindepth 1 -maxdepth 1 -not '(' -type f -and -name '.*' -and -size 0 ')' -and -not -name '.pkgdir' -print0 | \
|
|
||||||
$(XARGS) -0 rm -rf
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/DefaultTargets
|
|
||||||
$(if $(PKG_SKIP_DOWNLOAD),,$(if $(strip $(PKG_SOURCE_URL)),$(call Download,default)))
|
|
||||||
$(if $(DUMP),,$(Build/CoreTargets))
|
|
||||||
|
|
||||||
define Build/DefaultTargets
|
|
||||||
endef
|
|
||||||
endef
|
|
||||||
|
|
||||||
define BuildPackage
|
|
||||||
$(eval $(Package/Default))
|
|
||||||
$(eval $(Package/$(1)))
|
|
||||||
|
|
||||||
ifdef DESCRIPTION
|
|
||||||
$$(error DESCRIPTION:= is obsolete, use Package/PKG_NAME/description)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef Package/$(1)/description
|
|
||||||
define Package/$(1)/description
|
|
||||||
$(TITLE)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
BUILD_PACKAGES += $(1)
|
|
||||||
$(STAMP_PREPARED): $$(if $(QUILT)$(DUMP),,$(call find_library_dependencies,$(1)))
|
|
||||||
|
|
||||||
$(foreach FIELD, TITLE CATEGORY SECTION VERSION,
|
|
||||||
ifeq ($($(FIELD)),)
|
|
||||||
$$(error Package/$(1) is missing the $(FIELD) field)
|
|
||||||
endif
|
|
||||||
)
|
|
||||||
|
|
||||||
$(if $(DUMP), \
|
|
||||||
$(if $(CHECK),,$(Dumpinfo/Package)), \
|
|
||||||
$(foreach target, \
|
|
||||||
$(if $(Package/$(1)/targets),$(Package/$(1)/targets), \
|
|
||||||
$(if $(PKG_TARGETS),$(PKG_TARGETS), ipkg) \
|
|
||||||
), $(BuildTarget/$(target)) \
|
|
||||||
) \
|
|
||||||
)
|
|
||||||
$(if $(PKG_HOST_ONLY),,$(call Build/DefaultTargets,$(1)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define pkg_install_files
|
|
||||||
$(foreach install_file,$(1),$(INSTALL_DIR) $(3)/`dirname $(install_file)`; $(INSTALL_DATA) $(2)/$(install_file) $(3)/`dirname $(install_file)`;)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define pkg_install_bin
|
|
||||||
$(foreach install_apps,$(1),$(INSTALL_DIR) $(3)/`dirname $(install_apps)`; $(INSTALL_BIN) $(2)/$(install_apps) $(3)/`dirname $(install_apps)`;)
|
|
||||||
endef
|
|
||||||
|
|
||||||
Build/Prepare=$(call Build/Prepare/Default,)
|
|
||||||
Build/Configure=$(call Build/Configure/Default,)
|
|
||||||
Build/Compile=$(call Build/Compile/Default,$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))'))
|
|
||||||
Build/Install=$(if $(PKG_INSTALL),$(call Build/Install/Default,))
|
|
||||||
Build/Dist=$(call Build/Dist/Default,)
|
|
||||||
Build/DistCheck=$(call Build/DistCheck/Default,)
|
|
||||||
|
|
||||||
.NOTPARALLEL:
|
|
||||||
|
|
||||||
.PHONY: prepare-package-install
|
|
||||||
prepare-package-install:
|
|
||||||
@mkdir -p $(PKG_INFO_DIR)
|
|
||||||
@rm -f $(PKG_INSTALL_STAMP)
|
|
||||||
@echo "$(filter-out essential nonshared,$(PKG_FLAGS))" > $(PKG_INSTALL_STAMP).flags
|
|
||||||
|
|
||||||
$(PACKAGE_DIR):
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
compile:
|
|
||||||
.install: .compile
|
|
||||||
install: compile
|
|
||||||
|
|
||||||
force-clean-build: FORCE
|
|
||||||
rm -rf $(PKG_BUILD_DIR)
|
|
||||||
|
|
||||||
clean-build: $(if $(wildcard $(PKG_BUILD_DIR)/.autoremove),force-clean-build)
|
|
||||||
|
|
||||||
clean: force-clean-build
|
|
||||||
$(CleanStaging)
|
|
||||||
$(call Build/UninstallDev,$(STAGING_DIR),$(STAGING_DIR)/host)
|
|
||||||
$(Build/Clean)
|
|
||||||
rm -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST)
|
|
||||||
|
|
||||||
dist:
|
|
||||||
$(Build/Dist)
|
|
||||||
|
|
||||||
distcheck:
|
|
||||||
$(Build/DistCheck)
|
|
@ -1,241 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
include $(INCLUDE_DIR)/prereq.mk
|
|
||||||
|
|
||||||
SHELL:=sh
|
|
||||||
PKG_NAME:=Build dependency
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,true, \
|
|
||||||
Please install GNU 'coreutils', \
|
|
||||||
$(TRUE)))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,false, \
|
|
||||||
Please install GNU 'coreutils', \
|
|
||||||
$(FALSE); [ $$$$$$$$? = 1 ] && $(TRUE)))
|
|
||||||
|
|
||||||
# Required for the toolchain
|
|
||||||
$(eval $(call TestHostCommand,working-make, \
|
|
||||||
Please install GNU make v4.1 or later., \
|
|
||||||
$(MAKE) -v | grep -E 'Make (4\.[1-9]|[5-9]\.)'))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,case-sensitive-fs, \
|
|
||||||
OpenWrt can only be built on a case-sensitive filesystem, \
|
|
||||||
rm -f $(TMP_DIR)/test.*; touch $(TMP_DIR)/test.fs; \
|
|
||||||
test ! -f $(TMP_DIR)/test.FS))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,proper-umask, \
|
|
||||||
Please build with umask 022 - other values produce broken packages, \
|
|
||||||
umask | grep -xE 0?0[012][012]))
|
|
||||||
|
|
||||||
ifndef IB
|
|
||||||
$(eval $(call SetupHostCommand,gcc, \
|
|
||||||
Please install the GNU C Compiler (gcc) 8 or later, \
|
|
||||||
$(CC) -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \
|
|
||||||
gcc -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \
|
|
||||||
gcc-8 -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \
|
|
||||||
gcc --version | grep -E 'Apple.(LLVM|clang)' ))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,working-gcc, \
|
|
||||||
Please reinstall the GNU C Compiler (8 or later) - \
|
|
||||||
it appears to be broken, \
|
|
||||||
echo 'int main(int argc, char **argv) { return 0; }' | \
|
|
||||||
$(STAGING_DIR_HOST)/bin/gcc -x c -o $(TMP_DIR)/a.out -))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,g++, \
|
|
||||||
Please install the GNU C++ Compiler (g++) 8 or later, \
|
|
||||||
$(CXX) -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \
|
|
||||||
g++ -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \
|
|
||||||
g++-8 -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \
|
|
||||||
g++ --version | grep -E 'Apple.(LLVM|clang)' ))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,working-g++, \
|
|
||||||
Please reinstall the GNU C++ Compiler (8 or later) - \
|
|
||||||
it appears to be broken, \
|
|
||||||
echo 'int main(int argc, char **argv) { return 0; }' | \
|
|
||||||
$(STAGING_DIR_HOST)/bin/g++ -x c++ -o $(TMP_DIR)/a.out - -lstdc++ && \
|
|
||||||
$(TMP_DIR)/a.out))
|
|
||||||
|
|
||||||
$(eval $(call RequireCHeader,ncurses.h, \
|
|
||||||
Please install ncurses. (Missing libncurses.so or ncurses.h), \
|
|
||||||
initscr(), -lncurses))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
|
|
||||||
git --exec-path | xargs -I % -- grep -q -- --recursive %/git-submodule, \
|
|
||||||
git submodule --help | grep -- --recursive))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,rsync,Please install 'rsync', \
|
|
||||||
rsync --version </dev/null))
|
|
||||||
endif # IB
|
|
||||||
|
|
||||||
ifeq ($(HOST_OS),Linux)
|
|
||||||
zlib_link_flags := -Wl,-Bstatic -lz -Wl,-Bdynamic
|
|
||||||
else
|
|
||||||
zlib_link_flags := -lz
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,perl-data-dumper, \
|
|
||||||
Please install the Perl Data::Dumper module, \
|
|
||||||
perl -MData::Dumper -e 1))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,perl-findbin, \
|
|
||||||
Please install the Perl FindBin module, \
|
|
||||||
perl -MFindBin -e 1))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,perl-file-copy, \
|
|
||||||
Please install the Perl File::Copy module, \
|
|
||||||
perl -MFile::Copy -e 1))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,perl-file-compare, \
|
|
||||||
Please install the Perl File::Compare module, \
|
|
||||||
perl -MFile::Compare -e 1))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,perl-thread-queue, \
|
|
||||||
Please install the Perl Thread::Queue module, \
|
|
||||||
perl -MThread::Queue -e 1))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,perl-ipc-cmd, \
|
|
||||||
Please install the Perl IPC:Cmd module, \
|
|
||||||
perl -MIPC::Cmd -e 1))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,tar,Please install GNU 'tar', \
|
|
||||||
gtar --version 2>&1 | grep GNU, \
|
|
||||||
gnutar --version 2>&1 | grep GNU, \
|
|
||||||
tar --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,find,Please install GNU 'find', \
|
|
||||||
gfind --version 2>&1 | grep GNU, \
|
|
||||||
find --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,bash,Please install GNU 'bash', \
|
|
||||||
bash --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,xargs, \
|
|
||||||
Please install 'xargs' that supports '-r/--no-run-if-empty', \
|
|
||||||
gxargs -r --version, \
|
|
||||||
xargs -r --version))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,patch,Please install GNU 'patch', \
|
|
||||||
gpatch --version 2>&1 | grep 'Free Software Foundation', \
|
|
||||||
patch --version 2>&1 | grep 'Free Software Foundation'))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,diff,Please install GNU diffutils, \
|
|
||||||
gdiff --version 2>&1 | grep GNU, \
|
|
||||||
diff --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,cp,Please install GNU fileutils, \
|
|
||||||
gcp --help 2>&1 | grep 'Copy SOURCE', \
|
|
||||||
cp --help 2>&1 | grep 'Copy SOURCE'))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,seq,Please install seq, \
|
|
||||||
gseq --version, \
|
|
||||||
seq --version 2>&1 | grep seq))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,awk,Please install GNU 'awk', \
|
|
||||||
gawk --version 2>&1 | grep GNU, \
|
|
||||||
awk --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,grep,Please install GNU 'grep', \
|
|
||||||
ggrep --version 2>&1 | grep GNU, \
|
|
||||||
grep --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,egrep,Please install GNU 'grep', \
|
|
||||||
gegrep --version 2>&1 | grep GNU, \
|
|
||||||
egrep --version 2>&1 | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,getopt, \
|
|
||||||
Please install an extended getopt version that supports --long, \
|
|
||||||
gnugetopt -o t --long test -- --test | grep '^ *--test *--', \
|
|
||||||
getopt -o t --long test -- --test | grep '^ *--test *--', \
|
|
||||||
/usr/local/opt/gnu-getopt/bin/getopt -o t --long test -- --test | grep '^ *--test *--', \
|
|
||||||
/opt/local/bin/getopt -o t --long test -- --test | grep '^ *--test *--'))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,realpath,Please install a 'realpath' utility, \
|
|
||||||
grealpath /, \
|
|
||||||
realpath /))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,stat,Cannot find a file stat utility, \
|
|
||||||
gnustat -c%s $(TOPDIR)/Makefile, \
|
|
||||||
gstat -c%s $(TOPDIR)/Makefile, \
|
|
||||||
stat -c%s $(TOPDIR)/Makefile))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,gzip,Please install 'gzip', \
|
|
||||||
gzip --version </dev/null))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,unzip,Please install 'unzip', \
|
|
||||||
unzip 2>&1 | grep zipfile, \
|
|
||||||
unzip))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,bzip2,Please install 'bzip2', \
|
|
||||||
bzip2 --version </dev/null))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \
|
|
||||||
wget --version | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,install,Please install GNU 'install', \
|
|
||||||
install --version | grep GNU, \
|
|
||||||
ginstall --version | grep GNU))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \
|
|
||||||
perl --version | grep "perl.*v5"))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,python,Please install Python >= 3.7, \
|
|
||||||
python3.11 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.10 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.9 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.8 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.7 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3 -V 2>&1 | grep -E 'Python 3\.([7-9]|[0-9][0-9])\.?'))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,python3,Please install Python >= 3.7, \
|
|
||||||
python3.11 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.10 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.9 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.8 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3.7 -V 2>&1 | grep 'Python 3', \
|
|
||||||
python3 -V 2>&1 | grep -E 'Python 3\.([7-9]|[0-9][0-9])\.?'))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,python3-distutils, \
|
|
||||||
Please install the Python3 distutils module, \
|
|
||||||
$(STAGING_DIR_HOST)/bin/python3 -c 'from distutils import util'))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,python3-stdlib, \
|
|
||||||
Please install the Python3 stdlib module, \
|
|
||||||
$(STAGING_DIR_HOST)/bin/python3 -c 'import ntpath'))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,file,Please install the 'file' package, \
|
|
||||||
file --version 2>&1 | grep file))
|
|
||||||
|
|
||||||
$(eval $(call SetupHostCommand,which,Please install 'which', \
|
|
||||||
/usr/bin/which which, \
|
|
||||||
/bin/which which, \
|
|
||||||
which which))
|
|
||||||
|
|
||||||
ifeq ($(HOST_OS),Linux)
|
|
||||||
$(eval $(call RequireCHeader,argp.h, \
|
|
||||||
Missing argp.h Please install the argp-standalone package if musl libc))
|
|
||||||
|
|
||||||
$(eval $(call RequireCHeader,fts.h, \
|
|
||||||
Missing fts.h Please install the musl-fts-dev package if musl libc))
|
|
||||||
|
|
||||||
$(eval $(call RequireCHeader,obstack.h, \
|
|
||||||
Missing obstack.h Please install the musl-obstack-dev package if musl libc))
|
|
||||||
|
|
||||||
$(eval $(call RequireCHeader,libintl.h, \
|
|
||||||
Missing libintl.h Please install the musl-libintl package if musl libc))
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c
|
|
||||||
mkdir -p $(dir $@)
|
|
||||||
$(CC) -O2 -I$(TOPDIR)/tools/include -o $@ $<
|
|
||||||
|
|
||||||
$(STAGING_DIR_HOST)/bin/xxd: $(SCRIPT_DIR)/xxdi.pl
|
|
||||||
$(LN) $< $@
|
|
||||||
|
|
||||||
prereq: $(STAGING_DIR_HOST)/bin/mkhash $(STAGING_DIR_HOST)/bin/xxd
|
|
||||||
|
|
||||||
# Install ldconfig stub
|
|
||||||
$(eval $(call TestHostCommand,ldconfig-stub,Failed to install stub, \
|
|
||||||
$(LN) $(SCRIPT_DIR)/noop.sh $(STAGING_DIR_HOST)/bin/ldconfig))
|
|
@ -1,125 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifneq ($(__prereq_inc),1)
|
|
||||||
__prereq_inc:=1
|
|
||||||
|
|
||||||
prereq:
|
|
||||||
if [ -f $(TMP_DIR)/.prereq-error ]; then \
|
|
||||||
echo; \
|
|
||||||
cat $(TMP_DIR)/.prereq-error; \
|
|
||||||
rm -f $(TMP_DIR)/.prereq-error; \
|
|
||||||
echo; \
|
|
||||||
false; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
.SILENT: prereq
|
|
||||||
endif
|
|
||||||
|
|
||||||
PREREQ_PREV=
|
|
||||||
|
|
||||||
# 1: display name
|
|
||||||
# 2: error message
|
|
||||||
define Require
|
|
||||||
export PREREQ_CHECK=1
|
|
||||||
ifeq ($$(CHECK_$(1)),)
|
|
||||||
prereq: prereq-$(1)
|
|
||||||
|
|
||||||
prereq-$(1): $(if $(PREREQ_PREV),prereq-$(PREREQ_PREV)) FORCE
|
|
||||||
printf "Checking '$(1)'... "
|
|
||||||
if $(NO_TRACE_MAKE) -f $(firstword $(MAKEFILE_LIST)) check-$(1) PATH="$(ORIG_PATH)" >/dev/null 2>/dev/null; then \
|
|
||||||
echo 'ok.'; \
|
|
||||||
elif $(NO_TRACE_MAKE) -f $(firstword $(MAKEFILE_LIST)) check-$(1) PATH="$(ORIG_PATH)" >/dev/null 2>/dev/null; then \
|
|
||||||
echo 'updated.'; \
|
|
||||||
else \
|
|
||||||
echo 'failed.'; \
|
|
||||||
echo "$(PKG_NAME): $(strip $(2))" >> $(TMP_DIR)/.prereq-error; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
check-$(1): FORCE
|
|
||||||
$(call Require/$(1))
|
|
||||||
CHECK_$(1):=1
|
|
||||||
|
|
||||||
.SILENT: prereq-$(1) check-$(1)
|
|
||||||
.NOTPARALLEL:
|
|
||||||
endif
|
|
||||||
|
|
||||||
PREREQ_PREV=$(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
define RequireCommand
|
|
||||||
define Require/$(1)
|
|
||||||
command -v $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
$$(eval $$(call Require,$(1),$(2)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define RequireHeader
|
|
||||||
define Require/$(1)
|
|
||||||
[ -e "$(1)" ]
|
|
||||||
endef
|
|
||||||
|
|
||||||
$$(eval $$(call Require,$(1),$(2)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: header to test
|
|
||||||
# 2: failure message
|
|
||||||
# 3: optional compile time test
|
|
||||||
# 4: optional link library test (example -lncurses)
|
|
||||||
define RequireCHeader
|
|
||||||
define Require/$(1)
|
|
||||||
echo 'int main(int argc, char **argv) { $(3); return 0; }' | gcc -include $(1) -x c -o $(TMP_DIR)/a.out - $(4)
|
|
||||||
endef
|
|
||||||
|
|
||||||
$$(eval $$(call Require,$(1),$(2)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define QuoteHostCommand
|
|
||||||
'$(subst ','"'"',$(strip $(1)))'
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: display name
|
|
||||||
# 2: failure message
|
|
||||||
# 3: test
|
|
||||||
define TestHostCommand
|
|
||||||
define Require/$(1)
|
|
||||||
($(3)) >/dev/null 2>/dev/null
|
|
||||||
endef
|
|
||||||
|
|
||||||
$$(eval $$(call Require,$(1),$(2)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# 1: canonical name
|
|
||||||
# 2: failure message
|
|
||||||
# 3+: candidates
|
|
||||||
define SetupHostCommand
|
|
||||||
define Require/$(1)
|
|
||||||
mkdir -p "$(STAGING_DIR_HOST)/bin"; \
|
|
||||||
for cmd in $(call QuoteHostCommand,$(3)) $(call QuoteHostCommand,$(4)) \
|
|
||||||
$(call QuoteHostCommand,$(5)) $(call QuoteHostCommand,$(6)) \
|
|
||||||
$(call QuoteHostCommand,$(7)) $(call QuoteHostCommand,$(8)) \
|
|
||||||
$(call QuoteHostCommand,$(9)) $(call QuoteHostCommand,$(10)) \
|
|
||||||
$(call QuoteHostCommand,$(11)) $(call QuoteHostCommand,$(12)); do \
|
|
||||||
if [ -n "$$$$$$$$cmd" ]; then \
|
|
||||||
bin="$$$$$$$$(command -v "$$$$$$$${cmd%% *}")"; \
|
|
||||||
if [ -x "$$$$$$$$bin" ] && eval "$$$$$$$$cmd" >/dev/null 2>/dev/null; then \
|
|
||||||
case "$$$$$$$$(ls -dl -- $(STAGING_DIR_HOST)/bin/$(strip $(1)))" in \
|
|
||||||
"-"* | \
|
|
||||||
*" -> $$$$$$$$bin"* | \
|
|
||||||
*" -> "[!/]*) \
|
|
||||||
[ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
exit 1
|
|
||||||
endef
|
|
||||||
|
|
||||||
$$(eval $$(call Require,$(1),$(if $(2),$(2),Missing $(1) command)))
|
|
||||||
endef
|
|
184
include/quilt.mk
184
include/quilt.mk
@ -1,184 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifeq ($(TARGET_BUILD),1)
|
|
||||||
PKG_BUILD_DIR:=$(LINUX_DIR)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter host-refresh refresh,$(MAKECMDGOALS)),)
|
|
||||||
override QUILT=1
|
|
||||||
override HOST_QUILT=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(PKG_BUILD_DIR),)
|
|
||||||
QUILT?=$(if $(wildcard $(PKG_BUILD_DIR)/.quilt_used),y)
|
|
||||||
ifneq ($(QUILT),)
|
|
||||||
STAMP_CHECKED:=$(PKG_BUILD_DIR)/.quilt_checked
|
|
||||||
override CONFIG_AUTOREBUILD=
|
|
||||||
override CONFIG_AUTOREMOVE=
|
|
||||||
quilt-check: $(STAMP_CHECKED)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(HOST_BUILD_DIR),)
|
|
||||||
HOST_QUILT?=$(if $(findstring command,$(origin QUILT)),$(QUILT),$(if $(wildcard $(HOST_BUILD_DIR)/.quilt_used),y))
|
|
||||||
ifneq ($(HOST_QUILT),)
|
|
||||||
HOST_STAMP_CHECKED:=$(HOST_BUILD_DIR)/.quilt_checked
|
|
||||||
override CONFIG_AUTOREBUILD=
|
|
||||||
override CONFIG_AUTOREMOVE=
|
|
||||||
host-quilt-check: $(HOST_STAMP_CHECKED)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(if $(DUMP),1,$(__quilt_inc)),1)
|
|
||||||
__quilt_inc:=1
|
|
||||||
|
|
||||||
PATCH_DIR?=$(CURDIR)/patches
|
|
||||||
FILES_DIR?=$(CURDIR)/files
|
|
||||||
HOST_PATCH_DIR?=$(PATCH_DIR)
|
|
||||||
HOST_FILES_DIR?=$(FILES_DIR)
|
|
||||||
|
|
||||||
QUILT_CMD:=quilt --quiltrc=-
|
|
||||||
|
|
||||||
define filter_series
|
|
||||||
sed -e s,\\\#.*,, $(1) | grep -E \[a-zA-Z0-9\]
|
|
||||||
endef
|
|
||||||
|
|
||||||
define PatchDir/Quilt
|
|
||||||
@mkdir -p "$(1)/patches$(if $(3),/$(patsubst %/,%,$(3)))"
|
|
||||||
@if [ -s "$(2)/series" ]; then \
|
|
||||||
mkdir -p "$(1)/patches/$(3)"; \
|
|
||||||
cp "$(2)/series" "$(1)/patches/$(3)"; \
|
|
||||||
fi
|
|
||||||
@for patch in $$$$( (cd "$(2)" && if [ -f series ]; then $(call filter_series,series); else ls | sort; fi; ) 2>/dev/null ); do ( \
|
|
||||||
cp "$(2)/$$$$patch" "$(1)/patches/$(3)"; \
|
|
||||||
echo "$(3)$$$$patch" >> "$(1)/patches/series"; \
|
|
||||||
); done
|
|
||||||
$(if $(3),@echo $(3) >> "$(1)/patches/.subdirs")
|
|
||||||
endef
|
|
||||||
|
|
||||||
define PatchDir/Default
|
|
||||||
@if [ -d "$(2)" ] && [ "$$$$(ls $(2) | wc -l)" -gt 0 ]; then \
|
|
||||||
export PATCH="$(PATCH)"; \
|
|
||||||
if [ -s "$(2)/series" ]; then \
|
|
||||||
$(call filter_series,$(2)/series) | xargs -n1 \
|
|
||||||
$(KPATCH) "$(1)" "$(2)"; \
|
|
||||||
else \
|
|
||||||
$(KPATCH) "$(1)" "$(2)"; \
|
|
||||||
fi; \
|
|
||||||
fi
|
|
||||||
endef
|
|
||||||
|
|
||||||
define PatchDir
|
|
||||||
$(call PatchDir/$(if $(strip $(QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define HostPatchDir
|
|
||||||
$(call PatchDir/$(if $(strip $(HOST_QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Host/Patch/Default
|
|
||||||
$(if $(HOST_QUILT),rm -rf $(HOST_BUILD_DIR)/patches; mkdir -p $(HOST_BUILD_DIR)/patches)
|
|
||||||
$(call HostPatchDir,$(HOST_BUILD_DIR),$(HOST_PATCH_DIR),)
|
|
||||||
$(if $(HOST_QUILT),touch $(HOST_BUILD_DIR)/.quilt_used)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Patch/Default
|
|
||||||
$(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches)
|
|
||||||
$(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),)
|
|
||||||
$(if $(QUILT),touch $(PKG_BUILD_DIR)/.quilt_used)
|
|
||||||
endef
|
|
||||||
|
|
||||||
kernel_files=$(foreach fdir,$(GENERIC_FILES_DIR) $(FILES_DIR),$(fdir)/.)
|
|
||||||
define Kernel/Patch/Default
|
|
||||||
$(if $(QUILT),rm -rf $(LINUX_DIR)/patches; mkdir -p $(LINUX_DIR)/patches)
|
|
||||||
$(if $(kernel_files),$(CP) $(kernel_files) $(LINUX_DIR)/)
|
|
||||||
find $(LINUX_DIR)/ -name \*.rej -or -name \*.orig | $(XARGS) rm -f
|
|
||||||
if [ -d $(GENERIC_PLATFORM_DIR)/patches$(if $(wildcard $(GENERIC_PLATFORM_DIR)/patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) ]; then \
|
|
||||||
echo "generic patches directory is present. please move your patches to the pending directory" ; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
$(call PatchDir,$(LINUX_DIR),$(GENERIC_BACKPORT_DIR),generic-backport/)
|
|
||||||
$(call PatchDir,$(LINUX_DIR),$(GENERIC_PATCH_DIR),generic/)
|
|
||||||
$(call PatchDir,$(LINUX_DIR),$(GENERIC_HACK_DIR),generic-hack/)
|
|
||||||
$(call PatchDir,$(LINUX_DIR),$(PATCH_DIR),platform/)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Quilt/RefreshDir
|
|
||||||
-rm -rf $(2) 2>/dev/null >/dev/null
|
|
||||||
[ -f $(1)/.quilt_no_patch ] || mkdir -p $(2)
|
|
||||||
@[ -f $(1)/.quilt_no_patch ] || { \
|
|
||||||
for patch in $$$$($(if $(3),grep "^$(3)",cat) $(1)/patches/series | awk '{print $$$$1}'); do \
|
|
||||||
$(CP) -v "$(1)/patches/$$$$patch" $(2); \
|
|
||||||
done; \
|
|
||||||
}
|
|
||||||
@-rm -f $(1)/.quilt_no_patch 2>/dev/null >/dev/null;
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Quilt/Refresh/Host
|
|
||||||
$(call Quilt/RefreshDir,$(HOST_BUILD_DIR),$(HOST_PATCH_DIR))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Quilt/Refresh/Package
|
|
||||||
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Quilt/Refresh/Kernel
|
|
||||||
@[ -z "$$(grep -v '^generic/' $(PKG_BUILD_DIR)/patches/series | grep -v '^platform/')" ] || { \
|
|
||||||
echo "All kernel patches must start with either generic/ or platform/"; \
|
|
||||||
false; \
|
|
||||||
}
|
|
||||||
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_BACKPORT_DIR),generic-backport/)
|
|
||||||
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)
|
|
||||||
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_HACK_DIR),generic-hack/)
|
|
||||||
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Quilt/Template
|
|
||||||
$($(2)STAMP_CONFIGURED): $($(2)STAMP_CHECKED)
|
|
||||||
$(if $(NO_RECONFIGURE),$($(2)STAMP_BUILT),$($(2)STAMP_CONFIGURED)): FORCE
|
|
||||||
$($(2)STAMP_CHECKED): $($(2)STAMP_PREPARED)
|
|
||||||
if [ -s "$(1)/patches/series" ]; then \
|
|
||||||
(cd "$(1)"; \
|
|
||||||
if $(QUILT_CMD) next >/dev/null 2>&1; then \
|
|
||||||
$(QUILT_CMD) push -a; \
|
|
||||||
else \
|
|
||||||
$(QUILT_CMD) top >/dev/null 2>&1; \
|
|
||||||
fi \
|
|
||||||
); \
|
|
||||||
fi
|
|
||||||
touch "$$@"
|
|
||||||
|
|
||||||
$(3)quilt-check: $($(2)STAMP_PREPARED) FORCE
|
|
||||||
@[ -f "$(1)/.quilt_used" ] || { \
|
|
||||||
echo "The source directory was not unpacked using quilt. Please rebuild with QUILT=1"; \
|
|
||||||
false; \
|
|
||||||
}
|
|
||||||
@[ -f "$(1)/patches/series" ] || { \
|
|
||||||
echo "The source directory contains no quilt patches."; \
|
|
||||||
touch $(1)/patches/series $(1)/.quilt_no_patch; \
|
|
||||||
}
|
|
||||||
@[ -n "$$$$(ls $(1)/patches/series)" -o \
|
|
||||||
"$$$$(cat $(1)/patches/series | $(MKHASH) md5)" = "$$(sort $(1)/patches/series | $(MKHASH) md5)" ] || { \
|
|
||||||
echo "The patches are not sorted in the right order. Please fix."; \
|
|
||||||
false; \
|
|
||||||
}
|
|
||||||
|
|
||||||
$(3)refresh: $(3)quilt-check
|
|
||||||
@[ -f $(1)/.quilt_no_patch ] || { \
|
|
||||||
cd "$(1)"; $(QUILT_CMD) pop -a -f >/dev/null 2>/dev/null; \
|
|
||||||
while $(QUILT_CMD) next 2>/dev/null >/dev/null && $(QUILT_CMD) push; do \
|
|
||||||
QUILT_DIFF_OPTS="-p" $(QUILT_CMD) refresh -p ab --no-index --no-timestamps; \
|
|
||||||
done; ! $(QUILT_CMD) next 2>/dev/null >/dev/null; \
|
|
||||||
}
|
|
||||||
$(Quilt/Refresh/$(4))
|
|
||||||
|
|
||||||
$(3)update: $(3)quilt-check
|
|
||||||
$(Quilt/Refresh/$(4))
|
|
||||||
endef
|
|
||||||
|
|
||||||
Build/Quilt=$(call Quilt/Template,$(PKG_BUILD_DIR),,,$(if $(TARGET_BUILD),Kernel,Package))
|
|
||||||
Host/Quilt=$(call Quilt/Template,$(HOST_BUILD_DIR),HOST_,host-,Host)
|
|
||||||
|
|
||||||
endif
|
|
@ -1,128 +0,0 @@
|
|||||||
ifdef CONFIG_USE_MKLIBS
|
|
||||||
define mklibs
|
|
||||||
rm -rf $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-out
|
|
||||||
# first find all programs and add them to the mklibs list
|
|
||||||
find $(STAGING_DIR_ROOT) -type f -perm /100 -exec \
|
|
||||||
file -r -N -F '' {} + | \
|
|
||||||
awk ' /executable.*dynamically/ { print $$1 }' > $(TMP_DIR)/mklibs-progs
|
|
||||||
# find all loadable objects that are not regular libraries and add them to the list as well
|
|
||||||
find $(STAGING_DIR_ROOT) -type f -name \*.so\* -exec \
|
|
||||||
file -r -N -F '' {} + | \
|
|
||||||
awk ' /shared object/ { print $$1 }' > $(TMP_DIR)/mklibs-libs
|
|
||||||
mkdir -p $(TMP_DIR)/mklibs-out
|
|
||||||
$(STAGING_DIR_HOST)/bin/mklibs -D \
|
|
||||||
-d $(TMP_DIR)/mklibs-out \
|
|
||||||
--sysroot $(STAGING_DIR_ROOT) \
|
|
||||||
`cat $(TMP_DIR)/mklibs-libs | sed 's:/*[^/]\+/*$$::' | uniq | sed 's:^$(STAGING_DIR_ROOT):-L :'` \
|
|
||||||
--ldlib $(patsubst $(STAGING_DIR_ROOT)/%,/%,$(firstword $(wildcard \
|
|
||||||
$(foreach name,ld-uClibc.so.* ld-linux.so.* ld-*.so ld-musl-*.so.*, \
|
|
||||||
$(STAGING_DIR_ROOT)/lib/$(name) \
|
|
||||||
)))) \
|
|
||||||
--target $(REAL_GNU_TARGET_NAME) \
|
|
||||||
`cat $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-libs` 2>&1
|
|
||||||
$(RSTRIP) $(TMP_DIR)/mklibs-out
|
|
||||||
for lib in `ls $(TMP_DIR)/mklibs-out/*.so.* 2>/dev/null`; do \
|
|
||||||
LIB="$${lib##*/}"; \
|
|
||||||
DEST="`ls "$(1)/lib/$$LIB" "$(1)/usr/lib/$$LIB" 2>/dev/null`"; \
|
|
||||||
[ -n "$$DEST" ] || continue; \
|
|
||||||
echo "Copying stripped library $$lib to $$DEST"; \
|
|
||||||
cp "$$lib" "$$DEST" || exit 1; \
|
|
||||||
done
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
# where to build (and put) .ipk packages
|
|
||||||
opkg = \
|
|
||||||
IPKG_NO_SCRIPT=1 \
|
|
||||||
IPKG_INSTROOT=$(1) \
|
|
||||||
TMPDIR=$(1)/tmp \
|
|
||||||
$(STAGING_DIR_HOST)/bin/opkg \
|
|
||||||
--offline-root $(1) \
|
|
||||||
--force-postinstall \
|
|
||||||
--add-dest root:/ \
|
|
||||||
--add-arch all:100 \
|
|
||||||
--add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200
|
|
||||||
|
|
||||||
apk = \
|
|
||||||
IPKG_INSTROOT=$(1) \
|
|
||||||
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk \
|
|
||||||
--root $(1) \
|
|
||||||
--repositories-file /dev/zero \
|
|
||||||
--keys-dir $(TOPDIR) \
|
|
||||||
--no-cache \
|
|
||||||
--no-logfile \
|
|
||||||
--preserve-env \
|
|
||||||
--repository file://$(PACKAGE_DIR_ALL)/packages.adb
|
|
||||||
|
|
||||||
TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
|
|
||||||
|
|
||||||
ifdef CONFIG_CLEAN_IPKG
|
|
||||||
define clean_ipkg
|
|
||||||
-find $(1)/usr/lib/opkg/info -type f -and -not -name '*.control' -delete
|
|
||||||
-sed -i -ne '/^Require-User: /p' $(1)/usr/lib/opkg/info/*.control
|
|
||||||
awk ' \
|
|
||||||
BEGIN { conffiles = 0; print "Conffiles:" } \
|
|
||||||
/^Conffiles:/ { conffiles = 1; next } \
|
|
||||||
!/^ / { conffiles = 0; next } \
|
|
||||||
conffiles == 1 { print } \
|
|
||||||
' $(1)/usr/lib/opkg/status >$(1)/usr/lib/opkg/status.new
|
|
||||||
mv $(1)/usr/lib/opkg/status.new $(1)/usr/lib/opkg/status
|
|
||||||
-find $(1)/usr/lib/opkg -empty -delete
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define prepare_rootfs
|
|
||||||
$(if $(2),@if [ -d '$(2)' ]; then \
|
|
||||||
$(call file_copy,$(2)/.,$(1)); \
|
|
||||||
fi)
|
|
||||||
@mkdir -p $(1)/etc/rc.d
|
|
||||||
@mkdir -p $(1)/var/lock
|
|
||||||
@( \
|
|
||||||
cd $(1); \
|
|
||||||
if [ -n "$(CONFIG_USE_APK)" ]; then \
|
|
||||||
IPKG_POSTINST_PATH=./lib/apk/db/*.post-install; \
|
|
||||||
$(STAGING_DIR_HOST)/bin/tar -C ./lib/apk/db/ -xf ./lib/apk/db/scripts.tar --wildcards "*.post-install"; \
|
|
||||||
else \
|
|
||||||
IPKG_POSTINST_PATH=./usr/lib/opkg/info/*.postinst; \
|
|
||||||
fi; \
|
|
||||||
for script in $$IPKG_POSTINST_PATH; do \
|
|
||||||
IPKG_INSTROOT=$(1) $$(command -v bash) $$script; \
|
|
||||||
ret=$$?; \
|
|
||||||
if [ $$ret -ne 0 ]; then \
|
|
||||||
echo "postinst script $$script has failed with exit code $$ret" >&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
[ -n "$(CONFIG_USE_APK)" ] && $(STAGING_DIR_HOST)/bin/tar --delete -f ./lib/apk/db/scripts.tar $$(basename $$script); \
|
|
||||||
done; \
|
|
||||||
if [ -z "$(CONFIG_USE_APK)" ]; then \
|
|
||||||
$(if $(IB),,awk -i inplace \
|
|
||||||
'/^Status:/ { \
|
|
||||||
if ($$3 == "user") { $$3 = "ok" } \
|
|
||||||
else { sub(/,\<user\>|\<user\>,/, "", $$3) } \
|
|
||||||
}1' $(1)/usr/lib/opkg/status) ; \
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),sed -i "s/Installed-Time: .*/Installed-Time: $(SOURCE_DATE_EPOCH)/" $(1)/usr/lib/opkg/status ;) \
|
|
||||||
fi; \
|
|
||||||
for script in ./etc/init.d/*; do \
|
|
||||||
grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \
|
|
||||||
if ! echo " $(3) " | grep -q " $$(basename $$script) "; then \
|
|
||||||
IPKG_INSTROOT=$(1) $$(command -v bash) ./etc/rc.common $$script enable; \
|
|
||||||
echo "Enabling" $$(basename $$script); \
|
|
||||||
else \
|
|
||||||
IPKG_INSTROOT=$(1) $$(command -v bash) ./etc/rc.common $$script disable; \
|
|
||||||
echo "Disabling" $$(basename $$script); \
|
|
||||||
fi; \
|
|
||||||
done || true \
|
|
||||||
)
|
|
||||||
|
|
||||||
@-find $(1) -name CVS -o -name .svn -o -name .git -o -name '.#*' | $(XARGS) rm -rf
|
|
||||||
rm -rf \
|
|
||||||
$(1)/boot \
|
|
||||||
$(1)/tmp/* \
|
|
||||||
$(1)/lib/apk/db/*.post-install* \
|
|
||||||
$(1)/usr/lib/opkg/info/*.postinst* \
|
|
||||||
$(1)/usr/lib/opkg/lists/* \
|
|
||||||
$(1)/var/lock/*.lock
|
|
||||||
$(call clean_ipkg,$(1))
|
|
||||||
$(call mklibs,$(1))
|
|
||||||
$(if $(SOURCE_DATE_EPOCH),find $(1)/ -mindepth 1 -execdir touch -hcd "@$(SOURCE_DATE_EPOCH)" "{}" +)
|
|
||||||
endef
|
|
@ -1,19 +0,0 @@
|
|||||||
BEGIN { FS="/" }
|
|
||||||
$1 ~ /^feeds/ { FEEDS[$NF]=$0 }
|
|
||||||
$1 !~ /^feeds/ { PKGS[$NF]=$0 }
|
|
||||||
END {
|
|
||||||
# Filter-out OpenWrt packages which have a feeds equivalent
|
|
||||||
for (pkg in PKGS)
|
|
||||||
if (pkg in FEEDS) {
|
|
||||||
print PKGS[pkg] > of
|
|
||||||
delete PKGS[pkg]
|
|
||||||
}
|
|
||||||
n = asort(PKGS)
|
|
||||||
for (i=1; i <= n; i++) {
|
|
||||||
print PKGS[i]
|
|
||||||
}
|
|
||||||
n = asort(FEEDS)
|
|
||||||
for (i=1; i <= n; i++){
|
|
||||||
print FEEDS[i]
|
|
||||||
}
|
|
||||||
}
|
|
122
include/scan.mk
122
include/scan.mk
@ -1,122 +0,0 @@
|
|||||||
include $(TOPDIR)/include/verbose.mk
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
TMP_DIR:=$(TOPDIR)/tmp
|
|
||||||
|
|
||||||
all: $(TMP_DIR)/.$(SCAN_TARGET)
|
|
||||||
|
|
||||||
SCAN_TARGET ?= packageinfo
|
|
||||||
SCAN_NAME ?= package
|
|
||||||
SCAN_DIR ?= package
|
|
||||||
TARGET_STAMP:=$(TMP_DIR)/info/.files-$(SCAN_TARGET).stamp
|
|
||||||
FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE)
|
|
||||||
OVERRIDELIST:=$(TMP_DIR)/info/.overrides-$(SCAN_TARGET)-$(SCAN_COOKIE)
|
|
||||||
|
|
||||||
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
|
||||||
export PATH:=$(STAGING_DIR_HOST)/bin:$(PATH)
|
|
||||||
|
|
||||||
define feedname
|
|
||||||
$(if $(patsubst feeds/%,,$(1)),,$(word 2,$(subst /, ,$(1))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(SCAN_NAME),target)
|
|
||||||
SCAN_DEPS=image/Makefile profiles/*.mk $(TOPDIR)/include/kernel*.mk $(TOPDIR)/include/target.mk image/*.mk
|
|
||||||
else
|
|
||||||
SCAN_DEPS=$(TOPDIR)/include/package*.mk
|
|
||||||
ifneq ($(call feedname,$(SCAN_DIR)),)
|
|
||||||
SCAN_DEPS += $(TOPDIR)/feeds/$(call feedname,$(SCAN_DIR))/*.mk
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(IS_TTY),1)
|
|
||||||
ifneq ($(strip $(NO_COLOR)),1)
|
|
||||||
define progress
|
|
||||||
printf "\033[M\r$(1)" >&2;
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define progress
|
|
||||||
printf "\r$(1)" >&2;
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
define progress
|
|
||||||
:;
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define PackageDir
|
|
||||||
$(TMP_DIR)/.$(SCAN_TARGET): $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1)
|
|
||||||
$(TMP_DIR)/info/.$(SCAN_TARGET)-$(1): $(SCAN_DIR)/$(2)/Makefile $(foreach DEP,$(DEPS_$(SCAN_DIR)/$(2)/Makefile) $(SCAN_DEPS),$(wildcard $(if $(filter /%,$(DEP)),$(DEP),$(SCAN_DIR)/$(2)/$(DEP))))
|
|
||||||
{ \
|
|
||||||
$$(call progress,Collecting $(SCAN_NAME) info: $(SCAN_DIR)/$(2)) \
|
|
||||||
echo Source-Makefile: $(SCAN_DIR)/$(2)/Makefile; \
|
|
||||||
$(if $(3),echo Override: $(3),true); \
|
|
||||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),$(MAKE),$(NO_TRACE_MAKE) --no-print-dir) -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) \
|
|
||||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),,2>/dev/null) || { \
|
|
||||||
mkdir -p "$(TOPDIR)/logs/$(SCAN_DIR)/$(2)"; \
|
|
||||||
$(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) > $(TOPDIR)/logs/$(SCAN_DIR)/$(2)/dump.txt 2>&1; \
|
|
||||||
$$(call progress,ERROR: please fix $(SCAN_DIR)/$(2)/Makefile - see logs/$(SCAN_DIR)/$(2)/dump.txt for details\n) \
|
|
||||||
rm -f $$@; \
|
|
||||||
}; \
|
|
||||||
echo; \
|
|
||||||
} > $$@.tmp
|
|
||||||
mv $$@.tmp $$@
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(OVERRIDELIST):
|
|
||||||
rm -f $(TMP_DIR)/info/.overrides-$(SCAN_TARGET)-*
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
ifeq ($(SCAN_NAME),target)
|
|
||||||
GREP_STRING=BuildTarget
|
|
||||||
else
|
|
||||||
GREP_STRING=(Build/DefaultTargets|BuildPackage|KernelPackage)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(FILELIST): $(OVERRIDELIST)
|
|
||||||
rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-*
|
|
||||||
find -L $(SCAN_DIR) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) $(SCAN_EXTRA) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f include/scan.awk > $@
|
|
||||||
|
|
||||||
$(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST)
|
|
||||||
( \
|
|
||||||
cat $< | awk '{print "$(SCAN_DIR)/" $$0 "/Makefile" }' | xargs grep -HE '^ *SCAN_DEPS *= *' | awk -F: '{ gsub(/^.*DEPS *= */, "", $$2); print "DEPS_" $$1 "=" $$2 }'; \
|
|
||||||
awk -F/ -v deps="$$DEPS" -v of="$(OVERRIDELIST)" ' \
|
|
||||||
BEGIN { \
|
|
||||||
while (getline < (of)) \
|
|
||||||
override[$$NF]=$$0; \
|
|
||||||
close(of) \
|
|
||||||
} \
|
|
||||||
{ \
|
|
||||||
info=$$0; \
|
|
||||||
gsub(/\//, "_", info); \
|
|
||||||
dir=$$0; \
|
|
||||||
pkg=""; \
|
|
||||||
if($$NF in override) \
|
|
||||||
pkg=override[$$NF]; \
|
|
||||||
print "$$(eval $$(call PackageDir," info "," dir "," pkg "))"; \
|
|
||||||
} ' < $<; \
|
|
||||||
true; \
|
|
||||||
) > $@.tmp
|
|
||||||
mv $@.tmp $@
|
|
||||||
|
|
||||||
-include $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk
|
|
||||||
|
|
||||||
$(TARGET_STAMP)::
|
|
||||||
+( \
|
|
||||||
$(NO_TRACE_MAKE) $(FILELIST); \
|
|
||||||
MD5SUM=$$(cat $(FILELIST) $(OVERRIDELIST) | $(MKHASH) md5 | awk '{print $$1}'); \
|
|
||||||
[ -f "$@.$$MD5SUM" ] || { \
|
|
||||||
rm -f $@.*; \
|
|
||||||
touch $@.$$MD5SUM; \
|
|
||||||
touch $@; \
|
|
||||||
} \
|
|
||||||
)
|
|
||||||
|
|
||||||
$(TMP_DIR)/.$(SCAN_TARGET): $(TARGET_STAMP)
|
|
||||||
$(call progress,Collecting $(SCAN_NAME) info: merging...)
|
|
||||||
-cat $(FILELIST) | awk '{gsub(/\//, "_", $$0);print "$(TMP_DIR)/info/.$(SCAN_TARGET)-" $$0}' | xargs cat > $@ 2>/dev/null
|
|
||||||
$(call progress,Collecting $(SCAN_NAME) info: done)
|
|
||||||
echo
|
|
||||||
|
|
||||||
FORCE:
|
|
||||||
.PHONY: FORCE
|
|
||||||
.NOTPARALLEL:
|
|
@ -1,15 +0,0 @@
|
|||||||
getvar() {
|
|
||||||
eval "echo \"\${$1}\""
|
|
||||||
}
|
|
||||||
|
|
||||||
var2file() {
|
|
||||||
local var
|
|
||||||
eval "var=\"\${$1}\""
|
|
||||||
if [ -n "$var" ]; then echo "$var" > "$2"; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
isset() {
|
|
||||||
local var
|
|
||||||
eval "var=\"\${$1}\""
|
|
||||||
[ -n "$var" ]
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=8
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=8
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,2 +0,0 @@
|
|||||||
ac_cv_func_futimens=no
|
|
||||||
ac_cv_func_utimensat=no
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/i486
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/i486
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
|||||||
ac_atomic_add=yes
|
|
||||||
ac_atomic_sub=yes
|
|
||||||
ac_cv_c_gettext_without_libintl=yes
|
|
||||||
ac_cv_c_long_double=no
|
|
||||||
ac_cv_conv_longlong_to_float=yes
|
|
||||||
ac_cv_file__dev_zero=yes
|
|
||||||
ac_cv_func___va_copy=no
|
|
||||||
ac_cv_func__exit=yes
|
|
||||||
ac_cv_func_bcopy=yes
|
|
||||||
ac_cv_func_bzero=yes
|
|
||||||
ac_cv_func_bcmp=yes
|
|
||||||
ac_cv_func_creal=yes
|
|
||||||
ac_cv_func_cimag=yes
|
|
||||||
ac_cv_func_fchmod=yes
|
|
||||||
ac_cv_func_getaddrinfo=yes
|
|
||||||
ac_cv_func_getcwd=yes
|
|
||||||
ac_cv_func_getdomainname=yes
|
|
||||||
ac_cv_func_getpgrp_void=yes
|
|
||||||
ac_cv_func_getpwuid_r=yes
|
|
||||||
ac_cv_func_gettimeofday=yes
|
|
||||||
ac_cv_func_index=yes
|
|
||||||
ac_cv_func_lstat_dereferences_slashed_symlink=yes
|
|
||||||
ac_cv_func_lstat_empty_string_bug=no
|
|
||||||
ac_cv_func_lstat=yes
|
|
||||||
ac_cv_func_malloc_0_nonnull=yes
|
|
||||||
ac_cv_func_malloc_works=yes
|
|
||||||
ac_cv_func_memcmp_clean=yes
|
|
||||||
ac_cv_func_memcmp_working=yes
|
|
||||||
ac_cv_func_posix_getgrgid_r=yes
|
|
||||||
ac_cv_func_posix_getpwuid_r=yes
|
|
||||||
ac_cv_func_psignal=yes
|
|
||||||
ac_cv_func_pthread_key_delete=yes
|
|
||||||
ac_cv_func_realloc_0_nonnull=yes
|
|
||||||
ac_cv_func_realloc_works=yes
|
|
||||||
ac_cv_func_rename=yes
|
|
||||||
ac_cv_func_rindex=yes
|
|
||||||
ac_cv_func_setlocale=yes
|
|
||||||
ac_cv_func_setgrent_void=yes
|
|
||||||
ac_cv_func_setpgrp_void=yes
|
|
||||||
ac_cv_func_setresuid=yes
|
|
||||||
ac_cv_func_setvbuf_reversed=no
|
|
||||||
ac_cv_func_stat_empty_string_bug=no
|
|
||||||
ac_cv_func_stat_ignores_trailing_slash=no
|
|
||||||
ac_cv_func_strerror=yes
|
|
||||||
ac_cv_func_strftime=yes
|
|
||||||
ac_cv_func_utimes=yes
|
|
||||||
ac_cv_func___adjtimex=yes
|
|
||||||
ac_cv_func_va_copy=no
|
|
||||||
ac_cv_func_vsnprintf=yes
|
|
||||||
ac_cv_have_accrights_in_msghdr=no
|
|
||||||
ac_cv_have_broken_snprintf=no
|
|
||||||
ac_cv_have_control_in_msghdr=yes
|
|
||||||
ac_cv_have_decl_sys_siglist=no
|
|
||||||
ac_cv_have_openpty_ctty_bug=yes
|
|
||||||
ac_cv_have_space_d_name_in_struct_dirent=yes
|
|
||||||
ac_cv_header_netinet_sctp_uio_h=no
|
|
||||||
ac_cv_int64_t=yes
|
|
||||||
ac_cv_lbl_unaligned_fail=no
|
|
||||||
ac_cv_linux_kernel_pppoe=yes
|
|
||||||
ac_cv_linux_vers=2
|
|
||||||
ac_cv_pack_bitfields_reversed=yes
|
|
||||||
ac_cv_path_LDCONFIG=
|
|
||||||
ac_cv_regexec_segfault_emptystr=no
|
|
||||||
ac_cv_sctp=no
|
|
||||||
ac_cv_sys_restartable_syscalls=yes
|
|
||||||
ac_cv_time_r_type=POSIX
|
|
||||||
ac_cv_type_suseconds_t=yes
|
|
||||||
ac_cv_size_t=yes
|
|
||||||
ac_cv_ssize_t=yes
|
|
||||||
ac_cv_uchar=no
|
|
||||||
ac_cv_uint=yes
|
|
||||||
ac_cv_uint64_t=yes
|
|
||||||
ac_cv_uintptr_t=yes
|
|
||||||
ac_cv_ulong=yes
|
|
||||||
ac_cv_ushort=yes
|
|
||||||
ac_cv_va_copy=C99
|
|
||||||
ac_cv_va_val_copy=yes
|
|
||||||
as_cv_unaligned_access=yes
|
|
||||||
ac_cv_func_malloc_0_nonnull=yes
|
|
||||||
ac_cv_func_realloc_0_nonnull=yes
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=8
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=8
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_char_p=8
|
|
||||||
ac_cv_sizeof_double=8
|
|
||||||
ac_cv_sizeof_float=4
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_long_double=16
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long_long_int=8
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_signed_char=1
|
|
||||||
ac_cv_sizeof_unsigned_char=1
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_int=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long_int=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_unsigned_short_int=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=8
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=4
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=4
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=4
|
|
||||||
ac_cv_sizeof_ssize_t=4
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=4
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=4
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. $TOPDIR/include/site/linux
|
|
||||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
|
||||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
|
||||||
|
|
||||||
ac_cv_sizeof___int64=0
|
|
||||||
ac_cv_sizeof_char=1
|
|
||||||
ac_cv_sizeof_int=4
|
|
||||||
ac_cv_sizeof_int16_t=2
|
|
||||||
ac_cv_sizeof_int32_t=4
|
|
||||||
ac_cv_sizeof_int64_t=8
|
|
||||||
ac_cv_sizeof_long_int=8
|
|
||||||
ac_cv_sizeof_long_long=8
|
|
||||||
ac_cv_sizeof_long=8
|
|
||||||
ac_cv_sizeof_off_t=8
|
|
||||||
ac_cv_sizeof_short_int=2
|
|
||||||
ac_cv_sizeof_short=2
|
|
||||||
ac_cv_sizeof_size_t=8
|
|
||||||
ac_cv_sizeof_ssize_t=8
|
|
||||||
ac_cv_sizeof_u_int16_t=2
|
|
||||||
ac_cv_sizeof_u_int32_t=4
|
|
||||||
ac_cv_sizeof_u_int64_t=8
|
|
||||||
ac_cv_sizeof_uint16_t=2
|
|
||||||
ac_cv_sizeof_uint32_t=4
|
|
||||||
ac_cv_sizeof_uint64_t=8
|
|
||||||
ac_cv_sizeof_unsigned_int=4
|
|
||||||
ac_cv_sizeof_unsigned_long=8
|
|
||||||
ac_cv_sizeof_unsigned_long_long=8
|
|
||||||
ac_cv_sizeof_unsigned_short=2
|
|
||||||
ac_cv_sizeof_void_p=8
|
|
@ -1,109 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifeq ($(MAKECMDGOALS),prereq)
|
|
||||||
SUBTARGETS:=prereq
|
|
||||||
PREREQ_ONLY:=1
|
|
||||||
# For target/linux related target add dtb to selectively compile dtbs
|
|
||||||
else ifneq ($(filter target/linux/%,$(MAKECMDGOALS)),)
|
|
||||||
SUBTARGETS:=$(DEFAULT_SUBDIR_TARGETS) dtb
|
|
||||||
else
|
|
||||||
SUBTARGETS:=$(DEFAULT_SUBDIR_TARGETS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
subtarget-default = $(filter-out ., \
|
|
||||||
$(if $($(1)/builddirs-$(2)),$($(1)/builddirs-$(2)), \
|
|
||||||
$(if $($(1)/builddirs-default),$($(1)/builddirs-default), \
|
|
||||||
$($(1)/builddirs))))
|
|
||||||
|
|
||||||
define subtarget
|
|
||||||
$(call warn_eval,$(1),t,T,$(1)/$(2): $($(1)/) $(foreach bd,$(call subtarget-default,$(1),$(2)),$(1)/$(bd)/$(2)))
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define ERROR
|
|
||||||
($(call MESSAGE, $(2)); $(if $(BUILD_LOG), echo "$(2)" >> $(BUILD_LOG_DIR)/$(1)/error.txt;) $(if $(3),, exit 1;))
|
|
||||||
endef
|
|
||||||
|
|
||||||
lastdir=$(word $(words $(subst /, ,$(1))),$(subst /, ,$(1)))
|
|
||||||
diralias=$(if $(findstring $(1),$(call lastdir,$(1))),,$(call lastdir,$(1)))
|
|
||||||
|
|
||||||
subdir_make_opts = \
|
|
||||||
$(if $(SUBDIR_MAKE_DEBUG),-d) -r -C $(1) \
|
|
||||||
BUILD_SUBDIR="$(1)" \
|
|
||||||
BUILD_VARIANT="$(4)" \
|
|
||||||
ALL_VARIANTS="$(5)"
|
|
||||||
|
|
||||||
# 1: subdir
|
|
||||||
# 2: target
|
|
||||||
# 3: build type
|
|
||||||
# 4: build variant
|
|
||||||
# 5: all variants
|
|
||||||
log_make = \
|
|
||||||
$(if $(call debug,$(1),v),,@)+ \
|
|
||||||
$(if $(BUILD_LOG), \
|
|
||||||
set -o pipefail; \
|
|
||||||
mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \
|
|
||||||
$(SCRIPT_DIR)/time.pl "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)" \
|
|
||||||
$$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \
|
|
||||||
$(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt)
|
|
||||||
|
|
||||||
ifdef CONFIG_AUTOREMOVE
|
|
||||||
rebuild_check = \
|
|
||||||
@-$$(NO_TRACE_MAKE) $(subdir_make_opts) check-depends >/dev/null 2>/dev/null; \
|
|
||||||
$(if $(BUILD_LOG),mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \
|
|
||||||
$$(NO_TRACE_MAKE) $(if $(BUILD_LOG),-d) -q $(subdir_make_opts) .$(if $(3),$(3)-)$(2) \
|
|
||||||
> $(if $(BUILD_LOG),$(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/check-$(if $(3),$(3)-)$(2).txt,/dev/null) 2>&1 || \
|
|
||||||
$$(SUBMAKE) $(subdir_make_opts) clean-build >/dev/null 2>/dev/null
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Parameters: <subdir>
|
|
||||||
define subdir
|
|
||||||
$(call warn,$(1),d,D $(1))
|
|
||||||
$(foreach bd,$($(1)/builddirs),
|
|
||||||
$(call warn,$(1),d,BD $(1)/$(bd))
|
|
||||||
$(foreach target,$(SUBTARGETS) $($(1)/subtargets),
|
|
||||||
$(foreach btype,$(buildtypes-$(bd)),
|
|
||||||
$(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(btype)/$(target): $(if $(NO_DEPS)$(QUILT),,$($(1)/$(bd)/$(btype)/$(target)) $(call $(1)//$(btype)/$(target),$(1)/$(bd)/$(btype))))
|
|
||||||
$(call log_make,$(1)/$(bd),$(target),$(btype),$(filter-out __default,$(variant)),$($(1)/$(bd)/variants)) \
|
|
||||||
|| $(call ERROR,$(2), ERROR: $(1)/$(bd) [$(btype)] failed to build.,$(findstring $(bd),$($(1)/builddirs-ignore-$(btype)-$(target))))
|
|
||||||
$(if $(call diralias,$(bd)),$(call warn_eval,$(1)/$(bd),l,T,$(1)/$(call diralias,$(bd))/$(btype)/$(target): $(1)/$(bd)/$(btype)/$(target)))
|
|
||||||
)
|
|
||||||
$(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(target): $(if $(NO_DEPS)$(QUILT),,$($(1)/$(bd)/$(target)) $(call $(1)//$(target),$(1)/$(bd))))
|
|
||||||
$(foreach variant,$(filter-out *,$(if $(BUILD_VARIANT),$(BUILD_VARIANT),$(if $(strip $($(1)/$(bd)/variants)),$($(1)/$(bd)/variants),$(if $($(1)/$(bd)/default-variant),$($(1)/$(bd)/default-variant),__default)))),
|
|
||||||
$(if $(BUILD_LOG),@mkdir -p $(BUILD_LOG_DIR)/$(1)/$(bd)/$(filter-out __default,$(variant)))
|
|
||||||
$(if $($(1)/autoremove),$(call rebuild_check,$(1)/$(bd),$(target),,$(filter-out __default,$(variant)),$($(1)/$(bd)/variants)))
|
|
||||||
$(call log_make,$(1)/$(bd),$(target),,$(filter-out __default,$(variant)),$($(1)/$(bd)/variants)) \
|
|
||||||
|| $(call ERROR,$(1), ERROR: $(1)/$(bd) failed to build$(if $(filter-out __default,$(variant)), (build variant: $(variant))).,$(findstring $(bd),$($(1)/builddirs-ignore-$(target))))
|
|
||||||
)
|
|
||||||
$(if $(PREREQ_ONLY)$(DUMP_TARGET_DB),,
|
|
||||||
# aliases
|
|
||||||
$(if $(call diralias,$(bd)),$(call warn_eval,$(1)/$(bd),l,T,$(1)/$(call diralias,$(bd))/$(target): $(1)/$(bd)/$(target)))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
$(foreach target,$(SUBTARGETS) $($(1)/subtargets),$(call subtarget,$(1),$(target)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef DUMP_TARGET_DB
|
|
||||||
# Parameters: <subdir> <name> <target> <depends> <config options> <stampfile location>
|
|
||||||
define stampfile
|
|
||||||
$(1)/stamp-$(3):=$(if $(6),$(6),$(STAGING_DIR))/stamp/.$(2)_$(3)$(5)
|
|
||||||
$$($(1)/stamp-$(3)): $(TMP_DIR)/.build $(4)
|
|
||||||
@+$(SCRIPT_DIR)/timestamp.pl -n $$($(1)/stamp-$(3)) $(1) $(4) || \
|
|
||||||
$(MAKE) $(if $(QUIET),--no-print-directory) $$($(1)/flags-$(3)) $(1)/$(3)
|
|
||||||
@mkdir -p $$$$(dirname $$($(1)/stamp-$(3)))
|
|
||||||
@touch $$($(1)/stamp-$(3))
|
|
||||||
|
|
||||||
$$(if $(call debug,$(1),v),,.SILENT: $$($(1)/stamp-$(3)))
|
|
||||||
|
|
||||||
.PRECIOUS: $$($(1)/stamp-$(3)) # work around a make bug
|
|
||||||
|
|
||||||
$(1)//clean:=$(1)/stamp-$(3)/clean
|
|
||||||
$(1)/stamp-$(3)/clean: FORCE
|
|
||||||
@rm -f $$($(1)/stamp-$(3))
|
|
||||||
|
|
||||||
endef
|
|
||||||
endif
|
|
@ -1,402 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2008 OpenWrt.org
|
|
||||||
# Copyright (C) 2016 LEDE Project
|
|
||||||
|
|
||||||
ifneq ($(__target_inc),1)
|
|
||||||
__target_inc=1
|
|
||||||
|
|
||||||
|
|
||||||
# default device type
|
|
||||||
DEVICE_TYPE?=router
|
|
||||||
|
|
||||||
# Default packages - the really basic set
|
|
||||||
DEFAULT_PACKAGES:=\
|
|
||||||
base-files \
|
|
||||||
ca-bundle \
|
|
||||||
dropbear \
|
|
||||||
fstools \
|
|
||||||
libc \
|
|
||||||
libgcc \
|
|
||||||
libustream-mbedtls \
|
|
||||||
logd \
|
|
||||||
mtd \
|
|
||||||
netifd \
|
|
||||||
uci \
|
|
||||||
uclient-fetch \
|
|
||||||
urandom-seed \
|
|
||||||
urngd
|
|
||||||
|
|
||||||
# For the basic set
|
|
||||||
DEFAULT_PACKAGES.basic:=
|
|
||||||
# For nas targets
|
|
||||||
DEFAULT_PACKAGES.nas:=\
|
|
||||||
block-mount \
|
|
||||||
fdisk \
|
|
||||||
lsblk \
|
|
||||||
mdadm
|
|
||||||
# For router targets
|
|
||||||
DEFAULT_PACKAGES.router:=\
|
|
||||||
dnsmasq \
|
|
||||||
firewall4 \
|
|
||||||
nftables \
|
|
||||||
kmod-nft-offload \
|
|
||||||
odhcp6c \
|
|
||||||
odhcpd-ipv6only \
|
|
||||||
ppp \
|
|
||||||
ppp-mod-pppoe
|
|
||||||
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
all: dumpinfo
|
|
||||||
endif
|
|
||||||
|
|
||||||
target_conf=$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
PLATFORM_DIR:=$(firstword $(wildcard $(TOPDIR)/target/linux/feeds/$(BOARD) $(TOPDIR)/target/linux/$(BOARD)))
|
|
||||||
SUBTARGET:=$(strip $(foreach subdir,$(patsubst $(PLATFORM_DIR)/%/target.mk,%,$(wildcard $(PLATFORM_DIR)/*/target.mk)),$(if $(CONFIG_TARGET_$(call target_conf,$(BOARD)_$(subdir))),$(subdir))))
|
|
||||||
else
|
|
||||||
PLATFORM_DIR:=${CURDIR}
|
|
||||||
ifeq ($(SUBTARGETS),)
|
|
||||||
SUBTARGETS:=$(strip $(patsubst $(PLATFORM_DIR)/%/target.mk,%,$(wildcard $(PLATFORM_DIR)/*/target.mk)))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGETID:=$(BOARD)$(if $(SUBTARGET),/$(SUBTARGET))
|
|
||||||
PLATFORM_SUBDIR:=$(PLATFORM_DIR)$(if $(SUBTARGET),/$(SUBTARGET))
|
|
||||||
|
|
||||||
ifneq ($(TARGET_BUILD),1)
|
|
||||||
ifndef DUMP
|
|
||||||
include $(PLATFORM_DIR)/Makefile
|
|
||||||
ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR))
|
|
||||||
include $(PLATFORM_SUBDIR)/target.mk
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
ifneq ($(SUBTARGET),)
|
|
||||||
-include ./$(SUBTARGET)/target.mk
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
# Parse generic config that might be set before a .config is generated to modify the
|
|
||||||
# default package configuration
|
|
||||||
# Keep DYNAMIC_DEF_PKG_CONF in sync with toplevel.mk to reflect the same configs
|
|
||||||
DYNAMIC_DEF_PKG_CONF := CONFIG_USE_APK CONFIG_SELINUX CONFIG_SMALL_FLASH CONFIG_SECCOMP
|
|
||||||
$(foreach config, $(DYNAMIC_DEF_PKG_CONF), \
|
|
||||||
$(eval $(config) := $(shell grep "$(config)=y" $(TOPDIR)/.config 2>/dev/null)) \
|
|
||||||
)
|
|
||||||
# The config options that are enabled by default and where other default
|
|
||||||
# packages depends on needs to be set if they are missing in the .config.
|
|
||||||
ifeq ($(shell grep "CONFIG_SECCOMP" $(TOPDIR)/.config 2>/dev/null),)
|
|
||||||
ifeq ($(filter $(BOARD), uml),)
|
|
||||||
ifneq ($(filter $(ARCH), aarch64 arm armeb mips mipsel mips64 mips64el i386 powerpc x86_64),)
|
|
||||||
CONFIG_SECCOMP := y
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_USE_APK),)
|
|
||||||
DEFAULT_PACKAGES+=apk-mbedtls
|
|
||||||
else
|
|
||||||
DEFAULT_PACKAGES+=opkg
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_SELINUX),)
|
|
||||||
DEFAULT_PACKAGES+=busybox-selinux procd-selinux
|
|
||||||
else
|
|
||||||
DEFAULT_PACKAGES+=busybox procd
|
|
||||||
endif
|
|
||||||
|
|
||||||
# include ujail on systems with enough storage
|
|
||||||
ifeq ($(CONFIG_SMALL_FLASH),)
|
|
||||||
DEFAULT_PACKAGES+=procd-ujail
|
|
||||||
endif
|
|
||||||
|
|
||||||
# include seccomp ld-preload hooks if kernel supports it
|
|
||||||
ifneq ($(CONFIG_SECCOMP),)
|
|
||||||
DEFAULT_PACKAGES+=procd-seccomp
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Add device specific packages (here below to allow device type set from subtarget)
|
|
||||||
DEFAULT_PACKAGES += $(DEFAULT_PACKAGES.$(DEVICE_TYPE))
|
|
||||||
|
|
||||||
filter_packages = $(filter-out -% $(patsubst -%,%,$(filter -%,$(1))),$(1))
|
|
||||||
extra_packages = $(if $(filter wpad wpad-% nas,$(1)),iwinfo)
|
|
||||||
|
|
||||||
define ProfileDefault
|
|
||||||
NAME:=
|
|
||||||
PRIORITY:=
|
|
||||||
PACKAGES:=
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef Profile
|
|
||||||
define Profile
|
|
||||||
$(eval $(call ProfileDefault))
|
|
||||||
$(eval $(call Profile/$(1)))
|
|
||||||
dumpinfo : $(call shexport,Profile/$(1)/Description)
|
|
||||||
PACKAGES := $(filter-out -%,$(PACKAGES))
|
|
||||||
DUMPINFO += \
|
|
||||||
echo "Target-Profile: $(1)"; \
|
|
||||||
$(if $(PRIORITY), echo "Target-Profile-Priority: $(PRIORITY)"; ) \
|
|
||||||
echo "Target-Profile-Name: $(NAME)"; \
|
|
||||||
echo "Target-Profile-Packages: $(PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES) $(PACKAGES))"; \
|
|
||||||
echo "Target-Profile-Description:"; \
|
|
||||||
echo "$$$$$$$$$(call shvar,Profile/$(1)/Description)"; \
|
|
||||||
echo "@@"; \
|
|
||||||
echo;
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR))
|
|
||||||
define IncludeProfiles
|
|
||||||
-include $(sort $(wildcard $(PLATFORM_DIR)/profiles/*.mk))
|
|
||||||
-include $(sort $(wildcard $(PLATFORM_SUBDIR)/profiles/*.mk))
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define IncludeProfiles
|
|
||||||
-include $(sort $(wildcard $(PLATFORM_DIR)/profiles/*.mk))
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
PROFILE?=$(call qstrip,$(CONFIG_TARGET_PROFILE))
|
|
||||||
|
|
||||||
ifeq ($(TARGET_BUILD),1)
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
$(eval $(call IncludeProfiles))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(TARGET_BUILD)$(if $(DUMP),,1),)
|
|
||||||
include $(INCLUDE_DIR)/kernel-version.mk
|
|
||||||
endif
|
|
||||||
|
|
||||||
GENERIC_PLATFORM_DIR := $(TOPDIR)/target/linux/generic
|
|
||||||
GENERIC_BACKPORT_DIR := $(GENERIC_PLATFORM_DIR)/backport$(if $(wildcard $(GENERIC_PLATFORM_DIR)/backport-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
GENERIC_PATCH_DIR := $(GENERIC_PLATFORM_DIR)/pending$(if $(wildcard $(GENERIC_PLATFORM_DIR)/pending-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
GENERIC_HACK_DIR := $(GENERIC_PLATFORM_DIR)/hack$(if $(wildcard $(GENERIC_PLATFORM_DIR)/hack-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
GENERIC_FILES_DIR := $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR)/files $(GENERIC_PLATFORM_DIR)/files-$(KERNEL_PATCHVER)),"$(dir)")
|
|
||||||
|
|
||||||
__config_name_list = $(1)/config-$(KERNEL_PATCHVER) $(1)/config-default
|
|
||||||
__config_list = $(firstword $(wildcard $(call __config_name_list,$(1))))
|
|
||||||
find_kernel_config=$(if $(__config_list),$(__config_list),$(lastword $(__config_name_list)))
|
|
||||||
|
|
||||||
GENERIC_LINUX_CONFIG = $(call find_kernel_config,$(GENERIC_PLATFORM_DIR))
|
|
||||||
LINUX_TARGET_CONFIG = $(call find_kernel_config,$(PLATFORM_DIR))
|
|
||||||
ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR))
|
|
||||||
LINUX_SUBTARGET_CONFIG = $(call find_kernel_config,$(PLATFORM_SUBDIR))
|
|
||||||
endif
|
|
||||||
|
|
||||||
# config file list used for compiling
|
|
||||||
LINUX_KCONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG) $(TOPDIR)/env/kernel-config)
|
|
||||||
|
|
||||||
# default config list for reconfiguring
|
|
||||||
# defaults to subtarget if subtarget exists and target does not
|
|
||||||
# defaults to target otherwise
|
|
||||||
USE_SUBTARGET_CONFIG = $(if $(wildcard $(LINUX_TARGET_CONFIG)),,$(if $(LINUX_SUBTARGET_CONFIG),1))
|
|
||||||
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(if $(USE_SUBTARGET_CONFIG),$(LINUX_SUBTARGET_CONFIG)))
|
|
||||||
LINUX_RECONFIG_TARGET = $(if $(USE_SUBTARGET_CONFIG),$(LINUX_SUBTARGET_CONFIG),$(LINUX_TARGET_CONFIG))
|
|
||||||
|
|
||||||
CFG_TARGET = $(CONFIG_TARGET)
|
|
||||||
ifeq ($(CFG_TARGET),platform)
|
|
||||||
CFG_TARGET = target
|
|
||||||
$(warning Deprecation warning: use CONFIG_TARGET=target instead.)
|
|
||||||
else ifeq ($(CFG_TARGET),subtarget_platform)
|
|
||||||
CFG_TARGET = subtarget_target
|
|
||||||
$(warning Deprecation warning: use CONFIG_TARGET=subtarget_target instead.)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# select the config file to be changed by kernel_menuconfig/kernel_oldconfig
|
|
||||||
ifeq ($(CFG_TARGET),target)
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG))
|
|
||||||
LINUX_RECONFIG_TARGET = $(LINUX_TARGET_CONFIG)
|
|
||||||
else ifeq ($(CFG_TARGET),subtarget)
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG))
|
|
||||||
LINUX_RECONFIG_TARGET = $(LINUX_SUBTARGET_CONFIG)
|
|
||||||
else ifeq ($(CFG_TARGET),subtarget_target)
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_SUBTARGET_CONFIG) $(LINUX_TARGET_CONFIG))
|
|
||||||
LINUX_RECONFIG_TARGET = $(LINUX_TARGET_CONFIG)
|
|
||||||
else ifeq ($(CFG_TARGET),env)
|
|
||||||
LINUX_RECONFIG_LIST = $(LINUX_KCONFIG_LIST)
|
|
||||||
LINUX_RECONFIG_TARGET = $(TOPDIR)/env/kernel-config
|
|
||||||
else ifneq ($(strip $(CFG_TARGET)),)
|
|
||||||
$(error CONFIG_TARGET=$(CFG_TARGET) is invalid. Valid: target|subtarget|subtarget_target|env)
|
|
||||||
endif
|
|
||||||
|
|
||||||
__linux_confcmd = $(2) $(patsubst %,+,$(wordlist 2,9999,$(1))) $(1)
|
|
||||||
|
|
||||||
LINUX_CONF_CMD = $(SCRIPT_DIR)/kconfig.pl $(call __linux_confcmd,$(LINUX_KCONFIG_LIST))
|
|
||||||
LINUX_RECONF_CMD = $(SCRIPT_DIR)/kconfig.pl $(call __linux_confcmd,$(LINUX_RECONFIG_LIST))
|
|
||||||
LINUX_RECONF_DIFF = $(SCRIPT_DIR)/kconfig.pl - '>' $(call __linux_confcmd,$(filter-out $(LINUX_RECONFIG_TARGET),$(LINUX_RECONFIG_LIST))) $(1) $(GENERIC_PLATFORM_DIR)/config-filter
|
|
||||||
|
|
||||||
ifeq ($(DUMP),1)
|
|
||||||
BuildTarget=$(BuildTargets/DumpCurrent)
|
|
||||||
|
|
||||||
CPU_CFLAGS = -Os -pipe
|
|
||||||
ifneq ($(findstring mips,$(ARCH)),)
|
|
||||||
ifneq ($(findstring mips64,$(ARCH)),)
|
|
||||||
CPU_TYPE ?= mips64
|
|
||||||
else
|
|
||||||
CPU_TYPE ?= mips32
|
|
||||||
endif
|
|
||||||
CPU_CFLAGS += -mno-branch-likely
|
|
||||||
CPU_CFLAGS_mips32 = -mips32 -mtune=mips32
|
|
||||||
CPU_CFLAGS_mips64 = -mips64 -mtune=mips64 -mabi=64
|
|
||||||
CPU_CFLAGS_mips64r2 = -mips64r2 -mtune=mips64r2 -mabi=64
|
|
||||||
CPU_CFLAGS_4kec = -mips32r2 -mtune=4kec
|
|
||||||
CPU_CFLAGS_24kc = -mips32r2 -mtune=24kc
|
|
||||||
CPU_CFLAGS_74kc = -mips32r2 -mtune=74kc
|
|
||||||
CPU_CFLAGS_octeonplus = -march=octeon+ -mabi=64
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),i386)
|
|
||||||
CPU_TYPE ?= pentium-mmx
|
|
||||||
CPU_CFLAGS_pentium-mmx = -march=pentium-mmx
|
|
||||||
CPU_CFLAGS_pentium4 = -march=pentium4
|
|
||||||
endif
|
|
||||||
ifneq ($(findstring arm,$(ARCH)),)
|
|
||||||
CPU_TYPE ?= xscale
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),powerpc)
|
|
||||||
CPU_CFLAGS_603e:=-mcpu=603e
|
|
||||||
CPU_CFLAGS_8540:=-mcpu=8540
|
|
||||||
CPU_CFLAGS_8548:=-mcpu=8548
|
|
||||||
CPU_CFLAGS_405:=-mcpu=405
|
|
||||||
CPU_CFLAGS_440:=-mcpu=440
|
|
||||||
CPU_CFLAGS_464fp:=-mcpu=464fp
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),powerpc64)
|
|
||||||
CPU_TYPE ?= powerpc64
|
|
||||||
CPU_CFLAGS_e5500:=-mcpu=e5500
|
|
||||||
CPU_CFLAGS_powerpc64:=-mcpu=powerpc64
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),sparc)
|
|
||||||
CPU_TYPE = sparc
|
|
||||||
CPU_CFLAGS_ultrasparc = -mcpu=ultrasparc
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),aarch64)
|
|
||||||
CPU_TYPE ?= generic
|
|
||||||
CPU_CFLAGS_generic = -mcpu=generic
|
|
||||||
CPU_CFLAGS_cortex-a53 = -mcpu=cortex-a53
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),arc)
|
|
||||||
CPU_TYPE ?= arc700
|
|
||||||
CPU_CFLAGS += -matomic
|
|
||||||
CPU_CFLAGS_arc700 = -mcpu=arc700
|
|
||||||
CPU_CFLAGS_archs = -mcpu=archs
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),riscv64)
|
|
||||||
CPU_TYPE ?= riscv64
|
|
||||||
CPU_CFLAGS_riscv64:=-mabi=lp64d -march=rv64imafdc
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),loongarch64)
|
|
||||||
CPU_TYPE ?= generic
|
|
||||||
CPU_CFLAGS := -O2 -pipe
|
|
||||||
CPU_CFLAGS_generic:=-march=loongarch64
|
|
||||||
endif
|
|
||||||
ifneq ($(CPU_TYPE),)
|
|
||||||
ifndef CPU_CFLAGS_$(CPU_TYPE)
|
|
||||||
$(warning CPU_TYPE "$(CPU_TYPE)" doesn't correspond to a known type)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
DEFAULT_CFLAGS=$(strip $(CPU_CFLAGS) $(CPU_CFLAGS_$(CPU_TYPE)) $(CPU_CFLAGS_$(CPU_SUBTYPE)))
|
|
||||||
|
|
||||||
ifneq ($(BOARD),)
|
|
||||||
TMP_CONFIG:=$(TMP_DIR)/.kconfig-$(call target_conf,$(TARGETID))
|
|
||||||
$(TMP_CONFIG): $(LINUX_KCONFIG_LIST)
|
|
||||||
$(LINUX_CONF_CMD) > $@ || rm -f $@
|
|
||||||
-include $(TMP_CONFIG)
|
|
||||||
.SILENT: $(TMP_CONFIG)
|
|
||||||
.PRECIOUS: $(TMP_CONFIG)
|
|
||||||
|
|
||||||
ifdef KERNEL_TESTING_PATCHVER
|
|
||||||
ifneq ($(KERNEL_TESTING_PATCHVER),$(KERNEL_PATCHVER))
|
|
||||||
FEATURES += testing-kernel
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_OF),)
|
|
||||||
FEATURES += dt
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_GENERIC_GPIO)$(CONFIG_GPIOLIB),)
|
|
||||||
FEATURES += gpio
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_PCI),)
|
|
||||||
FEATURES += pci
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_PCIEPORTBUS),)
|
|
||||||
FEATURES += pcie
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_USB)$(CONFIG_USB_SUPPORT),)
|
|
||||||
ifneq ($(CONFIG_USB_ARCH_HAS_HCD)$(CONFIG_USB_EHCI_HCD),)
|
|
||||||
FEATURES += usb
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_PCMCIA)$(CONFIG_PCCARD),)
|
|
||||||
FEATURES += pcmcia
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_VGA_CONSOLE)$(CONFIG_FB),)
|
|
||||||
FEATURES += display
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_RTC_CLASS),)
|
|
||||||
FEATURES += rtc
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_VIRTIO),)
|
|
||||||
FEATURES += virtio
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_CPU_MIPS32_R2),)
|
|
||||||
FEATURES += mips16
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_CPU_V6),)
|
|
||||||
FEATURES += arm_v6
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_CPU_V6K),)
|
|
||||||
FEATURES += arm_v6
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_CPU_V7),)
|
|
||||||
FEATURES += arm_v7
|
|
||||||
endif
|
|
||||||
|
|
||||||
# remove duplicates
|
|
||||||
FEATURES:=$(sort $(FEATURES))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
CUR_SUBTARGET:=$(SUBTARGET)
|
|
||||||
ifeq ($(SUBTARGETS),)
|
|
||||||
CUR_SUBTARGET := default
|
|
||||||
endif
|
|
||||||
|
|
||||||
define BuildTargets/DumpCurrent
|
|
||||||
.PHONY: dumpinfo
|
|
||||||
dumpinfo : export DESCRIPTION=$$(Target/Description)
|
|
||||||
dumpinfo:
|
|
||||||
@echo 'Target: $(TARGETID)'; \
|
|
||||||
echo 'Target-Board: $(BOARD)'; \
|
|
||||||
echo 'Target-Name: $(BOARDNAME)$(if $(SUBTARGETS),$(if $(SUBTARGET),))'; \
|
|
||||||
echo 'Target-Arch: $(ARCH)'; \
|
|
||||||
echo 'Target-Arch-Packages: $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(ARCH)$(if $(CPU_TYPE),_$(CPU_TYPE))$(if $(CPU_SUBTYPE),_$(CPU_SUBTYPE)))'; \
|
|
||||||
echo 'Target-Features: $(FEATURES)'; \
|
|
||||||
echo 'Target-Depends: $(DEPENDS)'; \
|
|
||||||
echo 'Target-Optimization: $(if $(CFLAGS),$(CFLAGS),$(DEFAULT_CFLAGS))'; \
|
|
||||||
echo 'CPU-Type: $(CPU_TYPE)$(if $(CPU_SUBTYPE),+$(CPU_SUBTYPE))'; \
|
|
||||||
echo 'Linux-Version: $(LINUX_VERSION)'; \
|
|
||||||
$(if $(LINUX_TESTING_VERSION),echo 'Linux-Testing-Version: $(LINUX_TESTING_VERSION)';) \
|
|
||||||
echo 'Linux-Release: $(LINUX_RELEASE)'; \
|
|
||||||
echo 'Linux-Kernel-Arch: $(LINUX_KARCH)'; \
|
|
||||||
$(if $(SUBTARGET),,$(if $(DEFAULT_SUBTARGET), echo 'Default-Subtarget: $(DEFAULT_SUBTARGET)'; )) \
|
|
||||||
echo 'Target-Description:'; \
|
|
||||||
echo "$$$$DESCRIPTION"; \
|
|
||||||
echo '@@'; \
|
|
||||||
echo 'Default-Packages: $(DEFAULT_PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES))'; \
|
|
||||||
$(DUMPINFO)
|
|
||||||
$(if $(CUR_SUBTARGET),$(SUBMAKE) -r --no-print-directory -C image -s DUMP=1 SUBTARGET=$(CUR_SUBTARGET))
|
|
||||||
$(if $(SUBTARGET),,@$(foreach SUBTARGET,$(SUBTARGETS),$(SUBMAKE) -s DUMP=1 SUBTARGET=$(SUBTARGET); ))
|
|
||||||
endef
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/kernel.mk
|
|
||||||
ifeq ($(TARGET_BUILD),1)
|
|
||||||
include $(INCLUDE_DIR)/kernel-build.mk
|
|
||||||
BuildTarget?=$(BuildKernel)
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif #__target_inc
|
|
@ -1,23 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2009-2020 OpenWrt.org
|
|
||||||
|
|
||||||
override CONFIG_AUTOREBUILD=
|
|
||||||
override CONFIG_AUTOREMOVE=
|
|
||||||
|
|
||||||
HOST_BUILD_PREFIX:=$(TOOLCHAIN_DIR)
|
|
||||||
BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN)
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/host-build.mk
|
|
||||||
include $(INCLUDE_DIR)/hardening.mk
|
|
||||||
|
|
||||||
HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared
|
|
||||||
|
|
||||||
define FixupLibdir
|
|
||||||
if [ -d $(1)/lib64 -a \! -L $(1)/lib64 ]; then \
|
|
||||||
mkdir -p $(1)/lib; \
|
|
||||||
mv $(1)/lib64/* $(1)/lib/; \
|
|
||||||
rm -rf $(1)/lib64; \
|
|
||||||
ln -sf lib $(1)/lib64; \
|
|
||||||
fi
|
|
||||||
endef
|
|
@ -1,287 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2020 OpenWrt.org
|
|
||||||
|
|
||||||
PREP_MK= OPENWRT_BUILD= QUIET=0
|
|
||||||
|
|
||||||
export IS_TTY=$(if $(MAKE_TERMOUT),1,0)
|
|
||||||
|
|
||||||
include $(TOPDIR)/include/verbose.mk
|
|
||||||
|
|
||||||
ifeq ($(SDK),1)
|
|
||||||
include $(TOPDIR)/include/version.mk
|
|
||||||
else
|
|
||||||
REVISION:=$(shell $(TOPDIR)/scripts/getver.sh)
|
|
||||||
SOURCE_DATE_EPOCH:=$(shell $(TOPDIR)/scripts/get_source_date_epoch.sh)
|
|
||||||
endif
|
|
||||||
|
|
||||||
export REVISION
|
|
||||||
export SOURCE_DATE_EPOCH
|
|
||||||
export GIT_CONFIG_PARAMETERS='core.autocrlf=false'
|
|
||||||
export GIT_ASKPASS:=/bin/true
|
|
||||||
export MAKE_JOBSERVER=$(filter --jobserver%,$(MAKEFLAGS))
|
|
||||||
export GNU_HOST_NAME:=$(shell $(TOPDIR)/scripts/config.guess)
|
|
||||||
export HOST_OS:=$(shell uname)
|
|
||||||
export HOST_ARCH:=$(shell uname -m)
|
|
||||||
|
|
||||||
ifeq ($(HOST_OS),Darwin)
|
|
||||||
ifneq ($(filter /Applications/Xcode.app/% /Library/Developer/%,$(MAKE)),)
|
|
||||||
$(error Please use a newer version of GNU make. The version shipped by Apple is not supported)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# prevent perforce from messing with the patch utility
|
|
||||||
unexport P4PORT P4USER P4CONFIG P4CLIENT
|
|
||||||
|
|
||||||
# prevent user defaults for quilt from interfering
|
|
||||||
unexport QUILT_PATCHES QUILT_PATCH_OPTS
|
|
||||||
|
|
||||||
unexport C_INCLUDE_PATH CROSS_COMPILE ARCH
|
|
||||||
|
|
||||||
# prevent distro default LPATH from interfering
|
|
||||||
unexport LPATH
|
|
||||||
|
|
||||||
# make sure that a predefined CFLAGS variable does not disturb packages
|
|
||||||
export CFLAGS=
|
|
||||||
export LDFLAGS=
|
|
||||||
|
|
||||||
empty:=
|
|
||||||
space:= $(empty) $(empty)
|
|
||||||
path:=$(subst :,$(space),$(PATH))
|
|
||||||
path:=$(filter-out .%,$(path))
|
|
||||||
path:=$(subst $(space),:,$(path))
|
|
||||||
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
|
||||||
export PATH:=$(path)
|
|
||||||
export STAGING_DIR_HOST:=$(if $(STAGING_DIR),$(abspath $(STAGING_DIR)/../host),$(TOPDIR)/staging_dir/host)
|
|
||||||
|
|
||||||
unexport TAR_OPTIONS
|
|
||||||
|
|
||||||
ifeq ($(FORCE),)
|
|
||||||
.config scripts/config/conf scripts/config/mconf: $(STAGING_DIR_HOST)/.prereq-build
|
|
||||||
endif
|
|
||||||
|
|
||||||
SCAN_COOKIE?=$(shell echo $$$$)
|
|
||||||
export SCAN_COOKIE
|
|
||||||
|
|
||||||
SUBMAKE:=umask 022; $(SUBMAKE)
|
|
||||||
|
|
||||||
ULIMIT_FIX=_limit=`ulimit -n`; [ "$$_limit" = "unlimited" -o "$$_limit" -ge 1024 ] || ulimit -n 1024;
|
|
||||||
|
|
||||||
prepare-mk: $(STAGING_DIR_HOST)/.prereq-build FORCE ;
|
|
||||||
|
|
||||||
ifdef SDK
|
|
||||||
IGNORE_PACKAGES = linux
|
|
||||||
endif
|
|
||||||
|
|
||||||
_ignore = $(foreach p,$(IGNORE_PACKAGES),--ignore $(p))
|
|
||||||
|
|
||||||
# Config that will invalidate the .targetinfo as they will affect
|
|
||||||
# DEFAULT_PACKAGES.
|
|
||||||
# Keep DYNAMIC_DEF_PKG_CONF in sync with target.mk to reflect the same configs
|
|
||||||
DYNAMIC_DEF_PKG_CONF := CONFIG_USE_APK CONFIG_SELINUX CONFIG_SMALL_FLASH CONFIG_SECCOMP
|
|
||||||
check-dynamic-def-pkg: FORCE
|
|
||||||
@+DEF_PKG_CONFS=""; \
|
|
||||||
if [ -f $(TOPDIR)/.config ]; then \
|
|
||||||
for config in $(DYNAMIC_DEF_PKG_CONF); do \
|
|
||||||
DEF_PKG_CONFS="$$DEF_PKG_CONFS "$$(grep "$$config"=y $(TOPDIR)/.config); \
|
|
||||||
done; \
|
|
||||||
fi; \
|
|
||||||
[ ! -f tmp/.packagedynamicdefault ] || OLD_DEF_PKG_CONFS=$$(cat tmp/.packagedynamicdefault); \
|
|
||||||
[ "$$DEF_PKG_CONFS" = "$$OLD_DEF_PKG_CONFS" ] || rm -rf tmp/info/.targetinfo*; \
|
|
||||||
mkdir -p tmp && echo "$$DEF_PKG_CONFS" > tmp/.packagedynamicdefault;
|
|
||||||
|
|
||||||
prepare-tmpinfo: check-dynamic-def-pkg FORCE
|
|
||||||
@+$(MAKE) -r -s $(STAGING_DIR_HOST)/.prereq-build $(PREP_MK)
|
|
||||||
mkdir -p tmp/info feeds
|
|
||||||
[ -e $(TOPDIR)/feeds/base ] || ln -sf $(TOPDIR)/package $(TOPDIR)/feeds/base
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPTH=5 SCAN_EXTRA=""
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPTH=3 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"
|
|
||||||
for type in package target; do \
|
|
||||||
f=tmp/.$${type}info; t=tmp/.config-$${type}.in; \
|
|
||||||
[ "$$t" -nt "$$f" ] || ./scripts/$${type}-metadata.pl $(_ignore) config "$$f" > "$$t" || { rm -f "$$t"; echo "Failed to build $$t"; false; break; }; \
|
|
||||||
done
|
|
||||||
[ tmp/.config-feeds.in -nt tmp/.packageauxvars ] || ./scripts/feeds feed_config > tmp/.config-feeds.in
|
|
||||||
./scripts/package-metadata.pl mk tmp/.packageinfo > tmp/.packagedeps || { rm -f tmp/.packagedeps; false; }
|
|
||||||
./scripts/package-metadata.pl pkgaux tmp/.packageinfo > tmp/.packageauxvars || { rm -f tmp/.packageauxvars; false; }
|
|
||||||
./scripts/package-metadata.pl usergroup tmp/.packageinfo > tmp/.packageusergroup || { rm -f tmp/.packageusergroup; false; }
|
|
||||||
touch $(TOPDIR)/tmp/.build
|
|
||||||
|
|
||||||
.config: ./scripts/config/conf $(if $(CONFIG_HAVE_DOT_CONFIG),,prepare-tmpinfo)
|
|
||||||
@+if [ \! -e .config ] || ! grep CONFIG_HAVE_DOT_CONFIG .config >/dev/null; then \
|
|
||||||
[ -e $(HOME)/.openwrt/defconfig ] && cp $(HOME)/.openwrt/defconfig .config; \
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) menuconfig $(PREP_MK); \
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifeq ($(RECURSIVE_DEP_IS_ERROR),1)
|
|
||||||
KCONF_FLAGS=--fatalrecursive
|
|
||||||
endif
|
|
||||||
ifneq ($(DISTRO_PKG_CONFIG),)
|
|
||||||
scripts/config/%onf: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
|
|
||||||
endif
|
|
||||||
scripts/config/%onf: CFLAGS+= -O2
|
|
||||||
scripts/config/%onf: FORCE
|
|
||||||
@$(_SINGLE)$(SUBMAKE) $(if $(findstring s,$(OPENWRT_VERBOSE)),,-s) \
|
|
||||||
-C scripts/config $(notdir $@)
|
|
||||||
|
|
||||||
$(eval $(call rdep,scripts/config,scripts/config/mconf))
|
|
||||||
|
|
||||||
config: scripts/config/conf prepare-tmpinfo FORCE
|
|
||||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
|
||||||
$< $(KCONF_FLAGS) Config.in
|
|
||||||
|
|
||||||
config-clean: FORCE
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -C scripts/config clean
|
|
||||||
|
|
||||||
defconfig: scripts/config/conf prepare-tmpinfo FORCE
|
|
||||||
touch .config
|
|
||||||
@if [ ! -s .config -a -e $(HOME)/.openwrt/defconfig ]; then cp $(HOME)/.openwrt/defconfig .config; fi
|
|
||||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
|
||||||
$< $(KCONF_FLAGS) --defconfig=.config Config.in
|
|
||||||
|
|
||||||
confdefault-y=allyes
|
|
||||||
confdefault-m=allmod
|
|
||||||
confdefault-n=allno
|
|
||||||
confdefault:=$(confdefault-$(CONFDEFAULT))
|
|
||||||
|
|
||||||
oldconfig: scripts/config/conf prepare-tmpinfo FORCE
|
|
||||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
|
||||||
$< $(KCONF_FLAGS) --$(if $(confdefault),$(confdefault),old)config Config.in
|
|
||||||
|
|
||||||
menuconfig: scripts/config/mconf prepare-tmpinfo FORCE
|
|
||||||
if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \
|
|
||||||
cp $(HOME)/.openwrt/defconfig .config; \
|
|
||||||
fi
|
|
||||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
|
||||||
$< Config.in
|
|
||||||
|
|
||||||
nconfig: scripts/config/nconf prepare-tmpinfo FORCE
|
|
||||||
if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \
|
|
||||||
cp $(HOME)/.openwrt/defconfig .config; \
|
|
||||||
fi
|
|
||||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
|
||||||
$< Config.in
|
|
||||||
|
|
||||||
xconfig: scripts/config/qconf prepare-tmpinfo FORCE
|
|
||||||
if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \
|
|
||||||
cp $(HOME)/.openwrt/defconfig .config; \
|
|
||||||
fi
|
|
||||||
$< Config.in
|
|
||||||
|
|
||||||
prepare_kernel_conf: .config toolchain/install FORCE
|
|
||||||
|
|
||||||
ifeq ($(wildcard $(STAGING_DIR_HOST)/bin/quilt),)
|
|
||||||
prepare_kernel_conf:
|
|
||||||
@+$(SUBMAKE) -r tools/quilt/compile
|
|
||||||
else
|
|
||||||
prepare_kernel_conf: ;
|
|
||||||
endif
|
|
||||||
|
|
||||||
kernel_oldconfig: prepare_kernel_conf
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux oldconfig
|
|
||||||
|
|
||||||
ifneq ($(DISTRO_PKG_CONFIG),)
|
|
||||||
kernel_menuconfig: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
|
|
||||||
kernel_nconfig: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
|
|
||||||
kernel_xconfig: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
|
|
||||||
endif
|
|
||||||
kernel_menuconfig: prepare_kernel_conf
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux menuconfig
|
|
||||||
|
|
||||||
kernel_nconfig: prepare_kernel_conf
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux nconfig
|
|
||||||
|
|
||||||
kernel_xconfig: prepare_kernel_conf
|
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux xconfig
|
|
||||||
|
|
||||||
$(STAGING_DIR_HOST)/.prereq-build: include/prereq-build.mk
|
|
||||||
mkdir -p tmp
|
|
||||||
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \
|
|
||||||
echo "Prerequisite check failed. Use FORCE=1 to override."; \
|
|
||||||
false; \
|
|
||||||
}
|
|
||||||
ifneq ($(realpath $(TOPDIR)/include/prepare.mk),)
|
|
||||||
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prepare.mk prepare 2>/dev/null || { \
|
|
||||||
echo "Preparation failed."; \
|
|
||||||
false; \
|
|
||||||
}
|
|
||||||
endif
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
printdb: FORCE
|
|
||||||
@$(_SINGLE)$(NO_TRACE_MAKE) -p $@ V=99 DUMP_TARGET_DB=1 2>&1
|
|
||||||
|
|
||||||
ifndef SDK
|
|
||||||
DOWNLOAD_DIRS = tools/download toolchain/download package/download target/download
|
|
||||||
else
|
|
||||||
DOWNLOAD_DIRS = package/download
|
|
||||||
endif
|
|
||||||
|
|
||||||
download: .config FORCE $(if $(wildcard $(STAGING_DIR_HOST)/bin/flock),,tools/flock/compile)
|
|
||||||
@+$(foreach dir,$(DOWNLOAD_DIRS),$(SUBMAKE) $(dir);)
|
|
||||||
|
|
||||||
clean dirclean: .config
|
|
||||||
@+$(SUBMAKE) -r $@
|
|
||||||
|
|
||||||
prereq:: prepare-tmpinfo .config
|
|
||||||
@+$(NO_TRACE_MAKE) -r -s $@
|
|
||||||
|
|
||||||
check: .config FORCE
|
|
||||||
@+$(NO_TRACE_MAKE) -r -s $@ QUIET= V=s
|
|
||||||
|
|
||||||
val.% var.%: FORCE
|
|
||||||
@+$(NO_TRACE_MAKE) -r -s $@ QUIET= V=s
|
|
||||||
|
|
||||||
WARN_PARALLEL_ERROR = $(if $(BUILD_LOG),,$(and $(filter -j,$(MAKEFLAGS)),$(findstring s,$(OPENWRT_VERBOSE))))
|
|
||||||
|
|
||||||
ifeq ($(SDK),1)
|
|
||||||
|
|
||||||
%::
|
|
||||||
@+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq
|
|
||||||
@./scripts/config/conf $(KCONF_FLAGS) --defconfig=.config Config.in
|
|
||||||
@+$(ULIMIT_FIX) $(SUBMAKE) -r $@
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
%::
|
|
||||||
@+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq
|
|
||||||
@( \
|
|
||||||
cp .config tmp/.config; \
|
|
||||||
./scripts/config/conf $(KCONF_FLAGS) --defconfig=tmp/.config -w tmp/.config Config.in > /dev/null 2>&1; \
|
|
||||||
if ./scripts/kconfig.pl '>' .config tmp/.config | grep -q CONFIG; then \
|
|
||||||
printf "$(_R)WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!$(_N)\n" >&2; \
|
|
||||||
fi \
|
|
||||||
)
|
|
||||||
@+$(ULIMIT_FIX) $(SUBMAKE) -r $@ $(if $(WARN_PARALLEL_ERROR), || { \
|
|
||||||
printf "$(_R)Build failed - please re-run with -j1 to see the real error message$(_N)\n" >&2; \
|
|
||||||
false; \
|
|
||||||
} )
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
# update all feeds, re-create index files, install symlinks
|
|
||||||
package/symlinks:
|
|
||||||
./scripts/feeds update -a
|
|
||||||
./scripts/feeds install -a
|
|
||||||
|
|
||||||
# re-create index files, install symlinks
|
|
||||||
package/symlinks-install:
|
|
||||||
./scripts/feeds update -i
|
|
||||||
./scripts/feeds install -a
|
|
||||||
|
|
||||||
# remove all symlinks, don't touch ./feeds
|
|
||||||
package/symlinks-clean:
|
|
||||||
./scripts/feeds uninstall -a
|
|
||||||
|
|
||||||
help:
|
|
||||||
cat README.md
|
|
||||||
|
|
||||||
distclean:
|
|
||||||
rm -rf bin build_dir .ccache .config* dl feeds key-build* logs package/feeds staging_dir tmp
|
|
||||||
@$(_SINGLE)$(SUBMAKE) -C scripts/config clean
|
|
||||||
|
|
||||||
ifeq ($(findstring v,$(DEBUG)),)
|
|
||||||
.SILENT: symlinkclean clean dirclean distclean config-clean download help tmpinfo-clean .config scripts/config/mconf scripts/config/conf menuconfig $(STAGING_DIR_HOST)/.prereq-build tmp/.prereq-package prepare-tmpinfo
|
|
||||||
endif
|
|
||||||
.PHONY: help FORCE
|
|
||||||
.NOTPARALLEL:
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
|||||||
PKG_NAME ?= trusted-firmware-a
|
|
||||||
PKG_CPE_ID ?= cpe:/a:arm:trusted_firmware-a
|
|
||||||
|
|
||||||
ifndef PKG_SOURCE_PROTO
|
|
||||||
PKG_SOURCE = trusted-firmware-a-$(PKG_VERSION).tar.gz
|
|
||||||
PKG_SOURCE_URL:=https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
|
||||||
|
|
||||||
PKG_TARGETS := bin
|
|
||||||
PKG_FLAGS:=nonshared
|
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
|
||||||
PKG_LICENSE_FILES:=docs/license.rst
|
|
||||||
|
|
||||||
PKG_BUILD_PARALLEL:=1
|
|
||||||
|
|
||||||
export GCC_HONOUR_COPTS=s
|
|
||||||
|
|
||||||
define Package/trusted-firmware-a/install/default
|
|
||||||
$(CP) $(patsubst %,$(PKG_BUILD_DIR)/build/$(PLAT)/release/%,$(TFA_IMAGE)) $(1)/
|
|
||||||
endef
|
|
||||||
|
|
||||||
Package/trusted-firmware-a/install = $(Package/trusted-firmware-a/install/default)
|
|
||||||
|
|
||||||
define Trusted-Firmware-A/Init
|
|
||||||
BUILD_TARGET:=
|
|
||||||
BUILD_SUBTARGET:=
|
|
||||||
BUILD_DEVICES:=
|
|
||||||
NAME:=
|
|
||||||
DEPENDS:=
|
|
||||||
HIDDEN:=
|
|
||||||
DEFAULT:=
|
|
||||||
PLAT:=
|
|
||||||
VARIANT:=$(1)
|
|
||||||
TFA_IMAGE:=
|
|
||||||
endef
|
|
||||||
|
|
||||||
TARGET_DEP = TARGET_$(BUILD_TARGET)$(if $(BUILD_SUBTARGET),_$(BUILD_SUBTARGET))
|
|
||||||
|
|
||||||
define Build/Trusted-Firmware-A/Target
|
|
||||||
$(eval $(call Trusted-Firmware-A/Init,$(1)))
|
|
||||||
$(eval $(call Trusted-Firmware-A/Default,$(1)))
|
|
||||||
$(eval $(call Trusted-Firmware-A/$(1),$(1)))
|
|
||||||
|
|
||||||
define Package/trusted-firmware-a-$(1)
|
|
||||||
SECTION:=boot
|
|
||||||
CATEGORY:=Boot Loaders
|
|
||||||
TITLE:=Trusted-Firmware-A for $(NAME)
|
|
||||||
VARIANT:=$(VARIANT)
|
|
||||||
DEPENDS:=@!IN_SDK $(DEPENDS)
|
|
||||||
HIDDEN:=$(HIDDEN)
|
|
||||||
ifneq ($(BUILD_TARGET),)
|
|
||||||
DEPENDS += @$(TARGET_DEP)
|
|
||||||
ifneq ($(BUILD_DEVICES),)
|
|
||||||
DEFAULT := y if ($(TARGET_DEP)_Default \
|
|
||||||
$(patsubst %,|| $(TARGET_DEP)_DEVICE_%,$(BUILD_DEVICES)) \
|
|
||||||
$(patsubst %,|| $(patsubst TARGET_%,TARGET_DEVICE_%,$(TARGET_DEP))_DEVICE_%,$(BUILD_DEVICES)))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
$(if $(DEFAULT),DEFAULT:=$(DEFAULT))
|
|
||||||
URL:=https://www.trustedfirmware.org/projects/tf-a/
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef Package/trusted-firmware-a-$(1)/install
|
|
||||||
define Package/trusted-firmware-a-$(1)/install
|
|
||||||
$$(Package/trusted-firmware-a/install)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Configure/Trusted-Firmware-A
|
|
||||||
$(INSTALL_DIR) $(STAGING_DIR)/usr/include
|
|
||||||
endef
|
|
||||||
|
|
||||||
DTC=$(wildcard $(LINUX_DIR)/scripts/dtc/dtc)
|
|
||||||
|
|
||||||
define Build/Compile/Trusted-Firmware-A
|
|
||||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
|
||||||
CROSS_COMPILE=$(TARGET_CROSS) \
|
|
||||||
OPENSSL_DIR=$(STAGING_DIR_HOST) \
|
|
||||||
$(if $(DTC),DTC="$(DTC)") \
|
|
||||||
PLAT=$(PLAT) \
|
|
||||||
BUILD_STRING="OpenWrt v$(PKG_VERSION)-$(PKG_RELEASE) ($(VARIANT))" \
|
|
||||||
$(if $(CONFIG_BINUTILS_VERSION_2_37)$(CONFIG_BINUTILS_VERSION_2_38),,LDFLAGS="-no-warn-rwx-segments") \
|
|
||||||
$(TFA_MAKE_FLAGS)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define BuildPackage/Trusted-Firmware-A/Defaults
|
|
||||||
Build/Configure/Default = $$$$(Build/Configure/Trusted-Firmware-A)
|
|
||||||
Build/Compile/Default = $$$$(Build/Compile/Trusted-Firmware-A)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define BuildPackage/Trusted-Firmware-A
|
|
||||||
$(eval $(call BuildPackage/Trusted-Firmware-A/Defaults))
|
|
||||||
$(foreach type,$(if $(DUMP),$(TFA_TARGETS),$(BUILD_VARIANT)), \
|
|
||||||
$(eval $(call Build/Trusted-Firmware-A/Target,$(type)))
|
|
||||||
)
|
|
||||||
$(eval $(call Build/DefaultTargets))
|
|
||||||
$(foreach type,$(if $(DUMP),$(TFA_TARGETS),$(BUILD_VARIANT)), \
|
|
||||||
$(call BuildPackage,trusted-firmware-a-$(type))
|
|
||||||
)
|
|
||||||
endef
|
|
@ -1,144 +0,0 @@
|
|||||||
include $(INCLUDE_DIR)/prereq.mk
|
|
||||||
|
|
||||||
PKG_NAME ?= u-boot
|
|
||||||
|
|
||||||
ifndef PKG_SOURCE_PROTO
|
|
||||||
PKG_SOURCE = $(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
|
||||||
PKG_SOURCE_URL = \
|
|
||||||
https://mirror.cyberbits.eu/u-boot \
|
|
||||||
https://ftp.denx.de/pub/u-boot \
|
|
||||||
ftp://ftp.denx.de/pub/u-boot
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
|
||||||
|
|
||||||
PKG_TARGETS := bin
|
|
||||||
PKG_FLAGS:=nonshared
|
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0 GPL-2.0+
|
|
||||||
PKG_LICENSE_FILES:=Licenses/README
|
|
||||||
|
|
||||||
PKG_BUILD_PARALLEL ?= 1
|
|
||||||
|
|
||||||
ifdef UBOOT_USE_BINMAN
|
|
||||||
$(eval $(call TestHostCommand,python3-pyelftools, \
|
|
||||||
Please install the Python3 elftools module, \
|
|
||||||
$(STAGING_DIR_HOST)/bin/python3 -c 'import elftools'))
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef UBOOT_USE_INTREE_DTC
|
|
||||||
$(eval $(call TestHostCommand,python3-dev, \
|
|
||||||
Please install the python3-dev package, \
|
|
||||||
python3.11-config --includes 2>&1 | grep 'python3', \
|
|
||||||
python3.10-config --includes 2>&1 | grep 'python3', \
|
|
||||||
python3.9-config --includes 2>&1 | grep 'python3', \
|
|
||||||
python3.8-config --includes 2>&1 | grep 'python3', \
|
|
||||||
python3.7-config --includes 2>&1 | grep 'python3', \
|
|
||||||
python3-config --includes 2>&1 | grep -E 'python3\.([7-9]|[0-9][0-9])\.?'))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,python3-setuptools, \
|
|
||||||
Please install the Python3 setuptools module, \
|
|
||||||
$(STAGING_DIR_HOST)/bin/python3 -c 'import setuptools'))
|
|
||||||
|
|
||||||
$(eval $(call TestHostCommand,swig, \
|
|
||||||
Please install the swig package, \
|
|
||||||
swig -version))
|
|
||||||
endif
|
|
||||||
|
|
||||||
export GCC_HONOUR_COPTS=s
|
|
||||||
|
|
||||||
define Package/u-boot/install/default
|
|
||||||
$(CP) $(patsubst %,$(PKG_BUILD_DIR)/%,$(UBOOT_IMAGE)) $(1)/
|
|
||||||
endef
|
|
||||||
|
|
||||||
Package/u-boot/install = $(Package/u-boot/install/default)
|
|
||||||
|
|
||||||
define U-Boot/Init
|
|
||||||
BUILD_TARGET:=
|
|
||||||
BUILD_SUBTARGET:=
|
|
||||||
BUILD_DEVICES:=
|
|
||||||
NAME:=
|
|
||||||
DEPENDS:=
|
|
||||||
HIDDEN:=
|
|
||||||
DEFAULT:=
|
|
||||||
VARIANT:=$(1)
|
|
||||||
UBOOT_CONFIG:=$(1)
|
|
||||||
UBOOT_IMAGE:=u-boot.bin
|
|
||||||
endef
|
|
||||||
|
|
||||||
TARGET_DEP = TARGET_$(BUILD_TARGET)$(if $(BUILD_SUBTARGET),_$(BUILD_SUBTARGET))
|
|
||||||
|
|
||||||
UBOOT_MAKE_FLAGS = \
|
|
||||||
PATH=$(STAGING_DIR_HOST)/bin:$(PATH) \
|
|
||||||
HOSTCC="$(HOSTCC)" \
|
|
||||||
HOSTCFLAGS="$(HOST_CFLAGS) $(HOST_CPPFLAGS) -std=gnu11" \
|
|
||||||
HOSTLDFLAGS="$(HOST_LDFLAGS)" \
|
|
||||||
LOCALVERSION="-OpenWrt-$(REVISION)" \
|
|
||||||
STAGING_PREFIX="$(STAGING_DIR_HOST)" \
|
|
||||||
PKG_CONFIG_PATH="$(STAGING_DIR_HOST)/lib/pkgconfig" \
|
|
||||||
PKG_CONFIG_LIBDIR="$(STAGING_DIR_HOST)/lib/pkgconfig" \
|
|
||||||
PKG_CONFIG_EXTRAARGS="--static" \
|
|
||||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='')
|
|
||||||
|
|
||||||
define Build/U-Boot/Target
|
|
||||||
$(eval $(call U-Boot/Init,$(1)))
|
|
||||||
$(eval $(call U-Boot/Default,$(1)))
|
|
||||||
$(eval $(call U-Boot/$(1),$(1)))
|
|
||||||
|
|
||||||
define Package/u-boot-$(1)
|
|
||||||
SECTION:=boot
|
|
||||||
CATEGORY:=Boot Loaders
|
|
||||||
TITLE:=U-Boot for $(NAME)
|
|
||||||
VARIANT:=$(VARIANT)
|
|
||||||
DEPENDS:=@!IN_SDK $(DEPENDS)
|
|
||||||
HIDDEN:=$(HIDDEN)
|
|
||||||
ifneq ($(BUILD_TARGET),)
|
|
||||||
DEPENDS += @$(TARGET_DEP)
|
|
||||||
ifneq ($(BUILD_DEVICES),)
|
|
||||||
DEFAULT := y if ($(TARGET_DEP)_Default \
|
|
||||||
$(patsubst %,|| $(TARGET_DEP)_DEVICE_%,$(BUILD_DEVICES)) \
|
|
||||||
$(patsubst %,|| $(patsubst TARGET_%,TARGET_DEVICE_%,$(TARGET_DEP))_DEVICE_%,$(BUILD_DEVICES)))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
$(if $(DEFAULT),DEFAULT:=$(DEFAULT))
|
|
||||||
URL:=http://www.denx.de/wiki/U-Boot
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/u-boot-$(1)/install
|
|
||||||
$$(Package/u-boot/install)
|
|
||||||
endef
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Configure/U-Boot
|
|
||||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS) $(UBOOT_CONFIGURE_VARS) $(UBOOT_CONFIG)_config
|
|
||||||
$(if $(strip $(UBOOT_CUSTOMIZE_CONFIG)),
|
|
||||||
$(PKG_BUILD_DIR)/scripts/config --file $(PKG_BUILD_DIR)/.config $(UBOOT_CUSTOMIZE_CONFIG)
|
|
||||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS) $(UBOOT_CONFIGURE_VARS) oldconfig)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef UBOOT_USE_INTREE_DTC
|
|
||||||
DTC=$(wildcard $(LINUX_DIR)/scripts/dtc/dtc)
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Build/Compile/U-Boot
|
|
||||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
|
||||||
CROSS_COMPILE=$(TARGET_CROSS) \
|
|
||||||
$(if $(DTC),DTC="$(DTC)") \
|
|
||||||
$(UBOOT_MAKE_FLAGS)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define BuildPackage/U-Boot/Defaults
|
|
||||||
Build/Configure/Default = $$$$(Build/Configure/U-Boot)
|
|
||||||
Build/Compile/Default = $$$$(Build/Compile/U-Boot)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define BuildPackage/U-Boot
|
|
||||||
$(eval $(call BuildPackage/U-Boot/Defaults))
|
|
||||||
$(foreach type,$(if $(DUMP),$(UBOOT_TARGETS),$(BUILD_VARIANT)), \
|
|
||||||
$(eval $(call Build/U-Boot/Target,$(type)))
|
|
||||||
)
|
|
||||||
$(eval $(call Build/DefaultTargets))
|
|
||||||
$(foreach type,$(if $(DUMP),$(UBOOT_TARGETS),$(BUILD_VARIANT)), \
|
|
||||||
$(call BuildPackage,u-boot-$(type))
|
|
||||||
)
|
|
||||||
endef
|
|
@ -1,2 +0,0 @@
|
|||||||
$(warn uclibc++.mk is deprecated. Please remove it and CXX_DEPENDS)
|
|
||||||
CXX_DEPENDS = +libstdcpp
|
|
@ -1,72 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
HOST_TAR:=$(TAR)
|
|
||||||
TAR_CMD=$(HOST_TAR) -C $(1)/.. $(TAR_OPTIONS)
|
|
||||||
UNZIP_CMD=unzip -q -d $(1)/.. $(DL_DIR)/$(PKG_SOURCE)
|
|
||||||
|
|
||||||
ifeq ($(PKG_SOURCE),)
|
|
||||||
PKG_UNPACK ?= true
|
|
||||||
else
|
|
||||||
|
|
||||||
ifeq ($(strip $(UNPACK_CMD)),)
|
|
||||||
ifeq ($(strip $(PKG_CAT)),)
|
|
||||||
# try to autodetect file type
|
|
||||||
EXT:=$(call ext,$(PKG_SOURCE))
|
|
||||||
EXT1:=$(EXT)
|
|
||||||
|
|
||||||
ifeq ($(filter gz tgz,$(EXT)),$(EXT))
|
|
||||||
EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
|
|
||||||
DECOMPRESS_CMD:=$(STAGING_DIR_HOST)/bin/libdeflate-gzip -dc $(DL_DIR)/$(PKG_SOURCE) |
|
|
||||||
endif
|
|
||||||
ifeq ($(filter bzip2 bz2 bz tbz2 tbz,$(EXT)),$(EXT))
|
|
||||||
EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
|
|
||||||
DECOMPRESS_CMD:=bzcat $(DL_DIR)/$(PKG_SOURCE) |
|
|
||||||
endif
|
|
||||||
ifeq ($(filter xz txz,$(EXT)),$(EXT))
|
|
||||||
EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
|
|
||||||
DECOMPRESS_CMD:=xzcat $(DL_DIR)/$(PKG_SOURCE) |
|
|
||||||
endif
|
|
||||||
ifeq (zst,$(EXT))
|
|
||||||
EXT:=$(call ext,$(PKG_SOURCE:.$(EXT)=))
|
|
||||||
DECOMPRESS_CMD:=zstdcat $(DL_DIR)/$(PKG_SOURCE) |
|
|
||||||
endif
|
|
||||||
ifeq ($(filter tgz tbz tbz2 txz,$(EXT1)),$(EXT1))
|
|
||||||
EXT:=tar
|
|
||||||
endif
|
|
||||||
DECOMPRESS_CMD ?= cat $(DL_DIR)/$(PKG_SOURCE) |
|
|
||||||
ifeq ($(EXT),tar)
|
|
||||||
UNPACK_CMD=$(DECOMPRESS_CMD) $(TAR_CMD)
|
|
||||||
endif
|
|
||||||
ifeq ($(EXT),cpio)
|
|
||||||
UNPACK_CMD=$(DECOMPRESS_CMD) (cd $(1)/..; $(STAGING_DIR_HOST)/bin/cpio -i -d)
|
|
||||||
endif
|
|
||||||
ifeq ($(EXT),zip)
|
|
||||||
UNPACK_CMD=$(UNZIP_CMD)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# compatibility code for packages that set PKG_CAT
|
|
||||||
ifeq ($(strip $(UNPACK_CMD)),)
|
|
||||||
# use existing PKG_CAT
|
|
||||||
UNPACK_CMD=$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | $(TAR_CMD)
|
|
||||||
ifeq ($(PKG_CAT),unzip)
|
|
||||||
UNPACK_CMD=$(UNZIP_CMD)
|
|
||||||
endif
|
|
||||||
# replace zcat with $(ZCAT), because some system don't support it properly
|
|
||||||
ifeq ($(PKG_CAT),zcat)
|
|
||||||
UNPACK_CMD=$(STAGING_DIR_HOST)/bin/libdeflate-gzip -dc $(DL_DIR)/$(PKG_SOURCE) | $(TAR_CMD)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef PKG_BUILD_DIR
|
|
||||||
PKG_UNPACK ?= $(SH_FUNC) $(call UNPACK_CMD,$(PKG_BUILD_DIR))
|
|
||||||
endif
|
|
||||||
ifdef HOST_BUILD_DIR
|
|
||||||
HOST_UNPACK ?= $(SH_FUNC) $(call UNPACK_CMD,$(HOST_BUILD_DIR))
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif # PKG_SOURCE
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifndef OPENWRT_VERBOSE
|
|
||||||
OPENWRT_VERBOSE:=
|
|
||||||
endif
|
|
||||||
ifeq ("$(origin V)", "command line")
|
|
||||||
OPENWRT_VERBOSE:=$(V)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(OPENWRT_VERBOSE),1)
|
|
||||||
OPENWRT_VERBOSE:=w
|
|
||||||
endif
|
|
||||||
ifeq ($(OPENWRT_VERBOSE),99)
|
|
||||||
OPENWRT_VERBOSE:=s
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(NO_TRACE_MAKE),)
|
|
||||||
NO_TRACE_MAKE := $(MAKE) V=s$(OPENWRT_VERBOSE)
|
|
||||||
export NO_TRACE_MAKE
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(IS_TTY),1)
|
|
||||||
ifneq ($(strip $(NO_COLOR)),1)
|
|
||||||
_Y:=\\033[33m
|
|
||||||
_R:=\\033[31m
|
|
||||||
_N:=\\033[m
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
define ERROR_MESSAGE
|
|
||||||
{ \
|
|
||||||
printf "$(_R)%s$(_N)\n" "$(1)" >&9 || \
|
|
||||||
printf "$(_R)%s$(_N)\n" "$(1)"; \
|
|
||||||
} >&2 2>/dev/null
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(findstring s,$(OPENWRT_VERBOSE)),)
|
|
||||||
define MESSAGE
|
|
||||||
{ \
|
|
||||||
printf "$(_Y)%s$(_N)\n" "$(1)" >&8 || \
|
|
||||||
printf "$(_Y)%s$(_N)\n" "$(1)"; \
|
|
||||||
} 2>/dev/null
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(QUIET),1)
|
|
||||||
ifneq ($(CURDIR),$(TOPDIR))
|
|
||||||
_DIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
|
||||||
else
|
|
||||||
_DIR:=
|
|
||||||
endif
|
|
||||||
_MESSAGE:=$(if $(MAKECMDGOALS),$(shell \
|
|
||||||
$(call MESSAGE, make[$(MAKELEVEL)]$(if $(_DIR), -C $(_DIR)) $(MAKECMDGOALS)); \
|
|
||||||
))
|
|
||||||
ifneq ($(strip $(_MESSAGE)),)
|
|
||||||
$(info $(_MESSAGE))
|
|
||||||
endif
|
|
||||||
SUBMAKE=$(MAKE)
|
|
||||||
else
|
|
||||||
SILENT:=>/dev/null $(if $(findstring w,$(OPENWRT_VERBOSE)),,2>&1)
|
|
||||||
export QUIET:=1
|
|
||||||
SUBMAKE=cmd() { $(SILENT) $(MAKE) -s "$$@" < /dev/null || { echo "make $$*: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what's going on"; false; } } 8>&1 9>&2; cmd
|
|
||||||
endif
|
|
||||||
|
|
||||||
.SILENT: $(MAKECMDGOALS)
|
|
||||||
else
|
|
||||||
SUBMAKE=$(MAKE) -w
|
|
||||||
define MESSAGE
|
|
||||||
printf "%s\n" "$(1)"
|
|
||||||
endef
|
|
||||||
endif
|
|
@ -1,108 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2012-2015 OpenWrt.org
|
|
||||||
# Copyright (C) 2016 LEDE Project
|
|
||||||
|
|
||||||
# Substituted by SDK, do not remove
|
|
||||||
# REVISION:=x
|
|
||||||
# SOURCE_DATE_EPOCH:=x
|
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS += \
|
|
||||||
CONFIG_VERSION_HOME_URL \
|
|
||||||
CONFIG_VERSION_BUG_URL \
|
|
||||||
CONFIG_VERSION_NUMBER \
|
|
||||||
CONFIG_VERSION_CODE \
|
|
||||||
CONFIG_VERSION_REPO \
|
|
||||||
CONFIG_VERSION_DIST \
|
|
||||||
CONFIG_VERSION_MANUFACTURER \
|
|
||||||
CONFIG_VERSION_MANUFACTURER_URL \
|
|
||||||
CONFIG_VERSION_PRODUCT \
|
|
||||||
CONFIG_VERSION_SUPPORT_URL \
|
|
||||||
CONFIG_VERSION_HWREV \
|
|
||||||
|
|
||||||
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
|
|
||||||
|
|
||||||
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
|
|
||||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),SNAPSHOT)
|
|
||||||
|
|
||||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
|
||||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
|
|
||||||
|
|
||||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
|
||||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/snapshots)
|
|
||||||
|
|
||||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
|
||||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
|
||||||
VERSION_DIST_SANITIZED:=$(call sanitize,$(VERSION_DIST))
|
|
||||||
|
|
||||||
VERSION_MANUFACTURER:=$(call qstrip,$(CONFIG_VERSION_MANUFACTURER))
|
|
||||||
VERSION_MANUFACTURER:=$(if $(VERSION_MANUFACTURER),$(VERSION_MANUFACTURER),OpenWrt)
|
|
||||||
|
|
||||||
VERSION_MANUFACTURER_URL:=$(call qstrip,$(CONFIG_VERSION_MANUFACTURER_URL))
|
|
||||||
VERSION_MANUFACTURER_URL:=$(if $(VERSION_MANUFACTURER_URL),$(VERSION_MANUFACTURER_URL),https://openwrt.org/)
|
|
||||||
|
|
||||||
VERSION_BUG_URL:=$(call qstrip,$(CONFIG_VERSION_BUG_URL))
|
|
||||||
VERSION_BUG_URL:=$(if $(VERSION_BUG_URL),$(VERSION_BUG_URL),https://bugs.openwrt.org/)
|
|
||||||
|
|
||||||
VERSION_HOME_URL:=$(call qstrip,$(CONFIG_VERSION_HOME_URL))
|
|
||||||
VERSION_HOME_URL:=$(if $(VERSION_HOME_URL),$(VERSION_HOME_URL),https://openwrt.org/)
|
|
||||||
|
|
||||||
VERSION_SUPPORT_URL:=$(call qstrip,$(CONFIG_VERSION_SUPPORT_URL))
|
|
||||||
VERSION_SUPPORT_URL:=$(if $(VERSION_SUPPORT_URL),$(VERSION_SUPPORT_URL),https://forum.openwrt.org/)
|
|
||||||
|
|
||||||
VERSION_PRODUCT:=$(call qstrip,$(CONFIG_VERSION_PRODUCT))
|
|
||||||
VERSION_PRODUCT:=$(if $(VERSION_PRODUCT),$(VERSION_PRODUCT),Generic)
|
|
||||||
|
|
||||||
VERSION_HWREV:=$(call qstrip,$(CONFIG_VERSION_HWREV))
|
|
||||||
VERSION_HWREV:=$(if $(VERSION_HWREV),$(VERSION_HWREV),v0)
|
|
||||||
|
|
||||||
define taint2sym
|
|
||||||
$(CONFIG_$(firstword $(subst :, ,$(subst +,,$(subst -,,$(1))))))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define taint2name
|
|
||||||
$(lastword $(subst :, ,$(1)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
VERSION_TAINT_SPECS := \
|
|
||||||
-ALL_KMODS:no-all \
|
|
||||||
-IPV6:no-ipv6 \
|
|
||||||
+USE_GLIBC:glibc \
|
|
||||||
+USE_MKLIBS:mklibs \
|
|
||||||
+BUSYBOX_CUSTOM:busybox \
|
|
||||||
+OVERRIDE_PKGS:override \
|
|
||||||
|
|
||||||
VERSION_TAINTS := $(strip $(foreach taint,$(VERSION_TAINT_SPECS), \
|
|
||||||
$(if $(findstring +,$(taint)), \
|
|
||||||
$(if $(call taint2sym,$(taint)),$(call taint2name,$(taint))), \
|
|
||||||
$(if $(call taint2sym,$(taint)),,$(call taint2name,$(taint))) \
|
|
||||||
)))
|
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS += $(foreach taint,$(VERSION_TAINT_SPECS),$(call taint2sym,$(taint)))
|
|
||||||
|
|
||||||
# escape commas, backslashes, squotes, and ampersands for sed
|
|
||||||
define sed_escape
|
|
||||||
$(subst &,\&,$(subst $(comma),\$(comma),$(subst ','\'',$(subst \,\\,$(1)))))
|
|
||||||
endef
|
|
||||||
#'
|
|
||||||
|
|
||||||
VERSION_SED_SCRIPT:=$(SED) 's,%U,$(call sed_escape,$(VERSION_REPO)),g' \
|
|
||||||
-e 's,%V,$(call sed_escape,$(VERSION_NUMBER)),g' \
|
|
||||||
-e 's,%v,\L$(call sed_escape,$(subst $(space),_,$(VERSION_NUMBER))),g' \
|
|
||||||
-e 's,%C,$(call sed_escape,$(VERSION_CODE)),g' \
|
|
||||||
-e 's,%c,\L$(call sed_escape,$(subst $(space),_,$(VERSION_CODE))),g' \
|
|
||||||
-e 's,%D,$(call sed_escape,$(VERSION_DIST)),g' \
|
|
||||||
-e 's,%d,\L$(call sed_escape,$(subst $(space),_,$(VERSION_DIST))),g' \
|
|
||||||
-e 's,%R,$(call sed_escape,$(REVISION)),g' \
|
|
||||||
-e 's,%T,$(call sed_escape,$(BOARD)),g' \
|
|
||||||
-e 's,%S,$(call sed_escape,$(BOARD)/$(SUBTARGET)),g' \
|
|
||||||
-e 's,%A,$(call sed_escape,$(ARCH_PACKAGES)),g' \
|
|
||||||
-e 's,%t,$(call sed_escape,$(VERSION_TAINTS)),g' \
|
|
||||||
-e 's,%M,$(call sed_escape,$(VERSION_MANUFACTURER)),g' \
|
|
||||||
-e 's,%m,$(call sed_escape,$(VERSION_MANUFACTURER_URL)),g' \
|
|
||||||
-e 's,%b,$(call sed_escape,$(VERSION_BUG_URL)),g' \
|
|
||||||
-e 's,%u,$(call sed_escape,$(VERSION_HOME_URL)),g' \
|
|
||||||
-e 's,%s,$(call sed_escape,$(VERSION_SUPPORT_URL)),g' \
|
|
||||||
-e 's,%P,$(call sed_escape,$(VERSION_PRODUCT)),g' \
|
|
||||||
-e 's,%h,$(call sed_escape,$(VERSION_HWREV)),g'
|
|
||||||
|
|
1
luci-theme-argon
Submodule
1
luci-theme-argon
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit fb069b7f1207528f99c6737e7ff2a3ed92b6c30e
|
@ -1 +0,0 @@
|
|||||||
../usr/lib/os-release
|
|
1
package/base-files/files/etc/os-release
Executable file
1
package/base-files/files/etc/os-release
Executable file
@ -0,0 +1 @@
|
|||||||
|
../usr/lib/os-release
|
@ -173,7 +173,7 @@ $(eval $(call BuildPackage,iwlwifi-firmware-iwl9260))
|
|||||||
Package/iwlwifi-firmware-ax101 = $(call Package/firmware-default,Intel AX101 firmware)
|
Package/iwlwifi-firmware-ax101 = $(call Package/firmware-default,Intel AX101 firmware)
|
||||||
define Package/iwlwifi-firmware-ax101/install
|
define Package/iwlwifi-firmware-ax101/install
|
||||||
$(INSTALL_DIR) $(1)/lib/firmware
|
$(INSTALL_DIR) $(1)/lib/firmware
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-so-a0-hr-b0-89.ucode $(1)/lib/firmware
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-so-a0-hr-b0-83.ucode $(1)/lib/firmware
|
||||||
endef
|
endef
|
||||||
$(eval $(call BuildPackage,iwlwifi-firmware-ax101))
|
$(eval $(call BuildPackage,iwlwifi-firmware-ax101))
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ $(eval $(call BuildPackage,iwlwifi-firmware-ax201))
|
|||||||
Package/iwlwifi-firmware-ax210 = $(call Package/firmware-default,Intel AX210 firmware)
|
Package/iwlwifi-firmware-ax210 = $(call Package/firmware-default,Intel AX210 firmware)
|
||||||
define Package/iwlwifi-firmware-ax210/install
|
define Package/iwlwifi-firmware-ax210/install
|
||||||
$(INSTALL_DIR) $(1)/lib/firmware
|
$(INSTALL_DIR) $(1)/lib/firmware
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-ty-a0-gf-a0-89.ucode $(1)/lib/firmware
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-ty-a0-gf-a0-83.ucode $(1)/lib/firmware
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-ty-a0-gf-a0.pnvm $(1)/lib/firmware
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-ty-a0-gf-a0.pnvm $(1)/lib/firmware
|
||||||
endef
|
endef
|
||||||
$(eval $(call BuildPackage,iwlwifi-firmware-ax210))
|
$(eval $(call BuildPackage,iwlwifi-firmware-ax210))
|
||||||
|
@ -26,7 +26,8 @@ export SHELL:=/bin/sh
|
|||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
ifeq ($(DUMP),)
|
ifeq ($(DUMP),)
|
||||||
STAMP_BUILT:=$(STAMP_BUILT)_$(shell $(SCRIPT_DIR)/kconfig.pl $(LINUX_DIR)/.config | $(MKHASH) md5)
|
#STAMP_BUILT:=$(STAMP_BUILT)_$(shell $(SCRIPT_DIR)/kconfig.pl $(LINUX_DIR)/.config | $(MKHASH) md5)
|
||||||
|
STAMP_BUILT:=$(STAMP_BUILT)_$(shell cat $(LINUX_DIR)/.vermagic)
|
||||||
-include $(LINUX_DIR)/.config
|
-include $(LINUX_DIR)/.config
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
ifup
|
|
1
package/network/config/netifd/files/sbin/ifdown
Executable file
1
package/network/config/netifd/files/sbin/ifdown
Executable file
@ -0,0 +1 @@
|
|||||||
|
ifup
|
1
package/rkp-ipid
Submodule
1
package/rkp-ipid
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 073e389703853aeaced6cf1299ca8fbe60635614
|
1
rkp-ipid
Submodule
1
rkp-ipid
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 073e389703853aeaced6cf1299ca8fbe60635614
|
@ -110,19 +110,14 @@ static int gpio_latch_probe(struct platform_device *pdev)
|
|||||||
struct gpio_latch_chip *glc;
|
struct gpio_latch_chip *glc;
|
||||||
struct gpio_chip *gc;
|
struct gpio_chip *gc;
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
int err, i, n;
|
int i, n;
|
||||||
|
|
||||||
glc = devm_kzalloc(dev, sizeof(*glc), GFP_KERNEL);
|
glc = devm_kzalloc(dev, sizeof(*glc), GFP_KERNEL);
|
||||||
if (!glc)
|
if (!glc)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
err = devm_mutex_init(&pdev->dev, &glc->mutex);
|
mutex_init(&glc->mutex);
|
||||||
if (err)
|
mutex_init(&glc->latch_mutex);
|
||||||
return err;
|
|
||||||
|
|
||||||
err = devm_mutex_init(&pdev->dev, &glc->latch_mutex);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
n = gpiod_count(dev, NULL);
|
n = gpiod_count(dev, NULL);
|
||||||
if (n <= 0)
|
if (n <= 0)
|
||||||
|
@ -15,7 +15,6 @@ CONFIG_MFD_CORE=y
|
|||||||
CONFIG_MFD_RB4XX_CPLD=y
|
CONFIG_MFD_RB4XX_CPLD=y
|
||||||
CONFIG_MIKROTIK=y
|
CONFIG_MIKROTIK=y
|
||||||
CONFIG_MIKROTIK_RB_SYSFS=y
|
CONFIG_MIKROTIK_RB_SYSFS=y
|
||||||
CONFIG_MIKROTIK_WLAN_DECOMPRESS_LZ77=y
|
|
||||||
CONFIG_MTD_NAND_AR934X=y
|
CONFIG_MTD_NAND_AR934X=y
|
||||||
CONFIG_MTD_NAND_CORE=y
|
CONFIG_MTD_NAND_CORE=y
|
||||||
CONFIG_MTD_NAND_ECC=y
|
CONFIG_MTD_NAND_ECC=y
|
||||||
|
@ -51,7 +51,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
obj-$(CONFIG_PHY_LPC18XX_USB_OTG) += phy-lpc18xx-usb-otg.o
|
obj-$(CONFIG_PHY_LPC18XX_USB_OTG) += phy-lpc18xx-usb-otg.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/phy/phy-ar7100-usb.c
|
+++ b/drivers/phy/phy-ar7100-usb.c
|
||||||
@@ -0,0 +1,127 @@
|
@@ -0,0 +1,140 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) 2018 John Crispin <john@phrozen.org>
|
+ * Copyright (C) 2018 John Crispin <john@phrozen.org>
|
||||||
+ *
|
+ *
|
||||||
@ -118,38 +118,50 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
+static int ar7100_usb_phy_probe(struct platform_device *pdev)
|
+static int ar7100_usb_phy_probe(struct platform_device *pdev)
|
||||||
+{
|
+{
|
||||||
+ struct phy_provider *phy_provider;
|
+ struct phy_provider *phy_provider;
|
||||||
|
+ struct resource *res;
|
||||||
+ struct ar7100_usb_phy *priv;
|
+ struct ar7100_usb_phy *priv;
|
||||||
+
|
+
|
||||||
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
|
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
|
||||||
+ if (!priv)
|
+ if (!priv)
|
||||||
+ return -ENOMEM;
|
+ return -ENOMEM;
|
||||||
+
|
+
|
||||||
+ priv->io_base = devm_platform_ioremap_resource(pdev, 0);
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
+ priv->io_base = devm_ioremap_resource(&pdev->dev, res);
|
||||||
+ if (IS_ERR(priv->io_base))
|
+ if (IS_ERR(priv->io_base))
|
||||||
+ return PTR_ERR(priv->io_base);
|
+ return PTR_ERR(priv->io_base);
|
||||||
+
|
+
|
||||||
+ priv->rst_phy = devm_reset_control_get(&pdev->dev, "usb-phy");
|
+ priv->rst_phy = devm_reset_control_get(&pdev->dev, "usb-phy");
|
||||||
+ if (IS_ERR(priv->rst_phy))
|
+ if (IS_ERR(priv->rst_phy)) {
|
||||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->rst_phy), "phy reset is missing");
|
+ dev_err(&pdev->dev, "phy reset is missing\n");
|
||||||
|
+ return PTR_ERR(priv->rst_phy);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->rst_host = devm_reset_control_get(&pdev->dev, "usb-host");
|
+ priv->rst_host = devm_reset_control_get(&pdev->dev, "usb-host");
|
||||||
+ if (IS_ERR(priv->rst_host))
|
+ if (IS_ERR(priv->rst_host)) {
|
||||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->rst_host), "host reset is missing");
|
+ dev_err(&pdev->dev, "host reset is missing\n");
|
||||||
|
+ return PTR_ERR(priv->rst_host);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->rst_ohci_dll = devm_reset_control_get(&pdev->dev, "usb-ohci-dll");
|
+ priv->rst_ohci_dll = devm_reset_control_get(&pdev->dev, "usb-ohci-dll");
|
||||||
+ if (IS_ERR(priv->rst_ohci_dll))
|
+ if (IS_ERR(priv->rst_ohci_dll)) {
|
||||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->rst_host), "ohci-dll reset is missing");
|
+ dev_err(&pdev->dev, "ohci-dll reset is missing\n");
|
||||||
|
+ return PTR_ERR(priv->rst_host);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->phy = devm_phy_create(&pdev->dev, NULL, &ar7100_usb_phy_ops);
|
+ priv->phy = devm_phy_create(&pdev->dev, NULL, &ar7100_usb_phy_ops);
|
||||||
+ if (IS_ERR(priv->phy))
|
+ if (IS_ERR(priv->phy)) {
|
||||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->phy), "failed to create PHY");
|
+ dev_err(&pdev->dev, "failed to create PHY\n");
|
||||||
|
+ return PTR_ERR(priv->phy);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->gpio = of_get_named_gpio(pdev->dev.of_node, "gpios", 0);
|
+ priv->gpio = of_get_named_gpio(pdev->dev.of_node, "gpios", 0);
|
||||||
+ if (gpio_is_valid(priv->gpio)) {
|
+ if (gpio_is_valid(priv->gpio)) {
|
||||||
+ int ret = devm_gpio_request(&pdev->dev, priv->gpio, dev_name(&pdev->dev));
|
+ int ret = devm_gpio_request(&pdev->dev, priv->gpio, dev_name(&pdev->dev));
|
||||||
+ if (ret)
|
|
||||||
+ return dev_err_probe(&pdev->dev, ret, "failed to request gpio");
|
|
||||||
+
|
+
|
||||||
|
+ if (ret) {
|
||||||
|
+ dev_err(&pdev->dev, "failed to request gpio\n");
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
+ gpio_export_with_name(gpio_to_desc(priv->gpio), 0, dev_name(&pdev->dev));
|
+ gpio_export_with_name(gpio_to_desc(priv->gpio), 0, dev_name(&pdev->dev));
|
||||||
+ gpio_set_value(priv->gpio, 1);
|
+ gpio_set_value(priv->gpio, 1);
|
||||||
+ }
|
+ }
|
||||||
@ -158,6 +170,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
+
|
+
|
||||||
+ phy_provider = devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate);
|
+ phy_provider = devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate);
|
||||||
+
|
+
|
||||||
|
+
|
||||||
+ return PTR_ERR_OR_ZERO(phy_provider);
|
+ return PTR_ERR_OR_ZERO(phy_provider);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
@ -181,7 +194,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
+MODULE_LICENSE("GPL");
|
+MODULE_LICENSE("GPL");
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/phy/phy-ar7200-usb.c
|
+++ b/drivers/phy/phy-ar7200-usb.c
|
||||||
@@ -0,0 +1,120 @@
|
@@ -0,0 +1,136 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) 2015 Alban Bedel <albeu@free.fr>
|
+ * Copyright (C) 2015 Alban Bedel <albeu@free.fr>
|
||||||
+ *
|
+ *
|
||||||
@ -251,28 +264,44 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
+ return -ENOMEM;
|
+ return -ENOMEM;
|
||||||
+
|
+
|
||||||
+ priv->rst_phy = devm_reset_control_get(&pdev->dev, "usb-phy");
|
+ priv->rst_phy = devm_reset_control_get(&pdev->dev, "usb-phy");
|
||||||
+ if (IS_ERR(priv->rst_phy))
|
+ if (IS_ERR(priv->rst_phy)) {
|
||||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->rst_phy), "phy reset is missing");
|
+ if (PTR_ERR(priv->rst_phy) != -EPROBE_DEFER)
|
||||||
|
+ dev_err(&pdev->dev, "phy reset is missing\n");
|
||||||
|
+ return PTR_ERR(priv->rst_phy);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->rst_phy_analog = devm_reset_control_get_optional(
|
+ priv->rst_phy_analog = devm_reset_control_get_optional(
|
||||||
+ &pdev->dev, "usb-phy-analog");
|
+ &pdev->dev, "usb-phy-analog");
|
||||||
+ if (IS_ERR(priv->rst_phy_analog))
|
+ if (IS_ERR(priv->rst_phy_analog)) {
|
||||||
+ return PTR_ERR(priv->rst_phy_analog);
|
+ if (PTR_ERR(priv->rst_phy_analog) == -ENOENT)
|
||||||
|
+ priv->rst_phy_analog = NULL;
|
||||||
|
+ else
|
||||||
|
+ return PTR_ERR(priv->rst_phy_analog);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->suspend_override = devm_reset_control_get_optional(
|
+ priv->suspend_override = devm_reset_control_get_optional(
|
||||||
+ &pdev->dev, "usb-suspend-override");
|
+ &pdev->dev, "usb-suspend-override");
|
||||||
+ if (IS_ERR(priv->suspend_override))
|
+ if (IS_ERR(priv->suspend_override)) {
|
||||||
+ return PTR_ERR(priv->suspend_override);
|
+ if (PTR_ERR(priv->suspend_override) == -ENOENT)
|
||||||
|
+ priv->suspend_override = NULL;
|
||||||
|
+ else
|
||||||
|
+ return PTR_ERR(priv->suspend_override);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->phy = devm_phy_create(&pdev->dev, NULL, &ar7200_usb_phy_ops);
|
+ priv->phy = devm_phy_create(&pdev->dev, NULL, &ar7200_usb_phy_ops);
|
||||||
+ if (IS_ERR(priv->phy))
|
+ if (IS_ERR(priv->phy)) {
|
||||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(priv->phy), "failed to create PHY");
|
+ dev_err(&pdev->dev, "failed to create PHY\n");
|
||||||
|
+ return PTR_ERR(priv->phy);
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ priv->gpio = of_get_named_gpio(pdev->dev.of_node, "gpios", 0);
|
+ priv->gpio = of_get_named_gpio(pdev->dev.of_node, "gpios", 0);
|
||||||
+ if (gpio_is_valid(priv->gpio)) {
|
+ if (gpio_is_valid(priv->gpio)) {
|
||||||
+ int ret = devm_gpio_request(&pdev->dev, priv->gpio, dev_name(&pdev->dev));
|
+ int ret = devm_gpio_request(&pdev->dev, priv->gpio, dev_name(&pdev->dev));
|
||||||
+ if (ret)
|
+
|
||||||
+ return dev_err_probe(&pdev->dev, ret, "failed to request gpio");
|
+ if (ret) {
|
||||||
|
+ dev_err(&pdev->dev, "failed to request gpio\n");
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
+ gpio_export_with_name(gpio_to_desc(priv->gpio), 0, dev_name(&pdev->dev));
|
+ gpio_export_with_name(gpio_to_desc(priv->gpio), 0, dev_name(&pdev->dev));
|
||||||
+ gpio_set_value(priv->gpio, 1);
|
+ gpio_set_value(priv->gpio, 1);
|
||||||
+ }
|
+ }
|
||||||
|
@ -21,11 +21,4 @@ config NVMEM_LAYOUT_MIKROTIK
|
|||||||
help
|
help
|
||||||
This driver exposes MikroTik hard_config via NVMEM layout.
|
This driver exposes MikroTik hard_config via NVMEM layout.
|
||||||
|
|
||||||
config MIKROTIK_WLAN_DECOMPRESS_LZ77
|
|
||||||
tristate "Mikrotik factory Wi-Fi caldata LZ77 decompression support"
|
|
||||||
depends on MIKROTIK_RB_SYSFS
|
|
||||||
help
|
|
||||||
Allow Mikrotik LZ77 factory flashed Wi-Fi calibration data to be
|
|
||||||
decompressed
|
|
||||||
|
|
||||||
endif # MIKROTIK
|
endif # MIKROTIK
|
||||||
|
@ -3,4 +3,3 @@
|
|||||||
#
|
#
|
||||||
obj-$(CONFIG_MIKROTIK_RB_SYSFS) += routerboot.o rb_hardconfig.o rb_softconfig.o
|
obj-$(CONFIG_MIKROTIK_RB_SYSFS) += routerboot.o rb_hardconfig.o rb_softconfig.o
|
||||||
obj-$(CONFIG_NVMEM_LAYOUT_MIKROTIK) += rb_nvmem.o
|
obj-$(CONFIG_NVMEM_LAYOUT_MIKROTIK) += rb_nvmem.o
|
||||||
obj-$(CONFIG_MIKROTIK_WLAN_DECOMPRESS_LZ77) += rb_lz77.o
|
|
||||||
|
@ -39,9 +39,8 @@
|
|||||||
|
|
||||||
#include "rb_hardconfig.h"
|
#include "rb_hardconfig.h"
|
||||||
#include "routerboot.h"
|
#include "routerboot.h"
|
||||||
#include "rb_lz77.h"
|
|
||||||
|
|
||||||
#define RB_HARDCONFIG_VER "0.08"
|
#define RB_HARDCONFIG_VER "0.07"
|
||||||
#define RB_HC_PR_PFX "[rb_hardconfig] "
|
#define RB_HC_PR_PFX "[rb_hardconfig] "
|
||||||
|
|
||||||
/* Bit definitions for hardware options */
|
/* Bit definitions for hardware options */
|
||||||
@ -466,24 +465,23 @@ fail:
|
|||||||
/*
|
/*
|
||||||
* If the RB_ID_WLAN_DATA payload starts with RB_MAGIC_LZOR, then past
|
* If the RB_ID_WLAN_DATA payload starts with RB_MAGIC_LZOR, then past
|
||||||
* that magic number is a payload that must be appended to the hc_lzor_prefix,
|
* that magic number is a payload that must be appended to the hc_lzor_prefix,
|
||||||
* the resulting blob is LZO-compressed.
|
* the resulting blob is LZO-compressed. In the LZO decompression result,
|
||||||
* If payload starts with RB_MAGIC_LZ77, a separate (bit level LZ77)
|
|
||||||
* decompression function needs to be used. In the decompressed result,
|
|
||||||
* the RB_MAGIC_ERD magic number (aligned) must be located. Following that
|
* the RB_MAGIC_ERD magic number (aligned) must be located. Following that
|
||||||
* magic, there is one or more routerboot tag node(s) locating the RLE-encoded
|
* magic, there is one or more routerboot tag node(s) locating the RLE-encoded
|
||||||
* calibration data payload.
|
* calibration data payload.
|
||||||
*/
|
*/
|
||||||
static int hc_wlan_data_unpack_lzor_lz77(const u16 tag_id, const u8 *inbuf, size_t inlen,
|
static int hc_wlan_data_unpack_lzor(const u16 tag_id, const u8 *inbuf, size_t inlen,
|
||||||
void *outbuf, size_t *outlen, u32 magic)
|
void *outbuf, size_t *outlen)
|
||||||
{
|
{
|
||||||
u16 rle_ofs, rle_len;
|
u16 rle_ofs, rle_len;
|
||||||
const u32 *needle;
|
const u32 *needle;
|
||||||
u8 *tempbuf;
|
u8 *tempbuf;
|
||||||
size_t templen, lzo_len;
|
size_t templen, lzo_len;
|
||||||
int ret;
|
int ret;
|
||||||
const char lzor[] = "LZOR";
|
|
||||||
const char lz77[] = "LZ77";
|
lzo_len = inlen + sizeof(hc_lzor_prefix);
|
||||||
const char *lz_type;
|
if (lzo_len > *outlen)
|
||||||
|
return -EFBIG;
|
||||||
|
|
||||||
/* Temporary buffer same size as the outbuf */
|
/* Temporary buffer same size as the outbuf */
|
||||||
templen = *outlen;
|
templen = *outlen;
|
||||||
@ -491,50 +489,23 @@ static int hc_wlan_data_unpack_lzor_lz77(const u16 tag_id, const u8 *inbuf, size
|
|||||||
if (!tempbuf)
|
if (!tempbuf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
lzo_len = inlen;
|
/* Concatenate into the outbuf */
|
||||||
if (magic == RB_MAGIC_LZOR)
|
memcpy(outbuf, hc_lzor_prefix, sizeof(hc_lzor_prefix));
|
||||||
lzo_len += sizeof(hc_lzor_prefix);
|
memcpy(outbuf + sizeof(hc_lzor_prefix), inbuf, inlen);
|
||||||
if (lzo_len > *outlen)
|
|
||||||
return -EFBIG;
|
|
||||||
|
|
||||||
switch (magic) {
|
/* LZO-decompress lzo_len bytes of outbuf into the tempbuf */
|
||||||
case RB_MAGIC_LZOR:
|
ret = lzo1x_decompress_safe(outbuf, lzo_len, tempbuf, &templen);
|
||||||
lz_type = lzor;
|
if (ret) {
|
||||||
|
if (LZO_E_INPUT_NOT_CONSUMED == ret) {
|
||||||
/* Concatenate into the outbuf */
|
/*
|
||||||
memcpy(outbuf, hc_lzor_prefix, sizeof(hc_lzor_prefix));
|
* The tag length is always aligned thus the LZO payload may be padded,
|
||||||
memcpy(outbuf + sizeof(hc_lzor_prefix), inbuf, inlen);
|
* which can trigger a spurious error which we ignore here.
|
||||||
|
*/
|
||||||
/* LZO-decompress lzo_len bytes of outbuf into the tempbuf */
|
pr_debug(RB_HC_PR_PFX "LZOR: LZO EOF before buffer end - this may be harmless\n");
|
||||||
ret = lzo1x_decompress_safe(outbuf, lzo_len, tempbuf, &templen);
|
} else {
|
||||||
if (ret) {
|
pr_debug(RB_HC_PR_PFX "LZOR: LZO decompression error (%d)\n", ret);
|
||||||
if (LZO_E_INPUT_NOT_CONSUMED == ret) {
|
|
||||||
/*
|
|
||||||
* The tag length is always aligned thus the LZO payload may be padded,
|
|
||||||
* which can trigger a spurious error which we ignore here.
|
|
||||||
*/
|
|
||||||
pr_debug(RB_HC_PR_PFX "LZOR: LZO EOF before buffer end - this may be harmless\n");
|
|
||||||
} else {
|
|
||||||
pr_debug(RB_HC_PR_PFX "LZOR: LZO decompression error (%d)\n", ret);
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RB_MAGIC_LZ77:
|
|
||||||
lz_type = lz77;
|
|
||||||
/* LZO-decompress lzo_len bytes of inbuf into the tempbuf */
|
|
||||||
ret = rb_lz77_decompress(inbuf, inlen, tempbuf, &templen);
|
|
||||||
if (ret) {
|
|
||||||
pr_err(RB_HC_PR_PFX "LZ77: LZ77 decompress error %d\n", ret);
|
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug(RB_HC_PR_PFX "LZ77: decompressed from %zu to %zu\n",
|
|
||||||
inlen, templen);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EINVAL;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -545,7 +516,7 @@ static int hc_wlan_data_unpack_lzor_lz77(const u16 tag_id, const u8 *inbuf, size
|
|||||||
needle = (const u32 *)tempbuf;
|
needle = (const u32 *)tempbuf;
|
||||||
while (RB_MAGIC_ERD != *needle++) {
|
while (RB_MAGIC_ERD != *needle++) {
|
||||||
if ((u8 *)needle >= tempbuf+templen) {
|
if ((u8 *)needle >= tempbuf+templen) {
|
||||||
pr_warn(RB_HC_PR_PFX "%s: ERD magic not found. Decompressed first word: 0x%08x\n", lz_type, *(u32 *)tempbuf);
|
pr_debug(RB_HC_PR_PFX "LZOR: ERD magic not found\n");
|
||||||
ret = -ENODATA;
|
ret = -ENODATA;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -555,12 +526,12 @@ static int hc_wlan_data_unpack_lzor_lz77(const u16 tag_id, const u8 *inbuf, size
|
|||||||
/* Past magic. Look for tag node */
|
/* Past magic. Look for tag node */
|
||||||
ret = routerboot_tag_find((u8 *)needle, templen, tag_id, &rle_ofs, &rle_len);
|
ret = routerboot_tag_find((u8 *)needle, templen, tag_id, &rle_ofs, &rle_len);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_debug(RB_HC_PR_PFX "%s: no RLE data for id 0x%04x\n", lz_type, tag_id);
|
pr_debug(RB_HC_PR_PFX "LZOR: no RLE data for id 0x%04x\n", tag_id);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rle_len > templen) {
|
if (rle_len > templen) {
|
||||||
pr_debug(RB_HC_PR_PFX "%s: Invalid RLE data length\n", lz_type);
|
pr_debug(RB_HC_PR_PFX "LZOR: Invalid RLE data length\n");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -568,7 +539,7 @@ static int hc_wlan_data_unpack_lzor_lz77(const u16 tag_id, const u8 *inbuf, size
|
|||||||
/* RLE-decode tempbuf from needle back into the outbuf */
|
/* RLE-decode tempbuf from needle back into the outbuf */
|
||||||
ret = routerboot_rle_decode((u8 *)needle+rle_ofs, rle_len, outbuf, outlen);
|
ret = routerboot_rle_decode((u8 *)needle+rle_ofs, rle_len, outbuf, outlen);
|
||||||
if (ret)
|
if (ret)
|
||||||
pr_debug(RB_HC_PR_PFX "%s: RLE decoding error (%d)\n", lz_type, ret);
|
pr_debug(RB_HC_PR_PFX "LZOR: RLE decoding error (%d)\n", ret);
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
kfree(tempbuf);
|
kfree(tempbuf);
|
||||||
@ -591,18 +562,11 @@ static int hc_wlan_data_unpack(const u16 tag_id, const size_t tofs, size_t tlen,
|
|||||||
|
|
||||||
ret = -ENODATA;
|
ret = -ENODATA;
|
||||||
switch (magic) {
|
switch (magic) {
|
||||||
case RB_MAGIC_LZ77:
|
|
||||||
/* no known instances of lz77 without 8001/8201 data, skip SOLO */
|
|
||||||
if (tag_id == RB_WLAN_ERD_ID_SOLO) {
|
|
||||||
pr_debug(RB_HC_PR_PFX "skipped LZ77 decompress in search for SOLO tag\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fallthrough;
|
|
||||||
case RB_MAGIC_LZOR:
|
case RB_MAGIC_LZOR:
|
||||||
/* Skip magic */
|
/* Skip magic */
|
||||||
lbuf += sizeof(magic);
|
lbuf += sizeof(magic);
|
||||||
tlen -= sizeof(magic);
|
tlen -= sizeof(magic);
|
||||||
ret = hc_wlan_data_unpack_lzor_lz77(tag_id, lbuf, tlen, outbuf, outlen, magic);
|
ret = hc_wlan_data_unpack_lzor(tag_id, lbuf, tlen, outbuf, outlen);
|
||||||
break;
|
break;
|
||||||
case RB_MAGIC_ERD:
|
case RB_MAGIC_ERD:
|
||||||
/* Skip magic */
|
/* Skip magic */
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#define RB_MAGIC_HARD (('H') | ('a' << 8) | ('r' << 16) | ('d' << 24))
|
#define RB_MAGIC_HARD (('H') | ('a' << 8) | ('r' << 16) | ('d' << 24))
|
||||||
#define RB_MAGIC_SOFT (('S') | ('o' << 8) | ('f' << 16) | ('t' << 24))
|
#define RB_MAGIC_SOFT (('S') | ('o' << 8) | ('f' << 16) | ('t' << 24))
|
||||||
#define RB_MAGIC_LZOR (('L') | ('Z' << 8) | ('O' << 16) | ('R' << 24))
|
#define RB_MAGIC_LZOR (('L') | ('Z' << 8) | ('O' << 16) | ('R' << 24))
|
||||||
#define RB_MAGIC_LZ77 (('L' << 24) | ('Z' << 16) | ('7' << 8) | ('7'))
|
|
||||||
#define RB_MAGIC_ERD (('E' << 16) | ('R' << 8) | ('D'))
|
#define RB_MAGIC_ERD (('E' << 16) | ('R' << 8) | ('D'))
|
||||||
|
|
||||||
#define RB_ART_SIZE 0x10000
|
#define RB_ART_SIZE 0x10000
|
||||||
|
@ -128,17 +128,13 @@
|
|||||||
pagesize = <32>;
|
pagesize = <32>;
|
||||||
reg = <0x50>;
|
reg = <0x50>;
|
||||||
read-only; /* This holds our MAC & Meraki board-data */
|
read-only; /* This holds our MAC & Meraki board-data */
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
nvmem-layout {
|
mac_address: mac-address@66 {
|
||||||
compatible = "fixed-layout";
|
compatible = "mac-base";
|
||||||
#address-cells = <1>;
|
reg = <0x66 0x6>;
|
||||||
#size-cells = <1>;
|
#nvmem-cell-cells = <1>;
|
||||||
|
|
||||||
mac_address: mac-address@66 {
|
|
||||||
compatible = "mac-base";
|
|
||||||
reg = <0x66 0x6>;
|
|
||||||
#nvmem-cell-cells = <1>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
CONFIG_MIKROTIK=y
|
CONFIG_MIKROTIK=y
|
||||||
CONFIG_MIKROTIK_RB_SYSFS=y
|
CONFIG_MIKROTIK_RB_SYSFS=y
|
||||||
CONFIG_MIKROTIK_WLAN_DECOMPRESS_LZ77=y
|
|
||||||
CONFIG_MTD_ROUTERBOOT_PARTS=y
|
CONFIG_MTD_ROUTERBOOT_PARTS=y
|
||||||
CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
|
CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
|
||||||
CONFIG_MTD_SPLIT_MINOR_FW=y
|
CONFIG_MTD_SPLIT_MINOR_FW=y
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user