Compare commits
21 Commits
Tree-restr
...
backups/le
Author | SHA1 | Date | |
---|---|---|---|
|
5b2d8b8a91 | ||
|
73e32edc1a | ||
|
430c117321 | ||
|
2750367ffd | ||
|
d1d569ee84 | ||
|
1a3b862c88 | ||
|
ff800b125a | ||
|
6f6ab56356 | ||
|
3a70094172 | ||
|
2ddb4f28a9 | ||
|
4ea455d560 | ||
|
e3d8ced285 | ||
|
0dc540f4b0 | ||
|
faaf2c4f88 | ||
|
f9d49e97b7 | ||
|
9dcd94a97a | ||
|
e6a7596e42 | ||
|
951f673442 | ||
|
2ded3c5128 | ||
|
93eb45cc63 | ||
|
de183a0a1f |
0
.gitignore
vendored
339
COPYING
@@ -1,339 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, 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 Lesser 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 Street, 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 Lesser General
|
||||
Public License instead of this License.
|
23
COPYING.ARM
@@ -1,23 +0,0 @@
|
||||
Copyright 2008 ReactOS Portable Systems Group. 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 REACTOS PORTABLE SYSTEMS GROUP ``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 REACTOS PORTABLE SYSTEMS GROUP
|
||||
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.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those of the authors and
|
||||
should not be interpreted as representing official policies, either expressed or implied, of the ReactOS
|
||||
Project.
|
504
COPYING.LIB
@@ -1,504 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, 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.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
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 and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, 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 library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete 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 distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
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 Library or any portion
|
||||
of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
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 Library, 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 Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you 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.
|
||||
|
||||
If distribution of 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 satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be 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.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library 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.
|
||||
|
||||
9. 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 Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
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 with
|
||||
this License.
|
||||
|
||||
11. 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 Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library 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 Library.
|
||||
|
||||
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.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library 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.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser 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 Library
|
||||
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 Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
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
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "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
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. 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 LIBRARY 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
|
||||
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. 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 library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
674
COPYING3
@@ -1,674 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
165
COPYING3.LIB
@@ -1,165 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser 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
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
80
CREDITS
@@ -1,80 +0,0 @@
|
||||
ReactOS is available thanks to the work of:
|
||||
|
||||
Aleksey Bragin <aleksey at reactos org>
|
||||
Alex Ionescu <alex.ionescu@reactos.org>
|
||||
Andrew Greenwood <lists@silverblade.co.uk>
|
||||
Andrew Munger <waxdragon@gmail.com>
|
||||
Arindam Das
|
||||
Art Yerkes <ayerkes@speakeasy.net>
|
||||
Ariadne
|
||||
Brandon Turner <turnerb7@msu.edu>
|
||||
Brian Palmer <brianp@sginet.com>
|
||||
Cameron M. Gutman <cgutman@reactos.org>
|
||||
Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
Christoph von Wittich <christoph_vw@reactos.org>
|
||||
Daniel Reimer <reimer.daniel@freenet.de>
|
||||
David Welch <welch@cwcom.net>
|
||||
Dmitry Chapyshev <dmitry@reactos.org>
|
||||
Emanuele Aliberti <ea@iol.it>
|
||||
Eric Kohl <ekohl@rz-online.de>
|
||||
Eugene Ingerman <geneing@myrealbox.com>
|
||||
Filip Navara <xnavara@volny.cz>
|
||||
Frederik Leemans
|
||||
Ge van Geldorp <ge@gse.nl>
|
||||
Ged Murphy <gedmurphy@reactos.org>
|
||||
Gregor Brunmar <gregor brunmar at home se>
|
||||
Gregor Schneider <grschneider@gmail.com>
|
||||
Guido de Jong
|
||||
Gunnar Andre' Dalsnes <hardon@online.no>
|
||||
Hans Kremer
|
||||
Hartmut Birr <hartmut.birr@gmx.de>
|
||||
Hernan Ochoa
|
||||
Herve Poussineau <hpoussin@reactos.com>
|
||||
Iwan Fatahi <i_fatahi@hotmail.com>
|
||||
James B. Tabor <jimtabor.rosdev@gmail.com> <jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net>
|
||||
Jason Eager
|
||||
Jason Filby <jasonfilby@yahoo.com>
|
||||
Jason Weiler
|
||||
Jean Michault
|
||||
Jeffrey Morlan <mrnobo1024@yahoo.com>
|
||||
Jim Noeth
|
||||
Johannes Anderwald <johannes.anderwald@student.tugraz.at>
|
||||
Jonathan Wilson <jonwil@tpgi.com.au>
|
||||
Jurgen van Gael <jurgen.vangael@student.kuleuven.ac.be>
|
||||
KJK::Hyperion <noog@libero.it>
|
||||
Klemens R. Friedl <klemens_friedl@gmx.net>
|
||||
Maarten Bosma <maarten.paul@bosma.de>
|
||||
Magnus Olsen <magnus@greatlord.com>
|
||||
Mark Tempel <mtempel@visi.com>
|
||||
Mark Weaver <mark@npsl.co.uk>
|
||||
Martin Fuchs <martin-fuchs@gmx.net>
|
||||
Marty Dill <mdill@uvic.ca>
|
||||
Matthias Kupfer <mkupfer@reactos.org>
|
||||
Matt Pyne
|
||||
Mike Nordell <"tamlin">
|
||||
Nathan Woods <npwoods@mess.org>
|
||||
Pablo Borobia <pborobia@gmail.com>
|
||||
Paolo Pantaleo <paolopan@freemail.it>
|
||||
Peter Ward <dralnix@gmail.com>
|
||||
Pierre Schweitzer <pschweitzer@reactos.org>
|
||||
Phillip Susi <phreak@iag.net>
|
||||
Rex Jolliff <rex@lvcablemodem.com>
|
||||
Richard Campbell <betam4x@gmail.com>
|
||||
Robert Bergkvist <fragdance@hotmail.com>
|
||||
Robert Dickenson <robd@reactos.org>
|
||||
Royce Mitchell III <royce3@ev1.net>
|
||||
Samuel Serapi<70>n <samdwise51@gmail.com>
|
||||
Saveliy Tretiakov <saveliyt@mail.ru>
|
||||
Stefan Ginsberg <stefan__100__@hotmail.com>
|
||||
Steven Edwards <steven_ed4153@yahoo.com>
|
||||
Thomas Weidenmueller <w3seek@users.sourceforge.net>
|
||||
Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
Victor Kirhenshtein <sauros@iname.com>
|
||||
Vizzini <vizzini@plasmic.com>
|
||||
|
||||
|
||||
Graphic Design from
|
||||
|
||||
Mindflyer <mf@mufunyo.net>
|
||||
Tango Desktop Project <http://tango-project.org>
|
||||
Everaldo <http://everaldo.com>
|
80
INSTALL
@@ -1,80 +0,0 @@
|
||||
1. Build environment
|
||||
|
||||
To build the system you need either mingw32 installed on Windows or a mingw32
|
||||
cross compiler running on unix. You may obtain MinGW binaries that build
|
||||
ReactOS from http://www.reactos.org/.
|
||||
|
||||
|
||||
2. Building ReactOS
|
||||
|
||||
2.1 Building the binaries
|
||||
|
||||
To build ReactOS run 'make' (without the quotes) if you are building on Linux
|
||||
or 'mingw32-make' if you are building on Windows (or ReactOS) from the top
|
||||
directory. If you are using RosBE, follow on-screen instructions.
|
||||
|
||||
|
||||
2.2 Building a bootable CD image
|
||||
|
||||
To build a bootable CD image run 'make bootcd' (without the quotes) if you are
|
||||
building on Linux or 'mingw32-make bootcd' if you are building on Windows (or
|
||||
ReactOS) from the top directory. This will create a CD image with a filename,
|
||||
ReactOS.iso, in the top directory.
|
||||
|
||||
|
||||
3. Installation
|
||||
|
||||
ReactOS can only be installed on a machine that has a FAT16 or FAT32 partition
|
||||
as the active (bootable) partition. The partition on which ReactOS is to be
|
||||
installed (which may or may not be the bootable partition) must also be
|
||||
formatted as FAT16 or FAT32. ReactOS Setup can format the partitions if
|
||||
needed.
|
||||
|
||||
ReactOS can be installed from the source distribution or from the bootable CD
|
||||
distribution. The two ways to install ReactOS are explained below.
|
||||
|
||||
|
||||
3.1 Installation from sources
|
||||
|
||||
If you don't have an existing ReactOS installation you want to upgrade, then
|
||||
build a bootable CD as described above. Burn the CD image, boot from it, and
|
||||
follow the instructions to install ReactOS.
|
||||
|
||||
If you have an existing ReactOS installation you want to upgrade, then to
|
||||
install ReactOS after building it, type 'make install' or
|
||||
'mingw32-make install'. This will create the directory 'reactos' in the top
|
||||
directory. Copy the contents of this directory over the existing installation.
|
||||
|
||||
If you don't want to copy the files manually every time you run a
|
||||
'make install' or 'mingw32-make install', then you can specify the directory
|
||||
where the files are to be copied to during installation.
|
||||
|
||||
Set the ROS_INSTALL environment variable. If you are on Windows this could be
|
||||
done by:
|
||||
|
||||
set ROS_INSTALL=c:\reactos
|
||||
|
||||
If you are on Linux this could be done by:
|
||||
|
||||
export ROS_INSTALL=/mnt/windows/reactos
|
||||
|
||||
Now run 'make install' or 'mingw32-make install' to install the files to the
|
||||
new location.
|
||||
|
||||
|
||||
3.2 Installation from bootable CD distribution
|
||||
|
||||
To install ReactOS from the bootable CD distribution, extract the archive
|
||||
contents. Then burn the CD image, boot from it, and follow instructions.
|
||||
|
||||
|
||||
5. Help
|
||||
|
||||
If you run into problems or have suggestions for making ReactOS better, please
|
||||
visit the address below. Mailing lists are available for a variety of topics,
|
||||
bugs should be submitted to bugzilla and general chat takes place in the forums,
|
||||
or #reactos on freenode
|
||||
|
||||
http://www.reactos.org/
|
||||
|
||||
ReactOS Development Team
|
82
Make-rosshell-MinGW
Normal file
@@ -0,0 +1,82 @@
|
||||
#
|
||||
# ReactOS lean shell
|
||||
#
|
||||
# Make-rosshell-MinGW
|
||||
#
|
||||
# MinGW Makefile with precompiled header support
|
||||
#
|
||||
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
LINK = g++
|
||||
|
||||
CFLAGS = -DWIN32 -DROSSHELL -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
|
||||
RCFLAGS = -DWIN32 -DROSSHELL -D__WINDRES__
|
||||
LFLAGS = -Wl,--subsystem,windows
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS += -D_DEBUG -g
|
||||
RCFLAGS += -D_DEBUG
|
||||
LFLAGS += -g
|
||||
else
|
||||
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
|
||||
RCFLAGS += -DNDEBUG
|
||||
LFLAGS += -s
|
||||
endif
|
||||
|
||||
ifndef UNICODE
|
||||
UNICODE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(UNICODE),1)
|
||||
CFLAGS += -DUNICODE
|
||||
# LFLAGS+= -Wl,--entry,_wWinMain@16
|
||||
endif
|
||||
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
EXEC_SUFFIX = .exe
|
||||
RES_SUFFIX = .coff
|
||||
|
||||
VPATH = shell utility taskbar desktop dialogs
|
||||
|
||||
PROGRAM = rosshell
|
||||
|
||||
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
|
||||
|
||||
OBJECTS = \
|
||||
startup.o \
|
||||
shellclasses.o \
|
||||
utility.o \
|
||||
window.o \
|
||||
dragdropimpl.o \
|
||||
shellbrowserimpl.o \
|
||||
explorer.o \
|
||||
entries.o \
|
||||
shellfs.o \
|
||||
desktop.o \
|
||||
desktopbar.o \
|
||||
taskbar.o \
|
||||
startmenu.o \
|
||||
traynotify.o \
|
||||
quicklaunch.o \
|
||||
settings.o
|
||||
|
||||
LIBS = gdi32 comctl32 ole32 uuid
|
||||
|
||||
all: precomp.h.gch $(TARGET)
|
||||
|
||||
precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
|
||||
$(CXX) $(CFLAGS) precomp.h
|
||||
|
||||
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
|
||||
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
|
||||
|
||||
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
|
||||
windres $(RCFLAGS) -o $@ explorer_intres.rc
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
|
||||
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
|
||||
|
||||
ever:
|
147
Make-rosshell.mak
Normal file
@@ -0,0 +1,147 @@
|
||||
#
|
||||
# ReactOS lean shell
|
||||
#
|
||||
# Makefile
|
||||
#
|
||||
|
||||
# Windows is default host environment
|
||||
ifeq ($(HOST),)
|
||||
HOST = mingw32-windows
|
||||
endif
|
||||
|
||||
ifeq ($(HOST),mingw32-linux)
|
||||
CC = mingw32-gcc
|
||||
CXX = mingw32-g++
|
||||
LINK = mingw32-g++
|
||||
RC = mingw32-windres
|
||||
CD_PREFIX := ./
|
||||
PREFIX = mingw32-
|
||||
EXE_POSTFIX :=
|
||||
EXE_PREFIX := ./
|
||||
endif
|
||||
|
||||
ifeq ($(HOST),mingw32-windows)
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
LINK = g++
|
||||
RC = windres
|
||||
CD_PREFIX :=
|
||||
PREFIX =
|
||||
EXE_PREFIX :=
|
||||
EXE_POSTFIX := .exe
|
||||
endif
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
TOOLS_PATH = $(PATH_TO_TOP)/tools
|
||||
|
||||
ifndef UNICODE
|
||||
UNICODE = 1
|
||||
endif
|
||||
|
||||
CFLAGS = -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall
|
||||
RCFLAGS = -DWIN32 -D_ROS_ -D__WINDRES__
|
||||
LFLAGS = -Wl,--subsystem,windows
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS += -D_DEBUG -g
|
||||
RCFLAGS += -D_DEBUG
|
||||
LFLAGS += -g
|
||||
else
|
||||
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
|
||||
RCFLAGS += -DNDEBUG
|
||||
LFLAGS += -s
|
||||
endif
|
||||
|
||||
ifeq ($(UNICODE),1)
|
||||
CFLAGS += -DUNICODE
|
||||
# LFLAGS+= -Wl,--entry,_wWinMain@16
|
||||
RCFLAGS += -DUNICODE
|
||||
endif
|
||||
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
EXEC_SUFFIX = .exe
|
||||
RES_SUFFIX = .coff
|
||||
|
||||
VPATH = shell utility taskbar desktop dialogs
|
||||
|
||||
PROGRAM = rosshell
|
||||
|
||||
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
|
||||
|
||||
OBJECTS = \
|
||||
startup.o \
|
||||
shellclasses.o \
|
||||
utility.o \
|
||||
window.o \
|
||||
dragdropimpl.o \
|
||||
shellbrowserimpl.o \
|
||||
explorer.o \
|
||||
entries.o \
|
||||
shellfs.o \
|
||||
desktop.o \
|
||||
desktopbar.o \
|
||||
taskbar.o \
|
||||
startmenu.o \
|
||||
traynotify.o \
|
||||
quicklaunch.o \
|
||||
settings.o
|
||||
|
||||
LIBS = gdi32 comctl32 ole32 uuid
|
||||
|
||||
.PHONY: all depends implib clean install dist bootcd depends
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
ever:
|
||||
|
||||
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
|
||||
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
|
||||
|
||||
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
|
||||
$(RC) $(RCFLAGS) -o $@ explorer_intres.rc
|
||||
|
||||
clean:
|
||||
$(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
|
||||
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
|
||||
|
||||
# Use environment var ROS_INSTALL to override default install dir
|
||||
ifneq ($(ROS_INSTALL),)
|
||||
INSTALL_DIR = $(ROS_INSTALL)
|
||||
else
|
||||
ifeq ($(HOST),mingw32-windows)
|
||||
INSTALL_DIR = C:/reactos
|
||||
else
|
||||
INSTALL_DIR = $(PATH_TO_TOP)/reactos
|
||||
endif
|
||||
endif
|
||||
|
||||
implib:
|
||||
|
||||
install:
|
||||
-$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)
|
||||
|
||||
bootcd:
|
||||
|
||||
|
||||
# dependency scanning
|
||||
|
||||
DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))
|
||||
DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
-include $(DEP_FILES)
|
||||
endif
|
||||
|
||||
ifeq ($(HOST),mingw32-windows)
|
||||
DEPENDS_EXE := ..\..\..\tools\depends
|
||||
else
|
||||
DEPENDS_EXE := $(TOOLS_PATH)/depends
|
||||
endif
|
||||
|
||||
.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
|
||||
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
|
||||
|
||||
.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
|
||||
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
|
||||
|
720
Makefile
@@ -1,633 +1,149 @@
|
||||
# Well-known targets:
|
||||
#
|
||||
# all (default target)
|
||||
# This target builds all of ReactOS.
|
||||
# ReactOS lean shell
|
||||
#
|
||||
# module
|
||||
# These targets builds a single module. Replace module with the name of
|
||||
# the module you want to build.
|
||||
#
|
||||
# bootcd
|
||||
# This target builds an ISO (ReactOS.iso) from which ReactOS can be booted
|
||||
# and installed.
|
||||
#
|
||||
# livecd
|
||||
# This target builds an ISO (ReactOS-Live.iso) from which ReactOS can be
|
||||
# booted, but not installed.
|
||||
#
|
||||
# install
|
||||
# This target installs all of ReactOS to a location specified by the
|
||||
# ROS_INSTALL environment variable.
|
||||
#
|
||||
# module_install
|
||||
# These targets installs a single module to a location specified by the
|
||||
# ROS_INSTALL environment variable. Replace module with the name of the
|
||||
# module you want to install.
|
||||
#
|
||||
# clean
|
||||
# This target cleans (deletes) all files that are generated when building
|
||||
# ReactOS.
|
||||
#
|
||||
# module_clean
|
||||
# These targets cleans (deletes) files that are generated when building a
|
||||
# single module. Replace module with the name of the module you want to
|
||||
# clean.
|
||||
#
|
||||
# depends
|
||||
# This target does a complete dependency check of the ReactOS codebase.
|
||||
# This can require several minutes to complete. If you only need to check
|
||||
# dependencies for a single or few modules then you can use the
|
||||
# module_depends targets instead. This target can also repair a damaged or
|
||||
# missing makefile-${ROS_ARCH}.auto if needed.
|
||||
#
|
||||
# module_depends
|
||||
# These targets do a dependency check of individual modules. Replace module
|
||||
# with the name of the module for which you want to check dependencies.
|
||||
# This is faster than the depends target which does a complete dependency
|
||||
# check of the ReactOS codebase.
|
||||
#
|
||||
#
|
||||
# Accepted environment variables:
|
||||
#
|
||||
# ROS_ARCH
|
||||
# This variable specifies the name of the architecture to build ReactOS for.
|
||||
# The variable defaults to i386.
|
||||
#
|
||||
# ROS_PREFIX
|
||||
# This variable specifies the prefix of the MinGW installation. On Windows
|
||||
# a prefix is usually not needed, but on linux it is usually "mingw32". If
|
||||
# not present and no executable named "gcc" can be found, then the prefix is
|
||||
# assumed to be "mingw32". If your gcc is named i386-mingw32-gcc then set
|
||||
# ROS_PREFIX to i386-mingw32. Don't include the dash (-) before gcc.
|
||||
#
|
||||
# ROS_INTERMEDIATE
|
||||
# This variable controls where to put intermediate files. Intermediate
|
||||
# files are generated files that are needed to generate the final
|
||||
# output files. Examples of intermediate files include *.o, *.a, and
|
||||
# *.coff. N.B. Don't put a path separator at the end. The variable
|
||||
# defaults to .\obj-{ROS_ARCH}.
|
||||
#
|
||||
# ROS_OUTPUT
|
||||
# This variable controls where to put output files. Output files are
|
||||
# generated files that makes up the result of the build process.
|
||||
# Examples of output files include *.exe, *.dll, and *.sys. N.B. Don't
|
||||
# put a path separator at the end. The variable defaults to .\output-{ROS_ARCH}.
|
||||
#
|
||||
# ROS_CDOUTPUT
|
||||
# This variable controls the name of the ReactOS directory on cdrom.
|
||||
# The variable defaults to reactos.
|
||||
# Warning: setting this value may lead to a not bootable/installable cdrom.
|
||||
#
|
||||
# ROS_TEMPORARY
|
||||
# This variable controls where to put temporary files. Temporary files
|
||||
# are (usually small) generated files that are needed to generate the
|
||||
# intermediate or final output files. Examples of temporary files include
|
||||
# *.rci (preprocessed .rc files for wrc), *.tmp, and *.exp. N.B. Don't put
|
||||
# a path separator at the end. The variable defaults to {ROS_INTERMEDIATE}
|
||||
# directory.
|
||||
#
|
||||
# ROS_INSTALL
|
||||
# This variable controls where to install output files to when using
|
||||
# 'make install'. N.B. Don't put a path separator at the end. The variable
|
||||
# defaults to .\{ROS_CDOUTPUT}.
|
||||
#
|
||||
# ROS_BUILDMAP
|
||||
# This variable controls if map files are to be generated for executable
|
||||
# output files. Map files have the extension .map. The value can be either
|
||||
# full (to build map files with assembly code), yes (to build map files
|
||||
# without source code) or no (to not build any map files). The variable
|
||||
# defaults to no.
|
||||
#
|
||||
# ROS_BUILDNOSTRIP
|
||||
# This variable controls if non-symbol-stripped versions are to be built
|
||||
# of executable output files. Non-symbol-stripped executable output files
|
||||
# have .nostrip added to the filename just before the extension. The value
|
||||
# can be either yes (to build non-symbol-stripped versions of executable
|
||||
# output files) or no (to not build non-symbol-stripped versions of
|
||||
# executable output files). The variable defaults to no.
|
||||
#
|
||||
# ROS_LEAN_AND_MEAN
|
||||
# This variable controls if all binaries should be stripped out of useless
|
||||
# data added by GCC/LD as well as of RSYM symbol data. Output binary size
|
||||
# will go from 80 to 40MB, memory usage from 58 to 38MB and the install CD
|
||||
# from 18 to 13MB. The variable defaults to no.
|
||||
#
|
||||
# ROS_GENERATE_RSYM
|
||||
# This variable controls generation of RSYM symbol data. The value can be
|
||||
# either yes (to generate symbol data) or no. The variable defaults to yes.
|
||||
#
|
||||
# ROS_RBUILDFLAGS
|
||||
# Pass parameters to rbuild.
|
||||
# -v Be verbose.
|
||||
# -c Clean as you go. Delete generated files as soon as they are not needed anymore.
|
||||
# -dd Disable automatic dependencies.
|
||||
# -da Enable automatic dependencies.
|
||||
# -df Enable full dependencies.
|
||||
# -dm{module} Check only automatic dependencies for this module.
|
||||
# -hd Disable precompiled headers.
|
||||
# -mi Let make handle creation of install directories. Rbuild will not generate the directories.
|
||||
# -ps Generate proxy makefiles in source tree instead of the output tree.
|
||||
# -ud Disable compilation units.
|
||||
# -r Input XML
|
||||
#
|
||||
# ROS_AUTOMAKE
|
||||
# Alternate name of makefile-${ROS_ARCH}.auto
|
||||
#
|
||||
# ROS_BUILDENGINE
|
||||
# The Build engine to be used. The variable defaults to rbuild (RBUILD_TARGET)
|
||||
# Makefile
|
||||
#
|
||||
|
||||
# check for versions of make that don't have features we need...
|
||||
# the function "eval" is only available in 3.80+, which happens to be the minimum
|
||||
# version that has the features we use...
|
||||
# THIS CHECK IS BORROWED FROM THE "GMSL" PROJECT, AND IS COVERED BY THE GPL LICENSE
|
||||
# YOU CAN FIND OUT MORE ABOUT GMSL - A VERY COOL PROJECT - AT:
|
||||
# http://gmsl.sourceforge.net/
|
||||
|
||||
__gmsl_have_eval :=
|
||||
__gmsl_ignore := $(eval __gmsl_have_eval := T)
|
||||
|
||||
ifndef __gmsl_have_eval
|
||||
$(error ReactOS's makefiles use GNU Make 3.80+ features, you have $(MAKE_VERSION), you MUST UPGRADE in order to build ReactOS - Sorry)
|
||||
endif
|
||||
# END of code borrowed from GMSL ( http://gmsl.sourceforge.net/ )
|
||||
|
||||
define NL
|
||||
|
||||
|
||||
endef
|
||||
|
||||
.PHONY: all
|
||||
.PHONY: clean
|
||||
.PHONY: world
|
||||
.PHONY: universe
|
||||
|
||||
ifneq ($(ROS_ARCH),)
|
||||
ARCH := $(ROS_ARCH)
|
||||
else
|
||||
ARCH := i386
|
||||
endif
|
||||
|
||||
ifeq ($(ROS_AUTOMAKE),)
|
||||
ROS_AUTOMAKE=makefile-$(ARCH).auto
|
||||
endif
|
||||
|
||||
all: $(ROS_AUTOMAKE)
|
||||
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
# Windows is default host environment
|
||||
ifeq ($(HOST),)
|
||||
ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
|
||||
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
|
||||
export OSTYPE = msys
|
||||
HOST=mingw32-linux
|
||||
HOST_CFLAGS+=-fshort-wchar
|
||||
HOST_CPPFLAGS+=-fshort-wchar
|
||||
else
|
||||
HOST=mingw32-windows
|
||||
endif
|
||||
else
|
||||
HOST=mingw32-linux
|
||||
HOST_CFLAGS+=-fshort-wchar
|
||||
HOST_CPPFLAGS+=-fshort-wchar
|
||||
endif
|
||||
HOST = mingw32-windows
|
||||
endif
|
||||
|
||||
# Default to half-verbose mode
|
||||
ifeq ($(VERBOSE),no)
|
||||
Q = @
|
||||
HALFVERBOSEECHO = no
|
||||
BUILDNO_QUIET = -q
|
||||
else
|
||||
ifeq ($(VERBOSE),full)
|
||||
Q =
|
||||
HALFVERBOSEECHO = no
|
||||
BUILDNO_QUIET =
|
||||
else
|
||||
Q = @
|
||||
HALFVERBOSEECHO = yes
|
||||
BUILDNO_QUIET = -q
|
||||
endif
|
||||
endif
|
||||
ifeq ($(HOST),mingw32-linux)
|
||||
QUOTE = "
|
||||
CC = mingw32-gcc
|
||||
CXX = mingw32-g++
|
||||
LINK = mingw32-g++
|
||||
RC = mingw32-windres
|
||||
CD_PREFIX := ./
|
||||
PREFIX = mingw32-
|
||||
EXE_POSTFIX :=
|
||||
EXE_PREFIX := ./
|
||||
endif
|
||||
|
||||
ifeq ($(HOST),mingw32-windows)
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
LINK = g++
|
||||
RC = windres
|
||||
CD_PREFIX :=
|
||||
PREFIX =
|
||||
EXE_PREFIX :=
|
||||
EXE_POSTFIX := .exe
|
||||
endif
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
TOOLS_PATH = $(PATH_TO_TOP)/tools
|
||||
|
||||
ifndef UNICODE
|
||||
UNICODE = 1
|
||||
endif
|
||||
|
||||
CFLAGS = -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall
|
||||
RCFLAGS = -DWIN32 -D_ROS_ -D__WINDRES__
|
||||
LFLAGS = -Wl,--subsystem,windows
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS += -D_DEBUG -g
|
||||
RCFLAGS += -D_DEBUG
|
||||
LFLAGS += -g
|
||||
else
|
||||
QUOTE =
|
||||
endif
|
||||
ifeq ($(HALFVERBOSEECHO),yes)
|
||||
ECHO_CP =@echo $(QUOTE)[COPY] $@$(QUOTE)
|
||||
ECHO_MKDIR =@echo $(QUOTE)[MKDIR] $@$(QUOTE)
|
||||
ECHO_BUILDNO =@echo $(QUOTE)[BUILDNO] $@$(QUOTE)
|
||||
ECHO_INVOKE =@echo $(QUOTE)[INVOKE] $<$(QUOTE)
|
||||
ECHO_PCH =@echo $(QUOTE)[PCH] $@$(QUOTE)
|
||||
ECHO_CPP =@echo $(QUOTE)[CPP] $@$(QUOTE)
|
||||
ECHO_CC =@echo $(QUOTE)[CC] $<$(QUOTE)
|
||||
ECHO_HOSTCC =@echo $(QUOTE)[HOST-CC] $<$(QUOTE)
|
||||
ECHO_CL =@echo $(QUOTE)[CL] $<$(QUOTE)
|
||||
ECHO_AS =@echo $(QUOTE)[AS] $<$(QUOTE)
|
||||
ECHO_NASM =@echo $(QUOTE)[NASM] $<$(QUOTE)
|
||||
ECHO_AR =@echo $(QUOTE)[AR] $@$(QUOTE)
|
||||
ECHO_HOSTAR =@echo $(QUOTE)[HOST-AR] $@$(QUOTE)
|
||||
ECHO_WINEBLD =@echo $(QUOTE)[WINEBLD] $@$(QUOTE)
|
||||
ECHO_WRC =@echo $(QUOTE)[WRC] $@$(QUOTE)
|
||||
ECHO_RC =@echo $(QUOTE)[RC] $@$(QUOTE)
|
||||
ECHO_CVTRES =@echo $(QUOTE)[CVTRES] $@$(QUOTE)
|
||||
ECHO_WIDL =@echo $(QUOTE)[WIDL] $@$(QUOTE)
|
||||
ECHO_BIN2RES =@echo $(QUOTE)[BIN2RES] $<$(QUOTE)
|
||||
ECHO_IMPLIB =@echo $(QUOTE)[IMPLIB] $@$(QUOTE)
|
||||
ECHO_LD =@echo $(QUOTE)[LD] $@$(QUOTE)
|
||||
ECHO_HOSTLD =@echo $(QUOTE)[HOST-LD] $@$(QUOTE)
|
||||
ECHO_LINK =@echo $(QUOTE)[LINK] $@$(QUOTE)
|
||||
ECHO_NM =@echo $(QUOTE)[NM] $@$(QUOTE)
|
||||
ECHO_OBJDUMP =@echo $(QUOTE)[OBJDUMP] $@$(QUOTE)
|
||||
ECHO_RBUILD =@echo $(QUOTE)[RBUILD] $@$(QUOTE)
|
||||
ECHO_RSYM =@echo $(QUOTE)[RSYM] $@$(QUOTE)
|
||||
ECHO_PEFIXUP =@echo $(QUOTE)[PEFIXUP] $@$(QUOTE)
|
||||
ECHO_WMC =@echo $(QUOTE)[WMC] $@$(QUOTE)
|
||||
ECHO_NCI =@echo $(QUOTE)[NCI] $@$(QUOTE)
|
||||
ECHO_CABMAN =@echo $(QUOTE)[CABMAN] $<$(QUOTE)
|
||||
ECHO_CDMAKE =@echo $(QUOTE)[CDMAKE] $@$(QUOTE)
|
||||
ECHO_MKHIVE =@echo $(QUOTE)[MKHIVE] $@$(QUOTE)
|
||||
ECHO_REGTESTS=@echo $(QUOTE)[REGTESTS] $@$(QUOTE)
|
||||
ECHO_TEST =@echo $(QUOTE)[TEST] $@$(QUOTE)
|
||||
ECHO_GENDIB =@echo $(QUOTE)[GENDIB] $@$(QUOTE)
|
||||
ECHO_STRIP =@echo $(QUOTE)[STRIP] $@$(QUOTE)
|
||||
ECHO_RGENSTAT=@echo $(QUOTE)[RGENSTAT] $@$(QUOTE)
|
||||
ECHO_DEPENDS =@echo $(QUOTE)[DEPENDS] $<$(QUOTE)
|
||||
ECHO_RSP =@echo $(QUOTE)[RSP] $@$(QUOTE)
|
||||
else
|
||||
ECHO_CP =
|
||||
ECHO_MKDIR =
|
||||
ECHO_BUILDNO =
|
||||
ECHO_INVOKE =
|
||||
ECHO_PCH =
|
||||
ECHO_CPP =
|
||||
ECHO_CC =
|
||||
ECHO_HOSTCC =
|
||||
ECHO_AS =
|
||||
ECHO_NASM =
|
||||
ECHO_AR =
|
||||
ECHO_HOSTAR =
|
||||
ECHO_WINEBLD =
|
||||
ECHO_WRC =
|
||||
ECHO_RC =
|
||||
ECHO_CVTRES =
|
||||
ECHO_WIDL =
|
||||
ECHO_BIN2RES =
|
||||
ECHO_IMPLIB =
|
||||
ECHO_LD =
|
||||
ECHO_HOSTLD =
|
||||
ECHO_NM =
|
||||
ECHO_OBJDUMP =
|
||||
ECHO_RBUILD =
|
||||
ECHO_RSYM =
|
||||
ECHO_WMC =
|
||||
ECHO_NCI =
|
||||
ECHO_CABMAN =
|
||||
ECHO_CDMAKE =
|
||||
ECHO_MKHIVE =
|
||||
ECHO_REGTESTS=
|
||||
ECHO_TEST =
|
||||
ECHO_GENDIB =
|
||||
ECHO_STRIP =
|
||||
ECHO_RGENSTAT=
|
||||
ECHO_DEPENDS =
|
||||
ECHO_RSP =
|
||||
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
|
||||
RCFLAGS += -DNDEBUG
|
||||
LFLAGS += -s
|
||||
endif
|
||||
|
||||
# Set host compiler/linker
|
||||
ifeq ($(HOST_CC),)
|
||||
HOST_CC = gcc
|
||||
endif
|
||||
ifeq ($(HOST_CPP),)
|
||||
HOST_CPP = g++
|
||||
endif
|
||||
host_gcc = $(Q)$(HOST_CC)
|
||||
host_gpp = $(Q)$(HOST_CPP)
|
||||
host_ld = $(Q)ld
|
||||
host_ar = $(Q)ar
|
||||
host_objcopy = $(Q)objcopy
|
||||
|
||||
# Set target compiler/linker
|
||||
ifneq ($(ROS_PREFIX),)
|
||||
PREFIX_ := $(ROS_PREFIX)-
|
||||
else
|
||||
ifeq ($(HOST),mingw32-linux)
|
||||
PREFIX_ := mingw32-
|
||||
else
|
||||
PREFIX_ :=
|
||||
endif
|
||||
endif
|
||||
ifeq ($(TARGET_CC),)
|
||||
TARGET_CC = $(PREFIX_)gcc
|
||||
endif
|
||||
ifeq ($(TARGET_CPP),)
|
||||
TARGET_CPP = $(PREFIX_)g++
|
||||
endif
|
||||
gcc = $(Q)$(TARGET_CC)
|
||||
gpp = $(Q)$(TARGET_CPP)
|
||||
gas = $(Q)$(TARGET_CC) -x assembler-with-cpp
|
||||
ld = $(Q)$(PREFIX_)ld
|
||||
nm = $(Q)$(PREFIX_)nm
|
||||
objdump = $(Q)$(PREFIX_)objdump
|
||||
ar = $(Q)$(PREFIX_)ar
|
||||
objcopy = $(Q)$(PREFIX_)objcopy
|
||||
dlltool = $(Q)$(PREFIX_)dlltool
|
||||
strip = $(Q)$(PREFIX_)strip
|
||||
windres = $(Q)$(PREFIX_)windres
|
||||
|
||||
# Set utilities
|
||||
ifeq ($(OSTYPE),msys)
|
||||
HOST=mingw32-linux
|
||||
endif
|
||||
ifeq ($(HOST),mingw32-linux)
|
||||
ifeq ($(OSTYPE),msys)
|
||||
export EXEPOSTFIX = .exe
|
||||
else
|
||||
export EXEPOSTFIX =
|
||||
endif
|
||||
export SEP = /
|
||||
mkdir = -$(Q)mkdir -p
|
||||
checkpoint = $(Q)touch
|
||||
rm = $(Q)rm -f
|
||||
cp = $(Q)cp
|
||||
NUL = /dev/null
|
||||
else # mingw32-windows
|
||||
export EXEPOSTFIX = .exe
|
||||
ROS_EMPTY =
|
||||
export SEP = \$(ROS_EMPTY)
|
||||
mkdir = -$(Q)mkdir
|
||||
checkpoint = $(Q)copy /y NUL
|
||||
rm = $(Q)del /f /q
|
||||
cp = $(Q)copy /y
|
||||
NUL = NUL
|
||||
ifeq ($(UNICODE),1)
|
||||
CFLAGS += -DUNICODE
|
||||
# LFLAGS+= -Wl,--entry,_wWinMain@16
|
||||
RCFLAGS += -DUNICODE
|
||||
endif
|
||||
|
||||
ifneq ($(ROS_INTERMEDIATE),)
|
||||
INTERMEDIATE := $(ROS_INTERMEDIATE)
|
||||
else
|
||||
INTERMEDIATE := obj-$(ARCH)
|
||||
endif
|
||||
INTERMEDIATE_ := $(INTERMEDIATE)$(SEP)
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
ifneq ($(ROS_OUTPUT),)
|
||||
OUTPUT := $(ROS_OUTPUT)
|
||||
else
|
||||
OUTPUT := output-$(ARCH)
|
||||
endif
|
||||
OUTPUT_ := $(OUTPUT)$(SEP)
|
||||
EXEC_SUFFIX = .exe
|
||||
RES_SUFFIX = .coff
|
||||
|
||||
ifneq ($(ROS_CDOUTPUT),)
|
||||
CDOUTPUT := $(ROS_CDOUTPUT)
|
||||
else
|
||||
CDOUTPUT := reactos
|
||||
endif
|
||||
CDOUTPUT_ := $(CDOUTPUT)$(SEP)
|
||||
VPATH = shell utility taskbar desktop dialogs
|
||||
|
||||
ifneq ($(ROS_TEMPORARY),)
|
||||
TEMPORARY := $(ROS_TEMPORARY)
|
||||
else
|
||||
TEMPORARY := $(INTERMEDIATE)
|
||||
endif
|
||||
TEMPORARY_ := $(TEMPORARY)$(SEP)
|
||||
PROGRAM = explorer
|
||||
|
||||
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
|
||||
|
||||
OBJECTS = \
|
||||
startup.o \
|
||||
shellclasses.o \
|
||||
utility.o \
|
||||
window.o \
|
||||
dragdropimpl.o \
|
||||
shellbrowserimpl.o \
|
||||
explorer.o \
|
||||
entries.o \
|
||||
shellfs.o \
|
||||
mainframe.o \
|
||||
shellbrowser.o \
|
||||
desktop.o \
|
||||
desktopbar.o \
|
||||
taskbar.o \
|
||||
startmenu.o \
|
||||
traynotify.o \
|
||||
quicklaunch.o \
|
||||
settings.o
|
||||
|
||||
LIBS = gdi32 comctl32 ole32 uuid
|
||||
|
||||
.PHONY: all depends implib clean install dist bootcd depends
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
ever:
|
||||
|
||||
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
|
||||
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
|
||||
|
||||
explorer$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
|
||||
$(RC) $(RCFLAGS) -o $@ explorer_intres.rc
|
||||
|
||||
clean:
|
||||
$(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
|
||||
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
|
||||
|
||||
# Use environment var ROS_INSTALL to override default install dir
|
||||
ifneq ($(ROS_INSTALL),)
|
||||
INSTALL := $(ROS_INSTALL)
|
||||
INSTALL_DIR = $(ROS_INSTALL)
|
||||
else
|
||||
INSTALL := $(CDOUTPUT)
|
||||
endif
|
||||
INSTALL_ := $(INSTALL)$(SEP)
|
||||
|
||||
RBUILD_FLAGS := -rReactOS-$(ARCH).rbuild -DARCH=$(ARCH)
|
||||
|
||||
$(INTERMEDIATE):
|
||||
$(ECHO_MKDIR)
|
||||
${mkdir} $@
|
||||
|
||||
ifneq ($(INTERMEDIATE),$(OUTPUT))
|
||||
$(OUTPUT):
|
||||
$(ECHO_MKDIR)
|
||||
${mkdir} $@
|
||||
endif
|
||||
|
||||
ifneq ($(TEMPORARY),$(INTERMEDIATE))
|
||||
ifneq ($(TEMPORARY),$(OUTPUT))
|
||||
$(TEMPORARY):
|
||||
$(ECHO_MKDIR)
|
||||
${mkdir} $@
|
||||
ifeq ($(HOST),mingw32-windows)
|
||||
INSTALL_DIR = C:/reactos
|
||||
else
|
||||
INSTALL_DIR = $(PATH_TO_TOP)/reactos
|
||||
endif
|
||||
endif
|
||||
|
||||
BUILDNO_H = $(INTERMEDIATE_)sdk$(SEP)include$(SEP)reactos$(SEP)buildno.h
|
||||
implib:
|
||||
|
||||
include sdk/libs/lib.mak
|
||||
include sdk/tools/tools.mak
|
||||
-include $(ROS_AUTOMAKE)
|
||||
install:
|
||||
-$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)
|
||||
|
||||
PREAUTO := \
|
||||
$(BIN2C_TARGET) \
|
||||
$(BIN2RES_TARGET) \
|
||||
$(BUILDNO_H) \
|
||||
$(NCI_SERVICE_FILES) \
|
||||
$(GENDIB_DIB_FILES)
|
||||
bootcd:
|
||||
|
||||
ifeq ($(ARCH),powerpc)
|
||||
PREAUTO += $(OFW_INTERFACE_SERVICE_FILES) $(PPCMMU_TARGETS)
|
||||
|
||||
# dependency scanning
|
||||
|
||||
DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))
|
||||
DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
-include $(DEP_FILES)
|
||||
endif
|
||||
|
||||
ifeq ($(ROS_BUILDENGINE),)
|
||||
ROS_BUILDENGINE=$(RBUILD_TARGET)
|
||||
ifeq ($(HOST),mingw32-windows)
|
||||
DEPENDS_EXE := ..\..\..\tools\depends
|
||||
else
|
||||
DEPENDS_EXE := $(TOOLS_PATH)/depends
|
||||
endif
|
||||
|
||||
$(ROS_AUTOMAKE): $(ROS_BUILDENGINE) $(XMLBUILDFILES) | $(BUILDNO_H)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) mingw
|
||||
.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
|
||||
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
|
||||
|
||||
world: all bootcd livecd
|
||||
.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
|
||||
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
|
||||
|
||||
universe:
|
||||
$(MAKE) KDBG=1 DBG=1 \
|
||||
ROS_AUTOMAKE=makefile-$(ARCH)-kd.auto \
|
||||
ROS_INSTALL=reactos-$(ARCH)-kd \
|
||||
ROS_INTERMEDIATE=obj-$(ARCH)-kd \
|
||||
ROS_OUTPUT=output-$(ARCH)-kd \
|
||||
world
|
||||
$(MAKE) KDBG=0 DBG=1 \
|
||||
ROS_AUTOMAKE=makefile-$(ARCH)-d.auto \
|
||||
ROS_INSTALL=reactos-$(ARCH)-d \
|
||||
ROS_INTERMEDIATE=obj-$(ARCH)-d \
|
||||
ROS_OUTPUT=output-$(ARCH)-d \
|
||||
world
|
||||
$(MAKE) KDBG=0 DBG=0 \
|
||||
ROS_AUTOMAKE=makefile-$(ARCH)-r.auto \
|
||||
ROS_INSTALL=reactos-$(ARCH)-r \
|
||||
ROS_INTERMEDIATE=obj-$(ARCH)-r \
|
||||
ROS_OUTPUT=output-$(ARCH)-r \
|
||||
world
|
||||
|
||||
.PHONY: rgenstat
|
||||
rgenstat: $(RGENSTAT_TARGET)
|
||||
$(ECHO_RGENSTAT)
|
||||
$(Q)$(RGENSTAT_TARGET) apistatus.lst apistatus.xml
|
||||
|
||||
.PHONY: cb
|
||||
cb: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) cb
|
||||
|
||||
.PHONY: msbuild
|
||||
msbuild: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) msbuild
|
||||
|
||||
.PHONY: msbuild_clean
|
||||
msbuild_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c msbuild
|
||||
|
||||
.PHONY: depmap
|
||||
depmap: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) depmap
|
||||
|
||||
.PHONY: vreport
|
||||
vreport:$(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) vreport
|
||||
|
||||
.PHONY: msvc
|
||||
msvc: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) msvc
|
||||
|
||||
.PHONY: msvc6
|
||||
msvc6: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs6.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc7
|
||||
msvc7: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc71
|
||||
msvc71: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc8
|
||||
msvc8: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc9
|
||||
msvc9: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs9.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc10
|
||||
msvc10: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs10.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc6_clean
|
||||
msvc6_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs6.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc7_clean
|
||||
msvc7_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc71_clean
|
||||
msvc71_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.10 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc8_clean
|
||||
msvc8_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs8.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc9_clean
|
||||
msvc9_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs9.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc10_clean
|
||||
msvc10_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs10.00 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc_clean
|
||||
msvc_clean: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c msvc
|
||||
|
||||
.PHONY: msvc_clean_all
|
||||
msvc_clean_all: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs6.00 -voversionconfiguration msvc
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.00 -voversionconfiguration msvc
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.10 -voversionconfiguration msvc
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs8.10 -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc7_install_debug
|
||||
msvc7_install_debug: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -vcdebug -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc7_install_release
|
||||
msvc7_install_release: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -vcrelease -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc7_install_speed
|
||||
msvc7_install_speed: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -vcspeed -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc71_install_debug
|
||||
msvc71_install_debug: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -vcdebug -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc71_install_release
|
||||
msvc71_install_release: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -vcrelease -voversionconfiguration msvc
|
||||
|
||||
|
||||
.PHONY: msvc71_install_speed
|
||||
msvc71_install_speed: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -vcspeed -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc8_install_debug
|
||||
msvc8_install_debug: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -vcdebug -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc8_install_release
|
||||
msvc8_install_release: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -vcrelease -voversionconfiguration msvc
|
||||
|
||||
.PHONY: msvc8_install_speed
|
||||
msvc8_install_speed: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -vcspeed -voversionconfiguration msvc
|
||||
|
||||
.PHONY: makefile_auto_clean
|
||||
makefile_auto_clean:
|
||||
-@$(rm) $(ROS_AUTOMAKE) $(PREAUTO) 2>$(NUL)
|
||||
|
||||
.PHONY: clean
|
||||
clean: makefile_auto_clean
|
||||
|
||||
.PHONY: depends
|
||||
depends: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) mingw
|
||||
|
80
Makefile-MinGW
Normal file
@@ -0,0 +1,80 @@
|
||||
#
|
||||
# ReactOS lean explorer
|
||||
#
|
||||
# Makefile-MinGW
|
||||
#
|
||||
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
LINK = g++
|
||||
|
||||
CFLAGS = -DWIN32 -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
|
||||
RCFLAGS = -DWIN32 -D__WINDRES__
|
||||
LFLAGS = -Wl,--subsystem,windows
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS += -D_DEBUG -g
|
||||
RCFLAGS += -D_DEBUG
|
||||
LFLAGS += -g
|
||||
else
|
||||
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
|
||||
RCFLAGS += -DNDEBUG
|
||||
LFLAGS += -s
|
||||
endif
|
||||
|
||||
ifndef UNICODE
|
||||
UNICODE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(UNICODE),1)
|
||||
CFLAGS += -DUNICODE
|
||||
# LFLAGS+= -Wl,--entry,_wWinMain@16
|
||||
RCFLAGS += -DUNICODE
|
||||
endif
|
||||
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
EXEC_SUFFIX = .exe
|
||||
RES_SUFFIX = .coff
|
||||
|
||||
VPATH = shell utility taskbar desktop dialogs
|
||||
|
||||
PROGRAM = explorer
|
||||
|
||||
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
|
||||
|
||||
OBJECTS = \
|
||||
startup.o \
|
||||
shellclasses.o \
|
||||
utility.o \
|
||||
window.o \
|
||||
dragdropimpl.o \
|
||||
shellbrowserimpl.o \
|
||||
explorer.o \
|
||||
entries.o \
|
||||
shellfs.o \
|
||||
mainframe.o \
|
||||
shellbrowser.o \
|
||||
desktop.o \
|
||||
desktopbar.o \
|
||||
taskbar.o \
|
||||
startmenu.o \
|
||||
traynotify.o \
|
||||
quicklaunch.o \
|
||||
settings.o
|
||||
|
||||
LIBS = gdi32 comctl32 ole32 uuid
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
|
||||
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
|
||||
|
||||
$(PROGRAM)$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
|
||||
windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
|
||||
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
|
||||
|
||||
ever:
|
400
Makefile-Wine
Normal file
@@ -0,0 +1,400 @@
|
||||
TOPSRCDIR = ../..
|
||||
TOPOBJDIR = ../..
|
||||
SRCDIR = .
|
||||
|
||||
MODULE = explorer.exe
|
||||
APPMODE = gui
|
||||
IMPORTS = shell32 comctl32 msimg32 ole32 user32 gdi32 kernel32 advapi32 oleaut32
|
||||
EXTRADEFS = -D__WINE__ -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -D__MINGW32__ -DCINTERFACE
|
||||
EXTRA_OBJS = notifyhook.dll libexpat.dll
|
||||
EXTRALIBS = $(LIBUUID)
|
||||
|
||||
C_SRCS = \
|
||||
services/startup.c \
|
||||
utility/splitpath.c
|
||||
|
||||
CPP_SRCS = \
|
||||
explorer.cpp \
|
||||
desktop/desktop.cpp \
|
||||
utility/shellclasses.cpp \
|
||||
utility/utility.cpp \
|
||||
utility/window.cpp \
|
||||
utility/dragdropimpl.cpp \
|
||||
utility/shellbrowserimpl.cpp \
|
||||
utility/xmlstorage.cpp \
|
||||
shell/entries.cpp \
|
||||
shell/winfs.cpp \
|
||||
shell/unixfs.cpp \
|
||||
shell/shellfs.cpp \
|
||||
shell/mainframe.cpp \
|
||||
shell/filechild.cpp \
|
||||
shell/pane.cpp \
|
||||
shell/shellbrowser.cpp \
|
||||
shell/ntobjfs.cpp \
|
||||
shell/regfs.cpp \
|
||||
shell/fatfs.cpp \
|
||||
shell/webchild.cpp \
|
||||
services/shellservices.cpp \
|
||||
taskbar/desktopbar.cpp \
|
||||
taskbar/taskbar.cpp \
|
||||
taskbar/startmenu.cpp \
|
||||
taskbar/traynotify.cpp \
|
||||
taskbar/quicklaunch.cpp \
|
||||
taskbar/favorites.cpp \
|
||||
dialogs/searchprogram.cpp \
|
||||
dialogs/settings.cpp
|
||||
|
||||
RC_SRCS = explorer_intres.rc
|
||||
EXTRARCFLAGS = -D__WRC__ -D_WIN32
|
||||
|
||||
|
||||
# Global rules for building a Winelib program -*-Makefile-*-
|
||||
#
|
||||
# Each individual makefile should define the following variables:
|
||||
# MODULE : name of the main module being built
|
||||
# APPMODE : program mode (cui,gui,cuiw,guiw)
|
||||
# EXTRALIBS : extra libraries to link in (optional)
|
||||
# EXTRADEFS : extra symbol definitions, like -DWINELIB (optional)
|
||||
#
|
||||
# plus all variables required by the global Make.rules.in
|
||||
#
|
||||
|
||||
DEFS = -D_REENTRANT -fPIC $(EXTRADEFS)
|
||||
LDDLLFLAGS = -Wl,-Bsymbolic,-z,defs
|
||||
ALL_OBJS = $(OBJS) $(MODULE).dbg.o
|
||||
ALL_LIBS = $(LIBWINE) $(EXTRALIBS) $(LIBPORT) $(LDFLAGS) $(LIBS)
|
||||
BASEMODULE = $(MODULE:.exe=)
|
||||
TESTIMPORTS = $(DELAYIMPORTS) $(IMPORTS)
|
||||
RUNTESTFLAGS= -q -P wine -T $(TOPOBJDIR) $(PLTESTPROGRAM:%=-p %)
|
||||
|
||||
|
||||
# Global rules shared by all makefiles -*-Makefile-*-
|
||||
#
|
||||
# Each individual makefile must define the following variables:
|
||||
# TOPSRCDIR : top-level source directory
|
||||
# TOPOBJDIR : top-level object directory
|
||||
# SRCDIR : source directory for this module
|
||||
# MODULE : name of the module being built
|
||||
#
|
||||
# Each individual makefile may define the following additional variables:
|
||||
# C_SRCS : C sources for the module
|
||||
# CPP_SRCS : C++ sources for the module
|
||||
# C_SRCS16 : 16-bit C sources for the module
|
||||
# RC_SRCS : resource source files
|
||||
# EXTRA_SRCS : extra source files for make depend
|
||||
# EXTRA_OBJS : extra object files
|
||||
# IMPORTS : dlls to import
|
||||
# DELAYIMPORTS : dlls to import in delayed mode
|
||||
# SUBDIRS : subdirectories that contain a Makefile
|
||||
# EXTRASUBDIRS : subdirectories that do not contain a Makefile
|
||||
# INSTALLSUBDIRS : subdirectories to run make install/uninstall into
|
||||
|
||||
# First some useful definitions
|
||||
|
||||
SHELL = /bin/sh
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
CPP = gcc -E
|
||||
#CFLAGS = -g -O2
|
||||
CFLAGS = -g
|
||||
CPPFLAGS =
|
||||
LIBS = -lm -lstdc++
|
||||
YACC = bison -y
|
||||
LEX = flex
|
||||
LEXLIB = -lfl
|
||||
EXEEXT =
|
||||
OBJEXT = o
|
||||
LIBEXT = so
|
||||
DLLEXT = .so
|
||||
IMPLIBEXT = def
|
||||
LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%)
|
||||
DLLTOOL = false
|
||||
DLLWRAP =
|
||||
AR = ar rc
|
||||
RANLIB = ranlib
|
||||
STRIP = strip
|
||||
WINDRES = mingw32-windres
|
||||
LN = ln
|
||||
LN_S = ln -s
|
||||
TOOLSDIR = $(TOPOBJDIR)
|
||||
AS = as
|
||||
LD = ld
|
||||
LDFLAGS =
|
||||
LDCOMBINE = $(LD) -r
|
||||
RM = rm -f
|
||||
MV = mv
|
||||
LINT =
|
||||
LINTFLAGS =
|
||||
INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL)
|
||||
EXTRACFLAGS = -mpreferred-stack-boundary=2 -fno-strict-aliasing -gstabs+ -Wpointer-arith
|
||||
ALLCFLAGS = $(INCLUDES) $(DEFS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS)
|
||||
ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS)
|
||||
MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755
|
||||
WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check
|
||||
WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper
|
||||
C2MAN = $(TOPSRCDIR)/tools/c2man.pl
|
||||
RUNTEST = $(TOPSRCDIR)/tools/runtest
|
||||
WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild
|
||||
MAKEDEP = $(TOOLSDIR)/tools/makedep
|
||||
WRC = $(TOOLSDIR)/tools/wrc/wrc
|
||||
WMC = $(TOOLSDIR)/tools/wmc/wmc
|
||||
WIDL = $(TOOLSDIR)/tools/widl/widl
|
||||
RC = $(WRC)
|
||||
RC16 = $(WRC)
|
||||
RCFLAGS = --nostdinc $(INCLUDES) $(EXTRARCFLAGS)
|
||||
RC16FLAGS = -O res16 $(RCFLAGS)
|
||||
LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/unicode:$$LD_LIBRARY_PATH"
|
||||
DLLDIR = $(TOPOBJDIR)/dlls
|
||||
LIBDIR = $(TOPOBJDIR)/libs
|
||||
LIBPORT = -L$(TOPOBJDIR)/libs/port -lwine_port
|
||||
LIBUNICODE = -L$(TOPOBJDIR)/libs/unicode -lwine_unicode
|
||||
LIBUUID = -L$(TOPOBJDIR)/libs/uuid -lwine_uuid
|
||||
LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine
|
||||
|
||||
|
||||
|
||||
# Installation infos
|
||||
|
||||
INSTALL = /usr/bin/install -c $(INSTALL_FLAGS)
|
||||
INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS)
|
||||
INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS)
|
||||
INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS)
|
||||
prefix = /usr/local
|
||||
exec_prefix = ${prefix}
|
||||
bindir = ${exec_prefix}/bin
|
||||
libdir = ${exec_prefix}/lib
|
||||
datadir = ${prefix}/share
|
||||
infodir = ${prefix}/info
|
||||
mandir = ${prefix}/man
|
||||
sysconfdir = ${prefix}/etc
|
||||
includedir = ${prefix}/include/wine
|
||||
dlldir = ${exec_prefix}/lib/wine
|
||||
prog_manext = 1
|
||||
api_manext = 3w
|
||||
conf_manext = 5
|
||||
CLEAN_FILES = *.o *.a *.so *.ln *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej \
|
||||
*.flc *.spec.c *.spec.def *.dbg.c y.tab.c y.tab.h lex.yy.c core */*.o
|
||||
|
||||
OBJS = $(C_SRCS:.c=.o) $(CPP_SRCS:.cpp=.o) $(EXTRA_OBJS)
|
||||
|
||||
RCOBJS = $(RC_SRCS:.rc=.res.o)
|
||||
LINTS = $(C_SRCS:.c=.ln) $(CPP_SRCS:.cpp=.ln)
|
||||
|
||||
# Implicit rules
|
||||
|
||||
.SUFFIXES: .mc .rc .mc.rc .res .res.o .coff .spec .spec.c .spec.def .ok
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(ALLCFLAGS) -o $@ $<
|
||||
|
||||
.cpp.o:
|
||||
$(CXX) -c $(ALLCFLAGS) -o $@ $<
|
||||
|
||||
.s.o:
|
||||
$(AS) -o $@ $<
|
||||
|
||||
.mc.mc.rc:
|
||||
$(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $<
|
||||
|
||||
.rc.res:
|
||||
$(LDPATH) $(RC) $(RCFLAGS) -fo$@ $<
|
||||
|
||||
.res.res.o:
|
||||
$(WINDRES) -i $< -o $@
|
||||
|
||||
.rc.coff:
|
||||
$(WINDRES) -i $< -o $@
|
||||
|
||||
.spec.spec.c:
|
||||
$(WINEBUILD) $(DEFS) -o $@ --main-module $(MODULE) --spec $<
|
||||
|
||||
.spec.spec.def:
|
||||
$(WINEBUILD) $(DEFS) -o $@ --def $<
|
||||
|
||||
.c.ln:
|
||||
$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
|
||||
|
||||
.c.ok:
|
||||
$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
|
||||
|
||||
# 'all' target first in case the enclosing Makefile didn't define any target
|
||||
|
||||
all: Makefile
|
||||
|
||||
filter:
|
||||
@$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all
|
||||
|
||||
.PHONY: all filter
|
||||
|
||||
# Rule for main module debug channels
|
||||
|
||||
$(MODULE).dbg.c: $(C_SRCS) $(CPP_SRCS) $(C_SRCS16) $(WINEBUILD)
|
||||
$(WINEBUILD) $(DEFS) -o $@ --debug -C$(SRCDIR) $(C_SRCS) $(CPP_SRCS) $(C_SRCS16)
|
||||
|
||||
# Rule to rebuild the tools
|
||||
|
||||
$(MAKEDEP):
|
||||
cd $(TOOLSDIR)/tools && $(MAKE) `basename $@`
|
||||
|
||||
# Rules for makefile
|
||||
|
||||
Makefile: Makefile.in $(TOPSRCDIR)/configure
|
||||
@echo Makefile is older than $?, please rerun $(TOPSRCDIR)/configure
|
||||
@exit 1
|
||||
|
||||
# Rule for linting
|
||||
|
||||
$(MODULE).ln : $(LINTS)
|
||||
if test "$(LINTS)" ; \
|
||||
then \
|
||||
$(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \
|
||||
$(MV) llib-l$(MODULE).ln $(MODULE).ln ; \
|
||||
else \
|
||||
$(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \
|
||||
fi
|
||||
|
||||
lint:: $(MODULE).ln
|
||||
|
||||
# Rules for Windows API checking
|
||||
|
||||
winapi_check:: dummy
|
||||
$(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) .
|
||||
|
||||
.PHONY: winapi_check
|
||||
|
||||
# Rules for dependencies
|
||||
|
||||
$(SUBDIRS:%=%/__depend__): $(MAKEDEP) dummy
|
||||
cd `dirname $@` && $(MAKE) depend
|
||||
|
||||
depend: $(MAKEDEP) $(SUBDIRS:%=%/__depend__)
|
||||
$(MAKEDEP) $(INCLUDES) -C$(SRCDIR) $(C_SRCS) $(CPP_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(IDL_SRCS) $(EXTRA_SRCS)
|
||||
|
||||
.PHONY: depend $(SUBDIRS:%=%/__depend__)
|
||||
|
||||
# Rules for cleaning
|
||||
|
||||
$(SUBDIRS:%=%/__clean__): dummy
|
||||
cd `dirname $@` && $(MAKE) clean
|
||||
|
||||
$(SUBDIRS:%=%/__testclean__): dummy
|
||||
cd `dirname $@` && $(MAKE) testclean
|
||||
|
||||
$(EXTRASUBDIRS:%=%/__clean__): dummy
|
||||
-cd `dirname $@` && $(RM) $(CLEAN_FILES)
|
||||
|
||||
testclean:: $(SUBDIRS:%=%/__testclean__)
|
||||
|
||||
clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
|
||||
$(RM) $(CLEAN_FILES) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(PROGRAMS)
|
||||
|
||||
.PHONY: clean testclean $(SUBDIRS:%=%/__clean__) $(SUBDIRS:%=%/__testclean__) $(EXTRASUBDIRS:%=%/__clean__)
|
||||
|
||||
# Rules for installing
|
||||
|
||||
$(SUBDIRS:%=%/__install__): dummy
|
||||
cd `dirname $@` && $(MAKE) install
|
||||
|
||||
$(SUBDIRS:%=%/__install-lib__): dummy
|
||||
cd `dirname $@` && $(MAKE) install-lib
|
||||
|
||||
$(SUBDIRS:%=%/__install-dev__): dummy
|
||||
cd `dirname $@` && $(MAKE) install-dev
|
||||
|
||||
$(SUBDIRS:%=%/__uninstall__): dummy
|
||||
cd `dirname $@` && $(MAKE) uninstall
|
||||
|
||||
install:: $(INSTALLSUBDIRS:%=%/__install__)
|
||||
|
||||
uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__)
|
||||
|
||||
.PHONY: install install-lib install-dev uninstall \
|
||||
$(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \
|
||||
$(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__)
|
||||
|
||||
# Rules for checking that no imports are missing
|
||||
|
||||
$(SUBDIRS:%=%/__checklink__): dummy
|
||||
@cd `dirname $@` && $(MAKE) checklink
|
||||
|
||||
.PHONY: checklink $(SUBDIRS:%=%/__checklink__)
|
||||
|
||||
# Rules for testing
|
||||
|
||||
$(SUBDIRS:%=%/__test__): dummy
|
||||
@cd `dirname $@` && $(MAKE) test
|
||||
|
||||
$(SUBDIRS:%=%/__crosstest__): dummy
|
||||
@cd `dirname $@` && $(MAKE) crosstest
|
||||
|
||||
.PHONY: check test crosstest $(SUBDIRS:%=%/__test__) $(SUBDIRS:%=%/__crosstest__)
|
||||
|
||||
# Misc. rules
|
||||
|
||||
$(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res): $(WRC)
|
||||
|
||||
$(MC_SRCS:.mc=.mc.rc): $(WMC)
|
||||
|
||||
$(IDL_SRCS:.idl=.h): $(WIDL)
|
||||
|
||||
$(SUBDIRS): dummy
|
||||
@cd $@ && $(MAKE)
|
||||
|
||||
dummy:
|
||||
|
||||
.PHONY: dummy $(SUBDIRS)
|
||||
|
||||
# End of global rules
|
||||
|
||||
all: $(MODULE)$(DLLEXT) $(BASEMODULE)$(EXEEXT)
|
||||
|
||||
# Rule for main module spec file
|
||||
|
||||
$(MODULE).spec.c: $(RC_SRCS:.rc=.res) $(ALL_OBJS) $(WINEBUILD)
|
||||
$(WINEBUILD) $(DEFS) -o $@ --exe $(MODULE) $(APPMODE:%=--exe-mode %) $(RC_SRCS:.rc=.res) $(ALL_OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-d%) $(IMPORTS:%=-l%)
|
||||
|
||||
# Rules for .so main module
|
||||
|
||||
$(MODULE).so: $(MODULE).spec.o $(ALL_OBJS) Makefile.in
|
||||
$(LDSHARED) $(LDDLLFLAGS) $(MODULE).spec.o $(ALL_OBJS) -o $@ $(ALL_LIBS) -lc
|
||||
|
||||
$(BASEMODULE): $(WINEWRAPPER)
|
||||
$(RM) $@ && $(LN_S) $(WINEWRAPPER) $@
|
||||
|
||||
# Rules for .exe main module
|
||||
|
||||
$(MODULE): $(ALL_OBJS) $(RCOBJS) Makefile.in
|
||||
$(CC) $(ALL_OBJS) $(RCOBJS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)
|
||||
|
||||
# Rules for testing
|
||||
|
||||
check test:: $(SUBDIRS:%=%/__test__)
|
||||
|
||||
$(TESTRESULTS): $(MODULE)$(DLLEXT)
|
||||
|
||||
# Rules for installation
|
||||
|
||||
.PHONY: install_prog install_prog.so uninstall_prog uninstall_prog.so
|
||||
|
||||
install_prog.so: $(MODULE).so dummy
|
||||
$(MKINSTALLDIRS) $(dlldir)
|
||||
$(INSTALL_PROGRAM) $(MODULE).so $(dlldir)/$(MODULE).so
|
||||
|
||||
install_prog: $(MODULE) dummy
|
||||
$(MKINSTALLDIRS) $(bindir)
|
||||
$(INSTALL_PROGRAM) $(MODULE) $(bindir)/$(MODULE)
|
||||
|
||||
uninstall_prog.so: dummy
|
||||
$(RM) $(dlldir)/$(MODULE).so
|
||||
|
||||
uninstall_prog: dummy
|
||||
$(RM) $(bindir)/$(MODULE)
|
||||
|
||||
install:: install_prog$(DLLEXT)
|
||||
|
||||
uninstall:: uninstall_prog$(DLLEXT)
|
||||
|
||||
clean::
|
||||
$(RM) $(BASEMODULE) $(MODULE)
|
||||
|
||||
### Dependencies:
|
84
Makefile-precomp
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
# ReactOS lean explorer
|
||||
#
|
||||
# Makefile-precomp
|
||||
#
|
||||
# MinGW Makefile with precompiled header support
|
||||
#
|
||||
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
LINK = g++
|
||||
|
||||
CFLAGS = -DWIN32 -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
|
||||
RCFLAGS = -DWIN32 -D__WINDRES__
|
||||
LFLAGS = -Wl,--subsystem,windows
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS += -D_DEBUG -g
|
||||
RCFLAGS += -D_DEBUG
|
||||
LFLAGS += -g
|
||||
else
|
||||
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
|
||||
RCFLAGS += -DNDEBUG
|
||||
LFLAGS += -s
|
||||
endif
|
||||
|
||||
ifndef UNICODE
|
||||
UNICODE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(UNICODE),1)
|
||||
CFLAGS += -DUNICODE
|
||||
# LFLAGS+= -Wl,--entry,_wWinMain@16
|
||||
endif
|
||||
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
EXEC_SUFFIX = .exe
|
||||
RES_SUFFIX = .coff
|
||||
|
||||
VPATH = shell utility taskbar desktop dialogs
|
||||
|
||||
PROGRAM = explorer
|
||||
|
||||
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
|
||||
|
||||
OBJECTS = \
|
||||
startup.o \
|
||||
shellclasses.o \
|
||||
utility.o \
|
||||
window.o \
|
||||
dragdropimpl.o \
|
||||
shellbrowserimpl.o \
|
||||
explorer.o \
|
||||
entries.o \
|
||||
shellfs.o \
|
||||
mainframe.o \
|
||||
shellbrowser.o \
|
||||
desktop.o \
|
||||
desktopbar.o \
|
||||
taskbar.o \
|
||||
startmenu.o \
|
||||
traynotify.o \
|
||||
quicklaunch.o \
|
||||
settings.o
|
||||
|
||||
LIBS = gdi32 comctl32 ole32 uuid
|
||||
|
||||
all: precomp.h.gch $(TARGET)
|
||||
|
||||
precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
|
||||
$(CXX) $(CFLAGS) precomp.h
|
||||
|
||||
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
|
||||
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
|
||||
|
||||
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
|
||||
windres $(RCFLAGS) -o $@ explorer_intres.rc
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
|
||||
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
|
||||
|
||||
ever:
|
29
README
@@ -1,29 +0,0 @@
|
||||
========================
|
||||
ReactOS Version 0.3.x
|
||||
Updated Dec 16, 2006
|
||||
========================
|
||||
|
||||
1. What is ReactOS?
|
||||
|
||||
ReactOS is an Open Source effort to develop a quality operating system
|
||||
that is compatible with Windows NT applications and drivers.
|
||||
|
||||
The ReactOS project, although currently focused on Windows XP/2003
|
||||
drivers compatibility, is always keeping an eye toward compatibility with
|
||||
older version of Windows NT family ( NT 4.0, 2000 (NT 5.0)) and new
|
||||
Windows NT releases (Vista, etc). Applications (Win32 API) compatibility
|
||||
focus is Windows XP.
|
||||
|
||||
More information is available at http://www.reactos.org/.
|
||||
|
||||
2. Building ReactOS
|
||||
|
||||
See the INSTALL file for more details.
|
||||
|
||||
3. More information
|
||||
|
||||
See the media\doc subdirectory for some sparse notes.
|
||||
|
||||
4. Who is responsible
|
||||
|
||||
See the CREDITS file.
|
@@ -1,113 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
|
||||
<project name="ReactOS" makefile="makefile-amd64.auto" xmlns:xi="http://www.w3.org/2001/XInclude" allowwarnings="true">
|
||||
<xi:include href="config-amd64.rbuild">
|
||||
<xi:fallback>
|
||||
<xi:include href="config-amd64.template.rbuild" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
|
||||
<xi:include href="ReactOS-generic.rbuild" />
|
||||
|
||||
<define name="_M_AMD64" />
|
||||
<define name="_AMD64_" />
|
||||
<define name="_M_AXP64" />
|
||||
<define name="__x86_64__" />
|
||||
<!-- define name="_X86AMD64_" / FIXME: what is this used for? -->
|
||||
<define name="_WIN64" />
|
||||
<define name="TARGET_amd64" host="true" />
|
||||
|
||||
<define name="USE_COMPILER_EXCEPTIONS" />
|
||||
<define name ="NO_UNDERSCORE_PREFIX" />
|
||||
|
||||
<property name="PLATFORM" value="PC"/>
|
||||
<property name="usewrc" value="false"/>
|
||||
<property name="WINEBUILD_FLAGS" value="--kill-at"/>
|
||||
|
||||
<group compilerset="gcc">
|
||||
<if property="OPTIMIZE" value="1">
|
||||
<compilerflag>-ftracer</compilerflag>
|
||||
<compilerflag>-momit-leaf-frame-pointer</compilerflag>
|
||||
</if>
|
||||
<compilerflag>-fms-extensions</compilerflag>
|
||||
<compilerflag>-mpreferred-stack-boundary=4</compilerflag>
|
||||
<compilerflag compiler="midl">-m64 --win64</compilerflag>
|
||||
<!-- compilerflag compiler="cc,cxx">-gstabs+</compilerflag -->
|
||||
<!-- compilerflag compiler="as">-gstabs+</compilerflag -->
|
||||
<compilerflag>-U_X86_</compilerflag>
|
||||
<compilerflag>-UWIN32</compilerflag>
|
||||
<compilerflag>-Wno-format</compilerflag>
|
||||
</group>
|
||||
|
||||
<group linkerset="ld">
|
||||
<linkerflag>-disable-stdcall-fixup</linkerflag>
|
||||
<linkerflag>-file-alignment=0x1000</linkerflag>
|
||||
<linkerflag>-section-alignment=0x1000</linkerflag>
|
||||
<linkerflag>--unique=.eh_frame</linkerflag>
|
||||
<linkerflag>-static</linkerflag>
|
||||
<linkerflag>--exclude-all-symbols</linkerflag>
|
||||
</group>
|
||||
|
||||
<if property="USERMODE" value="1">
|
||||
<directory name="base">
|
||||
<directory name="applications">
|
||||
<xi:include href="base/applications/applications.rbuild" />
|
||||
</directory>
|
||||
<directory name="services">
|
||||
<xi:include href="base/services/services.rbuild" />
|
||||
</directory>
|
||||
<directory name="setup">
|
||||
<xi:include href="base/setup/setup.rbuild" />
|
||||
</directory>
|
||||
<directory name="shell">
|
||||
<directory name="cmd">
|
||||
<xi:include href="base/shell/cmd/cmd.rbuild" />
|
||||
</directory>
|
||||
<directory name="explorer-new">
|
||||
<xi:include href="base/shell/explorer-new/explorer.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="system">
|
||||
<xi:include href="base/system/system.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="dll">
|
||||
<xi:include href="dll/dll.rbuild" />
|
||||
</directory>
|
||||
</if>
|
||||
|
||||
<directory name="boot">
|
||||
<xi:include href="boot/boot.rbuild" />
|
||||
</directory>
|
||||
<directory name="drivers">
|
||||
<xi:include href="drivers/drivers.rbuild" />
|
||||
</directory>
|
||||
<directory name="hal">
|
||||
<xi:include href="hal/hal.rbuild" />
|
||||
</directory>
|
||||
<directory name="include">
|
||||
<xi:include href="include/directory.rbuild" />
|
||||
</directory>
|
||||
<directory name="lib">
|
||||
<xi:include href="lib/lib.rbuild" />
|
||||
</directory>
|
||||
<directory name="media">
|
||||
<xi:include href="media/media.rbuild" />
|
||||
</directory>
|
||||
<directory name="modules">
|
||||
<xi:include href="modules/directory.rbuild" />
|
||||
</directory>
|
||||
<directory name="ntoskrnl">
|
||||
<xi:include href="ntoskrnl/ntoskrnl.rbuild" />
|
||||
<if property="BUILD_MP" value="1">
|
||||
<xi:include href="ntoskrnl/ntkrnlmp.rbuild" />
|
||||
</if>
|
||||
</directory>
|
||||
<directory name="subsystems">
|
||||
<xi:include href="subsystems/subsystems.rbuild" />
|
||||
</directory>
|
||||
<directory name="tools">
|
||||
<xi:include href="tools/tools.rbuild" />
|
||||
</directory>
|
||||
|
||||
</project>
|
@@ -1,163 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
|
||||
<project name="ReactOS" makefile="makefile-arm.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config-arm.rbuild">
|
||||
<xi:fallback>
|
||||
<xi:include href="config-arm.template.rbuild" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
|
||||
<xi:include href="ReactOS-generic.rbuild" />
|
||||
|
||||
<!-- <define name="_M_ARM" /> Already defined by toolchain -->
|
||||
<define name="_ARM_" />
|
||||
<define name="__arm__" />
|
||||
<define name="TARGET_arm" host="true" />
|
||||
|
||||
<define name="USE_COMPILER_EXCEPTIONS" />
|
||||
|
||||
<property name="WINEBUILD_FLAGS" value="--kill-at"/>
|
||||
|
||||
<include>include/reactos/arm</include>
|
||||
|
||||
<if property="SARCH" value="versatile">
|
||||
<define name="BOARD_CONFIG_VERSATILE"/>
|
||||
</if>
|
||||
|
||||
<group compilerset="gcc">
|
||||
<if property="OPTIMIZE" value="1">
|
||||
<compilerflag>-ftracer</compilerflag>
|
||||
</if>
|
||||
<compilerflag>-fms-extensions</compilerflag>
|
||||
<compilerflag>-Wno-attributes</compilerflag>
|
||||
<compilerflag>-U_UNICODE</compilerflag>
|
||||
<compilerflag>-UUNICODE</compilerflag>
|
||||
</group>
|
||||
|
||||
|
||||
<define name="__MSVCRT__"/> <!-- DUBIOUS -->
|
||||
|
||||
<group linkerset="ld">
|
||||
<linkerflag>--strip-debug</linkerflag> <!-- INVESTIGATE -->
|
||||
<linkerflag>-static</linkerflag> <!-- INVESTIGATE -->
|
||||
<linkerflag>-file-alignment=0x1000</linkerflag>
|
||||
<linkerflag>-section-alignment=0x1000</linkerflag>
|
||||
</group>
|
||||
|
||||
<directory name="media">
|
||||
<directory name="nls">
|
||||
<xi:include href="media/nls/nls.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="lib">
|
||||
<directory name="drivers">
|
||||
<directory name="csq">
|
||||
<xi:include href="lib/drivers/csq/csq.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="cportlib">
|
||||
<xi:include href="lib/cportlib/cportlib.rbuild" />
|
||||
</directory>
|
||||
<directory name="debugsup">
|
||||
<xi:include href="lib/debugsup/debugsup.rbuild" />
|
||||
</directory>
|
||||
<directory name="3rdparty">
|
||||
<directory name="zlib">
|
||||
<xi:include href="lib/3rdparty/zlib/zlib.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="rtl">
|
||||
<xi:include href="lib/rtl/rtl.rbuild" />
|
||||
</directory>
|
||||
<directory name="host">
|
||||
<directory name="wcsfuncs">
|
||||
<xi:include href="lib/host/wcsfuncs/wcsfuncs.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="inflib">
|
||||
<xi:include href="lib/inflib/inflib.rbuild" />
|
||||
</directory>
|
||||
<directory name="newinflib">
|
||||
<xi:include href="lib/newinflib/inflib.rbuild" />
|
||||
</directory>
|
||||
<directory name="cmlib">
|
||||
<xi:include href="lib/cmlib/cmlib.rbuild" />
|
||||
</directory>
|
||||
<directory name="pseh">
|
||||
<xi:include href="lib/pseh/pseh.rbuild" />
|
||||
</directory>
|
||||
<directory name="rossym">
|
||||
<xi:include href="lib/rossym/rossym.rbuild" />
|
||||
</directory>
|
||||
<directory name="sdk">
|
||||
<directory name="crt">
|
||||
<xi:include href="lib/sdk/crt/crt.rbuild" />
|
||||
<xi:include href="lib/sdk/crt/libcntpr.rbuild" />
|
||||
</directory>
|
||||
<directory name="ioevent">
|
||||
<xi:include href="lib/sdk/ioevent/ioevent.rbuild" />
|
||||
</directory>
|
||||
<directory name="nt">
|
||||
<xi:include href="lib/sdk/nt/nt.rbuild" />
|
||||
</directory>
|
||||
<directory name="wdmguid">
|
||||
<xi:include href="lib/sdk/wdmguid/wdmguid.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="ntdllsys">
|
||||
<xi:include href="lib/ntdllsys/ntdllsys.rbuild" />
|
||||
</directory>
|
||||
<directory name="smlib">
|
||||
<xi:include href="lib/smlib/smlib.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="include">
|
||||
<xi:include href="include/directory.rbuild" />
|
||||
</directory>
|
||||
<directory name="tools">
|
||||
<xi:include href="tools/tools.rbuild" />
|
||||
</directory>
|
||||
<directory name="ntoskrnl">
|
||||
<xi:include href="ntoskrnl/ntoskrnl.rbuild" />
|
||||
</directory>
|
||||
<directory name="hal">
|
||||
<xi:include href="hal/hal.rbuild" />
|
||||
</directory>
|
||||
<directory name="boot">
|
||||
<xi:include href="boot/boot.rbuild" />
|
||||
</directory>
|
||||
<directory name="drivers">
|
||||
<directory name="storage">
|
||||
<directory name="class">
|
||||
<directory name="ramdisk">
|
||||
<xi:include href="drivers/storage/class/ramdisk/ramdisk.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="filesystems">
|
||||
<directory name="fastfat">
|
||||
<xi:include href="drivers/filesystems/fastfat/vfatfs.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="base">
|
||||
<directory name="kdcom">
|
||||
<xi:include href="drivers/base/kdcom/kdcom.rbuild" />
|
||||
</directory>
|
||||
<directory name="bootvid">
|
||||
<xi:include href="drivers/base/bootvid/bootvid.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="dll">
|
||||
<directory name="ntdll">
|
||||
<xi:include href="dll/ntdll/ntdll.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="base">
|
||||
<directory name="system">
|
||||
<directory name="smss">
|
||||
<xi:include href="base/system/smss/smss.rbuild" />
|
||||
</directory>
|
||||
</directory>
|
||||
</directory>
|
||||
</project>
|
@@ -1,152 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
|
||||
<group xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="baseaddress.rbuild" />
|
||||
|
||||
<define name="__REACTOS__" />
|
||||
<define name="__REACTOS__" host="true" />
|
||||
|
||||
<if property="DBG" value="1">
|
||||
<define name="DBG">1</define>
|
||||
<define name="_SEH_ENABLE_TRACE" />
|
||||
<property name="DBG_OR_KDBG" value="true" />
|
||||
</if>
|
||||
<if property="DBG" value="0">
|
||||
<define name="DBG">0</define>
|
||||
</if>
|
||||
|
||||
<if property="KDBG" value="1">
|
||||
<define name="KDBG">1</define>
|
||||
<property name="DBG_OR_KDBG" value="true" />
|
||||
</if>
|
||||
|
||||
<!-- The version target valid values are: Nt4 , NT5 , NT51 -->
|
||||
<property name="VERSION_TARGET" value="NT52" />
|
||||
|
||||
<if property="VERSION_TARGET" value="NT4">
|
||||
<define name="WINVER">0x400</define>
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x400</define>
|
||||
<define name="_WIN32_WINDOWS">0x400</define>
|
||||
<define name="_SETUPAPI_VER">0x400</define>
|
||||
</if>
|
||||
|
||||
<if property="VERSION_TARGET" value="NT5">
|
||||
<define name="WINVER">0x500</define>
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x500</define>
|
||||
<define name="_WIN32_WINDOWS">0x500</define>
|
||||
<define name="_SETUPAPI_VER">0x500</define>
|
||||
</if>
|
||||
|
||||
<if property="VERSION_TARGET" value="NT51">
|
||||
<define name="WINVER">0x501</define>
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x501</define>
|
||||
<define name="_WIN32_WINDOWS">0x501</define>
|
||||
<define name="_SETUPAPI_VER">0x501</define>
|
||||
</if>
|
||||
|
||||
<if property="VERSION_TARGET" value="NT52">
|
||||
<define name="WINVER">0x502</define>
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x502</define>
|
||||
<define name="_WIN32_WINDOWS">0x502</define>
|
||||
<define name="_SETUPAPI_VER">0x502</define>
|
||||
</if>
|
||||
|
||||
<if property="VERSION_TARGET" value="NT6">
|
||||
<define name="WINVER">0x600</define>
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x600</define>
|
||||
<define name="_WIN32_WINDOWS">0x600</define>
|
||||
<define name="_SETUPAPI_VER">0x600</define>
|
||||
</if>
|
||||
|
||||
<include>sdk/include</include>
|
||||
<include root="intermediate">sdk/include</include>
|
||||
<include>sdk/include/psdk</include>
|
||||
<include root="intermediate">sdk/include/psdk</include>
|
||||
<include>sdk/include/dxsdk</include>
|
||||
<include root="intermediate">sdk/include/dxsdk</include>
|
||||
<include>sdk/include/crt</include>
|
||||
<include compilerset="gcc">sdk/include/crt/mingw32</include>
|
||||
<include compilerset="msc">sdk/include/crt/msc</include>
|
||||
<include>sdk/include/ddk</include>
|
||||
<include>sdk/include/GL</include>
|
||||
<include>sdk/include/ndk</include>
|
||||
<include>sdk/include/reactos</include>
|
||||
<include root="intermediate">sdk/include/reactos</include>
|
||||
<include root="intermediate">sdk/include/reactos/mc</include>
|
||||
<include>sdk/include/reactos/libs</include>
|
||||
|
||||
<include host="true">sdk/include</include>
|
||||
<include host="true" root="intermediate">sdk/include</include>
|
||||
<include host="true">sdk/include/reactos</include>
|
||||
<include host="true">sdk/include/reactos/wine</include>
|
||||
|
||||
<group compilerset="gcc">
|
||||
<compilerflag>-Wall</compilerflag>
|
||||
<compilerflag>-Wno-char-subscripts</compilerflag>
|
||||
<compilerflag compiler="cxx">-Wno-non-virtual-dtor</compilerflag>
|
||||
</group>
|
||||
|
||||
<group compilerset="msc">
|
||||
<define name="inline" compiler="cc">__inline</define>
|
||||
<define name="__STDC__" compiler="cc">1</define>
|
||||
<compilerflag>/Zl</compilerflag>
|
||||
<compilerflag>/Zi</compilerflag>
|
||||
<compilerflag>/W1</compilerflag>
|
||||
</group>
|
||||
|
||||
<group compilerset="gcc">
|
||||
<if property="OPTIMIZE" value="1">
|
||||
<compilerflag>-Os</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="2">
|
||||
<compilerflag>-Os</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="3">
|
||||
<compilerflag>-O1</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="4">
|
||||
<compilerflag>-O2</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="5">
|
||||
<compilerflag>-O3</compilerflag>
|
||||
</if>
|
||||
|
||||
<compilerflag>-fno-strict-aliasing</compilerflag>
|
||||
<compilerflag>-Wpointer-arith</compilerflag>
|
||||
<compilerflag>-Wno-multichar</compilerflag>
|
||||
<compilerflag>-Wno-error=uninitialized</compilerflag>
|
||||
<!-- compilerflag>-H</compilerflag> enable this for header traces -->
|
||||
</group>
|
||||
|
||||
<group compilerset="msc">
|
||||
<if property="OPTIMIZE" value="1">
|
||||
<compilerflag>/O1</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="2">
|
||||
<compilerflag>/O2</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="3">
|
||||
<compilerflag>/Ox /GS-</compilerflag>
|
||||
<compilerflag>/Ot</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="4">
|
||||
<compilerflag>/Ox /GS-</compilerflag>
|
||||
<compilerflag>/Os</compilerflag>
|
||||
</if>
|
||||
<if property="OPTIMIZE" value="5">
|
||||
<compilerflag>/Ox /GS-</compilerflag>
|
||||
<compilerflag>/Os</compilerflag>
|
||||
<compilerflag>/Ob2</compilerflag>
|
||||
<compilerflag>/GF</compilerflag>
|
||||
<compilerflag>/Gy</compilerflag>
|
||||
</if>
|
||||
|
||||
<compilerflag>/GS-</compilerflag>
|
||||
</group>
|
||||
|
||||
</group>
|
@@ -1,45 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
|
||||
<project name="ReactOS" makefile="makefile-i386.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config.rbuild">
|
||||
<xi:fallback>
|
||||
<xi:include href="config.template.rbuild" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
|
||||
<xi:include href="ReactOS-generic.rbuild" />
|
||||
|
||||
<define name="_M_IX86" />
|
||||
<define name="_X86_" />
|
||||
<define name="__i386__" />
|
||||
<define name="TARGET_i386" host="true" />
|
||||
|
||||
<define name="USE_COMPILER_EXCEPTIONS" />
|
||||
<define name="_USE_32BIT_TIME_T" />
|
||||
|
||||
<property name="PLATFORM" value="PC"/>
|
||||
|
||||
<group compilerset="gcc">
|
||||
<if property="OPTIMIZE" value="1">
|
||||
<compilerflag>-ftracer</compilerflag>
|
||||
<compilerflag>-momit-leaf-frame-pointer</compilerflag>
|
||||
</if>
|
||||
<compilerflag>-fms-extensions</compilerflag>
|
||||
<compilerflag>-mpreferred-stack-boundary=2</compilerflag>
|
||||
<compilerflag compiler="midl">-m32 --win32</compilerflag>
|
||||
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
|
||||
<compilerflag compiler="cc,cxx">-fno-set-stack-executable</compilerflag>
|
||||
<compilerflag compiler="cc,cxx">-fno-optimize-sibling-calls</compilerflag>
|
||||
<compilerflag compiler="as">-gstabs+</compilerflag>
|
||||
</group>
|
||||
|
||||
<group linkerset="ld">
|
||||
<linkerflag>-disable-stdcall-fixup</linkerflag>
|
||||
<linkerflag>-file-alignment=0x1000</linkerflag>
|
||||
<linkerflag>-section-alignment=0x1000</linkerflag>
|
||||
</group>
|
||||
|
||||
<directory name="sdk">
|
||||
<xi:include href="sdk/sdk.rbuild" />
|
||||
</directory>
|
||||
</project>
|
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
|
||||
<project name="ReactOS" makefile="makefile-ppc.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config-ppc.rbuild">
|
||||
<xi:fallback>
|
||||
<xi:include href="config-ppc.template.rbuild" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
|
||||
<xi:include href="ReactOS-generic.rbuild" />
|
||||
|
||||
<property name="MKHIVE_OPTIONS" value="-be" />
|
||||
<property name="OFWLDR_LINKFORMAT" value="-L$(INTERMEDIATE)/lib/ppcmmu -lppcmmu_code -nostdlib -nostartfiles -lgcc -Wl,-e,__start -Wl,-Ttext,0xe00000 -N"/>
|
||||
<property name="NTOSKRNL_SHARED" value="-Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -shared"/>
|
||||
|
||||
<define name="__MSVCRT__"/>
|
||||
<compilerflag>-fshort-wchar</compilerflag>
|
||||
<compilerflag>-fsigned-char</compilerflag>
|
||||
<compilerflag>-mfull-toc</compilerflag>
|
||||
<compilerflag>-meabi</compilerflag>
|
||||
<compilerflag>-O2</compilerflag>
|
||||
<compilerflag>-Wno-strict-aliasing</compilerflag>
|
||||
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
|
||||
<compilerflag compiler="as">-gstabs+</compilerflag>
|
||||
</project>
|
@@ -1,30 +0,0 @@
|
||||
; Format:
|
||||
; COMPONENT_NAME PATH_TO_COMPONENT_SOURCES
|
||||
; COMPONENT_NAME - Name of the module. Eg. kernel32.
|
||||
; PATH_TO_COMPONENT_SOURCES - Relative path to sources (relative to where rgenstat is run from).
|
||||
|
||||
advapi32 ../reactos/dll/win32/advapi32
|
||||
crtdll ../reactos/dll/win32/crtdll
|
||||
gdi32 ../reactos/dll/win32/gdi32
|
||||
gdiplus ../reactos/dll/win32/gdiplus
|
||||
iphlpapi ../reactos/dll/win32/iphlpapi
|
||||
kernel32 ../reactos/dll/win32/kernel32
|
||||
msvcrt ../reactos/dll/win32/msvcrt
|
||||
rasapi32 ../reactos/dll/win32/rasapi32
|
||||
rasdlg ../reactos/dll/win32/rasdlg
|
||||
rasman ../reactos/dll/win32/rasman
|
||||
rpcrt4 ../reactos/dll/win32/rpcrt4
|
||||
secur32 ../reactos/dll/win32/secur32
|
||||
snmpapi ../reactos/dll/win32/snmpapi
|
||||
user32 ../reactos/dll/win32/user32
|
||||
version ../reactos/dll/win32/version
|
||||
winspool ../reactos/dll/win32/winspool
|
||||
ws2_32 ../reactos/dll/win32/ws2_32
|
||||
wsock32 ../reactos/dll/win32/wsock32
|
||||
videoprt ../reactos/drivers/video/videoprt
|
||||
ndis ../reactos/drivers/network/ndis
|
||||
tdi ../reactos/drivers/network/tdi
|
||||
scsiport ../reactos/drivers/storage/scsiport
|
||||
ntoskrnl ../reactos/ntoskrnl
|
||||
rtl ../reactos/lib/rtl
|
||||
win32k ../reactos/subsystems/win32/win32k
|
@@ -1,263 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
|
||||
<group xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<property name="BASEADDRESS_REGTESTS" value="0x07000000" />
|
||||
<property name="BASEADDRESS_NOTIFYHOOK" value="0x08000000" />
|
||||
<property name="BASEADDRESS_FAULTREP" value="0x107A0000" />
|
||||
<property name="BASEADDRESS_QMGRPRXY" value="0x1f710000" />
|
||||
<property name="BASEADDRESS_CRYPTDLG" value="0x209c0000" />
|
||||
<property name="BASEADDRESS_COMCAT" value="0x20a50000" />
|
||||
<property name="BASEADDRESS_WINDOWSCODECS" value="0x26c40000" />
|
||||
<property name="BASEADDRESS_DEVENUM" value="0x35670000" />
|
||||
<property name="BASEADDRESS_RSABASE" value="0x35700000" />
|
||||
<property name="BASEADDRESS_RSAENH" value="0x35780000" />
|
||||
<property name="BASEADDRESS_URL" value="0x42ea0000" />
|
||||
<property name="BASEADDRESS_WLANAPI" value="0x470f0000" />
|
||||
<property name="BASEADDRESS_PIDGEN" value="0x473e0000" />
|
||||
<property name="BASEADDRESS_DWMAPI" value="0x4a3f0000" />
|
||||
<property name="BASEADDRESS_T2EMBED" value="0x4b310000" />
|
||||
<property name="BASEADDRESS_MSFTEDIT" value="0x4b460000" />
|
||||
<property name="BASEADDRESS_LOADPERF" value="0x4b920000" />
|
||||
<property name="BASEADDRESS_MPRAPI" value="0x4c400000" />
|
||||
<property name="BASEADDRESS_WUAPI" value="0x506a0000" />
|
||||
<property name="BASEADDRESS_SRCLIENT" value="0x512c0000" />
|
||||
<property name="BASEADDRESS_PSTOREC" value="0x513d0000" />
|
||||
<property name="BASEADDRESS_LPK" value="0x516c0000" />
|
||||
<property name="BASEADDRESS_MSGSM32ACM" value="0x56db0000" />
|
||||
<property name="BASEADDRESS_MSDVBNP" value="0x58280000" />
|
||||
<property name="BASEADDRESS_MSG711ACM" value="0x584f0000" />
|
||||
<property name="BASEADDRESS_IMAADP32ACM" value="0x585e0000" />
|
||||
<property name="BASEADDRESS_BDAPLGIN" value="0x58600000" />
|
||||
<property name="BASEADDRESS_TELEPHON" value="0x58750000" />
|
||||
<property name="BASEADDRESS_PWRCFG" value="0x587e0000" />
|
||||
<property name="BASEADDRESS_MMSYS" value="0x588a0000" />
|
||||
<property name="BASEADDRESS_JOY" value="0x589b0000" />
|
||||
<property name="BASEADDRESS_QMGR" value="0x59620000" />
|
||||
<property name="BASEADDRESS_MSVIDCTL" value="0x59660000" />
|
||||
<property name="BASEADDRESS_UXTHEME" value="0x5ad70000" />
|
||||
<property name="BASEADDRESS_VDMDBG" value="0x5b0d0000" />
|
||||
<property name="BASEADDRESS_UNTFS" value="0x5b340000" />
|
||||
<property name="BASEADDRESS_OBJSEL" value="0x5b400000" />
|
||||
<property name="BASEADDRESS_UFAT" value="0x5b570000" />
|
||||
<property name="BASEADDRESS_TAPIUI" value="0x5b770000" />
|
||||
<property name="BASEADDRESS_UEXT2" value="0x5b7a0000" />
|
||||
<property name="BASEADDRESS_SLAYER" value="0x5c7e0000" />
|
||||
<property name="BASEADDRESS_USRMGR" value="0x5c900000" />
|
||||
<property name="BASEADDRESS_SHIMGVW" value="0x5cb00000" />
|
||||
<property name="BASEADDRESS_COMMCTRL" value="0x5d090000" />
|
||||
<property name="BASEADDRESS_DPLAYX" value="0x5e080000" />
|
||||
<property name="BASEADDRESS_INPUT" value="0x5e400000" />
|
||||
<property name="BASEADDRESS_NTLANMAN" value="0x5f380000" />
|
||||
<property name="BASEADDRESS_DINPUT" value="0x5f580000" />
|
||||
<property name="BASEADDRESS_NETID" value="0x5f660000" />
|
||||
<property name="BASEADDRESS_NTPRINT" value="0x5f6a0000" />
|
||||
<property name="BASEADDRESS_MSSIP32" value="0x60430000" />
|
||||
<property name="BASEADDRESS_MSISIP" value="0x60b10000" />
|
||||
<property name="BASEADDRESS_INSENG" value="0x61000000" />
|
||||
<property name="BASEADDRESS_QEDIT" value="0x611c0000" />
|
||||
<property name="BASEADDRESS_MODEMUI" value="0x61650000" />
|
||||
<property name="BASEADDRESS_MAPI32" value="0x62250000" />
|
||||
<property name="BASEADDRESS_MCIWAVE" value="0x622a0000" />
|
||||
<property name="BASEADDRESS_MCISEQ" value="0x622b0000" />
|
||||
<property name="BASEADDRESS_MCIQTZ32" value="0x622c0000" />
|
||||
<property name="BASEADDRESS_MCICDA" value="0x622e0000" />
|
||||
<property name="BASEADDRESS_LOCALUI" value="0x62f70000" />
|
||||
<property name="BASEADDRESS_HDWWIZ" value="0x64d40000" />
|
||||
<property name="BASEADDRESS_TIMEDATE" value="0x64da0000" />
|
||||
<property name="BASEADDRESS_SYSDM" value="0x64dd0000" />
|
||||
<property name="BASEADDRESS_NCPL" value="0x64ea0000" />
|
||||
<property name="BASEADDRESS_MAIN" value="0x64f40000" />
|
||||
<property name="BASEADDRESS_INTL" value="0x64fb0000" />
|
||||
<property name="BASEADDRESS_DESK" value="0x65080000" />
|
||||
<property name="BASEADDRESS_APPWIZ" value="0x65100000" />
|
||||
<property name="BASEADDRESS_MLANG" value="0x65140000" />
|
||||
<property name="BASEADDRESS_ACCESS" value="0x65180000" />
|
||||
<property name="BASEADDRESS_ITSS" value="0x66370000" />
|
||||
<property name="BASEADDRESS_ITIRCL" value="0x663a0000" />
|
||||
<property name="BASEADDRESS_INETMIB1" value="0x666f0000" />
|
||||
<property name="BASEADDRESS_INITPKI" value="0x66b00000" />
|
||||
<property name="BASEADDRESS_WSHTCPIP" value="0x677b0000" />
|
||||
<property name="BASEADDRESS_CRYPT32" value="0x67ab0000" />
|
||||
<property name="BASEADDRESS_HTTPAPI" value="0x67ae0000" />
|
||||
<property name="BASEADDRESS_HID" value="0x688f0000" />
|
||||
<property name="BASEADDRESS_PSXDLL" value="0x68eb0000" />
|
||||
<property name="BASEADDRESS_PSAPI" value="0x68f70000" />
|
||||
<property name="BASEADDRESS_KSPROXY" value="0x68f90000" />
|
||||
<property name="BASEADDRESS_GETUNAME" value="0x69110000" />
|
||||
<property name="BASEADDRESS_OLEACC" value="0x69640000" />
|
||||
<property name="BASEADDRESS_WINMM" value="0x697d0000" />
|
||||
<property name="BASEADDRESS_MSIMG32" value="0x69cc0000" />
|
||||
<property name="BASEADDRESS_BROWSEUI" value="0x69cd0000" />
|
||||
<property name="BASEADDRESS_NETPLWIZ" value="0x6a240000" />
|
||||
<property name="BASEADDRESS_SHELL32" value="0x6a360000" />
|
||||
<property name="BASEADDRESS_UNICODE" value="0x6b200000" />
|
||||
<property name="BASEADDRESS_ADVPACK" value="0x6b300000" />
|
||||
<property name="BASEADDRESS_CONTROL" value="0x6b310000" />
|
||||
<property name="BASEADDRESS_NCPA" value="0x6b320000" />
|
||||
<property name="BASEADDRESS_DBGHELP" value="0x6b330000" />
|
||||
<property name="BASEADDRESS_DINPUT8" value="0x6b340000" />
|
||||
<property name="BASEADDRESS_DXDIAGN" value="0x6b350000" />
|
||||
<property name="BASEADDRESS_DSOUND" value="0x6b360000" />
|
||||
<property name="BASEADDRESS_GLU32" value="0x6b370000" />
|
||||
<property name="BASEADDRESS_MESA32" value="0x6b380000" />
|
||||
<property name="BASEADDRESS_OPENGL32" value="0x6b390000" />
|
||||
<property name="BASEADDRESS_SECUR32" value="0x6b3a0000" />
|
||||
<property name="BASEADDRESS_SMDLL" value="0x6b3b0000" />
|
||||
<property name="BASEADDRESS_URLMON" value="0x6b3c0000" />
|
||||
<property name="BASEADDRESS_SERIALUI" value="0x6b3d0000" />
|
||||
<property name="BASEADDRESS_HLINK" value="0x6c6e0000" />
|
||||
<property name="BASEADDRESS_DESKMON" value="0x6d400000" />
|
||||
<property name="BASEADDRESS_DESKADP" value="0x6d410000" />
|
||||
<property name="BASEADDRESS_WLDAP32" value="0x6e130000" />
|
||||
<property name="BASEADDRESS_SXS" value="0x6e160000" />
|
||||
<property name="BASEADDRESS_SCHANNEL" value="0x6e360000" />
|
||||
<property name="BASEADDRESS_CONSOLE" value="0x6e4d0000" />
|
||||
<property name="BASEADDRESS_COMPSTUI" value="0x6ec10000" />
|
||||
<property name="BASEADDRESS_HNETCFG" value="0x6edb0000" />
|
||||
<property name="BASEADDRESS_CLB" value="0x6f2b0000" />
|
||||
<property name="BASEADDRESS_FONTEXT" value="0x6f7b0000" />
|
||||
<property name="BASEADDRESS_JSCRIPT" value="0x6fe80000" />
|
||||
<property name="BASEADDRESS_CARDS" value="0x701a0000" />
|
||||
<property name="BASEADDRESS_WININET" value="0x70200000" />
|
||||
<property name="BASEADDRESS_WINHTTP" value="0x70c60000" />
|
||||
<property name="BASEADDRESS_BATT" value="0x70cb0000" />
|
||||
<property name="BASEADDRESS_AMSTREAM" value="0x71030000" />
|
||||
<property name="BASEADDRESS_ACLUI" value="0x71550000" />
|
||||
<property name="BASEADDRESS_DHCPCSVC" value="0x71650000" />
|
||||
<property name="BASEADDRESS_SHDOCVW" value="0x71700000" />
|
||||
<property name="BASEADDRESS_ACTXPRXY" value="0x71800000" />
|
||||
<property name="BASEADDRESS_MSWSOCK" value="0x71a30000" />
|
||||
<property name="BASEADDRESS_WSOCK32" value="0x71ab0000" />
|
||||
<property name="BASEADDRESS_ACLEDIT" value="0x71b70000" />
|
||||
<property name="BASEADDRESS_NETAPI32" value="0x71c00000" />
|
||||
<property name="BASEADDRESS_OLESVR32" value="0x71dd0000" />
|
||||
<property name="BASEADDRESS_OLECLI32" value="0x71df0000" />
|
||||
<property name="BASEADDRESS_OLETHK32" value="0x71e10000" />
|
||||
<property name="BASEADDRESS_NETEVENT" value="0x71e70000" />
|
||||
<property name="BASEADDRESS_DPLAY" value="0x71e80000" />
|
||||
<property name="BASEADDRESS_SECURITY" value="0x71f10000" />
|
||||
<property name="BASEADDRESS_MSSIGN32" value="0x720c0000" />
|
||||
<property name="BASEADDRESS_CRYPTUI" value="0x720d0000" />
|
||||
<property name="BASEADDRESS_WINFAX" value="0x722c0000" />
|
||||
<property name="BASEADDRESS_WINSCARD" value="0x723d0000" />
|
||||
<property name="BASEADDRESS_DEVMGR" value="0x72a90000" />
|
||||
<property name="BASEADDRESS_MSADP32ACM" value="0x72cb0000" />
|
||||
<property name="BASEADDRESS_WDMAUD" value="0x72d20000" />
|
||||
<property name="BASEADDRESS_WINSPOOL" value="0x72f50000" />
|
||||
<property name="BASEADDRESS_SOFTPUB" value="0x73290000" />
|
||||
<property name="BASEADDRESS_MSCAT32" value="0x732b0000" />
|
||||
<property name="BASEADDRESS_MSTASK" value="0x73520000" />
|
||||
<property name="BASEADDRESS_TRAFFIC" value="0x73550000" />
|
||||
<property name="BASEADDRESS_MCIAVI32" value="0x73610000" />
|
||||
<property name="BASEADDRESS_MSVIDC32" value="0x73650000" />
|
||||
<property name="BASEADDRESS_MSRLE32" value="0x73660000" />
|
||||
<property name="BASEADDRESS_MSDMO" value="0x73670000" />
|
||||
<property name="BASEADDRESS_AVICAP32" value="0x739e0000" />
|
||||
<property name="BASEADDRESS_AVIFIL32" value="0x73ac0000" />
|
||||
<property name="BASEADDRESS_MSCMS" value="0x73af0000" />
|
||||
<property name="BASEADDRESS_DCIMAN32" value="0x73b10000" />
|
||||
<property name="BASEADDRESS_STI" value="0x73b60000" />
|
||||
<property name="BASEADDRESS_ICCVID" value="0x73bc0000" />
|
||||
<property name="BASEADDRESS_COREDLL" value="0x73d80000" />
|
||||
<property name="BASEADDRESS_LZ32" value="0x73d80000" />
|
||||
<property name="BASEADDRESS_KSUSER" value="0x73ea0000" />
|
||||
<property name="BASEADDRESS_ICMP" value="0x741f0000" />
|
||||
<property name="BASEADDRESS_SPOOLSS" value="0x742a0000" />
|
||||
<property name="BASEADDRESS_MSIMTF" value="0x746b0000" />
|
||||
<property name="BASEADDRESS_MSCTF" value="0x746e0000" />
|
||||
<property name="BASEADDRESS_QUARTZ" value="0x747d0000" />
|
||||
<property name="BASEADDRESS_USERENV" value="0x74850000" />
|
||||
<property name="BASEADDRESS_SYSSETUP" value="0x74a10000" />
|
||||
<property name="BASEADDRESS_WS2_32" value="0x74aa0000" />
|
||||
<property name="BASEADDRESS_POWRPROF" value="0x74ad0000" />
|
||||
<property name="BASEADDRESS_MSXML3" value="0x74ae0000" />
|
||||
<property name="BASEADDRESS_PRINTUI" value="0x74b40000" />
|
||||
<property name="BASEADDRESS_MMDRV" value="0x74c30000" />
|
||||
<property name="BASEADDRESS_PDH" value="0x74c70000" />
|
||||
<property name="BASEADDRESS_OLEDLG" value="0x74d00000" />
|
||||
<property name="BASEADDRESS_SAMSRV" value="0x74f30000" />
|
||||
<property name="BASEADDRESS_RESUTILS" value="0x75070000" />
|
||||
<property name="BASEADDRESS_SAMLIB" value="0x750c0000" />
|
||||
<property name="BASEADDRESS_CABINET" value="0x75120000" />
|
||||
<property name="BASEADDRESS_NETCFGX" value="0x755f0000" />
|
||||
<property name="BASEADDRESS_IPHLPAPI" value="0x75700000" />
|
||||
<property name="BASEADDRESS_NDDEAPI" value="0x75940000" />
|
||||
<property name="BASEADDRESS_MSGINA" value="0x75970000" />
|
||||
<property name="BASEADDRESS_LOCALSPL" value="0x75b80000" />
|
||||
<property name="BASEADDRESS_CRYPTNET" value="0x75e60000" />
|
||||
<property name="BASEADDRESS_RPCRT4" value="0x76000000" />
|
||||
<property name="BASEADDRESS_SHLWAPI" value="0x76100000" />
|
||||
<property name="BASEADDRESS_INETCOMM" value="0x76140000" />
|
||||
<property name="BASEADDRESS_COMCTL32" value="0x76170000" />
|
||||
<property name="BASEADDRESS_COMDLG32" value="0x76230000" />
|
||||
<property name="BASEADDRESS_WINSTA" value="0x762f0000" />
|
||||
<property name="BASEADDRESS_IMM32" value="0x76320000" />
|
||||
<property name="BASEADDRESS_D3D8THK" value="0x76340000" />
|
||||
<property name="BASEADDRESS_RICHED32" value="0x76340000" />
|
||||
<property name="BASEADDRESS_RICHED20" value="0x76360000" />
|
||||
<property name="BASEADDRESS_ODBCCP32" value="0x76380000" />
|
||||
<property name="BASEADDRESS_TWAIN_32" value="0x76380000" />
|
||||
<property name="BASEADDRESS_NETSHELL" value="0x76390000" />
|
||||
<property name="BASEADDRESS_LSASRV" value="0x76540000" />
|
||||
<property name="BASEADDRESS_MIDIMAP" value="0x76600000" />
|
||||
<property name="BASEADDRESS_WAVEMAP" value="0x76610000" />
|
||||
<property name="BASEADDRESS_MPR" value="0x76620000" />
|
||||
<property name="BASEADDRESS_MSHTML" value="0x76650000" />
|
||||
<property name="BASEADDRESS_ODBC32" value="0x76710000" />
|
||||
<property name="BASEADDRESS_SETUPAPI" value="0x76730000" />
|
||||
<property name="BASEADDRESS_CRYPTDLL" value="0x768f0000" />
|
||||
<property name="BASEADDRESS_SHFOLDER" value="0x76900000" />
|
||||
<property name="BASEADDRESS_NTDSAPI" value="0x76910000" />
|
||||
<property name="BASEADDRESS_NTMARTA" value="0x76920000" />
|
||||
<property name="BASEADDRESS_RASDLG" value="0x76930000" />
|
||||
<property name="BASEADDRESS_GDIPLUS" value="0x76a70000" />
|
||||
<property name="BASEADDRESS_ATL" value="0x76ac0000" />
|
||||
<property name="BASEADDRESS_SFC" value="0x76b50000" />
|
||||
<property name="BASEADDRESS_CREDUI" value="0x76bf0000" />
|
||||
<property name="BASEADDRESS_SFC_OS" value="0x76c10000" />
|
||||
<property name="BASEADDRESS_WINTRUST" value="0x76c30000" />
|
||||
<property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" />
|
||||
<property name="BASEADDRESS_CLUSAPI" value="0x76d10000" />
|
||||
<property name="BASEADDRESS_WMI" value="0x76d20000" />
|
||||
<property name="BASEADDRESS_DHCPCSVC" value="0x76d80000" />
|
||||
<property name="BASEADDRESS_FMIFS" value="0x76df0000" />
|
||||
<property name="BASEADDRESS_OLEAUT32" value="0x76e00000" />
|
||||
<property name="BASEADDRESS_TAPI32" value="0x76e60000" />
|
||||
<property name="BASEADDRESS_RASMAN" value="0x76e90000" />
|
||||
<property name="BASEADDRESS_RASAPI32" value="0x76ee0000" />
|
||||
<property name="BASEADDRESS_WTSAPI32" value="0x76f50000" />
|
||||
<property name="BASEADDRESS_MSVFW32" value="0x76f60000" />
|
||||
<property name="BASEADDRESS_MSACM32" value="0x77400000" />
|
||||
<property name="BASEADDRESS_CRTDLL" value="0x77630000" />
|
||||
<property name="BASEADDRESS_AUTHZ" value="0x77690000" />
|
||||
<property name="BASEADDRESS_CFGMGR32" value="0x77700000" />
|
||||
<property name="BASEADDRESS_SENSAPI" value="0x77700000" />
|
||||
<property name="BASEADDRESS_MSAFD" value="0x77780000" />
|
||||
<property name="BASEADDRESS_PACKET" value="0x77780000" />
|
||||
<property name="BASEADDRESS_MSI" value="0x77790000" />
|
||||
<property name="BASEADDRESS_SNMPAPI" value="0x777a0000" />
|
||||
<property name="BASEADDRESS_USP10" value="0x777b0000" />
|
||||
<property name="BASEADDRESS_IPRTPRIO" value="0x777c0000" />
|
||||
<property name="BASEADDRESS_WS2HELP" value="0x777e0000" />
|
||||
<property name="BASEADDRESS_WSHIRDA" value="0x777f0000" />
|
||||
<property name="BASEADDRESS_VERSION" value="0x77a40000" />
|
||||
<property name="BASEADDRESS_OLE32" value="0x77a50000" />
|
||||
<property name="BASEADDRESS_OLEPRO32" value="0x77b20000" />
|
||||
<property name="BASEADDRESS_ACTIVEDS" value="0x77cb0000" />
|
||||
<property name="BASEADDRESS_ADVAPI32" value="0x77dc0000" />
|
||||
<property name="BASEADDRESS_USER32" value="0x77e50000" />
|
||||
<property name="BASEADDRESS_GDI32" value="0x77f70000" />
|
||||
<property name="BASEADDRESS_DNSAPI" value="0x77fb0000" />
|
||||
<property name="BASEADDRESS_MSVCRT" value="0x78000000" />
|
||||
<property name="BASEADDRESS_MSVCRT20" value="0x78500000" />
|
||||
<property name="BASEADDRESS_MSVCRT40" value="0x78700000" />
|
||||
<property name="BASEADDRESS_MSCOREE" value="0x79000000" />
|
||||
<property name="BASEADDRESS_FUSION" value="0x79040000" />
|
||||
<property name="BASEADDRESS_KERNEL32" value="0x7c700000" />
|
||||
<property name="BASEADDRESS_NTDLL" value="0x7c900000" />
|
||||
<property name="BASEADDRESS_QUERY" value="0x7d9a0000" />
|
||||
<property name="BASEADDRESS_HHCTRL" value="0x7e410000" />
|
||||
<property name="BASEADDRESS_SXS" value="0x7e690000" />
|
||||
<property name="BASEADDRESS_BEEPMIDI" value="0x7ef00000" />
|
||||
<property name="BASEADDRESS_FREETYPE" value="0x7f000000" />
|
||||
</group>
|
@@ -1,92 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
|
||||
<group>
|
||||
|
||||
<!--
|
||||
This file is a template used as a starting point for compile-time
|
||||
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
|
||||
Then change the options in config.rbuild. If you don't have a config.rbuild file,
|
||||
then the defaults in this file, config.template.rbuild, will be used instead.
|
||||
|
||||
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
|
||||
options can obtain any value specified in the comment before it.
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
Sub-architecture to build for. Specify one of:
|
||||
-->
|
||||
<property name="SARCH" value="" />
|
||||
|
||||
|
||||
<!--
|
||||
Which CPU ReactOS should be optimized for. Specify one of:
|
||||
k8 opteron athlon64 athlon-fx
|
||||
|
||||
See GCC manual for more CPU names and which CPUs GCC can optimize for.
|
||||
-->
|
||||
<property name="OARCH" value="athlon64" />
|
||||
|
||||
|
||||
<!--
|
||||
What level of optimisation to use.
|
||||
0 = off (will not work)
|
||||
1 = Default option, optimize for size (-Os) with some additional options
|
||||
2 = -Os
|
||||
3 = -O1
|
||||
4 = -O2
|
||||
5 = -O3
|
||||
-->
|
||||
<property name="OPTIMIZE" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile in the integrated kernel debugger.
|
||||
-->
|
||||
<property name="KDBG" value="0" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging.
|
||||
-->
|
||||
<property name="DBG" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging with GDB. If you don't use GDB, don't
|
||||
enable this.
|
||||
-->
|
||||
<property name="GDB" value="0" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile apps/libs with features covered software patents or not.
|
||||
If you live in a country where software patents are valid/apply, don't
|
||||
enable this (except they/you purchased a license from the patent owner).
|
||||
This settings is disabled (0) by default.
|
||||
-->
|
||||
<property name="NSWPAT" value="1" />
|
||||
|
||||
<!--
|
||||
Whether to compile with the KD protocol. This will disable support for KDBG
|
||||
as well as rossym and symbol lookups, and allow WinDBG to connect to ReactOS.
|
||||
This is currently not fully working, and requires kdcom from Windows 2003 or
|
||||
TinyKRNL. Booting into debug mode with this flag enabled will result in a
|
||||
failure to enter GUI mode. Do not enable unless you know what you're doing.
|
||||
-->
|
||||
<property name="_WINKD_" value="1" />
|
||||
|
||||
<!--
|
||||
Whether to compile support for ELF files. Do not enable unless you know what
|
||||
you're doing.
|
||||
-->
|
||||
<property name="_ELF_" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile any usermode parts. This is while kernel mode is under
|
||||
heavy development and usermode part not relevant for bootcd.
|
||||
-->
|
||||
<property name="USERMODE" value="1" />
|
||||
|
||||
|
||||
</group>
|
@@ -1,93 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
|
||||
<group>
|
||||
|
||||
<!--
|
||||
This file is a template used as a starting point for compile-time
|
||||
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
|
||||
Then change the options in config.rbuild. If you don't have a config.rbuild file,
|
||||
then the defaults in this file, config.template.rbuild, will be used instead.
|
||||
|
||||
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
|
||||
options can obtain any value specified in the comment before it.
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
Sub-architecture (board) to build for. Specify one of:
|
||||
kurobox versatile omap3
|
||||
|
||||
-->
|
||||
<property name="SARCH" value="versatile" />
|
||||
|
||||
|
||||
<!--
|
||||
Generate instructions for this CPU type. Specify one of:
|
||||
armv5te armv7-a
|
||||
|
||||
See GCC manual for more CPU names.
|
||||
-->
|
||||
<property name="OARCH" value="armv7-a" />
|
||||
|
||||
|
||||
<!--
|
||||
Which CPU ReactOS should be optimized for. See GCC manual for CPU names.
|
||||
-->
|
||||
<property name="TUNE" value="" />
|
||||
|
||||
|
||||
<!--
|
||||
What level of optimisation to use.
|
||||
0 = off (will not work)
|
||||
1 = Default option, optimize for size (-Os) with some additional options
|
||||
2 = -Os
|
||||
3 = -O1
|
||||
4 = -O2
|
||||
5 = -O3
|
||||
-->
|
||||
<property name="OPTIMIZE" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile in the integrated kernel debugger.
|
||||
-->
|
||||
<property name="KDBG" value="0" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging.
|
||||
-->
|
||||
<property name="DBG" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging with GDB. If you don't use GDB, don't
|
||||
enable this.
|
||||
-->
|
||||
<property name="GDB" value="0" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile apps/libs with features covered software patents or not.
|
||||
If you live in a country where software patents are valid/apply, don't
|
||||
enable this (except they/you purchased a license from the patent owner).
|
||||
This settings is disabled (0) by default.
|
||||
-->
|
||||
<property name="NSWPAT" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile with the KD protocol. This will disable support for KDBG
|
||||
as well as rossym and symbol lookups, and allow WinDBG to connect to ReactOS.
|
||||
This is currently not fully working, and requires kdcom from Windows 2003 or
|
||||
TinyKRNL. Booting into debug mode with this flag enabled will result in a
|
||||
failure to enter GUI mode. Do not enable unless you know what you're doing.
|
||||
-->
|
||||
<property name="_WINKD_" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile support for ELF files. Do not enable unless you know what
|
||||
you're doing.
|
||||
-->
|
||||
<property name="_ELF_" value="0" />
|
||||
|
||||
</group>
|
@@ -1,73 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
|
||||
<group>
|
||||
|
||||
<!--
|
||||
This file is a template used as a starting point for compile-time
|
||||
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
|
||||
Then change the options in config.rbuild. If you don't have a config.rbuild file,
|
||||
then the defaults in this file, config.template.rbuild, will be used instead.
|
||||
|
||||
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
|
||||
options can obtain any value specified in the comment before it.
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
Sub-architecture to build for. Specify one of:
|
||||
??
|
||||
-->
|
||||
<property name="SARCH" value="" />
|
||||
|
||||
|
||||
<!--
|
||||
Generate instructions for this CPU type. Specify one of:
|
||||
??
|
||||
|
||||
See GCC manual for more CPU names.
|
||||
-->
|
||||
<property name="OARCH" value="" />
|
||||
|
||||
<!--
|
||||
Which CPU ReactOS should be optimized for. See GCC manual for CPU names.
|
||||
-->
|
||||
<property name="TUNE" value="" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for an uniprocessor or multiprocessor machine.
|
||||
-->
|
||||
<property name="MP" value="0" />
|
||||
|
||||
<!--
|
||||
New style kernel debugger
|
||||
-->
|
||||
<property name="_WINKD_" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile in the integrated kernel debugger.
|
||||
-->
|
||||
<property name="KDBG" value="0" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging.
|
||||
-->
|
||||
<property name="DBG" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile apps/libs with features covered software patents or not.
|
||||
If you live in a country where software patents are valid/apply, don't
|
||||
enable this (except they/you purchased a license from the patent owner).
|
||||
This settings is disabled (0) by default.
|
||||
-->
|
||||
<property name="NSWPAT" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile support for ELF files. Do not enable unless you know what
|
||||
you're doing.
|
||||
-->
|
||||
<property name="_ELF_" value="0" />
|
||||
|
||||
</group>
|
@@ -1,102 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
|
||||
<group>
|
||||
|
||||
<!--
|
||||
This file is a template used as a starting point for compile-time
|
||||
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
|
||||
Then change the options in config.rbuild. If you don't have a config.rbuild file,
|
||||
then the defaults in this file, config.template.rbuild, will be used instead.
|
||||
|
||||
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
|
||||
options can obtain any value specified in the comment before it.
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
Sub-architecture to build for. Specify one of:
|
||||
xbox
|
||||
-->
|
||||
<property name="SARCH" value="" />
|
||||
|
||||
|
||||
<!--
|
||||
Generate instructions for this CPU type. Specify one of:
|
||||
native, i386, i486, pentium, pentium-mmx, pentiumpro, i686,
|
||||
pentium2, pentium3, pentium-m, pentium4, prescott, nocona,
|
||||
core2, k6, k6-2, athlon, athlon-xp, opteron, opteron-sse3,
|
||||
barcelona, winchip-c6, winchip2, c3, c3-2, geode
|
||||
|
||||
See GCC manual for more CPU names.
|
||||
-->
|
||||
<property name="OARCH" value="pentium" />
|
||||
|
||||
|
||||
<!--
|
||||
Which CPU ReactOS should be optimized for. Specify one of the above
|
||||
CPUs or generic. When this option is not used, GCC will optimize for
|
||||
the processor specified by OARCH.
|
||||
-->
|
||||
<property name="TUNE" value="i686" />
|
||||
|
||||
|
||||
<!--
|
||||
What level of optimisation to use.
|
||||
0 = off
|
||||
1 = Default option, optimize for size (-Os) with some additional options
|
||||
2 = -Os
|
||||
3 = -O1
|
||||
4 = -O2
|
||||
5 = -O3
|
||||
-->
|
||||
<property name="OPTIMIZE" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile in the integrated kernel debugger.
|
||||
-->
|
||||
<property name="KDBG" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging.
|
||||
-->
|
||||
<property name="DBG" value="1" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile for debugging with GDB. If you don't use GDB, don't
|
||||
enable this.
|
||||
-->
|
||||
<property name="GDB" value="0" />
|
||||
|
||||
|
||||
<!--
|
||||
Whether to compile apps/libs with features covered software patents or not.
|
||||
If you live in a country where software patents are valid/apply, don't
|
||||
enable this (except they/you purchased a license from the patent owner).
|
||||
This settings is disabled (0) by default.
|
||||
-->
|
||||
<property name="NSWPAT" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile with the KD protocol. This will disable support for KDBG
|
||||
as well as rossym and symbol lookups, and allow WinDBG to connect to ReactOS.
|
||||
This is currently not fully working, and requires kdcom from Windows 2003 or
|
||||
TinyKRNL. Booting into debug mode with this flag enabled will result in a
|
||||
failure to enter GUI mode. Do not enable unless you know what you're doing.
|
||||
-->
|
||||
<property name="_WINKD_" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile support for ELF files. Do not enable unless you know what
|
||||
you're doing.
|
||||
-->
|
||||
<property name="_ELF_" value="0" />
|
||||
|
||||
<!--
|
||||
Whether to compile the multi processor versions for ntoskrnl and hal.
|
||||
-->
|
||||
<property name="BUILD_MP" value="1" />
|
||||
|
||||
</group>
|
30
depmap.xsl
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>ReactOS Dependency Map</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>ReactOS Dependency Map</h1>
|
||||
<table border="1">
|
||||
<tr bgcolor="#9acd32">
|
||||
<th align="left">Module Name</th>
|
||||
<th align="left">Module Location</th>
|
||||
<th align="left">Other Module Usage</th>
|
||||
<th align="left">Module Re-Usage</th>
|
||||
</tr>
|
||||
<xsl:for-each select="components/component">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name"/></td>
|
||||
<td><xsl:value-of select="base"/></td>
|
||||
<td><xsl:value-of select="lib_count"/></td>
|
||||
<td><xsl:value-of select="ref_count"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
558
desktop/desktop.cpp
Normal file
@@ -0,0 +1,558 @@
|
||||
/*
|
||||
* Copyright 2003, 2004, 2005 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// desktop.cpp
|
||||
//
|
||||
// Martin Fuchs, 09.08.2003
|
||||
//
|
||||
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
#include "../taskbar/desktopbar.h"
|
||||
#include "../taskbar/taskbar.h" // for PM_GET_LAST_ACTIVE
|
||||
|
||||
#include "../resource.h"
|
||||
|
||||
|
||||
static BOOL (WINAPI*SetShellWindow)(HWND);
|
||||
static BOOL (WINAPI*SetShellWindowEx)(HWND, HWND);
|
||||
|
||||
|
||||
Desktops::Desktops()
|
||||
: _current_desktop(0)
|
||||
{
|
||||
}
|
||||
|
||||
Desktops::~Desktops()
|
||||
{
|
||||
// show all hidden windows
|
||||
for(iterator it_dsk=begin(); it_dsk!=end(); ++it_dsk)
|
||||
for(WindowSet::iterator it=it_dsk->_windows.begin(); it!=it_dsk->_windows.end(); ++it)
|
||||
ShowWindowAsync(*it, SW_SHOW);
|
||||
}
|
||||
|
||||
void Desktops::init()
|
||||
{
|
||||
resize(DESKTOP_COUNT);
|
||||
}
|
||||
|
||||
static BOOL CALLBACK SwitchDesktopEnumFct(HWND hwnd, LPARAM lparam)
|
||||
{
|
||||
WindowSet& windows = *(WindowSet*)lparam;
|
||||
|
||||
if (IsWindowVisible(hwnd))
|
||||
if (hwnd!=g_Globals._hwndDesktopBar && hwnd!=g_Globals._hwndDesktop)
|
||||
windows.insert(hwnd);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Desktops::SwitchToDesktop(int idx)
|
||||
{
|
||||
if (_current_desktop == idx)
|
||||
return;
|
||||
|
||||
Desktop& old_desktop = (*this)[_current_desktop];
|
||||
WindowSet& windows = old_desktop._windows;
|
||||
Desktop& desktop = (*this)[idx];
|
||||
|
||||
windows.clear();
|
||||
|
||||
// collect window handles of all other desktops
|
||||
WindowSet other_wnds;
|
||||
for(const_iterator it1=begin(); it1!=end(); ++it1)
|
||||
for(WindowSet::const_iterator it2=it1->_windows.begin(); it2!=it1->_windows.end(); ++it2)
|
||||
other_wnds.insert(*it2);
|
||||
|
||||
// save currently visible application windows
|
||||
EnumWindows(SwitchDesktopEnumFct, (LPARAM)&windows);
|
||||
|
||||
old_desktop._hwndForeground = (HWND)SendMessage(g_Globals._hwndDesktopBar, PM_GET_LAST_ACTIVE, 0, 0);
|
||||
|
||||
// hide all windows of the previous desktop
|
||||
for(WindowSet::iterator it=windows.begin(); it!=windows.end(); ++it)
|
||||
ShowWindowAsync(*it, SW_HIDE);
|
||||
|
||||
// show all windows of the new desktop
|
||||
for(WindowSet::iterator it=desktop._windows.begin(); it!=desktop._windows.end(); ++it)
|
||||
ShowWindowAsync(*it, SW_SHOW);
|
||||
|
||||
if (desktop._hwndForeground)
|
||||
SetForegroundWindow(desktop._hwndForeground);
|
||||
|
||||
// remove the window handles of the other desktops from what we found on the previous desktop
|
||||
for(WindowSet::const_iterator it=other_wnds.begin(); it!=other_wnds.end(); ++it)
|
||||
windows.erase(*it);
|
||||
|
||||
// We don't need to store the window handles of what's now visible the now current desktop.
|
||||
desktop._windows.clear();
|
||||
|
||||
_current_desktop = idx;
|
||||
}
|
||||
|
||||
|
||||
static BOOL CALLBACK MinimizeDesktopEnumFct(HWND hwnd, LPARAM lparam)
|
||||
{
|
||||
list<MinimizeStruct>& minimized = *(list<MinimizeStruct>*)lparam;
|
||||
|
||||
if (IsWindowVisible(hwnd))
|
||||
if (hwnd!=g_Globals._hwndDesktopBar && hwnd!=g_Globals._hwndDesktop)
|
||||
if (!IsIconic(hwnd)) {
|
||||
minimized.push_back(MinimizeStruct(hwnd, GetWindowStyle(hwnd)));
|
||||
ShowWindowAsync(hwnd, SW_MINIMIZE);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/// minimize/restore all windows on the desktop
|
||||
void Desktops::ToggleMinimize()
|
||||
{
|
||||
list<MinimizeStruct>& minimized = (*this)[_current_desktop]._minimized;
|
||||
|
||||
if (minimized.empty()) {
|
||||
EnumWindows(MinimizeDesktopEnumFct, (LPARAM)&minimized);
|
||||
} else {
|
||||
for(list<MinimizeStruct>::const_iterator it=minimized.begin(); it!=minimized.end(); ++it)
|
||||
ShowWindowAsync(it->first, it->second&WS_MAXIMIZE? SW_MAXIMIZE: SW_RESTORE);
|
||||
|
||||
minimized.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOL IsAnyDesktopRunning()
|
||||
{
|
||||
HINSTANCE hUser32 = GetModuleHandle(TEXT("user32"));
|
||||
|
||||
SetShellWindow = (BOOL(WINAPI*)(HWND)) GetProcAddress(hUser32, "SetShellWindow");
|
||||
SetShellWindowEx = (BOOL(WINAPI*)(HWND,HWND)) GetProcAddress(hUser32, "SetShellWindowEx");
|
||||
|
||||
return GetShellWindow() != 0;
|
||||
}
|
||||
|
||||
|
||||
BackgroundWindow::BackgroundWindow(HWND hwnd)
|
||||
: super(hwnd)
|
||||
{
|
||||
// set background brush for the short moment of displaying the
|
||||
// background color while moving foreground windows
|
||||
SetClassLong(hwnd, GCL_HBRBACKGROUND, COLOR_BACKGROUND+1);
|
||||
|
||||
_display_version = RegGetDWORDValue(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), TEXT("PaintDesktopVersion"), 1);
|
||||
}
|
||||
|
||||
LRESULT BackgroundWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
case WM_ERASEBKGND:
|
||||
DrawDesktopBkgnd((HDC)wparam);
|
||||
return TRUE;
|
||||
|
||||
case WM_MBUTTONDBLCLK:
|
||||
explorer_show_frame(SW_SHOWNORMAL);
|
||||
break;
|
||||
|
||||
case PM_DISPLAY_VERSION:
|
||||
if (lparam || wparam) {
|
||||
DWORD or_mask = wparam;
|
||||
DWORD reset_mask = LOWORD(lparam);
|
||||
DWORD xor_mask = HIWORD(lparam);
|
||||
_display_version = ((_display_version&~reset_mask) | or_mask) ^ xor_mask;
|
||||
InvalidateRect(_hwnd, NULL, TRUE);
|
||||
}
|
||||
return _display_version;
|
||||
|
||||
default:
|
||||
return super::WndProc(nmsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void BackgroundWindow::DrawDesktopBkgnd(HDC hdc)
|
||||
{
|
||||
PaintDesktop(hdc);
|
||||
|
||||
/* special solid background
|
||||
HBRUSH bkgndBrush = CreateSolidBrush(RGB(0,32,160)); // dark blue
|
||||
FillRect(hdc, &rect, bkgndBrush);
|
||||
DeleteBrush(bkgndBrush);
|
||||
*/
|
||||
if (_display_version) {
|
||||
static const String s_bkgnd_txt = ResString(IDS_EXPLORER_VERSION_STR) + TEXT("\nby Martin Fuchs");
|
||||
|
||||
FmtString txt(s_bkgnd_txt, (LPCTSTR)ResString(IDS_VERSION_STR));
|
||||
ClientRect rect(_hwnd);
|
||||
|
||||
rect.left = rect.right - 280;
|
||||
rect.top = rect.bottom - 80 - DESKTOPBARBAR_HEIGHT;
|
||||
rect.right = rect.left + 250;
|
||||
rect.bottom = rect.top + 40;
|
||||
|
||||
BkMode bkMode(hdc, TRANSPARENT);
|
||||
|
||||
TextColor textColor(hdc, RGB(128,128,192));
|
||||
DrawText(hdc, txt, -1, &rect, DT_RIGHT);
|
||||
|
||||
SetTextColor(hdc, RGB(255,255,255));
|
||||
--rect.right;
|
||||
++rect.top;
|
||||
DrawText(hdc, txt, -1, &rect, DT_RIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DesktopWindow::DesktopWindow(HWND hwnd)
|
||||
: super(hwnd)
|
||||
{
|
||||
_pShellView = NULL;
|
||||
}
|
||||
|
||||
DesktopWindow::~DesktopWindow()
|
||||
{
|
||||
if (_pShellView)
|
||||
_pShellView->Release();
|
||||
}
|
||||
|
||||
|
||||
HWND DesktopWindow::Create()
|
||||
{
|
||||
static IconWindowClass wcDesktop(TEXT("Progman"), IDI_REACTOS, CS_DBLCLKS);
|
||||
/* (disabled because of small ugly temporary artefacts when hiding start menu)
|
||||
wcDesktop.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1); */
|
||||
|
||||
int width = GetSystemMetrics(SM_CXSCREEN);
|
||||
int height = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
HWND hwndDesktop = Window::Create(WINDOW_CREATOR(DesktopWindow),
|
||||
WS_EX_TOOLWINDOW, wcDesktop, TEXT("Program Manager"), WS_POPUP|WS_VISIBLE|WS_CLIPCHILDREN,
|
||||
0, 0, width, height, 0);
|
||||
|
||||
// work around to display desktop bar in Wine
|
||||
ShowWindow(GET_WINDOW(DesktopWindow, hwndDesktop)->_desktopBar, SW_SHOW);
|
||||
|
||||
// work around for Windows NT, Win 98, ...
|
||||
// Without this the desktop has mysteriously only a size of 800x600 pixels.
|
||||
MoveWindow(hwndDesktop, 0, 0, width, height, TRUE);
|
||||
|
||||
return hwndDesktop;
|
||||
}
|
||||
|
||||
|
||||
LRESULT DesktopWindow::Init(LPCREATESTRUCT pcs)
|
||||
{
|
||||
if (super::Init(pcs))
|
||||
return 1;
|
||||
|
||||
HRESULT hr = GetDesktopFolder()->CreateViewObject(_hwnd, IID_IShellView, (void**)&_pShellView);
|
||||
/* also possible:
|
||||
SFV_CREATE sfv_create;
|
||||
|
||||
sfv_create.cbSize = sizeof(SFV_CREATE);
|
||||
sfv_create.pshf = GetDesktopFolder();
|
||||
sfv_create.psvOuter = NULL;
|
||||
sfv_create.psfvcb = NULL;
|
||||
|
||||
HRESULT hr = SHCreateShellFolderView(&sfv_create, &_pShellView);
|
||||
*/
|
||||
HWND hWndView = 0;
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
FOLDERSETTINGS fs;
|
||||
|
||||
fs.ViewMode = FVM_ICON;
|
||||
fs.fFlags = FWF_DESKTOP|FWF_NOCLIENTEDGE|FWF_NOSCROLL|FWF_BESTFITWINDOW|FWF_SNAPTOGRID; //|FWF_AUTOARRANGE;
|
||||
|
||||
ClientRect rect(_hwnd);
|
||||
|
||||
hr = _pShellView->CreateViewWindow(NULL, &fs, this, &rect, &hWndView);
|
||||
|
||||
///@todo use IShellBrowser::GetViewStateStream() to restore previous view state -> see SHOpenRegStream()
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
g_Globals._hwndShellView = hWndView;
|
||||
|
||||
// subclass shellview window
|
||||
new DesktopShellView(hWndView, _pShellView);
|
||||
|
||||
_pShellView->UIActivate(SVUIA_ACTIVATE_FOCUS);
|
||||
|
||||
/*
|
||||
IShellView2* pShellView2;
|
||||
|
||||
hr = _pShellView->QueryInterface(IID_IShellView2, (void**)&pShellView2);
|
||||
|
||||
SV2CVW2_PARAMS params;
|
||||
params.cbSize = sizeof(SV2CVW2_PARAMS);
|
||||
params.psvPrev = _pShellView;
|
||||
params.pfs = &fs;
|
||||
params.psbOwner = this;
|
||||
params.prcView = ▭
|
||||
params.pvid = params.pvid;//@@
|
||||
|
||||
hr = pShellView2->CreateViewWindow2(¶ms);
|
||||
params.pvid;
|
||||
*/
|
||||
|
||||
/*
|
||||
IFolderView* pFolderView;
|
||||
|
||||
hr = _pShellView->QueryInterface(IID_IFolderView, (void**)&pFolderView);
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
hr = pFolderView->GetAutoArrange();
|
||||
hr = pFolderView->SetCurrentViewMode(FVM_DETAILS);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
if (hWndView && SetShellWindowEx)
|
||||
SetShellWindowEx(_hwnd, hWndView);
|
||||
else if (SetShellWindow)
|
||||
SetShellWindow(_hwnd);
|
||||
|
||||
// create the explorer bar
|
||||
_desktopBar = DesktopBar::Create();
|
||||
g_Globals._hwndDesktopBar = _desktopBar;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
LRESULT DesktopWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
case WM_LBUTTONDBLCLK:
|
||||
case WM_RBUTTONDBLCLK:
|
||||
case WM_MBUTTONDBLCLK:
|
||||
explorer_show_frame(SW_SHOWNORMAL);
|
||||
break;
|
||||
|
||||
case WM_GETISHELLBROWSER:
|
||||
return (LRESULT)static_cast<IShellBrowser*>(this);
|
||||
|
||||
case WM_DESTROY:
|
||||
|
||||
///@todo use IShellBrowser::GetViewStateStream() and _pShellView->SaveViewState() to store view state
|
||||
|
||||
if (SetShellWindow)
|
||||
SetShellWindow(0);
|
||||
break;
|
||||
|
||||
case WM_CLOSE:
|
||||
ShowExitWindowsDialog(_hwnd);
|
||||
break;
|
||||
|
||||
case WM_SYSCOMMAND:
|
||||
if (wparam == SC_TASKLIST) {
|
||||
if (_desktopBar)
|
||||
SendMessage(_desktopBar, nmsg, wparam, lparam);
|
||||
}
|
||||
goto def;
|
||||
|
||||
default: def:
|
||||
return super::WndProc(nmsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
HRESULT DesktopWindow::OnDefaultCommand(LPIDA pida)
|
||||
{
|
||||
#ifndef ROSSHELL // in shell-only-mode fall through and let shell32 handle the command
|
||||
if (MainFrame::OpenShellFolders(pida, 0))
|
||||
return S_OK;
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
DesktopShellView::DesktopShellView(HWND hwnd, IShellView* pShellView)
|
||||
: super(hwnd),
|
||||
_pShellView(pShellView)
|
||||
{
|
||||
_hwndListView = ::GetNextWindow(hwnd, GW_CHILD);
|
||||
|
||||
SetWindowStyle(_hwndListView, GetWindowStyle(_hwndListView)&~LVS_ALIGNMASK);//|LVS_ALIGNTOP|LVS_AUTOARRANGE);
|
||||
|
||||
// work around for Windows NT, Win 98, ...
|
||||
// Without this the desktop has mysteriously only a size of 800x600 pixels.
|
||||
ClientRect rect(hwnd);
|
||||
MoveWindow(_hwndListView, 0, 0, rect.right, rect.bottom, TRUE);
|
||||
|
||||
// subclass background window
|
||||
new BackgroundWindow(_hwndListView);
|
||||
|
||||
InitDragDrop();
|
||||
}
|
||||
|
||||
bool DesktopShellView::InitDragDrop()
|
||||
{
|
||||
CONTEXT("DesktopShellView::InitDragDrop()");
|
||||
|
||||
_pDropTarget = new DesktopDropTarget(_hwnd);
|
||||
|
||||
if (!_pDropTarget)
|
||||
return false;
|
||||
|
||||
_pDropTarget->AddRef();
|
||||
|
||||
if (FAILED(RegisterDragDrop(_hwnd, _pDropTarget))) {
|
||||
_pDropTarget->Release();
|
||||
_pDropTarget = NULL;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
_pDropTarget->Release();
|
||||
|
||||
FORMATETC ftetc;
|
||||
|
||||
ftetc.dwAspect = DVASPECT_CONTENT;
|
||||
ftetc.lindex = -1;
|
||||
ftetc.tymed = TYMED_HGLOBAL;
|
||||
ftetc.cfFormat = CF_HDROP;
|
||||
|
||||
_pDropTarget->AddSuportedFormat(ftetc);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
LRESULT DesktopShellView::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
case WM_CONTEXTMENU:
|
||||
if (!DoContextMenu(GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam), _cm_ifs))
|
||||
DoDesktopContextMenu(GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
|
||||
break;
|
||||
|
||||
case PM_DISPLAY_VERSION:
|
||||
return SendMessage(_hwndListView, nmsg, wparam, lparam);
|
||||
|
||||
default:
|
||||
return super::WndProc(nmsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int DesktopShellView::Command(int id, int code)
|
||||
{
|
||||
return super::Command(id, code);
|
||||
}
|
||||
|
||||
int DesktopShellView::Notify(int id, NMHDR* pnmh)
|
||||
{
|
||||
return super::Notify(id, pnmh);
|
||||
}
|
||||
|
||||
bool DesktopShellView::DoContextMenu(int x, int y, CtxMenuInterfaces& cm_ifs)
|
||||
{
|
||||
IDataObject* selection;
|
||||
|
||||
HRESULT hr = _pShellView->GetItemObject(SVGIO_SELECTION, IID_IDataObject, (void**)&selection);
|
||||
if (FAILED(hr))
|
||||
return false;
|
||||
|
||||
PIDList pidList;
|
||||
|
||||
hr = pidList.GetData(selection);
|
||||
if (FAILED(hr)) {
|
||||
selection->Release();
|
||||
//CHECKERROR(hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
LPIDA pida = pidList;
|
||||
if (!pida->cidl) {
|
||||
selection->Release();
|
||||
return false;
|
||||
}
|
||||
|
||||
LPCITEMIDLIST parent_pidl = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[0]);
|
||||
|
||||
LPCITEMIDLIST* apidl = (LPCITEMIDLIST*) alloca(pida->cidl*sizeof(LPCITEMIDLIST));
|
||||
|
||||
for(int i=pida->cidl; i>0; --i)
|
||||
apidl[i-1] = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[i]);
|
||||
|
||||
hr = ShellFolderContextMenu(ShellFolder(parent_pidl), _hwnd, pida->cidl, apidl, x, y, cm_ifs);
|
||||
|
||||
selection->Release();
|
||||
|
||||
CHECKERROR(hr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
HRESULT DesktopShellView::DoDesktopContextMenu(int x, int y)
|
||||
{
|
||||
IContextMenu* pcm;
|
||||
|
||||
HRESULT hr = DesktopFolder()->GetUIObjectOf(_hwnd, 0, NULL, IID_IContextMenu, NULL, (LPVOID*)&pcm);
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
pcm = _cm_ifs.query_interfaces(pcm);
|
||||
|
||||
HMENU hmenu = CreatePopupMenu();
|
||||
|
||||
if (hmenu) {
|
||||
hr = pcm->QueryContextMenu(hmenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST-1, CMF_NORMAL|CMF_EXPLORE);
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
AppendMenu(hmenu, MF_SEPARATOR, 0, NULL);
|
||||
AppendMenu(hmenu, 0, FCIDM_SHVIEWLAST-1, ResString(IDS_ABOUT_EXPLORER));
|
||||
|
||||
UINT idCmd = TrackPopupMenu(hmenu, TPM_LEFTALIGN|TPM_RETURNCMD|TPM_RIGHTBUTTON, x, y, 0, _hwnd, NULL);
|
||||
|
||||
_cm_ifs.reset();
|
||||
|
||||
if (idCmd == FCIDM_SHVIEWLAST-1) {
|
||||
explorer_about(_hwnd);
|
||||
} else if (idCmd) {
|
||||
CMINVOKECOMMANDINFO cmi;
|
||||
|
||||
cmi.cbSize = sizeof(CMINVOKECOMMANDINFO);
|
||||
cmi.fMask = 0;
|
||||
cmi.hwnd = _hwnd;
|
||||
cmi.lpVerb = (LPCSTR)(INT_PTR)(idCmd - FCIDM_SHVIEWFIRST);
|
||||
cmi.lpParameters = NULL;
|
||||
cmi.lpDirectory = NULL;
|
||||
cmi.nShow = SW_SHOWNORMAL;
|
||||
cmi.dwHotKey = 0;
|
||||
cmi.hIcon = 0;
|
||||
|
||||
hr = pcm->InvokeCommand(&cmi);
|
||||
}
|
||||
} else
|
||||
_cm_ifs.reset();
|
||||
}
|
||||
|
||||
pcm->Release();
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
186
desktop/desktop.h
Normal file
@@ -0,0 +1,186 @@
|
||||
/*
|
||||
* Copyright 2003, 2004 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// desktop.h
|
||||
//
|
||||
// Martin Fuchs, 09.08.2003
|
||||
//
|
||||
|
||||
|
||||
#define PM_DISPLAY_VERSION (WM_APP+0x24)
|
||||
|
||||
|
||||
/// subclassed Background window behind the visible desktop window
|
||||
struct BackgroundWindow : public SubclassedWindow
|
||||
{
|
||||
typedef SubclassedWindow super;
|
||||
|
||||
BackgroundWindow(HWND hwnd);
|
||||
|
||||
protected:
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
|
||||
void DrawDesktopBkgnd(HDC hdc);
|
||||
|
||||
int _display_version;
|
||||
};
|
||||
|
||||
|
||||
/// Implementation of the Explorer desktop window
|
||||
struct DesktopWindow : public Window, public IShellBrowserImpl
|
||||
{
|
||||
typedef Window super;
|
||||
|
||||
DesktopWindow(HWND hwnd);
|
||||
~DesktopWindow();
|
||||
|
||||
static HWND Create();
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND* lphwnd)
|
||||
{
|
||||
*lphwnd = _hwnd;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(IShellView** ppshv)
|
||||
{
|
||||
_pShellView->AddRef();
|
||||
*ppshv = _pShellView;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND* lphwnd)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pret)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
protected:
|
||||
LRESULT Init(LPCREATESTRUCT pcs);
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
|
||||
IShellView* _pShellView;
|
||||
WindowHandle _desktopBar;
|
||||
|
||||
virtual HRESULT OnDefaultCommand(LPIDA pida);
|
||||
};
|
||||
|
||||
|
||||
/// OLE drop target for the desktop window
|
||||
class DesktopDropTarget : public IDropTargetImpl
|
||||
{
|
||||
typedef IDropTargetImpl super;
|
||||
|
||||
public:
|
||||
DesktopDropTarget(HWND hTargetWnd) : super(hTargetWnd) {}
|
||||
|
||||
virtual bool OnDrop(FORMATETC* pFmtEtc, STGMEDIUM& medium, DWORD *pdwEffect)
|
||||
{
|
||||
if (pFmtEtc->cfFormat==CF_HDROP && medium.tymed==TYMED_HGLOBAL) {
|
||||
HDROP hDrop = (HDROP)GlobalLock(medium.hGlobal);
|
||||
|
||||
if (hDrop) {
|
||||
TCHAR szFileName[MAX_PATH];
|
||||
|
||||
UINT cFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
|
||||
|
||||
for(UINT i=0; i<cFiles; ++i) {
|
||||
DragQueryFile(hDrop, i, szFileName, sizeof(szFileName));
|
||||
|
||||
if (DROPEFFECT_COPY & *pdwEffect) {
|
||||
// copy the file or dir
|
||||
|
||||
///@todo Add the code to handle Copy
|
||||
|
||||
} else if (DROPEFFECT_MOVE & *pdwEffect) {
|
||||
// move the file or dir
|
||||
|
||||
///@todo Add the code to handle Move
|
||||
|
||||
}
|
||||
}
|
||||
//DragFinish(hDrop); // base class calls ReleaseStgMedium
|
||||
}
|
||||
|
||||
GlobalUnlock(medium.hGlobal);
|
||||
}
|
||||
|
||||
//@@TreeView_SelectDropTarget(m_hTargetWnd, NULL);
|
||||
|
||||
return true; //let base free the medium
|
||||
}
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE DragOver(
|
||||
/* [in] */ DWORD grfKeyState,
|
||||
/* [in] */ POINTL pt,
|
||||
/* [out][in] */ DWORD __RPC_FAR *pdwEffect)
|
||||
{
|
||||
TVHITTESTINFO hit;
|
||||
hit.pt = (POINT&)pt;
|
||||
ScreenToClient(m_hTargetWnd, &hit.pt);
|
||||
hit.flags = TVHT_ONITEM;
|
||||
|
||||
/*@@
|
||||
HTREEITEM hItem = TreeView_HitTest(m_hTargetWnd,&hit);
|
||||
|
||||
if (hItem != NULL)
|
||||
TreeView_SelectDropTarget(m_hTargetWnd, hItem);
|
||||
*/
|
||||
|
||||
return super::DragOver(grfKeyState, pt, pdwEffect);
|
||||
}
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE DragLeave(void)
|
||||
{
|
||||
//@@ TreeView_SelectDropTarget(m_hTargetWnd, NULL);
|
||||
|
||||
return super::DragLeave();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/// subclassed ShellView window
|
||||
struct DesktopShellView : public ExtContextMenuHandlerT<SubclassedWindow>
|
||||
{
|
||||
typedef ExtContextMenuHandlerT<SubclassedWindow> super;
|
||||
|
||||
DesktopShellView(HWND hwnd, IShellView* pShellView);
|
||||
|
||||
bool InitDragDrop();
|
||||
|
||||
protected:
|
||||
IShellView* _pShellView;
|
||||
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
int Command(int id, int code);
|
||||
int Notify(int id, NMHDR* pnmh);
|
||||
|
||||
bool DoContextMenu(int x, int y, CtxMenuInterfaces& cm_ifs);
|
||||
HRESULT DoDesktopContextMenu(int x, int y);
|
||||
|
||||
DesktopDropTarget* _pDropTarget;
|
||||
HWND _hwndListView;
|
||||
};
|
152
dialogs/settings.cpp
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Copyright 2004 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// dialogs/settings.cpp
|
||||
//
|
||||
// Explorer dialogs
|
||||
//
|
||||
// Martin Fuchs, 18.01.2004
|
||||
//
|
||||
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
#include "../resource.h"
|
||||
|
||||
#include "settings.h"
|
||||
|
||||
|
||||
void ExplorerPropertySheet(HWND hparent)
|
||||
{
|
||||
PropertySheetDialog ps(hparent);
|
||||
|
||||
ps.dwFlags |= PSH_USEICONID | PSH_PROPTITLE;
|
||||
ps.pszIcon = MAKEINTRESOURCE(IDI_REACTOS);
|
||||
ps.pszCaption = TEXT("Explorer");
|
||||
|
||||
PropSheetPage psp1(IDD_DESKBAR_DESKTOP, WINDOW_CREATOR(DesktopSettingsDlg));
|
||||
psp1.dwFlags |= PSP_USETITLE;
|
||||
psp1.pszTitle = MAKEINTRESOURCE(IDS_DESKTOP);
|
||||
ps.add(psp1);
|
||||
|
||||
PropSheetPage psp2(IDD_DESKBAR_TASKBAR, WINDOW_CREATOR(TaskbarSettingsDlg));
|
||||
psp2.dwFlags |= PSP_USETITLE;
|
||||
psp2.pszTitle = MAKEINTRESOURCE(IDS_TASKBAR);
|
||||
ps.add(psp2);
|
||||
|
||||
PropSheetPage psp3(IDD_DESKBAR_STARTMENU, WINDOW_CREATOR(StartmenuSettingsDlg));
|
||||
psp3.dwFlags |= PSP_USETITLE;
|
||||
psp3.pszTitle = MAKEINTRESOURCE(IDS_STARTMENU);
|
||||
ps.add(psp3);
|
||||
|
||||
ps.DoModal();
|
||||
}
|
||||
|
||||
|
||||
DesktopSettingsDlg::DesktopSettingsDlg(HWND hwnd)
|
||||
: super(hwnd)
|
||||
{
|
||||
_display_version_org = SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, 0, MAKELONG(0,0));
|
||||
CheckDlgButton(hwnd, ID_DESKTOP_VERSION, _display_version_org? BST_CHECKED: BST_UNCHECKED);
|
||||
}
|
||||
|
||||
#ifndef PSN_QUERYINITIALFOCUS // currently (as of 18.01.2004) missing in MinGW headers
|
||||
#define PSN_QUERYINITIALFOCUS (-213)
|
||||
#endif
|
||||
|
||||
int DesktopSettingsDlg::Notify(int id, NMHDR* pnmh)
|
||||
{
|
||||
switch(pnmh->code) {
|
||||
case PSN_QUERYINITIALFOCUS:
|
||||
break;
|
||||
|
||||
case PSN_APPLY:
|
||||
_display_version_org = SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, 0, MAKELONG(0,0));
|
||||
break;
|
||||
|
||||
case PSN_RESET:
|
||||
SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, _display_version_org, MAKELONG(1,0));
|
||||
break;
|
||||
|
||||
default:
|
||||
return super::Notify(id, pnmh);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int DesktopSettingsDlg::Command(int id, int code)
|
||||
{
|
||||
switch(id) {
|
||||
case ID_DESKTOP_VERSION:
|
||||
SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, 0, MAKELONG(0,1)); // toggle version display flag
|
||||
PropSheet_Changed(GetParent(_hwnd), _hwnd);
|
||||
break;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TaskbarSettingsDlg::TaskbarSettingsDlg(HWND hwnd)
|
||||
: super(hwnd)
|
||||
{
|
||||
}
|
||||
|
||||
LRESULT TaskbarSettingsDlg::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
case WM_PAINT: {
|
||||
PaintCanvas canvas(_hwnd);
|
||||
FillRect(canvas, &canvas.rcPaint, GetStockBrush(GRAY_BRUSH));
|
||||
break;}
|
||||
|
||||
default:
|
||||
return super::WndProc(nmsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
StartmenuSettingsDlg::StartmenuSettingsDlg(HWND hwnd)
|
||||
: super(hwnd)
|
||||
{
|
||||
}
|
||||
|
||||
LRESULT StartmenuSettingsDlg::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
case WM_PAINT: {
|
||||
PaintCanvas canvas(_hwnd);
|
||||
FillRect(canvas, &canvas.rcPaint, GetStockBrush(DKGRAY_BRUSH));
|
||||
break;}
|
||||
|
||||
default:
|
||||
return super::WndProc(nmsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
68
dialogs/settings.h
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2004 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// dialogs/settings.h
|
||||
//
|
||||
// Explorer dialogs
|
||||
//
|
||||
// Martin Fuchs, 18.01.2004
|
||||
//
|
||||
|
||||
|
||||
void ExplorerPropertySheet(HWND hparent);
|
||||
|
||||
|
||||
/// "Desktopbar Settings" Property Sheet Dialog
|
||||
struct DesktopSettingsDlg : public OwnerDrawParent<PropSheetPageDlg>
|
||||
{
|
||||
typedef OwnerDrawParent<PropSheetPageDlg> super;
|
||||
|
||||
DesktopSettingsDlg(HWND hwnd);
|
||||
|
||||
protected:
|
||||
virtual int Command(int id, int code);
|
||||
virtual int Notify(int id, NMHDR* pnmh);
|
||||
|
||||
int _display_version_org;
|
||||
};
|
||||
|
||||
|
||||
/// "Taskbar Settings" Property Sheet Dialog
|
||||
struct TaskbarSettingsDlg : public PropSheetPageDlg
|
||||
{
|
||||
typedef PropSheetPageDlg super;
|
||||
|
||||
TaskbarSettingsDlg(HWND hwnd);
|
||||
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
};
|
||||
|
||||
|
||||
/// "Startmenu Settings" Property Sheet Dialog
|
||||
struct StartmenuSettingsDlg : public PropSheetPageDlg
|
||||
{
|
||||
typedef PropSheetPageDlg super;
|
||||
|
||||
StartmenuSettingsDlg(HWND hwnd);
|
||||
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
};
|
244
explorer-en.rc
Normal file
@@ -0,0 +1,244 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include <windows.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_ABOUT_EXPLORER DIALOG DISCARDABLE 0, 0, 196, 109
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About ReactOS Explorer"
|
||||
FONT 10, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "ReactOS Explorer",IDC_ROS_EXPLORER,91,29,90,11
|
||||
LTEXT "V 0.9",IDC_VERSION_TXT,91,43,98,8
|
||||
LTEXT "(c) 2003-2006 Martin Fuchs",IDC_STATIC,91,58,79,8
|
||||
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,21,84,104,
|
||||
8
|
||||
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
|
||||
151,90,38,12
|
||||
END
|
||||
|
||||
IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Execute"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "",101,"Static",SS_SIMPLE | SS_NOPREFIX,3,6,162,10
|
||||
CONTROL "&Command:",-1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,3,
|
||||
18,60,10
|
||||
EDITTEXT 201,3,29,134,12,ES_AUTOHSCROLL
|
||||
CONTROL "As &Symbol",214,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,3,
|
||||
45,71,12
|
||||
DEFPUSHBUTTON "&OK",1,158,6,47,14
|
||||
PUSHBUTTON "&Cancel",2,158,23,47,14
|
||||
PUSHBUTTON "&Help",254,158,43,47,14
|
||||
END
|
||||
|
||||
IDD_DESKBAR_DESKTOP DIALOG DISCARDABLE 0, 0, 212, 194
|
||||
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Desktop Properties"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Display &Version Number",ID_DESKTOP_VERSION,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,177,91,10
|
||||
END
|
||||
|
||||
IDD_DESKBAR_TASKBAR DIALOG DISCARDABLE 0, 0, 210, 194
|
||||
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Taskbar Properties"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
END
|
||||
|
||||
IDD_DESKBAR_STARTMENU DIALOG DISCARDABLE 0, 0, 210, 194
|
||||
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Startmenu Properties"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDM_MAINFRAME MENU PRELOAD DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "Create Shortcut", ID_FILE_CREATESHORTCUT
|
||||
, GRAYED
|
||||
MENUITEM "Delete", ID_FILE_DELETE, GRAYED
|
||||
MENUITEM "Rename", ID_FILE_RENAME, GRAYED
|
||||
MENUITEM "Properties", ID_FILE_PROPERTIES, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Close", ID_FILE_EXIT
|
||||
END
|
||||
POPUP "&Edit"
|
||||
BEGIN
|
||||
MENUITEM "Undo", ID_EDIT_UNDO, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Cut", ID_EDIT_CUt, GRAYED
|
||||
MENUITEM "&Copy", ID_EDIT_COPY, GRAYED
|
||||
MENUITEM "&Paste", ID_EDIT_PASTE, GRAYED
|
||||
MENUITEM "&Paste Shortcut", ID_EDIT_PASTE_SHORTCUT
|
||||
, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Copy to Folder", ID_EDIT_COPY_FOLDER, GRAYED
|
||||
MENUITEM "Move to Folder", ID_EDIT_MOVE_TO_FOLDER
|
||||
, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Select All", ID_EDIT_SELECT_ALL, GRAYED
|
||||
MENUITEM "Invert Selection", ID_EDIT_INVERT_SELECTION
|
||||
, GRAYED
|
||||
END
|
||||
POPUP "&View"
|
||||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_VIEW_TOOL_BAR
|
||||
MENUITEM "&Status Bar", ID_VIEW_STATUSBAR
|
||||
END
|
||||
POPUP "&Window"
|
||||
BEGIN
|
||||
MENUITEM "New &Window", ID_WINDOW_NEW
|
||||
MENUITEM "&Refresh\tF5", ID_REFRESH
|
||||
END
|
||||
POPUP "&Tools"
|
||||
BEGIN
|
||||
MENUITEM "Map Network Drive", ID_TOOLS_MAP, GRAYED
|
||||
MENUITEM "Disconnect Network Drive...", ID_TOOLS_DISCONNECT, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Folder Options...", ID_TOOLS_OPTIONS, GRAYED
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "Explorer &FAQ...", ID_EXPLORER_FAQ
|
||||
MENUITEM "&About Explorer...", ID_ABOUT_EXPLORER
|
||||
MENUITEM "About &OS...", ID_ABOUT_WINDOWS
|
||||
END
|
||||
END
|
||||
|
||||
IDM_DESKTOPBAR MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&About Explorer...", ID_ABOUT_EXPLORER
|
||||
MENUITEM "&Settings...", ID_DESKTOPBAR_SETTINGS
|
||||
MENUITEM "&Task Manager...", ID_TASKMGR
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE MOVEABLE PURE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE MOVEABLE PURE
|
||||
BEGIN
|
||||
"#include <windows.h>\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE MOVEABLE PURE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_TITLE "Reactos Explorer"
|
||||
IDS_START "Start"
|
||||
IDS_LOGOFF "Log Off..."
|
||||
IDS_SHUTDOWN "Turn Off..."
|
||||
IDS_LAUNCH "Run..."
|
||||
IDS_START_HELP "Help"
|
||||
IDS_SEARCH_FILES "Search..."
|
||||
IDS_DOCUMENTS "Documents"
|
||||
IDS_FAVORITES "Favorites"
|
||||
IDS_PROGRAMS "Programs"
|
||||
IDS_SETTINGS "Settings"
|
||||
IDS_EXPLORE "Explore"
|
||||
IDS_EMPTY "(Empty)"
|
||||
IDS_RECENT "Recent Documents"
|
||||
IDS_ADMIN "Administration"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_STARTMENU "Startmenu"
|
||||
IDS_MINIMIZE_ALL "mimimize all windows"
|
||||
IDS_DESKTOP_NUM "Desktop %d"
|
||||
IDS_TERMINATE "Terminate ROS Explorer"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_NETWORK "Network"
|
||||
IDS_CONNECTIONS "Network Connections"
|
||||
IDS_DRIVES "Drives"
|
||||
IDS_SEARCH_COMPUTER "Search Computer..."
|
||||
IDS_CONTROL_PANEL "Control Panel"
|
||||
IDS_PRINTERS "Printers"
|
||||
IDS_ALL_USERS "All Users\\"
|
||||
IDS_SEARCH "Search"
|
||||
IDS_ABOUT_EXPLORER "&About Explorer..."
|
||||
IDS_LAUNCH_MANY_PROGRAMS
|
||||
"You have selected more than one program.\nAre you sure you want to launch all of them?"
|
||||
IDS_DESKTOPBAR_SETTINGS "Desktop Settings"
|
||||
IDS_DESKTOP "Desktop"
|
||||
IDS_TASKBAR "Taskbar"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
838
explorer.cpp
Normal file
@@ -0,0 +1,838 @@
|
||||
/*
|
||||
* Copyright 2003, 2004, 2005 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// explorer.cpp
|
||||
//
|
||||
// Martin Fuchs, 23.07.2003
|
||||
//
|
||||
// Credits: Thanks to Leon Finker for his explorer window example
|
||||
//
|
||||
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
#include <locale.h> // for setlocale()
|
||||
|
||||
|
||||
DynamicLoadLibFct<void(__stdcall*)(BOOL)> g_SHDOCVW_ShellDDEInit(TEXT("SHDOCVW"), 118);
|
||||
|
||||
|
||||
ExplorerGlobals g_Globals;
|
||||
|
||||
|
||||
ExplorerGlobals::ExplorerGlobals()
|
||||
{
|
||||
_hInstance = 0;
|
||||
_cfStrFName = 0;
|
||||
|
||||
#ifndef ROSSHELL
|
||||
_hframeClass = 0;
|
||||
_hMainWnd = 0;
|
||||
_desktop_mode = false;
|
||||
_prescan_nodes = false;
|
||||
#endif
|
||||
|
||||
_log = NULL;
|
||||
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
|
||||
_SHRestricted = 0;
|
||||
#endif
|
||||
_hwndDesktopBar = 0;
|
||||
_hwndShellView = 0;
|
||||
_hwndDesktop = 0;
|
||||
}
|
||||
|
||||
|
||||
void ExplorerGlobals::init(HINSTANCE hInstance)
|
||||
{
|
||||
_hInstance = hInstance;
|
||||
|
||||
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
|
||||
_SHRestricted = (DWORD(STDAPICALLTYPE*)(RESTRICTIONS)) GetProcAddress(GetModuleHandle(TEXT("SHELL32")), "SHRestricted");
|
||||
#endif
|
||||
|
||||
_icon_cache.init();
|
||||
}
|
||||
|
||||
|
||||
void _log_(LPCTSTR txt)
|
||||
{
|
||||
FmtString msg(TEXT("%s\n"), txt);
|
||||
|
||||
if (g_Globals._log)
|
||||
_fputts(msg, g_Globals._log);
|
||||
|
||||
OutputDebugString(msg);
|
||||
}
|
||||
|
||||
|
||||
const FileTypeInfo& FileTypeManager::operator[](String ext)
|
||||
{
|
||||
ext.toLower();
|
||||
|
||||
iterator found = find(ext);
|
||||
if (found != end())
|
||||
return found->second;
|
||||
|
||||
FileTypeInfo& ftype = super::operator[](ext);
|
||||
|
||||
ftype._neverShowExt = false;
|
||||
|
||||
HKEY hkey;
|
||||
TCHAR value[MAX_PATH], display_name[MAX_PATH];
|
||||
LONG valuelen = sizeof(value);
|
||||
|
||||
if (!RegQueryValue(HKEY_CLASSES_ROOT, ext, value, &valuelen)) {
|
||||
ftype._classname = value;
|
||||
|
||||
valuelen = sizeof(display_name);
|
||||
if (!RegQueryValue(HKEY_CLASSES_ROOT, ftype._classname, display_name, &valuelen))
|
||||
ftype._displayname = display_name;
|
||||
|
||||
if (!RegOpenKey(HKEY_CLASSES_ROOT, ftype._classname, &hkey)) {
|
||||
if (!RegQueryValueEx(hkey, TEXT("NeverShowExt"), 0, NULL, NULL, NULL))
|
||||
ftype._neverShowExt = true;
|
||||
|
||||
RegCloseKey(hkey);
|
||||
}
|
||||
}
|
||||
|
||||
return ftype;
|
||||
}
|
||||
|
||||
LPCTSTR FileTypeManager::set_type(ShellEntry* entry, bool dont_hide_ext)
|
||||
{
|
||||
LPCTSTR ext = _tcsrchr(entry->_data.cFileName, TEXT('.'));
|
||||
|
||||
if (ext) {
|
||||
const FileTypeInfo& type = (*this)[ext];
|
||||
|
||||
// hide some file extensions
|
||||
if (type._neverShowExt && !dont_hide_ext) {
|
||||
int len = ext - entry->_data.cFileName;
|
||||
entry->_display_name = (LPTSTR) malloc((len+1)*sizeof(TCHAR));
|
||||
lstrcpyn(entry->_display_name, entry->_data.cFileName, len + 1);
|
||||
entry->_display_name[len] = TEXT('\0');
|
||||
}
|
||||
}
|
||||
|
||||
return ext;
|
||||
}
|
||||
|
||||
|
||||
Icon::Icon()
|
||||
: _id(ICID_UNKNOWN),
|
||||
_itype(IT_STATIC),
|
||||
_hicon(0)
|
||||
{
|
||||
}
|
||||
|
||||
Icon::Icon(ICON_ID id, UINT nid)
|
||||
: _id(id),
|
||||
_itype(IT_STATIC),
|
||||
_hicon(SmallIcon(nid))
|
||||
{
|
||||
}
|
||||
|
||||
Icon::Icon(ICON_TYPE itype, int id, HICON hIcon)
|
||||
: _id((ICON_ID)id),
|
||||
_itype(itype),
|
||||
_hicon(hIcon)
|
||||
{
|
||||
}
|
||||
|
||||
Icon::Icon(ICON_TYPE itype, int id, int sys_idx)
|
||||
: _id((ICON_ID)id),
|
||||
_itype(itype),
|
||||
_sys_idx(sys_idx)
|
||||
{
|
||||
}
|
||||
|
||||
void Icon::draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const
|
||||
{
|
||||
if (_itype == IT_SYSCACHE)
|
||||
ImageList_DrawEx(g_Globals._icon_cache.get_sys_imagelist(), _sys_idx, hdc, x, y, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
|
||||
else
|
||||
DrawIconEx(hdc, x, y, _hicon, cx, cy, 0, bk_brush, DI_NORMAL);
|
||||
}
|
||||
|
||||
HBITMAP Icon::create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const
|
||||
{
|
||||
if (_itype == IT_SYSCACHE) {
|
||||
HIMAGELIST himl = g_Globals._icon_cache.get_sys_imagelist();
|
||||
|
||||
int cx, cy;
|
||||
ImageList_GetIconSize(himl, &cx, &cy);
|
||||
|
||||
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, cx, cy);
|
||||
HDC hdc = CreateCompatibleDC(hdc_wnd);
|
||||
HBITMAP hbmp_old = SelectBitmap(hdc, hbmp);
|
||||
ImageList_DrawEx(himl, _sys_idx, hdc, 0, 0, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
|
||||
SelectBitmap(hdc, hbmp_old);
|
||||
DeleteDC(hdc);
|
||||
return hbmp;
|
||||
} else
|
||||
return create_bitmap_from_icon(_hicon, hbrBkgnd, hdc_wnd);
|
||||
}
|
||||
|
||||
HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd)
|
||||
{
|
||||
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, 16, 16);
|
||||
|
||||
MemCanvas canvas;
|
||||
BitmapSelection sel(canvas, hbmp);
|
||||
|
||||
RECT rect = {0, 0, 16, 16};
|
||||
FillRect(canvas, &rect, hbrush_bkgnd);
|
||||
|
||||
DrawIconEx(canvas, 0, 0, hIcon, 16, 16, 0, hbrush_bkgnd, DI_NORMAL);
|
||||
|
||||
return hbmp;
|
||||
}
|
||||
|
||||
|
||||
int IconCache::s_next_id = ICID_DYNAMIC;
|
||||
|
||||
|
||||
void IconCache::init()
|
||||
{
|
||||
_icons[ICID_NONE] = Icon(IT_STATIC, ICID_NONE, (HICON)0);
|
||||
|
||||
_icons[ICID_FOLDER] = Icon(ICID_FOLDER, IDI_FOLDER);
|
||||
//_icons[ICID_DOCUMENT] = Icon(ICID_DOCUMENT, IDI_DOCUMENT);
|
||||
_icons[ICID_EXPLORER] = Icon(ICID_EXPLORER, IDI_EXPLORER);
|
||||
_icons[ICID_APP] = Icon(ICID_APP, IDI_APPICON);
|
||||
|
||||
_icons[ICID_CONFIG] = Icon(ICID_CONFIG, IDI_CONFIG);
|
||||
_icons[ICID_DOCUMENTS] = Icon(ICID_DOCUMENTS, IDI_DOCUMENTS);
|
||||
_icons[ICID_FAVORITES] = Icon(ICID_FAVORITES, IDI_FAVORITES);
|
||||
_icons[ICID_INFO] = Icon(ICID_INFO, IDI_INFO);
|
||||
_icons[ICID_APPS] = Icon(ICID_APPS, IDI_APPS);
|
||||
_icons[ICID_SEARCH] = Icon(ICID_SEARCH, IDI_SEARCH);
|
||||
_icons[ICID_ACTION] = Icon(ICID_ACTION, IDI_ACTION);
|
||||
_icons[ICID_SEARCH_DOC] = Icon(ICID_SEARCH_DOC, IDI_SEARCH_DOC);
|
||||
_icons[ICID_PRINTER] = Icon(ICID_PRINTER, IDI_PRINTER);
|
||||
_icons[ICID_NETWORK] = Icon(ICID_NETWORK, IDI_NETWORK);
|
||||
_icons[ICID_COMPUTER] = Icon(ICID_COMPUTER, IDI_COMPUTER);
|
||||
_icons[ICID_LOGOFF] = Icon(ICID_LOGOFF, IDI_LOGOFF);
|
||||
}
|
||||
|
||||
|
||||
const Icon& IconCache::extract(const String& path)
|
||||
{
|
||||
PathMap::iterator found = _pathMap.find(path);
|
||||
|
||||
if (found != _pathMap.end())
|
||||
return _icons[found->second];
|
||||
|
||||
SHFILEINFO sfi;
|
||||
|
||||
#if 1 // use system image list
|
||||
HIMAGELIST himlSys = (HIMAGELIST) SHGetFileInfo(path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
|
||||
|
||||
if (himlSys) {
|
||||
_himlSys = himlSys;
|
||||
|
||||
const Icon& icon = add(sfi.iIcon/*, IT_SYSCACHE*/);
|
||||
#else
|
||||
if (SHGetFileInfo(path, 0, &sfi, sizeof(sfi), SHGFI_ICON|SHGFI_SMALLICON)) {
|
||||
const Icon& icon = add(sfi.hIcon, IT_CACHED);
|
||||
#endif
|
||||
|
||||
///@todo limit cache size
|
||||
_pathMap[path] = icon;
|
||||
|
||||
return icon;
|
||||
} else
|
||||
return _icons[ICID_NONE];
|
||||
}
|
||||
|
||||
const Icon& IconCache::extract(LPCTSTR path, int idx)
|
||||
{
|
||||
CachePair key(path, idx);
|
||||
|
||||
key.first.toLower();
|
||||
|
||||
PathIdxMap::iterator found = _pathIdxMap.find(key);
|
||||
|
||||
if (found != _pathIdxMap.end())
|
||||
return _icons[found->second];
|
||||
|
||||
HICON hIcon;
|
||||
|
||||
if ((int)ExtractIconEx(path, idx, NULL, &hIcon, 1) > 0) {
|
||||
const Icon& icon = add(hIcon, IT_CACHED);
|
||||
|
||||
_pathIdxMap[key] = icon;
|
||||
|
||||
return icon;
|
||||
} else
|
||||
return _icons[ICID_NONE];
|
||||
}
|
||||
|
||||
const Icon& IconCache::extract(IExtractIcon* pExtract, LPCTSTR path, int idx)
|
||||
{
|
||||
HICON hIconLarge = 0;
|
||||
HICON hIcon;
|
||||
|
||||
HRESULT hr = pExtract->Extract(path, idx, &hIconLarge, &hIcon, MAKELONG(0/*GetSystemMetrics(SM_CXICON)*/,GetSystemMetrics(SM_CXSMICON)));
|
||||
|
||||
if (hr == NOERROR) {
|
||||
if (hIconLarge)
|
||||
DestroyIcon(hIconLarge);
|
||||
|
||||
if (hIcon)
|
||||
return add(hIcon);
|
||||
}
|
||||
|
||||
return _icons[ICID_NONE];
|
||||
}
|
||||
|
||||
const Icon& IconCache::add(HICON hIcon, ICON_TYPE type)
|
||||
{
|
||||
int id = ++s_next_id;
|
||||
|
||||
return _icons[id] = Icon(type, id, hIcon);
|
||||
}
|
||||
|
||||
const Icon& IconCache::add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/)
|
||||
{
|
||||
int id = ++s_next_id;
|
||||
|
||||
return _icons[id] = SysCacheIcon(id, sys_idx);
|
||||
}
|
||||
|
||||
const Icon& IconCache::get_icon(int id)
|
||||
{
|
||||
return _icons[id];
|
||||
}
|
||||
|
||||
void IconCache::free_icon(int icon_id)
|
||||
{
|
||||
IconMap::iterator found = _icons.find(icon_id);
|
||||
|
||||
if (found != _icons.end()) {
|
||||
Icon& icon = found->second;
|
||||
|
||||
if (icon.destroy())
|
||||
_icons.erase(found);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ResString::ResString(UINT nid)
|
||||
{
|
||||
TCHAR buffer[BUFFER_LEN];
|
||||
|
||||
int len = LoadString(g_Globals._hInstance, nid, buffer, sizeof(buffer)/sizeof(TCHAR));
|
||||
|
||||
super::assign(buffer, len);
|
||||
}
|
||||
|
||||
|
||||
ResIcon::ResIcon(UINT nid)
|
||||
{
|
||||
_hicon = LoadIcon(g_Globals._hInstance, MAKEINTRESOURCE(nid));
|
||||
}
|
||||
|
||||
SmallIcon::SmallIcon(UINT nid)
|
||||
{
|
||||
_hicon = (HICON)LoadImage(g_Globals._hInstance, MAKEINTRESOURCE(nid), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
||||
}
|
||||
|
||||
ResIconEx::ResIconEx(UINT nid, int w, int h)
|
||||
{
|
||||
_hicon = (HICON)LoadImage(g_Globals._hInstance, MAKEINTRESOURCE(nid), IMAGE_ICON, w, h, LR_SHARED);
|
||||
}
|
||||
|
||||
|
||||
void SetWindowIcon(HWND hwnd, UINT nid)
|
||||
{
|
||||
HICON hIcon = ResIcon(nid);
|
||||
Window_SetIcon(hwnd, ICON_BIG, hIcon);
|
||||
|
||||
HICON hIconSmall = SmallIcon(nid);
|
||||
Window_SetIcon(hwnd, ICON_SMALL, hIconSmall);
|
||||
}
|
||||
|
||||
|
||||
ResBitmap::ResBitmap(UINT nid)
|
||||
{
|
||||
_hBmp = LoadBitmap(g_Globals._hInstance, MAKEINTRESOURCE(nid));
|
||||
}
|
||||
|
||||
|
||||
#ifndef ROSSHELL
|
||||
|
||||
void explorer_show_frame(int cmdShow, LPTSTR lpCmdLine)
|
||||
{
|
||||
ExplorerCmd cmd;
|
||||
|
||||
if (g_Globals._hMainWnd) {
|
||||
if (IsIconic(g_Globals._hMainWnd))
|
||||
ShowWindow(g_Globals._hMainWnd, SW_RESTORE);
|
||||
else
|
||||
SetForegroundWindow(g_Globals._hMainWnd);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
g_Globals._prescan_nodes = false;
|
||||
|
||||
// create main window
|
||||
HWND hMainFrame = MainFrame::Create();
|
||||
|
||||
if (hMainFrame) {
|
||||
g_Globals._hMainWnd = hMainFrame;
|
||||
|
||||
ShowWindow(hMainFrame, cmdShow);
|
||||
UpdateWindow(hMainFrame);
|
||||
|
||||
cmd._cmdShow = cmdShow;
|
||||
|
||||
// parse command line options
|
||||
if (lpCmdLine)
|
||||
cmd.ParseCmdLine(lpCmdLine);
|
||||
|
||||
// Open the first child window after initializing the application
|
||||
if (cmd.IsValidPath()) {
|
||||
// We use the static s_path variable to store the path string in order
|
||||
// to avoid accessing prematurely freed memory in the PostMessage handlers.
|
||||
static String s_path = cmd._path;
|
||||
|
||||
PostMessage(hMainFrame, PM_OPEN_WINDOW, cmd._flags, (LPARAM)(LPCTSTR)s_path);
|
||||
} else
|
||||
PostMessage(hMainFrame, PM_OPEN_WINDOW, cmd._flags, 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool ExplorerCmd::ParseCmdLine(LPCTSTR lpCmdLine)
|
||||
{
|
||||
bool ok = true;
|
||||
|
||||
LPCTSTR b = lpCmdLine;
|
||||
LPCTSTR p = b;
|
||||
|
||||
while(*b) {
|
||||
// remove leading space
|
||||
while(_istspace((unsigned)*b))
|
||||
++b;
|
||||
|
||||
p = b;
|
||||
|
||||
bool quote = false;
|
||||
|
||||
// options are separated by ','
|
||||
for(; *p; ++p) {
|
||||
if (*p == '"') // Quote characters may appear at any position in the command line.
|
||||
quote = !quote;
|
||||
else if (*p==',' && !quote)
|
||||
break;
|
||||
}
|
||||
|
||||
if (p > b) {
|
||||
int l = p - b;
|
||||
|
||||
// remove trailing space
|
||||
while(l>0 && _istspace((unsigned)b[l-1]))
|
||||
--l;
|
||||
|
||||
if (!EvaluateOption(String(b, l)))
|
||||
ok = false;
|
||||
|
||||
if (*p)
|
||||
++p;
|
||||
|
||||
b = p;
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool ExplorerCmd::EvaluateOption(LPCTSTR option)
|
||||
{
|
||||
String opt_str;
|
||||
|
||||
// Remove quote characters, as they are evaluated at this point.
|
||||
for(; *option; ++option)
|
||||
if (*option != '"')
|
||||
opt_str += *option;
|
||||
|
||||
option = opt_str;
|
||||
|
||||
if (option[0] == '/') {
|
||||
++option;
|
||||
|
||||
// option /e for windows in explorer mode
|
||||
if (!_tcsicmp(option, TEXT("e")))
|
||||
_flags |= OWM_EXPLORE;
|
||||
// option /root for rooted explorer windows
|
||||
else if (!_tcsicmp(option, TEXT("root")))
|
||||
_flags |= OWM_ROOTED;
|
||||
else
|
||||
return false;
|
||||
} else {
|
||||
if (!_path.empty())
|
||||
return false;
|
||||
|
||||
_path = opt_str;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ExplorerCmd::IsValidPath() const
|
||||
{
|
||||
if (!_path.empty()) {
|
||||
DWORD attribs = GetFileAttributes(_path);
|
||||
|
||||
if (attribs!=INVALID_FILE_ATTRIBUTES && (attribs&FILE_ATTRIBUTE_DIRECTORY))
|
||||
return true; // file system path
|
||||
else if (*_path==':' && _path.at(1)==':')
|
||||
return true; // text encoded IDL
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void explorer_show_frame(int cmdShow, LPTSTR lpCmdLine)
|
||||
{
|
||||
if (!lpCmdLine)
|
||||
lpCmdLine = TEXT("explorer.exe");
|
||||
|
||||
launch_file(GetDesktopWindow(), lpCmdLine, cmdShow);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
PopupMenu::PopupMenu(UINT nid)
|
||||
{
|
||||
HMENU hMenu = LoadMenu(g_Globals._hInstance, MAKEINTRESOURCE(nid));
|
||||
_hmenu = GetSubMenu(hMenu, 0);
|
||||
}
|
||||
|
||||
|
||||
/// "About Explorer" Dialog
|
||||
struct ExplorerAboutDlg : public
|
||||
CtlColorParent<
|
||||
OwnerDrawParent<Dialog>
|
||||
>
|
||||
{
|
||||
typedef CtlColorParent<
|
||||
OwnerDrawParent<Dialog>
|
||||
> super;
|
||||
|
||||
ExplorerAboutDlg(HWND hwnd)
|
||||
: super(hwnd)
|
||||
{
|
||||
SetWindowIcon(hwnd, IDI_REACTOS);
|
||||
|
||||
new FlatButton(hwnd, IDOK);
|
||||
|
||||
_hfont = CreateFont(20, 0, 0, 0, FW_BOLD, TRUE, 0, 0, 0, 0, 0, 0, 0, TEXT("Sans Serif"));
|
||||
new ColorStatic(hwnd, IDC_ROS_EXPLORER, RGB(32,32,128), 0, _hfont);
|
||||
|
||||
new HyperlinkCtrl(hwnd, IDC_WWW);
|
||||
|
||||
FmtString ver_txt(ResString(IDS_EXPLORER_VERSION_STR), (LPCTSTR)ResString(IDS_VERSION_STR));
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_VERSION_TXT), ver_txt);
|
||||
|
||||
CenterWindow(hwnd);
|
||||
}
|
||||
|
||||
~ExplorerAboutDlg()
|
||||
{
|
||||
DeleteObject(_hfont);
|
||||
}
|
||||
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
case WM_PAINT:
|
||||
Paint();
|
||||
break;
|
||||
|
||||
default:
|
||||
return super::WndProc(nmsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Paint()
|
||||
{
|
||||
PaintCanvas canvas(_hwnd);
|
||||
|
||||
HICON hicon = (HICON) LoadImage(g_Globals._hInstance, MAKEINTRESOURCE(IDI_REACTOS_BIG), IMAGE_ICON, 0, 0, LR_SHARED);
|
||||
|
||||
DrawIconEx(canvas, 20, 10, hicon, 0, 0, 0, 0, DI_NORMAL);
|
||||
}
|
||||
|
||||
protected:
|
||||
HFONT _hfont;
|
||||
};
|
||||
|
||||
void explorer_about(HWND hwndParent)
|
||||
{
|
||||
Dialog::DoModal(IDD_ABOUT_EXPLORER, WINDOW_CREATOR(ExplorerAboutDlg), hwndParent);
|
||||
}
|
||||
|
||||
|
||||
static void InitInstance(HINSTANCE hInstance)
|
||||
{
|
||||
CONTEXT("InitInstance");
|
||||
|
||||
setlocale(LC_COLLATE, ""); // set collating rules to local settings for compareName
|
||||
|
||||
#ifndef ROSSHELL
|
||||
// register frame window class
|
||||
g_Globals._hframeClass = IconWindowClass(CLASSNAME_FRAME,IDI_EXPLORER);
|
||||
|
||||
// register child windows class
|
||||
WindowClass(CLASSNAME_CHILDWND, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register();
|
||||
|
||||
// register tree windows class
|
||||
WindowClass(CLASSNAME_WINEFILETREE, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register();
|
||||
#endif
|
||||
|
||||
g_Globals._cfStrFName = RegisterClipboardFormat(CFSTR_FILENAME);
|
||||
}
|
||||
|
||||
|
||||
int explorer_main(HINSTANCE hInstance, LPTSTR lpCmdLine, int cmdShow)
|
||||
{
|
||||
CONTEXT("explorer_main");
|
||||
|
||||
// initialize Common Controls library
|
||||
CommonControlInit usingCmnCtrl;
|
||||
|
||||
try {
|
||||
InitInstance(hInstance);
|
||||
} catch(COMException& e) {
|
||||
HandleException(e, GetDesktopWindow());
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifndef ROSSHELL
|
||||
if (cmdShow != SW_HIDE) {
|
||||
/* // don't maximize if being called from the ROS desktop
|
||||
if (cmdShow == SW_SHOWNORMAL)
|
||||
///@todo read window placement from registry
|
||||
cmdShow = SW_MAXIMIZE;
|
||||
*/
|
||||
|
||||
explorer_show_frame(cmdShow, lpCmdLine);
|
||||
}
|
||||
#endif
|
||||
|
||||
return Window::MessageLoop();
|
||||
}
|
||||
|
||||
|
||||
// MinGW does not provide a Unicode startup routine, so we have to implement an own.
|
||||
#if defined(__MINGW32__) && defined(UNICODE)
|
||||
|
||||
#define _tWinMain wWinMain
|
||||
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
CONTEXT("main");
|
||||
|
||||
STARTUPINFO startupinfo;
|
||||
int nShowCmd = SW_SHOWNORMAL;
|
||||
|
||||
GetStartupInfo(&startupinfo);
|
||||
|
||||
if (startupinfo.dwFlags & STARTF_USESHOWWINDOW)
|
||||
nShowCmd = startupinfo.wShowWindow;
|
||||
|
||||
LPWSTR cmdline = GetCommandLineW();
|
||||
|
||||
while(*cmdline && !_istspace((unsigned)*cmdline))
|
||||
++cmdline;
|
||||
|
||||
while(_istspace((unsigned)*cmdline))
|
||||
++cmdline;
|
||||
|
||||
return wWinMain(GetModuleHandle(NULL), 0, cmdline, nShowCmd);
|
||||
}
|
||||
|
||||
#endif // __MINGW && UNICODE
|
||||
|
||||
|
||||
static bool SetShellReadyEvent(LPCTSTR evtName)
|
||||
{
|
||||
HANDLE hEvent = OpenEvent(EVENT_MODIFY_STATE, FALSE, evtName);
|
||||
if (!hEvent)
|
||||
return false;
|
||||
|
||||
SetEvent(hEvent);
|
||||
CloseHandle(hEvent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd)
|
||||
{
|
||||
CONTEXT("WinMain()");
|
||||
|
||||
BOOL any_desktop_running = IsAnyDesktopRunning();
|
||||
|
||||
BOOL startup_desktop;
|
||||
|
||||
// strip extended options from the front of the command line
|
||||
String ext_options;
|
||||
|
||||
while(*lpCmdLine == '-') {
|
||||
while(*lpCmdLine && !_istspace((unsigned)*lpCmdLine))
|
||||
ext_options += *lpCmdLine++;
|
||||
|
||||
while(_istspace((unsigned)*lpCmdLine))
|
||||
++lpCmdLine;
|
||||
}
|
||||
|
||||
// command line option "-install" to replace previous shell application with ROS Explorer
|
||||
if (_tcsstr(ext_options,TEXT("-install"))) {
|
||||
// install ROS Explorer into the registry
|
||||
TCHAR path[MAX_PATH];
|
||||
|
||||
int l = GetModuleFileName(0, path, MAX_PATH);
|
||||
if (l) {
|
||||
HKEY hkey;
|
||||
|
||||
if (!RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hkey)) {
|
||||
|
||||
///@todo save previous shell application in config file
|
||||
|
||||
RegSetValueEx(hkey, TEXT("Shell"), 0, REG_SZ, (LPBYTE)path, l*sizeof(TCHAR));
|
||||
RegCloseKey(hkey);
|
||||
}
|
||||
}
|
||||
|
||||
HWND shellWindow = GetShellWindow();
|
||||
|
||||
if (shellWindow) {
|
||||
DWORD pid;
|
||||
|
||||
// terminate shell process for NT like systems
|
||||
GetWindowThreadProcessId(shellWindow, &pid);
|
||||
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
|
||||
|
||||
// On Win 9x it's sufficient to destroy the shell window.
|
||||
DestroyWindow(shellWindow);
|
||||
|
||||
if (TerminateProcess(hProcess, 0))
|
||||
WaitForSingleObject(hProcess, INFINITE);
|
||||
|
||||
CloseHandle(hProcess);
|
||||
}
|
||||
|
||||
startup_desktop = TRUE;
|
||||
} else {
|
||||
// create desktop window and task bar only, if there is no other shell and we are
|
||||
// the first explorer instance
|
||||
// MS Explorer looks additionally into the registry entry HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell,
|
||||
// to decide wether it is currently configured as shell application.
|
||||
startup_desktop = !any_desktop_running;
|
||||
}
|
||||
|
||||
|
||||
bool autostart = !any_desktop_running;
|
||||
|
||||
// disable autostart if the SHIFT key is pressed
|
||||
if (GetAsyncKeyState(VK_SHIFT) < 0)
|
||||
autostart = false;
|
||||
|
||||
#ifdef _DEBUG //MF: disabled for debugging
|
||||
autostart = false;
|
||||
#endif
|
||||
|
||||
// If there is given the command line option "-desktop", create desktop window anyways
|
||||
if (_tcsstr(ext_options,TEXT("-desktop")))
|
||||
startup_desktop = TRUE;
|
||||
#ifndef ROSSHELL
|
||||
else if (_tcsstr(ext_options,TEXT("-nodesktop")))
|
||||
startup_desktop = FALSE;
|
||||
|
||||
// Don't display cabinet window in desktop mode
|
||||
if (startup_desktop && !_tcsstr(ext_options,TEXT("-explorer")))
|
||||
nShowCmd = SW_HIDE;
|
||||
#endif
|
||||
|
||||
if (_tcsstr(ext_options,TEXT("-noautostart")))
|
||||
autostart = false;
|
||||
else if (_tcsstr(ext_options,TEXT("-autostart")))
|
||||
autostart = true;
|
||||
|
||||
if (startup_desktop) {
|
||||
// hide the XP login screen (Credit to Nicolas Escuder)
|
||||
// another undocumented event: "Global\\msgina: ReturnToWelcome"
|
||||
if (!SetShellReadyEvent(TEXT("msgina: ShellReadyEvent")))
|
||||
SetShellReadyEvent(TEXT("Global\\msgina: ShellReadyEvent"));
|
||||
|
||||
// launch the shell DDE server
|
||||
if (g_SHDOCVW_ShellDDEInit)
|
||||
(*g_SHDOCVW_ShellDDEInit)(TRUE);
|
||||
}
|
||||
#ifdef ROSSHELL
|
||||
else
|
||||
return 0; // no shell to launch, so exit immediatelly
|
||||
#endif
|
||||
|
||||
|
||||
g_Globals.init(hInstance);
|
||||
|
||||
// initialize COM and OLE before creating the desktop window
|
||||
OleInit usingCOM;
|
||||
|
||||
if (startup_desktop) {
|
||||
g_Globals._desktops.init();
|
||||
|
||||
g_Globals._hwndDesktop = DesktopWindow::Create();
|
||||
|
||||
/**TODO launching autostart programs can be moved into a background thread. */
|
||||
if (autostart) {
|
||||
char* argv[] = {"", "s"}; // call startup routine in SESSION_START mode
|
||||
startup(2, argv);
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef ROSSHELL
|
||||
if (g_Globals._hwndDesktop)
|
||||
g_Globals._desktop_mode = true;
|
||||
#endif
|
||||
|
||||
int ret = explorer_main(hInstance, lpCmdLine, nShowCmd);
|
||||
|
||||
// shutdown the shell DDE server
|
||||
if (g_SHDOCVW_ShellDDEInit)
|
||||
(*g_SHDOCVW_ShellDDEInit)(FALSE);
|
||||
|
||||
return ret;
|
||||
}
|
455
explorer.dsp
Normal file
@@ -0,0 +1,455 @@
|
||||
# Microsoft Developer Studio Project File - Name="explorer" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=explorer - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "explorer.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "explorer.mak" CFG="explorer - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "explorer - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "explorer - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "explorer - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "explorer - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "explorer - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /Yu"precomp.h" /FD /c
|
||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||
# ADD RSC /l 0x407 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ELSEIF "$(CFG)" == "explorer - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
||||
# ADD RSC /l 0x407 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ELSEIF "$(CFG)" == "explorer - Win32 Unicode Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "URelease"
|
||||
# PROP BASE Intermediate_Dir "URelease"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "URelease"
|
||||
# PROP Intermediate_Dir "URelease"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /Yu"precomp.h" /FD /c
|
||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||
# ADD RSC /l 0x407 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ELSEIF "$(CFG)" == "explorer - Win32 Unicode Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "UDebug"
|
||||
# PROP BASE Intermediate_Dir "UDebug"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "UDebug"
|
||||
# PROP Intermediate_Dir "UDebug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
||||
# ADD RSC /l 0x407 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "explorer - Win32 Release"
|
||||
# Name "explorer - Win32 Debug"
|
||||
# Name "explorer - Win32 Unicode Release"
|
||||
# Name "explorer - Win32 Unicode Debug"
|
||||
# Begin Group "utility"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\dragdropimpl.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\dragdropimpl.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellbrowserimpl.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellbrowserimpl.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellclasses.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellclasses.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\treedroptarget.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\utility.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\utility.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\window.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\window.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "resources"
|
||||
|
||||
# PROP Default_Filter "bmp,ico"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\action.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\appicon.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\apps.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrow.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrow_dwn.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrow_up.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrowsel.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\computer.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\config.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\documents.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\explorer-en.rc"
|
||||
# PROP Exclude_From_Build 1
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\explorer.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer_intres.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer_intres.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\favorites.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\floating.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\folder.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\images.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\info.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logoff.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logov.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logov16.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logov256.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\network.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\printer.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\reactos.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\res\ros-big.ico"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\res\search-doc.ico"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\search.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\startmenu.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\toolbar.bmp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "taskbar"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\desktopbar.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\desktopbar.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\quicklaunch.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\quicklaunch.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\startmenu.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\startmenu.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\taskbar.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\taskbar.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\traynotify.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\traynotify.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "desktop"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\desktop\desktop.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\desktop\desktop.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "shell"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\entries.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\entries.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\mainframe.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\mainframe.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\shellbrowser.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\shellbrowser.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\shellfs.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\startup.c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "dialogs"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\dialogs\settings.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\dialogs\settings.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "main"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\externals.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\globals.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\precomp.cpp
|
||||
# ADD CPP /Yc"precomp.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\precomp.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
@@ -3,7 +3,19 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "rbuild"=.\rbuild.dsp - Package Owner=<4>
|
||||
Project: "explorer"=.\explorer.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "make_explorer"=.\make_explorer.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
95
explorer.h
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright 2003, 2004, 2005 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// explorer.h
|
||||
//
|
||||
// Martin Fuchs, 23.07.2003
|
||||
//
|
||||
|
||||
|
||||
#define _LIGHT_STARTMENU
|
||||
//#define _LAZY_ICONEXTRACT
|
||||
//#define _SINGLE_ICONEXTRACT
|
||||
|
||||
|
||||
#include "utility/shellclasses.h"
|
||||
|
||||
#include "shell/entries.h"
|
||||
|
||||
#include "utility/window.h"
|
||||
|
||||
|
||||
#define IDW_STATUSBAR 0x100
|
||||
#define IDW_TOOLBAR 0x101
|
||||
#define IDW_FIRST_CHILD 0xC000 /*0x200*/
|
||||
|
||||
|
||||
#define PM_GET_CONTROLWINDOW (WM_APP+0x16)
|
||||
|
||||
#define PM_RESIZE_CHILDREN (WM_APP+0x17)
|
||||
#define PM_GET_WIDTH (WM_APP+0x18)
|
||||
|
||||
|
||||
#define CLASSNAME_FRAME TEXT("CabinetWClass") // same class name for frame window as in MS Explorer
|
||||
|
||||
#define CLASSNAME_CHILDWND TEXT("WFS_Child")
|
||||
#define CLASSNAME_WINEFILETREE TEXT("WFS_Tree")
|
||||
|
||||
|
||||
#include "shell/shellbrowser.h"
|
||||
|
||||
|
||||
#ifndef ROSSHELL
|
||||
|
||||
/// Explorer command line parser
|
||||
// for commands like "/e,/root,c:\"
|
||||
// or "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}" (launch of control panel)
|
||||
struct ExplorerCmd
|
||||
{
|
||||
ExplorerCmd()
|
||||
: _flags(0),
|
||||
_cmdShow(SW_SHOWNORMAL),
|
||||
_valid_path(false)
|
||||
{
|
||||
}
|
||||
|
||||
ExplorerCmd(LPCTSTR url)
|
||||
: _path(url),
|
||||
_flags(0),
|
||||
_cmdShow(SW_SHOWNORMAL),
|
||||
_valid_path(true) //@@
|
||||
{
|
||||
}
|
||||
|
||||
bool ParseCmdLine(LPCTSTR lpCmdLine);
|
||||
bool EvaluateOption(LPCTSTR option);
|
||||
bool IsValidPath() const;
|
||||
|
||||
String _path;
|
||||
int _flags; // OPEN_WINDOW_MODE
|
||||
int _cmdShow;
|
||||
bool _valid_path;
|
||||
};
|
||||
|
||||
#include "shell/mainframe.h"
|
||||
|
||||
#endif
|
48
explorer.rbuild
Normal file
@@ -0,0 +1,48 @@
|
||||
<module name="explorer" type="win32gui" installname="explorer.exe" allowwarnings="true">
|
||||
<linkerflag>-luuid</linkerflag>
|
||||
<linkerflag>-lstdc++</linkerflag>
|
||||
<linkerflag>-fexceptions</linkerflag>
|
||||
<include base="explorer">.</include>
|
||||
<define name="__USE_W32API" />
|
||||
<define name="UNICODE" />
|
||||
<define name="WIN32" />
|
||||
<define name="_WIN32_IE">0x0501</define>
|
||||
<define name="_WIN32_WINNT">0x0501</define>
|
||||
<define name="__WINDRES__" />
|
||||
<library>kernel32</library>
|
||||
<library>gdi32</library>
|
||||
<library>user32</library>
|
||||
<library>comctl32</library>
|
||||
<library>ole32</library>
|
||||
<library>shell32</library>
|
||||
<pch>precomp.h</pch>
|
||||
<directory name="desktop">
|
||||
<file>desktop.cpp</file>
|
||||
</directory>
|
||||
<directory name="dialogs">
|
||||
<file>settings.cpp</file>
|
||||
</directory>
|
||||
<directory name="shell">
|
||||
<file>entries.cpp</file>
|
||||
<file>shellfs.cpp</file>
|
||||
<file>mainframe.cpp</file>
|
||||
<file>shellbrowser.cpp</file>
|
||||
<file>startup.c</file>
|
||||
</directory>
|
||||
<directory name="taskbar">
|
||||
<file>desktopbar.cpp</file>
|
||||
<file>taskbar.cpp</file>
|
||||
<file>startmenu.cpp</file>
|
||||
<file>traynotify.cpp</file>
|
||||
<file>quicklaunch.cpp</file>
|
||||
</directory>
|
||||
<directory name="utility">
|
||||
<file>shellclasses.cpp</file>
|
||||
<file>utility.cpp</file>
|
||||
<file>window.cpp</file>
|
||||
<file>dragdropimpl.cpp</file>
|
||||
<file>shellbrowserimpl.cpp</file>
|
||||
</directory>
|
||||
<file>explorer.cpp</file>
|
||||
<file>explorer.rc</file>
|
||||
</module>
|
52
explorer.rc
Normal file
@@ -0,0 +1,52 @@
|
||||
#include <defines.h>
|
||||
#include <reactos/resource.h>
|
||||
|
||||
#include "explorer_intres.rc"
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||
VALUE "FileDescription", "ReactOS Explorer\0"
|
||||
VALUE "FileVersion", RES_STR_FILE_VERSION
|
||||
VALUE "InternalName", "explorer\0"
|
||||
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||
VALUE "OriginalFilename", "explorer.exe\0"
|
||||
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
#define IDS_VERSION_STR 5000
|
||||
#define IDS_EXPLORER_VERSION_STR 5001
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_VERSION_STR RES_STR_PRODUCT_VERSION
|
||||
IDS_EXPLORER_VERSION_STR "ReactOS %s Lean Explorer"
|
||||
END
|
||||
|
35
explorer.sln
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "explorer", "explorer.vcproj", "{724B1B1C-4752-488D-9CC7-A0296F4C91E8}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_explorer", "make_explorer.vcproj", "{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
Unicode Debug|Win32 = Unicode Debug|Win32
|
||||
Unicode Release|Win32 = Unicode Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Release|Win32.Build.0 = Release|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Release|Win32.Build.0 = Release|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
1385
explorer.vcproj
Normal file
147
explorer_intres.rc
Normal file
@@ -0,0 +1,147 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include <windows.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Neutral resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
IDB_LOGOV BITMAP DISCARDABLE "res/logov.bmp"
|
||||
IDB_LOGOV256 BITMAP DISCARDABLE "res/logov256.bmp"
|
||||
IDB_LOGOV16 BITMAP DISCARDABLE "res/logov16.bmp"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
|
||||
IDA_EXPLORER ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
"X", ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT
|
||||
END
|
||||
|
||||
IDA_SEARCH_PROGRAM ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
VK_F5, ID_REFRESH, VIRTKEY, NOINVERT
|
||||
END
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include <windows.h>\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#ifndef ROSSHELL\r\n"
|
||||
"IDB_TOOLBAR BITMAP DISCARDABLE ""res/toolbar.bmp""\r\n"
|
||||
"#endif\r\n"
|
||||
"#ifndef _ROS_\r\n"
|
||||
"LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r\n"
|
||||
"STRINGTABLE DISCARDABLE \r\n"
|
||||
"BEGIN\r\n"
|
||||
"IDS_VERSION_STR """"\r\n"
|
||||
"#ifdef UNICODE\r\n"
|
||||
"IDS_EXPLORER_VERSION_STR ""ROS Lean Explorer""\r\n"
|
||||
"#else\r\n"
|
||||
"IDS_EXPLORER_VERSION_STR ""ROS Lean Explorer Ansi""\r\n"
|
||||
"#endif\r\n"
|
||||
"END\r\n"
|
||||
"#endif\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_REACTOS ICON DISCARDABLE "res/reactos.ico"
|
||||
IDI_EXPLORER ICON DISCARDABLE "res/explorer.ico"
|
||||
IDI_STARTMENU ICON DISCARDABLE "res/startmenu.ico"
|
||||
IDI_LOGOFF ICON DISCARDABLE "res/logoff.ico"
|
||||
IDI_ARROW ICON DISCARDABLE "res/arrow.ico"
|
||||
IDI_ARROW_SELECTED ICON DISCARDABLE "res/arrowsel.ico"
|
||||
IDI_APPICON ICON DISCARDABLE "res/appicon.ico"
|
||||
IDI_FLOATING ICON DISCARDABLE "res/floating.ico"
|
||||
IDI_REACTOS_BIG ICON DISCARDABLE "res/ros-big.ico"
|
||||
IDI_CONFIG ICON DISCARDABLE "res/config.ico"
|
||||
IDI_DOCUMENTS ICON DISCARDABLE "res/documents.ico"
|
||||
IDI_FAVORITES ICON DISCARDABLE "res/favorites.ico"
|
||||
IDI_INFO ICON DISCARDABLE "res/info.ico"
|
||||
IDI_APPS ICON DISCARDABLE "res/apps.ico"
|
||||
IDI_SEARCH ICON DISCARDABLE "res/search.ico"
|
||||
IDI_ACTION ICON DISCARDABLE "res/action.ico"
|
||||
IDI_FOLDER ICON DISCARDABLE "res/folder.ico"
|
||||
IDI_SEARCH_DOC ICON DISCARDABLE "res/search-doc.ico"
|
||||
IDI_PRINTER ICON DISCARDABLE "res/printer.ico"
|
||||
IDI_NETWORK ICON DISCARDABLE "res/network.ico"
|
||||
IDI_COMPUTER ICON DISCARDABLE "res/computer.ico"
|
||||
IDI_ARROW_UP ICON DISCARDABLE "res/arrow_up.ico"
|
||||
IDI_ARROW_DOWN ICON DISCARDABLE "res/arrow_dwn.ico"
|
||||
#endif // Neutral resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#ifndef ROSSHELL
|
||||
IDB_TOOLBAR BITMAP DISCARDABLE "res/toolbar.bmp"
|
||||
#endif
|
||||
#ifndef _ROS_
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_VERSION_STR ""
|
||||
#ifdef UNICODE
|
||||
IDS_EXPLORER_VERSION_STR "ROS Lean Explorer"
|
||||
#else
|
||||
IDS_EXPLORER_VERSION_STR "ROS Lean Explorer Ansi"
|
||||
#endif
|
||||
END
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
55
externals.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright 2003, 2004 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// externals.h
|
||||
//
|
||||
// Martin Fuchs, 07.06.2003
|
||||
//
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
// launch start programs
|
||||
extern int startup(int argc, char *argv[]);
|
||||
|
||||
// explorer main routine
|
||||
extern int explorer_main(HINSTANCE hinstance, LPTSTR lpCmdLine, int cmdshow);
|
||||
|
||||
// display explorer/file manager window
|
||||
extern void explorer_show_frame(int cmdshow, LPTSTR lpCmdLine=NULL);
|
||||
|
||||
// display explorer "About" dialog
|
||||
extern void explorer_about(HWND hwndParent);
|
||||
|
||||
// test for already running desktop instance
|
||||
extern BOOL IsAnyDesktopRunning();
|
||||
|
||||
// show shutdown dialog
|
||||
extern void ShowExitWindowsDialog(HWND hwndOwner);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
257
globals.h
Normal file
@@ -0,0 +1,257 @@
|
||||
/*
|
||||
* Copyright 2003, 2004, 2005 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Explorer clone, lean version
|
||||
//
|
||||
// globals.h
|
||||
//
|
||||
// Martin Fuchs, 23.07.2003
|
||||
//
|
||||
|
||||
|
||||
/// management of file types
|
||||
struct FileTypeInfo {
|
||||
String _classname;
|
||||
String _displayname;
|
||||
bool _neverShowExt;
|
||||
};
|
||||
|
||||
struct FileTypeManager : public map<String, FileTypeInfo>
|
||||
{
|
||||
typedef map<String, FileTypeInfo> super;
|
||||
|
||||
const FileTypeInfo& operator[](String ext);
|
||||
|
||||
LPCTSTR set_type(struct ShellEntry* entry, bool dont_hide_ext=false);
|
||||
};
|
||||
|
||||
|
||||
enum ICON_TYPE {
|
||||
IT_STATIC,
|
||||
IT_CACHED,
|
||||
IT_DYNAMIC,
|
||||
IT_SYSCACHE
|
||||
};
|
||||
|
||||
enum ICON_ID {
|
||||
ICID_UNKNOWN,
|
||||
ICID_NONE,
|
||||
|
||||
ICID_FOLDER,
|
||||
//ICID_DOCUMENT,
|
||||
ICID_APP,
|
||||
ICID_EXPLORER,
|
||||
|
||||
ICID_CONFIG,
|
||||
ICID_DOCUMENTS,
|
||||
ICID_FAVORITES,
|
||||
ICID_INFO,
|
||||
ICID_APPS,
|
||||
ICID_SEARCH,
|
||||
ICID_ACTION,
|
||||
ICID_SEARCH_DOC,
|
||||
ICID_PRINTER,
|
||||
ICID_NETWORK,
|
||||
ICID_COMPUTER,
|
||||
ICID_LOGOFF,
|
||||
|
||||
ICID_DYNAMIC
|
||||
};
|
||||
|
||||
struct Icon {
|
||||
Icon();
|
||||
Icon(ICON_ID id, UINT nid);
|
||||
Icon(ICON_TYPE itype, int id, HICON hIcon);
|
||||
Icon(ICON_TYPE itype, int id, int sys_idx);
|
||||
|
||||
operator ICON_ID() const {return _id;}
|
||||
|
||||
void draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const;
|
||||
HBITMAP create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const;
|
||||
|
||||
int get_sysiml_idx() const {return _itype==IT_SYSCACHE? _sys_idx: -1;}
|
||||
|
||||
bool destroy() {if (_itype == IT_DYNAMIC) {DestroyIcon(_hicon); return true;} else return false;}
|
||||
|
||||
protected:
|
||||
ICON_ID _id;
|
||||
ICON_TYPE _itype;
|
||||
HICON _hicon;
|
||||
int _sys_idx;
|
||||
};
|
||||
|
||||
struct SysCacheIcon : public Icon {
|
||||
SysCacheIcon(int id, int sys_idx)
|
||||
: Icon(IT_SYSCACHE, id, sys_idx) {}
|
||||
};
|
||||
|
||||
struct IconCache {
|
||||
IconCache() : _himlSys(0) {}
|
||||
|
||||
void init();
|
||||
|
||||
const Icon& extract(const String& path);
|
||||
const Icon& extract(LPCTSTR path, int idx);
|
||||
const Icon& extract(IExtractIcon* pExtract, LPCTSTR path, int idx);
|
||||
|
||||
const Icon& add(HICON hIcon, ICON_TYPE type=IT_DYNAMIC);
|
||||
const Icon& add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/);
|
||||
|
||||
const Icon& get_icon(int icon_id);
|
||||
HIMAGELIST get_sys_imagelist() const {return _himlSys;}
|
||||
|
||||
void free_icon(int icon_id);
|
||||
|
||||
protected:
|
||||
static int s_next_id;
|
||||
|
||||
typedef map<int, Icon> IconMap;
|
||||
IconMap _icons;
|
||||
|
||||
typedef map<String, ICON_ID> PathMap;
|
||||
PathMap _pathMap;
|
||||
|
||||
typedef pair<String, int> CachePair;
|
||||
typedef map<CachePair, ICON_ID> PathIdxMap;
|
||||
PathIdxMap _pathIdxMap;
|
||||
|
||||
HIMAGELIST _himlSys;
|
||||
};
|
||||
|
||||
|
||||
/// create a bitmap from an icon
|
||||
extern HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd);
|
||||
|
||||
|
||||
/// desktop management
|
||||
|
||||
typedef pair<HWND, DWORD> MinimizeStruct;
|
||||
|
||||
struct Desktop
|
||||
{
|
||||
set<HWND> _windows;
|
||||
WindowHandle _hwndForeground;
|
||||
list<MinimizeStruct> _minimized;
|
||||
};
|
||||
typedef Desktop DesktopRef;
|
||||
|
||||
|
||||
#define DESKTOP_COUNT 4
|
||||
|
||||
struct Desktops : public vector<DesktopRef>
|
||||
{
|
||||
Desktops();
|
||||
~Desktops();
|
||||
|
||||
void init();
|
||||
void SwitchToDesktop(int idx);
|
||||
void ToggleMinimize();
|
||||
|
||||
int _current_desktop;
|
||||
};
|
||||
|
||||
|
||||
/// structure containing global variables of Explorer
|
||||
extern struct ExplorerGlobals
|
||||
{
|
||||
ExplorerGlobals();
|
||||
|
||||
void init(HINSTANCE hInstance);
|
||||
|
||||
HINSTANCE _hInstance;
|
||||
UINT _cfStrFName;
|
||||
|
||||
#ifndef ROSSHELL
|
||||
ATOM _hframeClass;
|
||||
HWND _hMainWnd;
|
||||
bool _desktop_mode;
|
||||
bool _prescan_nodes;
|
||||
#endif
|
||||
|
||||
FILE* _log;
|
||||
|
||||
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
|
||||
DWORD(STDAPICALLTYPE* _SHRestricted)(RESTRICTIONS);
|
||||
#endif
|
||||
|
||||
FileTypeManager _ftype_mgr;
|
||||
IconCache _icon_cache;
|
||||
|
||||
HWND _hwndDesktopBar;
|
||||
HWND _hwndShellView;
|
||||
HWND _hwndDesktop;
|
||||
|
||||
Desktops _desktops;
|
||||
} g_Globals;
|
||||
|
||||
|
||||
/// convenient loading of string resources
|
||||
struct ResString : public String
|
||||
{
|
||||
ResString(UINT nid);
|
||||
};
|
||||
|
||||
/// convenient loading of standard (32x32) icon resources
|
||||
struct ResIcon
|
||||
{
|
||||
ResIcon(UINT nid);
|
||||
|
||||
operator HICON() const {return _hicon;}
|
||||
|
||||
protected:
|
||||
HICON _hicon;
|
||||
};
|
||||
|
||||
/// convenient loading of small (16x16) icon resources
|
||||
struct SmallIcon
|
||||
{
|
||||
SmallIcon(UINT nid);
|
||||
|
||||
operator HICON() const {return _hicon;}
|
||||
|
||||
protected:
|
||||
HICON _hicon;
|
||||
};
|
||||
|
||||
/// convenient loading of icon resources with specified sizes
|
||||
struct ResIconEx
|
||||
{
|
||||
ResIconEx(UINT nid, int w, int h);
|
||||
|
||||
operator HICON() const {return _hicon;}
|
||||
|
||||
protected:
|
||||
HICON _hicon;
|
||||
};
|
||||
|
||||
/// set big and small icons out of the resources for a window
|
||||
extern void SetWindowIcon(HWND hwnd, UINT nid);
|
||||
|
||||
/// convenient loading of bitmap resources
|
||||
struct ResBitmap
|
||||
{
|
||||
ResBitmap(UINT nid);
|
||||
~ResBitmap() {DeleteObject(_hBmp);}
|
||||
|
||||
operator HBITMAP() const {return _hBmp;}
|
||||
|
||||
protected:
|
||||
HBITMAP _hBmp;
|
||||
};
|
147
make_explorer.dsp
Normal file
@@ -0,0 +1,147 @@
|
||||
# Microsoft Developer Studio Project File - Name="make_explorer" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) External Target" 0x0106
|
||||
|
||||
CFG=make_explorer - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "make_explorer.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "make_explorer.mak" CFG="make_explorer - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "make_explorer - Win32 Release" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE "make_explorer - Win32 Debug" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE "make_explorer - Win32 Unicode Debug" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE "make_explorer - Win32 Unicode Release" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
|
||||
!IF "$(CFG)" == "make_explorer - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Cmd_Line "NMAKE /f make_explorer.mak"
|
||||
# PROP BASE Rebuild_Opt "/a"
|
||||
# PROP BASE Target_File "make_explorer.exe"
|
||||
# PROP BASE Bsc_Name "make_explorer.bsc"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name ""
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_explorer - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Cmd_Line "NMAKE /f make_explorer.mak"
|
||||
# PROP BASE Rebuild_Opt "/a"
|
||||
# PROP BASE Target_File "make_explorer.exe"
|
||||
# PROP BASE Bsc_Name "make_explorer.bsc"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "UDebug"
|
||||
# PROP BASE Intermediate_Dir "UDebug"
|
||||
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
|
||||
# PROP BASE Rebuild_Opt "clean all"
|
||||
# PROP BASE Target_File "explorer.exe"
|
||||
# PROP BASE Bsc_Name ""
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "UDebug"
|
||||
# PROP Intermediate_Dir "UDebug"
|
||||
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name ""
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "URelease"
|
||||
# PROP BASE Intermediate_Dir "URelease"
|
||||
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1"
|
||||
# PROP BASE Rebuild_Opt "clean all"
|
||||
# PROP BASE Target_File "explorer.exe"
|
||||
# PROP BASE Bsc_Name ""
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "URelease"
|
||||
# PROP Intermediate_Dir "URelease"
|
||||
# PROP Cmd_Line "make -f Makefile-MinGW UNICODE=1"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name ""
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "make_explorer - Win32 Release"
|
||||
# Name "make_explorer - Win32 Debug"
|
||||
# Name "make_explorer - Win32 Unicode Debug"
|
||||
# Name "make_explorer - Win32 Unicode Release"
|
||||
|
||||
!IF "$(CFG)" == "make_explorer - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_explorer - Win32 Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Release"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Makefile
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\Makefile-MinGW"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\Makefile-precomp"
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
125
make_explorer.vcproj
Normal file
@@ -0,0 +1,125 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="make_explorer"
|
||||
ProjectGUID="{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}"
|
||||
RootNamespace="make_explorer"
|
||||
Keyword="MakeFileProj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Unicode Release|Win32"
|
||||
OutputDirectory=".\URelease"
|
||||
IntermediateDirectory=".\URelease"
|
||||
ConfigurationType="0"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
>
|
||||
<Tool
|
||||
Name="VCNMakeTool"
|
||||
BuildCommandLine="make -f Makefile-MinGW UNICODE=1"
|
||||
ReBuildCommandLine="make -f Makefile-MinGW UNICODE=1 clean all"
|
||||
CleanCommandLine=""
|
||||
Output="explorer.exe"
|
||||
PreprocessorDefinitions=""
|
||||
IncludeSearchPath=""
|
||||
ForcedIncludes=""
|
||||
AssemblySearchPath=""
|
||||
ForcedUsingAssemblies=""
|
||||
CompileAsManaged=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\Release"
|
||||
IntermediateDirectory=".\Release"
|
||||
ConfigurationType="0"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
>
|
||||
<Tool
|
||||
Name="VCNMakeTool"
|
||||
BuildCommandLine="msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0"
|
||||
ReBuildCommandLine="msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 clean all"
|
||||
CleanCommandLine=""
|
||||
Output="explorer.exe"
|
||||
PreprocessorDefinitions=""
|
||||
IncludeSearchPath=""
|
||||
ForcedIncludes=""
|
||||
AssemblySearchPath=""
|
||||
ForcedUsingAssemblies=""
|
||||
CompileAsManaged=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Unicode Debug|Win32"
|
||||
OutputDirectory=".\UDebug"
|
||||
IntermediateDirectory=".\UDebug"
|
||||
ConfigurationType="0"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
>
|
||||
<Tool
|
||||
Name="VCNMakeTool"
|
||||
BuildCommandLine="msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
|
||||
ReBuildCommandLine="msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1 clean all"
|
||||
CleanCommandLine=""
|
||||
Output="explorer.exe"
|
||||
PreprocessorDefinitions=""
|
||||
IncludeSearchPath=""
|
||||
ForcedIncludes=""
|
||||
AssemblySearchPath=""
|
||||
ForcedUsingAssemblies=""
|
||||
CompileAsManaged=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\Debug"
|
||||
IntermediateDirectory=".\Debug"
|
||||
ConfigurationType="0"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
>
|
||||
<Tool
|
||||
Name="VCNMakeTool"
|
||||
BuildCommandLine="msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
|
||||
ReBuildCommandLine="msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1 clean all"
|
||||
CleanCommandLine=""
|
||||
Output="explorer.exe"
|
||||
PreprocessorDefinitions=""
|
||||
IncludeSearchPath=""
|
||||
ForcedIncludes=""
|
||||
AssemblySearchPath=""
|
||||
ForcedUsingAssemblies=""
|
||||
CompileAsManaged=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="Makefile"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Makefile-MinGW"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Makefile-precomp"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
143
make_rosshell.dsp
Normal file
@@ -0,0 +1,143 @@
|
||||
# Microsoft Developer Studio Project File - Name="make_rosshell" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) External Target" 0x0106
|
||||
|
||||
CFG=make_rosshell - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "make_rosshell.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "make_rosshell.mak" CFG="make_rosshell - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "make_rosshell - Win32 Release" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE "make_rosshell - Win32 Debug" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE "make_rosshell - Win32 Unicode Debug" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE "make_rosshell - Win32 Unicode Release" (based on "Win32 (x86) External Target")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
|
||||
!IF "$(CFG)" == "make_rosshell - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Cmd_Line "NMAKE /f make_rosshell.mak"
|
||||
# PROP BASE Rebuild_Opt "/a"
|
||||
# PROP BASE Target_File "make_rosshell.exe"
|
||||
# PROP BASE Bsc_Name "make_rosshell.bsc"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell-MinGW UNICODE=0"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name ""
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Cmd_Line "NMAKE /f make_rosshell.mak"
|
||||
# PROP BASE Rebuild_Opt "/a"
|
||||
# PROP BASE Target_File "make_rosshell.exe"
|
||||
# PROP BASE Bsc_Name "make_rosshell.bsc"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell-MinGW UNICODE=0 DEBUG=1"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "UDebug"
|
||||
# PROP BASE Intermediate_Dir "UDebug"
|
||||
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
|
||||
# PROP BASE Rebuild_Opt "clean all"
|
||||
# PROP BASE Target_File "explorer.exe"
|
||||
# PROP BASE Bsc_Name ""
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "UDebug"
|
||||
# PROP Intermediate_Dir "UDebug"
|
||||
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell-MinGW UNICODE=1 DEBUG=1"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name ""
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "URelease"
|
||||
# PROP BASE Intermediate_Dir "URelease"
|
||||
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1"
|
||||
# PROP BASE Rebuild_Opt "clean all"
|
||||
# PROP BASE Target_File "explorer.exe"
|
||||
# PROP BASE Bsc_Name ""
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "URelease"
|
||||
# PROP Intermediate_Dir "URelease"
|
||||
# PROP Cmd_Line "make -f Make-rosshell-MinGW UNICODE=1"
|
||||
# PROP Rebuild_Opt "clean all"
|
||||
# PROP Target_File "explorer.exe"
|
||||
# PROP Bsc_Name ""
|
||||
# PROP Target_Dir ""
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "make_rosshell - Win32 Release"
|
||||
# Name "make_rosshell - Win32 Debug"
|
||||
# Name "make_rosshell - Win32 Unicode Debug"
|
||||
# Name "make_rosshell - Win32 Unicode Release"
|
||||
|
||||
!IF "$(CFG)" == "make_rosshell - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Release"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\Make-rosshell.mak"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\Make-rosshell-MinGW"
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2000 Francois Gouget
|
||||
* Copyright 2004 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -13,13 +13,16 @@
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <winresrc.h>
|
||||
|
||||
#ifdef IDC_STATIC
|
||||
#undef IDC_STATIC
|
||||
#endif
|
||||
#define IDC_STATIC (-1)
|
||||
//
|
||||
// Explorer clone - precompiled header support
|
||||
//
|
||||
// precomp.h
|
||||
//
|
||||
// Martin Fuchs, 17.05.2004
|
||||
//
|
||||
|
||||
#include "precomp.h"
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Francois Gouget
|
||||
* Copyright 2004 Martin Fuchs
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -13,26 +13,25 @@
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_BCRYPT_H
|
||||
#define __WINE_BCRYPT_H
|
||||
|
||||
#ifndef WINAPI
|
||||
#define WINAPI __stdcall
|
||||
#endif
|
||||
//
|
||||
// Explorer clone - precompiled header support
|
||||
//
|
||||
// precomp.h
|
||||
//
|
||||
// Martin Fuchs, 17.05.2004
|
||||
//
|
||||
|
||||
#ifndef IN
|
||||
#define IN
|
||||
#endif
|
||||
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
|
||||
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1
|
||||
|
||||
#ifndef OUT
|
||||
#define OUT
|
||||
#endif
|
||||
#include "utility/utility.h"
|
||||
|
||||
#ifndef OPTIONAL
|
||||
#define OPTIONAL
|
||||
#endif
|
||||
#include "explorer.h"
|
||||
#include "desktop/desktop.h"
|
||||
|
||||
#endif /* __WINE_BCRYPT_H */
|
||||
#include "globals.h"
|
||||
#include "externals.h"
|
21
proxy.mak
@@ -1,21 +0,0 @@
|
||||
MAKEFLAGS += --no-print-directory
|
||||
|
||||
$(DEFAULT):
|
||||
@$(MAKE) -C $(TOP) $(DEFAULT)
|
||||
|
||||
all:
|
||||
@$(MAKE) -C $(TOP) all
|
||||
|
||||
depends:
|
||||
@$(MAKE) -C $(TOP) $(DEFAULT)_depends
|
||||
|
||||
install:
|
||||
@$(MAKE) -C $(TOP) $(DEFAULT)_install
|
||||
|
||||
clean:
|
||||
@$(MAKE) -C $(TOP) $(DEFAULT)_clean
|
||||
|
||||
test:
|
||||
@$(MAKE) -C $(TOP) $(DEFAULT)_test
|
||||
|
||||
$(DEFAULT)_clean: clean
|
2
readme.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
This is the purist version of explorer without additional bells and whistles.
|
||||
|
BIN
res/action.ico
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
res/appicon.ico
Normal file
After Width: | Height: | Size: 318 B |
BIN
res/apps.ico
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
res/arrow.ico
Normal file
After Width: | Height: | Size: 318 B |
BIN
res/arrow_dwn.ico
Normal file
After Width: | Height: | Size: 158 B |
BIN
res/arrow_up.ico
Normal file
After Width: | Height: | Size: 158 B |
BIN
res/arrowsel.ico
Normal file
After Width: | Height: | Size: 318 B |
BIN
res/computer.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/config.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/documents.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/explorer.ico
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
res/favorites.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/floating.ico
Normal file
After Width: | Height: | Size: 158 B |
BIN
res/folder.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/info.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/logoff.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/logov.bmp
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
res/logov16.bmp
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
res/logov256.bmp
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
res/network.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/printer.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/reactos.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/ros-big.ico
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
res/search-doc.ico
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
res/search.ico
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
res/startmenu.ico
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
res/toolbar.bmp
Normal file
After Width: | Height: | Size: 1.3 KiB |
152
resource.h
Normal file
@@ -0,0 +1,152 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by explorer_intres.rc
|
||||
//
|
||||
#define IDS_TITLE 1
|
||||
#define IDS_START 2
|
||||
#define IDS_LOGOFF 3
|
||||
#define IDS_SHUTDOWN 4
|
||||
#define IDS_LAUNCH 5
|
||||
#define IDS_START_HELP 6
|
||||
#define IDS_SEARCH_FILES 7
|
||||
#define IDS_DOCUMENTS 8
|
||||
#define IDS_FAVORITES 9
|
||||
#define IDS_PROGRAMS 10
|
||||
#define IDS_SETTINGS 11
|
||||
#define IDS_EXPLORE 12
|
||||
#define IDS_EMPTY 13
|
||||
#define IDS_RECENT 14
|
||||
#define IDS_ADMIN 15
|
||||
#define IDS_NETWORK 16
|
||||
#define IDS_CONNECTIONS 17
|
||||
#define IDS_DRIVES 18
|
||||
#define IDS_SEARCH_COMPUTER 19
|
||||
#define IDS_CONTROL_PANEL 21
|
||||
#define IDS_PRINTERS 22
|
||||
#define IDS_SEARCH_PRG 24
|
||||
#define IDS_ALL_USERS 25
|
||||
#define IDS_SEARCH 26
|
||||
#define IDS_ABOUT_EXPLORER 27
|
||||
#define IDS_LAUNCH_MANY_PROGRAMS 28
|
||||
#define IDS_DESKTOPBAR_SETTINGS 29
|
||||
#define IDS_DESKTOP 30
|
||||
#define IDS_TASKBAR 31
|
||||
#define IDS_STARTMENU 32
|
||||
#define IDS_MINIMIZE_ALL 33
|
||||
#define IDS_DESKTOP_NUM 34
|
||||
#define IDS_TERMINATE 45
|
||||
#define IDI_REACTOS 100
|
||||
#define IDI_EXPLORER 101
|
||||
#define IDI_STARTMENU 102
|
||||
#define IDB_TOOLBAR 103
|
||||
#define IDA_EXPLORER 104
|
||||
#define ID_ACTIVATE 105
|
||||
#define IDD_DESKBAR_DESKTOP 106
|
||||
#define IDD_EXECUTE 108
|
||||
#define IDR_MAINFRAME 109
|
||||
#define IDM_MAINFRAME 110
|
||||
#define ID_EXECUTE 111
|
||||
#define IDM_WINEFILE 112
|
||||
#define IDI_LOGOFF 124
|
||||
#define IDI_FOLDERARROW 125
|
||||
#define IDI_ARROW 125
|
||||
#define IDI_ARROW_SELECTED 126
|
||||
#define IDB_LOGOV 129
|
||||
#define IDB_LOGOV256 130
|
||||
#define IDA_SEARCH_PROGRAM 133
|
||||
#define IDI_APPICON 134
|
||||
#define IDI_FLOATING 135
|
||||
#define IDD_ABOUT_EXPLORER 135
|
||||
#define IDI_REACTOS_BIG 137
|
||||
#define IDI_DOCUMENTS 138
|
||||
#define IDI_CONFIG 139
|
||||
#define IDI_FAVORITES 140
|
||||
#define IDI_INFO 141
|
||||
#define IDI_APPS 142
|
||||
#define IDI_SEARCH 143
|
||||
#define IDI_ACTION 144
|
||||
#define IDI_FOLDER 145
|
||||
#define IDI_SEARCH_DOC 146
|
||||
#define IDI_PRINTER 147
|
||||
#define IDI_NETWORK 148
|
||||
#define IDI_COMPUTER 149
|
||||
#define IDM_DESKTOPBAR 150
|
||||
#define IDD_DESKBAR_TASKBAR 153
|
||||
#define IDB_ICON_ALIGN_0 153
|
||||
#define IDD_DESKBAR_STARTMENU 154
|
||||
#define IDB_ICON_ALIGN_1 154
|
||||
#define IDB_ICON_ALIGN_2 155
|
||||
#define IDB_ICON_ALIGN_3 156
|
||||
#define IDB_ICON_ALIGN_4 157
|
||||
#define IDB_ICON_ALIGN_5 158
|
||||
#define IDB_ICON_ALIGN_6 159
|
||||
#define IDB_ICON_ALIGN_7 160
|
||||
#define IDB_ICON_ALIGN_8 161
|
||||
#define IDB_ICON_ALIGN_9 162
|
||||
#define IDB_ICON_ALIGN_10 163
|
||||
#define IDB_LOGOV16 164
|
||||
#define IDI_ARROW_UP 166
|
||||
#define IDI_ARROW_DOWN 167
|
||||
#define ID_VIEW_NAME 401
|
||||
#define ID_VIEW_ALL_ATTRIBUTES 402
|
||||
#define ID_VIEW_SELECTED_ATTRIBUTES 403
|
||||
#define ID_VIEW_STATUSBAR 503
|
||||
#define ID_VIEW_TOOL_BAR 508
|
||||
#define IDC_ROS_EXPLORER 1000
|
||||
#define ID_DESKTOP_VERSION 1003
|
||||
#define IDC_WWW 1012
|
||||
#define IDC_TOPIC 1017
|
||||
#define IDC_MAILS_FOUND 1018
|
||||
#define IDC_VERSION_TXT 1029
|
||||
#define ID_REFRESH 1704
|
||||
#define ID_ABOUT_WINEFILE 1705
|
||||
#define IDS_VERSION_STR 5000
|
||||
#define IDS_EXPLORER_VERSION_STR 5001
|
||||
#define IDC_FILETREE 10001
|
||||
#define ID_EXPLORER_FAQ 10002
|
||||
#define ID_WINDOW_AUTOSORT 0x8003
|
||||
#define ID_PREFERED_SIZES 0x8005
|
||||
#define ID_ABOUT_WINDOWS 40002
|
||||
#define ID_ABOUT_EXPLORER 40003
|
||||
#define ID_DESKTOPBAR_SETTINGS 40004
|
||||
#define ID_BROWSE_BACK 40005
|
||||
#define ID_BROWSE_FORWARD 40006
|
||||
#define ID_STOP 40009
|
||||
#define ID_MINIMIZE_ALL 40010
|
||||
#define ID_EXPLORE 40011
|
||||
#define ID_TASKMGR 40012
|
||||
#define ID_BROWSE_UP 40013
|
||||
#define ID_EDIT_UNDO 40019
|
||||
#define ID_EDIT_COPY 40020
|
||||
#define ID_EDIT_CUt 40021
|
||||
#define ID_TOOLS_MAP 40022
|
||||
#define ID_EDIT_PASTE 40023
|
||||
#define ID_EDIT_PASTE_SHORTCUT 40024
|
||||
#define ID_TOOLS_OPTIONS 40025
|
||||
#define ID_TOOLS_DISCONNECT 40026
|
||||
#define ID_EDIT_COPY_FOLDER 40027
|
||||
#define ID_EDIT_MOVE_TO_FOLDER 40028
|
||||
#define ID_EDIT_SELECT_ALL 40029
|
||||
#define ID_EDIT_INVERT_SELECTION 40030
|
||||
#define ID_FILE_CREATESHORTCUT 40031
|
||||
#define ID_FILE_DELETE 40032
|
||||
#define ID_FILE_RENAME 40033
|
||||
#define ID_FILE_PROPERTIES 40034
|
||||
#define ID_SWITCH_DESKTOP_1 50000
|
||||
#define ID_WINDOW_NEW 0xE130
|
||||
#define ID_EDIT_PROPERTIES 57656
|
||||
#define ID_FILE_EXIT 0xE141
|
||||
#define ID_HELP_USING 0xE144
|
||||
#define ID_HELP 0xE146
|
||||
#define IDC_STATIC -1
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 169
|
||||
#define _APS_NEXT_COMMAND_VALUE 40024
|
||||
#define _APS_NEXT_CONTROL_VALUE 1035
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
117
rosbuild.bat
@@ -1,117 +0,0 @@
|
||||
::
|
||||
:: This script is called from the Makefile command line within Visual Studio using the following parameters:
|
||||
::
|
||||
:: %1 - $(build)
|
||||
:: %2 - $(target)
|
||||
::
|
||||
:: Examples:
|
||||
::
|
||||
:: Call build.bat build ntoskrnl
|
||||
:: Call build.bat clean win32k
|
||||
::
|
||||
|
||||
@echo off
|
||||
|
||||
if "%1"=="" goto :err_params
|
||||
if "%2"=="" goto :err_params
|
||||
|
||||
|
||||
:: Get the RosBE path... ::
|
||||
|
||||
:: Set the command we'll use to check if RosBE exists
|
||||
set _IS_ROSBE_INSTALLED_COMMAND="reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\ReactOS Build Environment for Windows" /v UninstallString"
|
||||
|
||||
:: Check the key actually exists !!!!FIXME: Why is this returning 'The system cannot find the path specified.'!!!!
|
||||
%_IS_ROSBE_INSTALLED_COMMAND%
|
||||
IF NOT errorlevel 0 goto :err_no_rosbe
|
||||
|
||||
:: This is a bit hackish. What we do is look for REG_SZ which is the second token on the second line and dump it into i
|
||||
:: We then assign all remaining text to the next variable in the sequence, which is j. This leaves us with the path
|
||||
for /F "tokens=2,* skip=1 delims=\ " %%i in ('%_IS_ROSBE_INSTALLED_COMMAND%') do (
|
||||
set _ROSBE_UNINSTALL_PATH_=%%j
|
||||
)
|
||||
|
||||
|
||||
:: Now strip the file name from the end of the path and we should have our RosBE install directory
|
||||
set _ROSBE_PATH_DIR=
|
||||
set _ROSBE_PATH_=
|
||||
for %%i in ("%_ROSBE_UNINSTALL_PATH_%") do set _ROSBE_PATH_DIR=%%~di
|
||||
for %%i in ("%_ROSBE_UNINSTALL_PATH_%") do set "_ROSBE_PATH_=%%~pi"
|
||||
set "_ROSBE_FULL_PATH_=%_ROSBE_PATH_DIR%%_ROSBE_PATH_%"
|
||||
::echo RosBE insall path = %_ROSBE_FULL_PATH_%
|
||||
|
||||
:: Set the path which contains our build tools
|
||||
set _ROSBE_BIN_PATH=%_ROSBE_FULL_PATH_%i386\bin
|
||||
|
||||
:: Add the path to the search path
|
||||
path=%path%;%_ROSBE_BIN_PATH%
|
||||
|
||||
:: Set the make path
|
||||
set _MAKE_COMMAND=""
|
||||
if exist "%_ROSBE_BIN_PATH%\mingw32-make.exe" (
|
||||
set _MAKE_COMMAND=mingw32-make.exe
|
||||
)
|
||||
if exist "%_ROSBE_BIN_PATH%\make.exe" (
|
||||
set _MAKE_COMMAND=make.exe
|
||||
)
|
||||
if %_MAKE_COMMAND% == "" (
|
||||
goto err_no_make
|
||||
)
|
||||
|
||||
:: This file is located in the source root
|
||||
set _ROS_SOURCE_ROOT=%~dp0
|
||||
|
||||
:: Change the current dir to the source root
|
||||
cd %_ROS_SOURCE_ROOT%
|
||||
|
||||
:: Run the requested build task
|
||||
if "%1" == "build" (
|
||||
goto :build
|
||||
)
|
||||
if "%1" == "rebuild" (
|
||||
goto clean
|
||||
)
|
||||
if "%1" == "clean" (
|
||||
goto :clean
|
||||
)
|
||||
goto :err_params
|
||||
|
||||
:clean
|
||||
echo.
|
||||
echo Cleaning...
|
||||
echo.
|
||||
call "%_MAKE_COMMAND%" -j 1 %2%_clean
|
||||
|
||||
if "%1" == "rebuild" (
|
||||
goto :build
|
||||
)
|
||||
|
||||
goto :exit
|
||||
|
||||
:build
|
||||
echo.
|
||||
echo Building...
|
||||
echo.
|
||||
call "%_MAKE_COMMAND%" -j 1 %2%
|
||||
|
||||
goto :exit
|
||||
|
||||
:err_no_make
|
||||
echo.
|
||||
echo Cannot find a make executable
|
||||
goto :err_no_rosbe
|
||||
|
||||
:err_no_rosbe
|
||||
echo.
|
||||
echo You need to have RosBE installed to use this configuration
|
||||
echo.
|
||||
exit 1
|
||||
|
||||
:err_params
|
||||
echo.
|
||||
echo Invalid parameters required, Check your command line.
|
||||
echo.
|
||||
exit 2
|
||||
|
||||
:exit
|
||||
echo.
|
460
rosshell.dsp
Normal file
@@ -0,0 +1,460 @@
|
||||
# Microsoft Developer Studio Project File - Name="rosshell" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=rosshell - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "rosshell.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "rosshell.mak" CFG="rosshell - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "rosshell - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "rosshell - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "rosshell - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "rosshell - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "rosshell - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c
|
||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||
# ADD RSC /l 0x407 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ELSEIF "$(CFG)" == "rosshell - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
||||
# ADD RSC /l 0x407 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ELSEIF "$(CFG)" == "rosshell - Win32 Unicode Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "URelease"
|
||||
# PROP BASE Intermediate_Dir "URelease"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "URelease"
|
||||
# PROP Intermediate_Dir "URelease"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c
|
||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||
# ADD RSC /l 0x407 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ELSEIF "$(CFG)" == "rosshell - Win32 Unicode Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "UDebug"
|
||||
# PROP BASE Intermediate_Dir "UDebug"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "UDebug"
|
||||
# PROP Intermediate_Dir "UDebug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
||||
# ADD RSC /l 0x407 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# SUBTRACT LINK32 /pdb:none /force
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "rosshell - Win32 Release"
|
||||
# Name "rosshell - Win32 Debug"
|
||||
# Name "rosshell - Win32 Unicode Release"
|
||||
# Name "rosshell - Win32 Unicode Debug"
|
||||
# Begin Group "utility"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\dragdropimpl.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\dragdropimpl.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellbrowserimpl.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellbrowserimpl.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellclasses.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\shellclasses.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\treedroptarget.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\utility.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\utility.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\window.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\utility\window.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "resources"
|
||||
|
||||
# PROP Default_Filter "bmp,ico"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\action.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\appicon.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\apps.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrow.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrow_dwn.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrow_up.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\arrowsel.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\computer.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\config.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\documents.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\explorer-en.rc"
|
||||
# PROP Exclude_From_Build 1
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\explorer.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer_intres.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer_intres.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\favorites.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\floating.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\folder.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\images.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\info.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logoff.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logov.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logov16.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\logov256.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\network.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\printer.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\reactos.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\res\ros-big.ico"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\rosshell.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\res\search-doc.ico"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\search.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\startmenu.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\toolbar.bmp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "taskbar"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\desktopbar.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\desktopbar.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\quicklaunch.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\quicklaunch.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\startmenu.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\startmenu.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\taskbar.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\taskbar.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\traynotify.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\taskbar\traynotify.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "desktop"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\desktop\desktop.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\desktop\desktop.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "shell"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\entries.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\entries.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\shellbrowser.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\shellfs.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\shellfs.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\startup.c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\winfs.cpp
|
||||
# PROP Exclude_From_Build 1
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\shell\winfs.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "dialogs"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\dialogs\settings.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\dialogs\settings.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "main"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\explorer.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\externals.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\globals.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\precomp.cpp
|
||||
# ADD CPP /Yc"precomp.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\precomp.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
41
rosshell.dsw
Normal file
@@ -0,0 +1,41 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "rosshell"=.\rosshell.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "make_rosshell"=.\make_rosshell.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
0
sdk/include/.gitignore
vendored
@@ -1,217 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
|
||||
#ifndef _INC_MINGW
|
||||
#define _INC_MINGW
|
||||
|
||||
#define _INTEGRAL_MAX_BITS 64
|
||||
|
||||
#ifndef MINGW64
|
||||
#define MINGW64
|
||||
#define MINGW64_VERSION 1.0
|
||||
#define MINGW64_VERSION_MAJOR 1
|
||||
#define MINGW64_VERSION_MINOR 0
|
||||
#define MINGW64_VERSION_STATE "alpha"
|
||||
#endif
|
||||
|
||||
#ifdef _WIN64
|
||||
#ifdef __stdcall
|
||||
#undef __stdcall
|
||||
#endif
|
||||
#define __stdcall
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
/* These compilers do support __declspec */
|
||||
# if !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(__CYGWIN32__)
|
||||
# define __declspec(x) __attribute__((x))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define __restrict__ /* nothing */
|
||||
#endif
|
||||
|
||||
#if defined (__GNUC__) && defined (__GNUC_MINOR__)
|
||||
#define __MINGW_GNUC_PREREQ(major, minor) \
|
||||
(__GNUC__ > (major) \
|
||||
|| (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
|
||||
#else
|
||||
#define __MINGW_GNUC_PREREQ(major, minor) 0
|
||||
#endif
|
||||
|
||||
#if defined (_MSC_VER)
|
||||
#define __MINGW_MSC_PREREQ(major, minor) (_MSC_VER >= (major * 100 + minor * 10))
|
||||
#else
|
||||
#define __MINGW_MSC_PREREQ(major, minor) 0
|
||||
#endif
|
||||
|
||||
#define USE___UUIDOF 0
|
||||
|
||||
#ifdef __cplusplus
|
||||
# define __CRT_INLINE inline
|
||||
#elif defined(_MSC_VER)
|
||||
# define __CRT_INLINE __inline
|
||||
#elif defined(__GNUC__)
|
||||
# if ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L)
|
||||
# define __CRT_INLINE extern inline __attribute__((__always_inline__,__gnu_inline__))
|
||||
# else
|
||||
# define __CRT_INLINE extern __inline__ __attribute__((__always_inline__))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
# define __UNUSED_PARAM(x)
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
|
||||
# else
|
||||
# define __UNUSED_PARAM(x) x
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
# define __unaligned
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define __unaligned
|
||||
# elif defined(_MSC_VER) && !defined(_M_IA64) && !defined(_M_AMD64)
|
||||
# define __unaligned
|
||||
# else
|
||||
# define __unaligned
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
|
||||
#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
|
||||
#elif __MINGW_MSC_PREREQ(12, 0)
|
||||
#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
|
||||
#define __MINGW_ATTRIB_CONST
|
||||
#else
|
||||
#define __MINGW_ATTRIB_NORETURN
|
||||
#define __MINGW_ATTRIB_CONST
|
||||
#endif
|
||||
|
||||
#if __MINGW_GNUC_PREREQ (3, 0)
|
||||
#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
|
||||
#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
|
||||
#elif __MINGW_MSC_PREREQ(14, 0)
|
||||
#define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
|
||||
#define __MINGW_ATTRIB_PURE
|
||||
#else
|
||||
#define __MINGW_ATTRIB_MALLOC
|
||||
#define __MINGW_ATTRIB_PURE
|
||||
#endif
|
||||
|
||||
/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
|
||||
variadiac macro facility, because variadic macros cause syntax
|
||||
errors with --traditional-cpp. */
|
||||
#if __MINGW_GNUC_PREREQ (3, 3)
|
||||
#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
|
||||
#else
|
||||
#define __MINGW_ATTRIB_NONNULL(arg)
|
||||
#endif /* GNUC >= 3.3 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
|
||||
#else
|
||||
#define __MINGW_ATTRIB_UNUSED
|
||||
#endif /* ATTRIBUTE_UNUSED */
|
||||
|
||||
#if __MINGW_GNUC_PREREQ (3, 1)
|
||||
#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
|
||||
#elif __MINGW_MSC_PREREQ(12, 0)
|
||||
#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
|
||||
#else
|
||||
#define __MINGW_ATTRIB_DEPRECATED
|
||||
#endif
|
||||
|
||||
#if __MINGW_GNUC_PREREQ (3, 3)
|
||||
#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
|
||||
#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
|
||||
#define __MINGW_NOTHROW __declspec(nothrow)
|
||||
#else
|
||||
#define __MINGW_NOTHROW
|
||||
#endif
|
||||
|
||||
/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW. This will
|
||||
allow GCC to optimize away some EH unwind code, at least in DW2 case. */
|
||||
|
||||
#ifndef __MINGW_EXTENSION
|
||||
#if defined(__GNUC__) || defined(__GNUG__)
|
||||
#define __MINGW_EXTENSION __extension__
|
||||
#else
|
||||
#define __MINGW_EXTENSION
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __MSVCRT_VERSION__
|
||||
/* High byte is the major version, low byte is the minor. */
|
||||
# define __MSVCRT_VERSION__ 0x0700
|
||||
#endif
|
||||
|
||||
//#ifndef WINVER
|
||||
//#define WINVER 0x0502
|
||||
//#endif
|
||||
|
||||
//#ifndef _WIN32_WINNT
|
||||
//#define _WIN32_WINNT 0x502
|
||||
//#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifndef __clang__
|
||||
#define __int8 char
|
||||
#define __int16 short
|
||||
#define __int32 int
|
||||
#define __int64 long long
|
||||
#endif
|
||||
#ifdef _WIN64
|
||||
typedef int __int128 __attribute__ ((mode (TI)));
|
||||
# endif
|
||||
# define __ptr32
|
||||
# define __ptr64
|
||||
# define __forceinline extern __inline __attribute((always_inline))
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
#ifndef __nothrow
|
||||
#define __nothrow __declspec(nothrow)
|
||||
#endif
|
||||
#else
|
||||
#ifndef __nothrow
|
||||
#define __nothrow
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN64
|
||||
#undef USE_MINGW_SETJMP_TWO_ARGS
|
||||
#define USE_MINGW_SETJMP_TWO_ARGS
|
||||
#endif
|
||||
|
||||
/* Disable deprecation for now! */
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
#define _CRT_SECURE_NO_DEPRECATE_CORE
|
||||
#ifdef __WINESRC__
|
||||
#define _CRT_NONSTDC_NO_DEPRECATE
|
||||
#endif
|
||||
|
||||
#define __crt_typefix(ctype)
|
||||
|
||||
#ifndef _CRT_UNUSED
|
||||
#define _CRT_UNUSED(x) (void)x
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define ATTRIB_NORETURN
|
||||
#else
|
||||
#define ATTRIB_NORETURN DECLSPEC_NORETURN
|
||||
#endif
|
||||
|
||||
#include "_mingw_mac.h"
|
||||
|
||||
#endif /* !_INC_MINGW */
|
||||
|
@@ -1,134 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
||||
*/
|
||||
|
||||
#ifndef _INC_CRTDEFS_MACRO
|
||||
#define _INC_CRTDEFS_MACRO
|
||||
|
||||
#define __STRINGIFY(x) #x
|
||||
#define __MINGW64_STRINGIFY(x) __STRINGIFY(x)
|
||||
|
||||
#define __MINGW64_VERSION_MAJOR 1
|
||||
#define __MINGW64_VERSION_MINOR 1
|
||||
#define __MINGW64_VERSION_STR __MINGW64_STRINGIFY(__MINGW64_VERSION_MAJOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_MINOR)
|
||||
#define __MINGW64_VERSION_STATE "alpha"
|
||||
|
||||
/* mingw.org's version macros: these make gcc to define
|
||||
MINGW32_SUPPORTS_MT_EH and to use the _CRT_MT global
|
||||
and the __mingwthr_key_dtor() function from the MinGW
|
||||
CRT in its private gthr-win32.h header. */
|
||||
#define __MINGW32_MAJOR_VERSION 3
|
||||
#define __MINGW32_MINOR_VERSION 11
|
||||
|
||||
#ifdef _WIN64
|
||||
/* MS does not prefix symbols by underscores for 64-bit. */
|
||||
#ifndef __MINGW_USE_UNDERSCORE_PREFIX
|
||||
/* As we have to support older gcc version, which are using underscores
|
||||
as symbol prefix for x64, we have to check here for the user label
|
||||
prefix defined by gcc. */
|
||||
#ifdef __USER_LABEL_PREFIX__
|
||||
#pragma push_macro ("_")
|
||||
#undef _
|
||||
#define _ 1
|
||||
#if (__USER_LABEL_PREFIX__ + 0) != 0
|
||||
#define __MINGW_USE_UNDERSCORE_PREFIX 1
|
||||
#else
|
||||
#define __MINGW_USE_UNDERSCORE_PREFIX 0
|
||||
#endif
|
||||
#undef _
|
||||
#pragma pop_macro ("_")
|
||||
#else
|
||||
#define __MINGW_USE_UNDERSCORE_PREFIX 0
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
/* For 32-bits we have always to prefix by underscore. */
|
||||
#undef __MINGW_USE_UNDERSCORE_PREFIX
|
||||
#define __MINGW_USE_UNDERSCORE_PREFIX 1
|
||||
#endif
|
||||
|
||||
#if __MINGW_USE_UNDERSCORE_PREFIX == 0
|
||||
#define __MINGW_IMP_SYMBOL(sym) __imp_##sym
|
||||
#define __MINGW_USYMBOL(sym) sym
|
||||
#define __MINGW_LSYMBOL(sym) _##sym
|
||||
#else
|
||||
#define __MINGW_IMP_SYMBOL(sym) _imp__##sym
|
||||
#define __MINGW_USYMBOL(sym) _##sym
|
||||
#define __MINGW_LSYMBOL(sym) sym
|
||||
#endif
|
||||
|
||||
/* Use alias for msvcr80 export of get/set_output_format. */
|
||||
#ifndef __USE_MINGW_OUTPUT_FORMAT_EMU
|
||||
#define __USE_MINGW_OUTPUT_FORMAT_EMU 1
|
||||
#endif
|
||||
|
||||
/* Set VC specific compiler target macros. */
|
||||
#if defined(__x86_64) && defined(_X86_)
|
||||
#undef _X86_ /* _X86_ is not for __x86_64 */
|
||||
#endif
|
||||
|
||||
#if defined(_X86_) && !defined(_M_IX86) && !defined(_M_IA64) \
|
||||
&& !defined(_M_AMD64) && !defined(__x86_64)
|
||||
#if defined(__i486__)
|
||||
#define _M_IX86 400
|
||||
#elif defined(__i586__)
|
||||
#define _M_IX86 500
|
||||
#else
|
||||
/* This gives wrong (600 instead of 300) value if -march=i386 is specified
|
||||
but we cannot check for__i386__ as it is defined for all 32-bit CPUs. */
|
||||
#define _M_IX86 600
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64) && !defined(_M_IX86) && !defined(_M_IA64) \
|
||||
&& !defined(_M_AMD64)
|
||||
#define _M_AMD64 100
|
||||
#define _M_X64 100
|
||||
#endif
|
||||
|
||||
#if defined(__ia64__) && !defined(_M_IX86) && !defined(_M_IA64) \
|
||||
&& !defined(_M_AMD64) && !defined(_X86_) && !defined(__x86_64)
|
||||
#define _M_IA64 100
|
||||
#endif
|
||||
|
||||
#ifndef __PTRDIFF_TYPE__
|
||||
#ifdef _WIN64
|
||||
#define __PTRDIFF_TYPE__ long long int
|
||||
#else
|
||||
#define __PTRDIFF_TYPE__ long int
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __SIZE_TYPE__
|
||||
#ifdef _WIN64
|
||||
#define __SIZE_TYPE__ long long unsigned int
|
||||
#else
|
||||
#define __SIZE_TYPE__ long unsigned int
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __WCHAR_TYPE__
|
||||
#define __WCHAR_TYPE__ unsigned short
|
||||
#endif
|
||||
#ifndef __WINT_TYPE__
|
||||
#define __WINT_TYPE__ unsigned short
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) || defined(__GNUG__)
|
||||
#define __MINGW_EXTENSION __extension__
|
||||
#else
|
||||
#define __MINGW_EXTENSION
|
||||
#endif
|
||||
|
||||
#ifdef UNICODE
|
||||
# define __MINGW_NAME_AW(func) func##W
|
||||
#else
|
||||
# define __MINGW_NAME_AW(func) func##A
|
||||
#endif
|
||||
#define __MINGW_TYPEDEF_AW(type) \
|
||||
typedef __MINGW_NAME_AW(type) type;
|
||||
|
||||
#endif /* _INC_CRTDEFS_MACRO */
|
||||
|
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef __ASSERT_H_
|
||||
#define __ASSERT_H_
|
||||
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifdef NDEBUG
|
||||
|
||||
#ifndef assert
|
||||
#define assert(_Expression) ((void)0)
|
||||
#endif
|
||||
|
||||
#else /* !NDEBUG */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
_CRTIMP void __cdecl _assert(const char *_Message,const char *_File,unsigned _Line);
|
||||
_CRTIMP void __cdecl _wassert(const wchar_t *_Message,const wchar_t *_File,unsigned _Line);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef assert
|
||||
#define assert(_Expression) (void)((!!(_Expression)) || (_assert(#_Expression,__FILE__,__LINE__),0))
|
||||
#endif
|
||||
|
||||
#ifndef wassert
|
||||
#define wassert(_Expression) (void)((!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression),_CRT_WIDE(__FILE__),__LINE__),0))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
@@ -1,209 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
/*
|
||||
* complex.h
|
||||
*
|
||||
* This file is part of the Mingw32 package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Danny Smith <dannysmith@users.sourceforge.net>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _COMPLEX_H_
|
||||
#define _COMPLEX_H_
|
||||
|
||||
#include <crtdefs.h>
|
||||
|
||||
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
|
||||
|| !defined __STRICT_ANSI__
|
||||
|
||||
/* These macros are specified by C99 standard */
|
||||
|
||||
#ifndef __cplusplus
|
||||
#define complex _Complex
|
||||
#endif
|
||||
|
||||
#define _Complex_I (0.0F + 1.0iF)
|
||||
|
||||
/* GCC doesn't support _Imaginary type yet, so we don't
|
||||
define _Imaginary_I */
|
||||
|
||||
#define I _Complex_I
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
double creal (double _Complex);
|
||||
double cimag (double _Complex);
|
||||
double carg (double _Complex);
|
||||
double cabs (double _Complex);
|
||||
double _Complex conj (double _Complex);
|
||||
double _Complex cacos (double _Complex);
|
||||
double _Complex casin (double _Complex);
|
||||
double _Complex catan (double _Complex);
|
||||
double _Complex ccos (double _Complex);
|
||||
double _Complex csin (double _Complex);
|
||||
double _Complex ctan (double _Complex);
|
||||
double _Complex cacosh (double _Complex);
|
||||
double _Complex casinh (double _Complex);
|
||||
double _Complex catanh (double _Complex);
|
||||
double _Complex ccosh (double _Complex);
|
||||
double _Complex csinh (double _Complex);
|
||||
double _Complex ctanh (double _Complex);
|
||||
double _Complex cexp (double _Complex);
|
||||
double _Complex clog (double _Complex);
|
||||
double _Complex cpow (double _Complex, double _Complex);
|
||||
double _Complex csqrt (double _Complex);
|
||||
double _Complex cproj (double _Complex);
|
||||
|
||||
float crealf (float _Complex);
|
||||
float cimagf (float _Complex);
|
||||
float cargf (float _Complex);
|
||||
float cabsf (float _Complex);
|
||||
float _Complex conjf (float _Complex);
|
||||
float _Complex cacosf (float _Complex);
|
||||
float _Complex casinf (float _Complex);
|
||||
float _Complex catanf (float _Complex);
|
||||
float _Complex ccosf (float _Complex);
|
||||
float _Complex csinf (float _Complex);
|
||||
float _Complex ctanf (float _Complex);
|
||||
float _Complex cacoshf (float _Complex);
|
||||
float _Complex casinhf (float _Complex);
|
||||
float _Complex catanhf (float _Complex);
|
||||
float _Complex ccoshf (float _Complex);
|
||||
float _Complex csinhf (float _Complex);
|
||||
float _Complex ctanhf (float _Complex);
|
||||
float _Complex cexpf (float _Complex);
|
||||
float _Complex clogf (float _Complex);
|
||||
float _Complex cpowf (float _Complex, float _Complex);
|
||||
float _Complex csqrtf (float _Complex);
|
||||
float _Complex cprojf (float _Complex);
|
||||
|
||||
long double creall (long double _Complex);
|
||||
long double cimagl (long double _Complex);
|
||||
long double cargl (long double _Complex);
|
||||
long double cabsl (long double _Complex);
|
||||
long double _Complex conjl (long double _Complex);
|
||||
long double _Complex cacosl (long double _Complex);
|
||||
long double _Complex casinl (long double _Complex);
|
||||
long double _Complex catanl (long double _Complex);
|
||||
long double _Complex ccosl (long double _Complex);
|
||||
long double _Complex csinl (long double _Complex);
|
||||
long double _Complex ctanl (long double _Complex);
|
||||
long double _Complex cacoshl (long double _Complex);
|
||||
long double _Complex casinhl (long double _Complex);
|
||||
long double _Complex catanhl (long double _Complex);
|
||||
long double _Complex ccoshl (long double _Complex);
|
||||
long double _Complex csinhl (long double _Complex);
|
||||
long double _Complex ctanhl (long double _Complex);
|
||||
long double _Complex cexpl (long double _Complex);
|
||||
long double _Complex clogl (long double _Complex);
|
||||
long double _Complex cpowl (long double _Complex, long double _Complex);
|
||||
long double _Complex csqrtl (long double _Complex);
|
||||
long double _Complex cprojl (long double _Complex);
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
/* double */
|
||||
__CRT_INLINE double creal (double _Complex _Z)
|
||||
{
|
||||
return __real__ _Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE double cimag (double _Complex _Z)
|
||||
{
|
||||
return __imag__ _Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE double _Complex conj (double _Complex _Z)
|
||||
{
|
||||
return __extension__ ~_Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE double carg (double _Complex _Z)
|
||||
{
|
||||
double res;
|
||||
__asm__ ("fpatan;"
|
||||
: "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/* float */
|
||||
__CRT_INLINE float crealf (float _Complex _Z)
|
||||
{
|
||||
return __real__ _Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE float cimagf (float _Complex _Z)
|
||||
{
|
||||
return __imag__ _Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE float _Complex conjf (float _Complex _Z)
|
||||
{
|
||||
return __extension__ ~_Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE float cargf (float _Complex _Z)
|
||||
{
|
||||
float res;
|
||||
__asm__ ("fpatan;"
|
||||
: "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
|
||||
return res;
|
||||
}
|
||||
|
||||
/* long double */
|
||||
__CRT_INLINE long double creall (long double _Complex _Z)
|
||||
{
|
||||
return __real__ _Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE long double cimagl (long double _Complex _Z)
|
||||
{
|
||||
return __imag__ _Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE long double _Complex conjl (long double _Complex _Z)
|
||||
{
|
||||
return __extension__ ~_Z;
|
||||
}
|
||||
|
||||
__CRT_INLINE long double cargl (long double _Complex _Z)
|
||||
{
|
||||
long double res;
|
||||
__asm__ ("fpatan;"
|
||||
: "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
|
||||
#endif /* RC_INVOKED */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __STDC_VERSION__ >= 199901L */
|
||||
|
||||
|
||||
#endif /* _COMPLEX_H */
|
@@ -1,111 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_CONIO
|
||||
#define _INC_CONIO
|
||||
|
||||
#include <crtdefs.h>
|
||||
|
||||
#define __need___va_list
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
_CRTIMP char * __cdecl _cgets(char *_Buffer);
|
||||
_CRTIMP int __cdecl _cprintf(const char *_Format,...);
|
||||
_CRTIMP int __cdecl _cputs(const char *_Str);
|
||||
_CRT_INSECURE_DEPRECATE(_cscanf_s) _CRTIMP int __cdecl _cscanf(const char *_Format,...);
|
||||
_CRT_INSECURE_DEPRECATE(_cscanf_s_l) _CRTIMP int __cdecl _cscanf_l(const char *_Format,_locale_t _Locale,...);
|
||||
_CRTIMP int __cdecl _getch(void);
|
||||
_CRTIMP int __cdecl _getche(void);
|
||||
_CRTIMP int __cdecl _vcprintf(const char *_Format,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _cprintf_p(const char *_Format,...);
|
||||
_CRTIMP int __cdecl _vcprintf_p(const char *_Format,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _cprintf_l(const char *_Format,_locale_t _Locale,...);
|
||||
_CRTIMP int __cdecl _vcprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _cprintf_p_l(const char *_Format,_locale_t _Locale,...);
|
||||
_CRTIMP int __cdecl _vcprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _kbhit(void);
|
||||
_CRTIMP int __cdecl _putch(int _Ch);
|
||||
_CRTIMP int __cdecl _ungetch(int _Ch);
|
||||
_CRTIMP int __cdecl _getch_nolock(void);
|
||||
_CRTIMP int __cdecl _getche_nolock(void);
|
||||
_CRTIMP int __cdecl _putch_nolock(int _Ch);
|
||||
_CRTIMP int __cdecl _ungetch_nolock(int _Ch);
|
||||
|
||||
#if defined(_X86_) && !defined(__x86_64)
|
||||
int __cdecl _inp(unsigned short);
|
||||
unsigned short __cdecl _inpw(unsigned short);
|
||||
unsigned long __cdecl _inpd(unsigned short);
|
||||
int __cdecl _outp(unsigned short,int);
|
||||
unsigned short __cdecl _outpw(unsigned short,unsigned short);
|
||||
unsigned long __cdecl _outpd(unsigned short,unsigned long);
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef _WCONIO_DEFINED
|
||||
#define _WCONIO_DEFINED
|
||||
|
||||
#ifndef WEOF
|
||||
#define WEOF (wint_t)(0xFFFF)
|
||||
#endif
|
||||
|
||||
_CRTIMP wchar_t *_cgetws(wchar_t *_Buffer);
|
||||
_CRTIMP wint_t __cdecl _getwch(void);
|
||||
_CRTIMP wint_t __cdecl _getwche(void);
|
||||
_CRTIMP wint_t __cdecl _putwch(wchar_t _WCh);
|
||||
_CRTIMP wint_t __cdecl _ungetwch(wint_t _WCh);
|
||||
_CRTIMP int __cdecl _cputws(const wchar_t *_String);
|
||||
_CRTIMP int __cdecl _cwprintf(const wchar_t *_Format,...);
|
||||
_CRT_INSECURE_DEPRECATE(_cwscanf_s) _CRTIMP int __cdecl _cwscanf(const wchar_t *_Format,...);
|
||||
_CRT_INSECURE_DEPRECATE(_cwscanf_s_l) _CRTIMP int __cdecl _cwscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
|
||||
_CRTIMP int __cdecl _vcwprintf(const wchar_t *_Format,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _cwprintf_p(const wchar_t *_Format,...);
|
||||
_CRTIMP int __cdecl _vcwprintf_p(const wchar_t *_Format,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _cwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
|
||||
_CRTIMP int __cdecl _vcwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
|
||||
_CRTIMP int __cdecl _cwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
|
||||
_CRTIMP int __cdecl _vcwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
|
||||
_CRTIMP wint_t __cdecl _putwch_nolock(wchar_t _WCh);
|
||||
_CRTIMP wint_t __cdecl _getwch_nolock(void);
|
||||
_CRTIMP wint_t __cdecl _getwche_nolock(void);
|
||||
_CRTIMP wint_t __cdecl _ungetwch_nolock(wint_t _WCh);
|
||||
#endif /* _WCONIO_DEFINED */
|
||||
|
||||
#ifndef _MT
|
||||
#define _putwch() _putwch_nolock()
|
||||
#define _getwch() _getwch_nolock()
|
||||
#define _getwche() _getwche_nolock()
|
||||
#define _ungetwch() _ungetwch_nolock()
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
_CRT_NONSTDC_DEPRECATE(_cgets) _CRT_INSECURE_DEPRECATE(_cgets_s) _CRTIMP char *__cdecl cgets(char *_Buffer);
|
||||
_CRT_NONSTDC_DEPRECATE(_cprintf) _CRTIMP int __cdecl cprintf(const char *_Format,...);
|
||||
_CRT_NONSTDC_DEPRECATE(_cputs) _CRTIMP int __cdecl cputs(const char *_Str);
|
||||
_CRT_NONSTDC_DEPRECATE(_cscanf) _CRTIMP int __cdecl cscanf(const char *_Format,...);
|
||||
_CRT_NONSTDC_DEPRECATE(_getch) _CRTIMP int __cdecl getch(void);
|
||||
_CRT_NONSTDC_DEPRECATE(_getche) _CRTIMP int __cdecl getche(void);
|
||||
_CRT_NONSTDC_DEPRECATE(_kbhit) _CRTIMP int __cdecl kbhit(void);
|
||||
_CRT_NONSTDC_DEPRECATE(_putch) _CRTIMP int __cdecl putch(int _Ch);
|
||||
_CRT_NONSTDC_DEPRECATE(_ungetch) _CRTIMP int __cdecl ungetch(int _Ch);
|
||||
|
||||
#if (defined(_X86_) && !defined(__x86_64))
|
||||
_CRT_NONSTDC_DEPRECATE(_inp) _CRTIMP int __cdecl inp(unsigned short);
|
||||
_CRT_NONSTDC_DEPRECATE(_inpw) _CRTIMP unsigned short __cdecl inpw(unsigned short);
|
||||
_CRT_NONSTDC_DEPRECATE(_outp) _CRTIMP int __cdecl outp(unsigned short,int);
|
||||
_CRT_NONSTDC_DEPRECATE(_outpw) _CRTIMP unsigned short __cdecl outpw(unsigned short,unsigned short);
|
||||
#endif
|
||||
#endif /* !NO_OLDNAMES */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#include <sec_api/conio_s.h>
|
||||
|
||||
#endif /* _INC_CONIO */
|
@@ -1,224 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifndef _INC_CRTDBG
|
||||
#define _INC_CRTDBG
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#ifndef NULL
|
||||
#ifdef __cplusplus
|
||||
#define NULL 0
|
||||
#else
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void *_HFILE;
|
||||
|
||||
#define _CRT_WARN 0
|
||||
#define _CRT_ERROR 1
|
||||
#define _CRT_ASSERT 2
|
||||
#define _CRT_ERRCNT 3
|
||||
|
||||
#define _CRTDBG_MODE_FILE 0x1
|
||||
#define _CRTDBG_MODE_DEBUG 0x2
|
||||
#define _CRTDBG_MODE_WNDW 0x4
|
||||
#define _CRTDBG_REPORT_MODE -1
|
||||
|
||||
#define _CRTDBG_INVALID_HFILE ((_HFILE)-1)
|
||||
#define _CRTDBG_HFILE_ERROR ((_HFILE)-2)
|
||||
#define _CRTDBG_FILE_STDOUT ((_HFILE)-4)
|
||||
#define _CRTDBG_FILE_STDERR ((_HFILE)-5)
|
||||
#define _CRTDBG_REPORT_FILE ((_HFILE)-6)
|
||||
|
||||
typedef int (__cdecl *_CRT_REPORT_HOOK)(int,char *,int *);
|
||||
typedef int (__cdecl *_CRT_REPORT_HOOKW)(int,wchar_t *,int *);
|
||||
|
||||
#define _CRT_RPTHOOK_INSTALL 0
|
||||
#define _CRT_RPTHOOK_REMOVE 1
|
||||
|
||||
#define _HOOK_ALLOC 1
|
||||
#define _HOOK_REALLOC 2
|
||||
#define _HOOK_FREE 3
|
||||
|
||||
typedef int (__cdecl *_CRT_ALLOC_HOOK)(int,void *,size_t,int,long,const unsigned char *,int);
|
||||
|
||||
#define _CRTDBG_ALLOC_MEM_DF 0x01
|
||||
#define _CRTDBG_DELAY_FREE_MEM_DF 0x02
|
||||
#define _CRTDBG_CHECK_ALWAYS_DF 0x04
|
||||
#define _CRTDBG_RESERVED_DF 0x08
|
||||
#define _CRTDBG_CHECK_CRT_DF 0x10
|
||||
#define _CRTDBG_LEAK_CHECK_DF 0x20
|
||||
|
||||
#define _CRTDBG_CHECK_EVERY_16_DF 0x00100000
|
||||
#define _CRTDBG_CHECK_EVERY_128_DF 0x00800000
|
||||
#define _CRTDBG_CHECK_EVERY_1024_DF 0x04000000
|
||||
|
||||
#define _CRTDBG_CHECK_DEFAULT_DF 0
|
||||
|
||||
#define _CRTDBG_REPORT_FLAG -1
|
||||
|
||||
#define _BLOCK_TYPE(block) (block & 0xFFFF)
|
||||
#define _BLOCK_SUBTYPE(block) (block >> 16 & 0xFFFF)
|
||||
|
||||
#define _FREE_BLOCK 0
|
||||
#define _NORMAL_BLOCK 1
|
||||
#define _CRT_BLOCK 2
|
||||
#define _IGNORE_BLOCK 3
|
||||
#define _CLIENT_BLOCK 4
|
||||
#define _MAX_BLOCKS 5
|
||||
|
||||
typedef void (__cdecl *_CRT_DUMP_CLIENT)(void *,size_t);
|
||||
|
||||
struct _CrtMemBlockHeader;
|
||||
|
||||
typedef struct _CrtMemState {
|
||||
struct _CrtMemBlockHeader *pBlockHeader;
|
||||
size_t lCounts[_MAX_BLOCKS];
|
||||
size_t lSizes[_MAX_BLOCKS];
|
||||
size_t lHighWaterCount;
|
||||
size_t lTotalCount;
|
||||
} _CrtMemState;
|
||||
|
||||
#ifndef _STATIC_ASSERT
|
||||
#define _STATIC_ASSERT(expr) extern char (*static_assert(void)) [(expr) ? 1 : -1]
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERT
|
||||
#define _ASSERT(expr) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERT_WRN
|
||||
#define _ASSERT_WRN(expr) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERTE
|
||||
#define _ASSERTE(expr) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERTE_WRN
|
||||
#define _ASSERTE_WRN(expr) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERT_EXPR
|
||||
#define _ASSERT_EXPR(expr,expr_str) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERT_EXPR_WRN
|
||||
#define _ASSERT_EXPR_WRN(expr,expr_str) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef _ASSERT_BASE
|
||||
#define _ASSERT_BASE _ASSERT_EXPR
|
||||
#endif
|
||||
|
||||
#define _RPT0(rptno,msg)
|
||||
#define _RPTW0(rptno,msg)
|
||||
|
||||
#define _RPT1(rptno,msg,arg1)
|
||||
#define _RPTW1(rptno,msg,arg1)
|
||||
#define _RPT2(rptno,msg,arg1,arg2)
|
||||
#define _RPTW2(rptno,msg,arg1,arg2)
|
||||
#define _RPT3(rptno,msg,arg1,arg2,arg3)
|
||||
#define _RPTW3(rptno,msg,arg1,arg2,arg3)
|
||||
#define _RPT4(rptno,msg,arg1,arg2,arg3,arg4)
|
||||
#define _RPTW4(rptno,msg,arg1,arg2,arg3,arg4)
|
||||
#define _RPTF0(rptno,msg)
|
||||
#define _RPTFW0(rptno,msg)
|
||||
#define _RPTF1(rptno,msg,arg1)
|
||||
#define _RPTFW1(rptno,msg,arg1)
|
||||
#define _RPTF2(rptno,msg,arg1,arg2)
|
||||
#define _RPTFW2(rptno,msg,arg1,arg2)
|
||||
#define _RPTF3(rptno,msg,arg1,arg2,arg3)
|
||||
#define _RPTFW3(rptno,msg,arg1,arg2,arg3)
|
||||
#define _RPTF4(rptno,msg,arg1,arg2,arg3,arg4)
|
||||
#define _RPTFW4(rptno,msg,arg1,arg2,arg3,arg4)
|
||||
|
||||
#define _malloc_dbg(s,t,f,l) malloc(s)
|
||||
#define _calloc_dbg(c,s,t,f,l) calloc(c,s)
|
||||
#define _realloc_dbg(p,s,t,f,l) realloc(p,s)
|
||||
#define _recalloc_dbg(p,c,s,t,f,l) _recalloc(p,c,s)
|
||||
#define _expand_dbg(p,s,t,f,l) _expand(p,s)
|
||||
#define _free_dbg(p,t) free(p)
|
||||
#define _msize_dbg(p,t) _msize(p)
|
||||
|
||||
#define _aligned_malloc_dbg(s,a,f,l) _aligned_malloc(s,a)
|
||||
#define _aligned_realloc_dbg(p,s,a,f,l) _aligned_realloc(p,s,a)
|
||||
#define _aligned_recalloc_dbg(p,c,s,a,f,l) _aligned_realloc(p,c,s,a)
|
||||
#define _aligned_free_dbg(p) _aligned_free(p)
|
||||
#define _aligned_offset_malloc_dbg(s,a,o,f,l) _aligned_offset_malloc(s,a,o)
|
||||
#define _aligned_offset_realloc_dbg(p,s,a,o,f,l) _aligned_offset_realloc(p,s,a,o)
|
||||
#define _aligned_offset_recalloc_dbg(p,c,s,a,o,f,l) _aligned_offset_recalloc(p,c,s,a,o)
|
||||
|
||||
#define _malloca_dbg(s,t,f,l) _malloca(s)
|
||||
#define _freea_dbg(p,t) _freea(p)
|
||||
|
||||
#define _strdup_dbg(s,t,f,l) _strdup(s)
|
||||
#define _wcsdup_dbg(s,t,f,l) _wcsdup(s)
|
||||
#define _mbsdup_dbg(s,t,f,l) _mbsdup(s)
|
||||
#define _tempnam_dbg(s1,s2,t,f,l) _tempnam(s1,s2)
|
||||
#define _wtempnam_dbg(s1,s2,t,f,l) _wtempnam(s1,s2)
|
||||
#define _fullpath_dbg(s1,s2,le,t,f,l) _fullpath(s1,s2,le)
|
||||
#define _wfullpath_dbg(s1,s2,le,t,f,l) _wfullpath(s1,s2,le)
|
||||
#define _getcwd_dbg(s,le,t,f,l) _getcwd(s,le)
|
||||
#define _wgetcwd_dbg(s,le,t,f,l) _wgetcwd(s,le)
|
||||
#define _getdcwd_dbg(d,s,le,t,f,l) _getdcwd(d,s,le)
|
||||
#define _wgetdcwd_dbg(d,s,le,t,f,l) _wgetdcwd(d,s,le)
|
||||
#define _getdcwd_lk_dbg(d,s,le,t,f,l) _getdcwd_nolock(d,s,le)
|
||||
#define _wgetdcwd_lk_dbg(d,s,le,t,f,l) _wgetdcwd_nolock(d,s,le)
|
||||
|
||||
#define _CrtSetReportHook(f) ((_CRT_REPORT_HOOK)0)
|
||||
#define _CrtGetReportHook() ((_CRT_REPORT_HOOK)0)
|
||||
#define _CrtSetReportHook2(t,f) ((int)0)
|
||||
#define _CrtSetReportHookW2(t,f) ((int)0)
|
||||
#define _CrtSetReportMode(t,f) ((int)0)
|
||||
#define _CrtSetReportFile(t,f) ((_HFILE)0)
|
||||
|
||||
#define _CrtDbgBreak() ((void)0)
|
||||
|
||||
#define _CrtSetBreakAlloc(a) ((long)0)
|
||||
#define _CrtSetAllocHook(f) ((_CRT_ALLOC_HOOK)0)
|
||||
#define _CrtGetAllocHook() ((_CRT_ALLOC_HOOK)0)
|
||||
#define _CrtCheckMemory() ((int)1)
|
||||
#define _CrtSetDbgFlag(f) ((int)0)
|
||||
#define _CrtDoForAllClientObjects(f,c) ((void)0)
|
||||
#define _CrtIsValidPointer(p,n,r) ((int)1)
|
||||
#define _CrtIsValidHeapPointer(p) ((int)1)
|
||||
#define _CrtIsMemoryBlock(p,t,r,f,l) ((int)1)
|
||||
#define _CrtReportBlockType(p) ((int)-1)
|
||||
#define _CrtSetDumpClient(f) ((_CRT_DUMP_CLIENT)0)
|
||||
#define _CrtGetDumpClient() ((_CRT_DUMP_CLIENT)0)
|
||||
#define _CrtMemCheckpoint(s) ((void)0)
|
||||
#define _CrtMemDifference(s1,s2,s3) ((int)0)
|
||||
#define _CrtMemDumpAllObjectsSince(s) ((void)0)
|
||||
#define _CrtMemDumpStatistics(s) ((void)0)
|
||||
#define _CrtDumpMemoryLeaks() ((int)0)
|
||||
#define _CrtSetDebugFillThreshold(t) ((size_t)0)
|
||||
#define _CrtSetCheckCount(f) ((int)0)
|
||||
#define _CrtGetCheckCount() ((int)0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
void *__cdecl operator new[](size_t _Size);
|
||||
inline void *__cdecl operator new(size_t _Size,int,const char *,int) { return ::operator new(_Size); }
|
||||
inline void *__cdecl operator new[](size_t _Size,int,const char *,int) { return ::operator new[](_Size); }
|
||||
void __cdecl operator delete[](void *);
|
||||
inline void __cdecl operator delete(void *_P,int,const char *,int) { ::operator delete(_P); }
|
||||
inline void __cdecl operator delete[](void *_P,int,const char *,int) { ::operator delete[](_P); }
|
||||
#endif
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#include <sec_api/crtdbg_s.h>
|
||||
|
||||
#endif
|
@@ -1,406 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#include <_mingw.h>
|
||||
|
||||
#ifndef _INC_CRTDEFS
|
||||
#define _INC_CRTDEFS
|
||||
|
||||
#ifdef _USE_32BIT_TIME_T
|
||||
#ifdef _WIN64
|
||||
#error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
|
||||
#undef _USE_32BIT_TIME_T
|
||||
#endif
|
||||
#else
|
||||
#if _INTEGRAL_MAX_BITS < 64
|
||||
#define _USE_32BIT_TIME_T
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Disable non-ANSI C definitions if compiling with __STDC__ */
|
||||
//HACK: Disabled
|
||||
//#if __STDC__
|
||||
//#define NO_OLDNAMES
|
||||
//#endif
|
||||
|
||||
|
||||
/** Properties ***************************************************************/
|
||||
|
||||
#undef _CRT_PACKING
|
||||
#define _CRT_PACKING 8
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#ifndef _CRT_STRINGIZE
|
||||
#define __CRT_STRINGIZE(_Value) #_Value
|
||||
#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_WIDE
|
||||
#define __CRT_WIDE(_String) L ## _String
|
||||
#define _CRT_WIDE(_String) __CRT_WIDE(_String)
|
||||
#endif
|
||||
|
||||
#ifndef _W64
|
||||
#if !defined(_midl) && defined(_X86_) && _MSC_VER >= 1300
|
||||
#define _W64 __w64
|
||||
#else
|
||||
#define _W64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRTIMP
|
||||
#ifdef CRTDLL /* Defined for ntdll, crtdll, msvcrt, etc */
|
||||
#define _CRTIMP __declspec(dllexport)
|
||||
#elif defined(_DLL)
|
||||
#define _CRTIMP __declspec(dllimport)
|
||||
#else /* !CRTDLL && !_DLL */
|
||||
#define _CRTIMP
|
||||
#endif /* CRTDLL || _DLL */
|
||||
#endif /* !_CRTIMP */
|
||||
|
||||
//#define _CRT_ALTERNATIVE_INLINES
|
||||
|
||||
#ifndef _CRTIMP_ALT
|
||||
#ifdef _DLL
|
||||
#ifdef _CRT_ALTERNATIVE_INLINES
|
||||
#define _CRTIMP_ALT
|
||||
#else
|
||||
#define _CRTIMP_ALT _CRTIMP
|
||||
#define _CRT_ALTERNATIVE_IMPORTED
|
||||
#endif
|
||||
#else
|
||||
#define _CRTIMP_ALT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRTDATA
|
||||
#ifdef _M_CEE_PURE
|
||||
#define _CRTDATA(x) x
|
||||
#else
|
||||
#define _CRTDATA(x) _CRTIMP x
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRTIMP2
|
||||
#define _CRTIMP2 _CRTIMP
|
||||
#endif
|
||||
|
||||
#ifndef _CRTIMP_PURE
|
||||
#define _CRTIMP_PURE _CRTIMP
|
||||
#endif
|
||||
|
||||
#ifndef _CRTIMP_ALTERNATIVE
|
||||
#define _CRTIMP_ALTERNATIVE _CRTIMP
|
||||
#define _CRT_ALTERNATIVE_IMPORTED
|
||||
#endif
|
||||
|
||||
#ifndef _CRTIMP_NOIA64
|
||||
#ifdef __ia64__
|
||||
#define _CRTIMP_NOIA64
|
||||
#else
|
||||
#define _CRTIMP_NOIA64 _CRTIMP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _MRTIMP2
|
||||
#define _MRTIMP2 _CRTIMP
|
||||
#endif
|
||||
|
||||
#ifndef _MCRTIMP
|
||||
#define _MCRTIMP _CRTIMP
|
||||
#endif
|
||||
|
||||
#ifndef _PGLOBAL
|
||||
#define _PGLOBAL
|
||||
#endif
|
||||
|
||||
#ifndef _AGLOBAL
|
||||
#define _AGLOBAL
|
||||
#endif
|
||||
|
||||
#ifndef _CONST_RETURN
|
||||
#define _CONST_RETURN
|
||||
#endif
|
||||
|
||||
#ifndef UNALIGNED
|
||||
#if defined(__ia64__) || defined(__x86_64)
|
||||
#define UNALIGNED __unaligned
|
||||
#else
|
||||
#define UNALIGNED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_ALIGN
|
||||
#define _CRT_ALIGN(x) __attribute__ ((aligned(x)))
|
||||
#endif
|
||||
|
||||
#ifndef _CRTNOALIAS
|
||||
#define _CRTNOALIAS
|
||||
#endif
|
||||
|
||||
#ifndef _CRTRESTRICT
|
||||
#define _CRTRESTRICT
|
||||
#endif
|
||||
|
||||
#ifndef __CRTDECL
|
||||
#define __CRTDECL __cdecl
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_UNUSED
|
||||
#define _CRT_UNUSED(x) (void)x
|
||||
#endif
|
||||
|
||||
#ifndef _CONST_RETURN
|
||||
#ifdef __cplusplus
|
||||
#define _CONST_RETURN const
|
||||
#define _CRT_CONST_CORRECT_OVERLOADS
|
||||
#else
|
||||
#define _CONST_RETURN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __crt_typefix(ctype)
|
||||
|
||||
|
||||
/** Deprecated ***************************************************************/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define _CRT_DEPRECATE_TEXT(_Text) __attribute__ ((deprecated))
|
||||
#elif defined(_MSC_VER)
|
||||
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
|
||||
#else
|
||||
#define _CRT_DEPRECATE_TEXT(_Text)
|
||||
#endif
|
||||
|
||||
#ifndef __STDC_WANT_SECURE_LIB__
|
||||
#define __STDC_WANT_SECURE_LIB__ 1
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_INSECURE_DEPRECATE
|
||||
# ifdef _CRT_SECURE_NO_DEPRECATE
|
||||
# define _CRT_INSECURE_DEPRECATE(_Replacement)
|
||||
# else
|
||||
# define _CRT_INSECURE_DEPRECATE(_Replacement) \
|
||||
_CRT_DEPRECATE_TEXT("This may be unsafe, Try " #_Replacement " instead!")
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_INSECURE_DEPRECATE_CORE
|
||||
# ifdef _CRT_SECURE_NO_DEPRECATE_CORE
|
||||
# define _CRT_INSECURE_DEPRECATE_CORE(_Replacement)
|
||||
# else
|
||||
# define _CRT_INSECURE_DEPRECATE_CORE(_Replacement) \
|
||||
_CRT_DEPRECATE_TEXT("This may be unsafe, Try " #_Replacement " instead! Enable _CRT_SECURE_NO_DEPRECATE to avoid thie warning.")
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_NONSTDC_DEPRECATE
|
||||
# ifdef _CRT_NONSTDC_NO_DEPRECATE
|
||||
# define _CRT_NONSTDC_DEPRECATE(_Replacement)
|
||||
# else
|
||||
# define _CRT_NONSTDC_DEPRECATE(_Replacement) \
|
||||
_CRT_DEPRECATE_TEXT("Deprecated POSIX name, Try " #_Replacement " instead!")
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
|
||||
#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
|
||||
#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_MANAGED_HEAP_DEPRECATE
|
||||
#define _CRT_MANAGED_HEAP_DEPRECATE
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_OBSOLETE
|
||||
#define _CRT_OBSOLETE(_NewItem)
|
||||
#endif
|
||||
|
||||
|
||||
/** Constants ****************************************************************/
|
||||
|
||||
#define _ARGMAX 100
|
||||
|
||||
#ifndef _TRUNCATE
|
||||
#define _TRUNCATE ((size_t)-1)
|
||||
#endif
|
||||
|
||||
#define __STDC_SECURE_LIB__ 200411L
|
||||
#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
|
||||
#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
|
||||
|
||||
|
||||
/** Type definitions *********************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _SIZE_T_DEFINED
|
||||
#define _SIZE_T_DEFINED
|
||||
#undef size_t
|
||||
#ifdef _WIN64
|
||||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef unsigned int size_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
__MINGW_EXTENSION typedef unsigned __int64 size_t;
|
||||
#endif
|
||||
#else
|
||||
typedef unsigned int size_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _INTPTR_T_DEFINED
|
||||
#define _INTPTR_T_DEFINED
|
||||
#ifndef __intptr_t_defined
|
||||
#define __intptr_t_defined
|
||||
#undef intptr_t
|
||||
#ifdef _WIN64
|
||||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef int intptr_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
__MINGW_EXTENSION typedef __int64 intptr_t;
|
||||
#endif
|
||||
#else
|
||||
typedef int intptr_t;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _UINTPTR_T_DEFINED
|
||||
#define _UINTPTR_T_DEFINED
|
||||
#ifndef __uintptr_t_defined
|
||||
#define __uintptr_t_defined
|
||||
#undef uintptr_t
|
||||
#ifdef _WIN64
|
||||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef unsigned int uintptr_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
__MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
|
||||
#endif
|
||||
#else
|
||||
typedef unsigned int uintptr_t;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _PTRDIFF_T_DEFINED
|
||||
#define _PTRDIFF_T_DEFINED
|
||||
#ifndef _PTRDIFF_T_
|
||||
#undef ptrdiff_t
|
||||
#ifdef _WIN64
|
||||
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
||||
typedef int ptrdiff_t __attribute__ ((mode (DI)));
|
||||
#else
|
||||
__MINGW_EXTENSION typedef __int64 ptrdiff_t;
|
||||
#endif
|
||||
#else
|
||||
typedef int ptrdiff_t;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _WCHAR_T_DEFINED
|
||||
#define _WCHAR_T_DEFINED
|
||||
#ifndef __cplusplus
|
||||
typedef unsigned short wchar_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _WCTYPE_T_DEFINED
|
||||
#define _WCTYPE_T_DEFINED
|
||||
typedef unsigned short wint_t;
|
||||
typedef unsigned short wctype_t;
|
||||
#endif
|
||||
|
||||
#ifndef _ERRCODE_DEFINED
|
||||
#define _ERRCODE_DEFINED
|
||||
typedef int errcode;
|
||||
typedef int errno_t;
|
||||
#endif
|
||||
|
||||
#ifndef _TIME32_T_DEFINED
|
||||
#define _TIME32_T_DEFINED
|
||||
typedef long __time32_t;
|
||||
#endif
|
||||
|
||||
#ifndef _TIME64_T_DEFINED
|
||||
#define _TIME64_T_DEFINED
|
||||
#if _INTEGRAL_MAX_BITS >= 64
|
||||
__MINGW_EXTENSION typedef __int64 __time64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _TIME_T_DEFINED
|
||||
#define _TIME_T_DEFINED
|
||||
#ifdef _USE_32BIT_TIME_T
|
||||
typedef __time32_t time_t;
|
||||
#else
|
||||
typedef __time64_t time_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
struct threadlocaleinfostruct;
|
||||
typedef struct threadlocaleinfostruct *pthreadlocinfo;
|
||||
|
||||
struct threadmbcinfostruct;
|
||||
typedef struct threadmbcinfostruct *pthreadmbcinfo;
|
||||
|
||||
struct __lc_time_data;
|
||||
|
||||
typedef struct localeinfo_struct {
|
||||
pthreadlocinfo locinfo;
|
||||
pthreadmbcinfo mbcinfo;
|
||||
} _locale_tstruct,*_locale_t;
|
||||
|
||||
#ifndef _TAGLC_ID_DEFINED
|
||||
#define _TAGLC_ID_DEFINED
|
||||
typedef struct tagLC_ID {
|
||||
unsigned short wLanguage;
|
||||
unsigned short wCountry;
|
||||
unsigned short wCodePage;
|
||||
} LC_ID,*LPLC_ID;
|
||||
#endif
|
||||
|
||||
#ifndef _THREADLOCALEINFO
|
||||
#define _THREADLOCALEINFO
|
||||
typedef struct threadlocaleinfostruct {
|
||||
int refcount;
|
||||
unsigned int lc_codepage;
|
||||
unsigned int lc_collate_cp;
|
||||
unsigned long lc_handle[6];
|
||||
LC_ID lc_id[6];
|
||||
struct {
|
||||
char *locale;
|
||||
wchar_t *wlocale;
|
||||
int *refcount;
|
||||
int *wrefcount;
|
||||
} lc_category[6];
|
||||
int lc_clike;
|
||||
int mb_cur_max;
|
||||
int *lconv_intl_refcount;
|
||||
int *lconv_num_refcount;
|
||||
int *lconv_mon_refcount;
|
||||
struct lconv *lconv;
|
||||
int *ctype1_refcount;
|
||||
unsigned short *ctype1;
|
||||
const unsigned short *pctype;
|
||||
const unsigned char *pclmap;
|
||||
const unsigned char *pcumap;
|
||||
struct __lc_time_data *lc_time_curr;
|
||||
} threadlocinfo;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif /* !_INC_CRTDEFS */
|
@@ -1,260 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_CTYPE
|
||||
#define _INC_CTYPE
|
||||
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef WEOF
|
||||
#define WEOF (wint_t)(0xFFFF)
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_CTYPEDATA_DEFINED
|
||||
# define _CRT_CTYPEDATA_DEFINED
|
||||
# ifndef _CTYPE_DISABLE_MACROS
|
||||
# ifndef __PCTYPE_FUNC
|
||||
# ifdef _DLL
|
||||
# define __PCTYPE_FUNC __pctype_func()
|
||||
# else
|
||||
# define __PCTYPE_FUNC _pctype
|
||||
# endif
|
||||
# endif /* !__PCTYPE_FUNC */
|
||||
_CRTIMP const unsigned short * __cdecl __pctype_func(void);
|
||||
# ifndef _M_CEE_PURE
|
||||
_CRTDATA(extern const unsigned short *_pctype);
|
||||
# else
|
||||
# define _pctype (__pctype_func())
|
||||
# endif /* !_M_CEE_PURE */
|
||||
# endif /* !_CTYPE_DISABLE_MACROS */
|
||||
#endif /* !_CRT_CTYPEDATA_DEFINED */
|
||||
|
||||
#ifndef _CRT_WCTYPEDATA_DEFINED
|
||||
#define _CRT_WCTYPEDATA_DEFINED
|
||||
# ifndef _CTYPE_DISABLE_MACROS
|
||||
_CRTDATA(extern const unsigned short _wctype[]);
|
||||
_CRTIMP const wctype_t * __cdecl __pwctype_func(void);
|
||||
# ifndef _M_CEE_PURE
|
||||
_CRTDATA(extern const wctype_t *_pwctype);
|
||||
# else
|
||||
# define _pwctype (__pwctype_func())
|
||||
# endif /* !_M_CEE_PURE */
|
||||
# endif /* !_CTYPE_DISABLE_MACROS */
|
||||
#endif /* !_CRT_WCTYPEDATA_DEFINED */
|
||||
|
||||
/* CRT stuff */
|
||||
#if 1
|
||||
extern const unsigned char __newclmap[];
|
||||
extern const unsigned char __newcumap[];
|
||||
extern pthreadlocinfo __ptlocinfo;
|
||||
extern pthreadmbcinfo __ptmbcinfo;
|
||||
extern int __globallocalestatus;
|
||||
extern int __locale_changed;
|
||||
extern struct threadlocaleinfostruct __initiallocinfo;
|
||||
extern _locale_tstruct __initiallocalestructinfo;
|
||||
pthreadlocinfo __cdecl __updatetlocinfo(void);
|
||||
pthreadmbcinfo __cdecl __updatetmbcinfo(void);
|
||||
#endif
|
||||
|
||||
#define _UPPER 0x1
|
||||
#define _LOWER 0x2
|
||||
#define _DIGIT 0x4
|
||||
#define _SPACE 0x8
|
||||
|
||||
#define _PUNCT 0x10
|
||||
#define _CONTROL 0x20
|
||||
#define _BLANK 0x40
|
||||
#define _HEX 0x80
|
||||
|
||||
#define _LEADBYTE 0x8000
|
||||
#define _ALPHA (0x0100|_UPPER|_LOWER)
|
||||
|
||||
#ifndef _CTYPE_DEFINED
|
||||
#define _CTYPE_DEFINED
|
||||
_CRTIMP int __cdecl _isctype(int _C,int _Type);
|
||||
_CRTIMP int __cdecl _isctype_l(int _C,int _Type,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isalpha(int _C);
|
||||
_CRTIMP int __cdecl _isalpha_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isupper(int _C);
|
||||
_CRTIMP int __cdecl _isupper_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl islower(int _C);
|
||||
_CRTIMP int __cdecl _islower_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isdigit(int _C);
|
||||
_CRTIMP int __cdecl _isdigit_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isxdigit(int _C);
|
||||
_CRTIMP int __cdecl _isxdigit_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isspace(int _C);
|
||||
_CRTIMP int __cdecl _isspace_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl ispunct(int _C);
|
||||
_CRTIMP int __cdecl _ispunct_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isalnum(int _C);
|
||||
_CRTIMP int __cdecl _isalnum_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isprint(int _C);
|
||||
_CRTIMP int __cdecl _isprint_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl isgraph(int _C);
|
||||
_CRTIMP int __cdecl _isgraph_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iscntrl(int _C);
|
||||
_CRTIMP int __cdecl _iscntrl_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl toupper(int _C);
|
||||
_CRTIMP int __cdecl tolower(int _C);
|
||||
_CRTIMP int __cdecl _tolower(int _C);
|
||||
_CRTIMP int __cdecl _tolower_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl _toupper(int _C);
|
||||
_CRTIMP int __cdecl _toupper_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl __isascii(int _C);
|
||||
_CRTIMP int __cdecl __toascii(int _C);
|
||||
_CRTIMP int __cdecl __iscsymf(int _C);
|
||||
_CRTIMP int __cdecl __iscsym(int _C);
|
||||
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
|
||||
_CRTIMP int __cdecl isblank(int _C);
|
||||
#endif
|
||||
#endif /* !_CTYPE_DEFINED */
|
||||
|
||||
#ifndef _WCTYPE_DEFINED
|
||||
#define _WCTYPE_DEFINED
|
||||
_CRTIMP int __cdecl iswalpha(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswalpha_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswupper(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswupper_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswlower(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswlower_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswdigit(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswdigit_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswxdigit(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswxdigit_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswspace(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswspace_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswpunct(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswpunct_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswalnum(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswalnum_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswprint(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswprint_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswgraph(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswgraph_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswcntrl(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswcntrl_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswascii(wint_t _C);
|
||||
_CRTIMP int __cdecl isleadbyte(int _C);
|
||||
_CRTIMP int __cdecl _isleadbyte_l(int _C,_locale_t _Locale);
|
||||
_CRTIMP wint_t __cdecl towupper(wint_t _C);
|
||||
_CRTIMP wint_t __cdecl _towupper_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP wint_t __cdecl towlower(wint_t _C);
|
||||
_CRTIMP wint_t __cdecl _towlower_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl iswctype(wint_t _C,wctype_t _Type);
|
||||
_CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl __iswcsymf(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswcsymf_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl __iswcsym(wint_t _C);
|
||||
_CRTIMP int __cdecl _iswcsym_l(wint_t _C,_locale_t _Locale);
|
||||
_CRTIMP int __cdecl is_wctype(wint_t _C,wctype_t _Type);
|
||||
|
||||
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
|
||||
_CRTIMP int __cdecl iswblank(wint_t _C);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _CTYPE_DISABLE_MACROS
|
||||
|
||||
#ifndef MB_CUR_MAX
|
||||
#define MB_CUR_MAX ___mb_cur_max_func()
|
||||
#ifndef __mb_cur_max
|
||||
#ifdef _MSVCRT_
|
||||
extern int __mb_cur_max;
|
||||
#else
|
||||
#define __mb_cur_max (*_imp____mb_cur_max)
|
||||
extern int *_imp____mb_cur_max;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef _MSVCRT_
|
||||
#define ___mb_cur_max_func() (__mb_cur_max)
|
||||
#else
|
||||
#define ___mb_cur_max_func() (*_imp____mb_cur_max)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __chvalidchk(a,b) (__PCTYPE_FUNC[(a)] & (b))
|
||||
#define _chvalidchk_l(_Char,_Flag,_Locale) (!_Locale ? __chvalidchk(_Char,_Flag) : ((_locale_t)_Locale)->locinfo->pctype[_Char] & (_Flag))
|
||||
#define _ischartype_l(_Char,_Flag,_Locale) (((_Locale)!=NULL && (((_locale_t)(_Locale))->locinfo->mb_cur_max) > 1) ? _isctype_l(_Char,(_Flag),_Locale) : _chvalidchk_l(_Char,_Flag,_Locale))
|
||||
#define _isalpha_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA,_Locale)
|
||||
#define _isupper_l(_Char,_Locale) _ischartype_l(_Char,_UPPER,_Locale)
|
||||
#define _islower_l(_Char,_Locale) _ischartype_l(_Char,_LOWER,_Locale)
|
||||
#define _isdigit_l(_Char,_Locale) _ischartype_l(_Char,_DIGIT,_Locale)
|
||||
#define _isxdigit_l(_Char,_Locale) _ischartype_l(_Char,_HEX,_Locale)
|
||||
#define _isspace_l(_Char,_Locale) _ischartype_l(_Char,_SPACE,_Locale)
|
||||
#define _ispunct_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT,_Locale)
|
||||
#define _isalnum_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA|_DIGIT,_Locale)
|
||||
#define _isprint_l(_Char,_Locale) _ischartype_l(_Char,_BLANK|_PUNCT|_ALPHA|_DIGIT,_Locale)
|
||||
#define _isgraph_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT|_ALPHA|_DIGIT,_Locale)
|
||||
#define _iscntrl_l(_Char,_Locale) _ischartype_l(_Char,_CONTROL,_Locale)
|
||||
#define _tolower(_Char) ((_Char)-'A'+'a')
|
||||
#define _toupper(_Char) ((_Char)-'a'+'A')
|
||||
#define __isascii(_Char) ((unsigned)(_Char) < 0x80)
|
||||
#define __toascii(_Char) ((_Char) & 0x7f)
|
||||
|
||||
#ifndef _WCTYPE_INLINE_DEFINED
|
||||
#define _WCTYPE_INLINE_DEFINED
|
||||
|
||||
#undef _CRT_WCTYPE_NOINLINE
|
||||
#ifndef __cplusplus
|
||||
#define iswalpha(_c) (iswctype(_c,_ALPHA))
|
||||
#define iswupper(_c) (iswctype(_c,_UPPER))
|
||||
#define iswlower(_c) (iswctype(_c,_LOWER))
|
||||
#define iswdigit(_c) (iswctype(_c,_DIGIT))
|
||||
#define iswxdigit(_c) (iswctype(_c,_HEX))
|
||||
#define iswspace(_c) (iswctype(_c,_SPACE))
|
||||
#define iswpunct(_c) (iswctype(_c,_PUNCT))
|
||||
#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
|
||||
#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
|
||||
#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
|
||||
#define iswcntrl(_c) (iswctype(_c,_CONTROL))
|
||||
#define iswascii(_c) ((unsigned)(_c) < 0x80)
|
||||
#define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
|
||||
#define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
|
||||
#define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
|
||||
#define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
|
||||
#define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
|
||||
#define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
|
||||
#define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
|
||||
#define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
|
||||
#define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
|
||||
#define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
|
||||
#define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __iscsymf(_c) (isalpha(_c) || ((_c)=='_'))
|
||||
#define __iscsym(_c) (isalnum(_c) || ((_c)=='_'))
|
||||
#define __iswcsymf(_c) (iswalpha(_c) || ((_c)=='_'))
|
||||
#define __iswcsym(_c) (iswalnum(_c) || ((_c)=='_'))
|
||||
#define _iscsymf_l(_c,_p) (_isalpha_l(_c,_p) || ((_c)=='_'))
|
||||
#define _iscsym_l(_c,_p) (_isalnum_l(_c,_p) || ((_c)=='_'))
|
||||
#define _iswcsymf_l(_c,_p) (_iswalpha_l(_c,_p) || ((_c)=='_'))
|
||||
#define _iswcsym_l(_c,_p) (_iswalnum_l(_c,_p) || ((_c)=='_'))
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
#ifndef _CTYPE_DEFINED
|
||||
_CRTIMP _CRT_NONSTDC_DEPRECATE(__isascii) _CRTIMP int __cdecl isascii(int _C);
|
||||
_CRTIMP _CRT_NONSTDC_DEPRECATE(__toascii) _CRTIMP int __cdecl toascii(int _C);
|
||||
_CRTIMP _CRT_NONSTDC_DEPRECATE(__iscsymf) _CRTIMP int __cdecl iscsymf(int _C);
|
||||
_CRTIMP _CRT_NONSTDC_DEPRECATE(__iscsym) _CRTIMP int __cdecl iscsym(int _C);
|
||||
#else
|
||||
#define isascii __isascii
|
||||
#define toascii __toascii
|
||||
#define iscsymf __iscsymf
|
||||
#define iscsym __iscsym
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_INC_CTYPE */
|
@@ -1,68 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_DIRECT
|
||||
#define _INC_DIRECT
|
||||
|
||||
#include <crtdefs.h>
|
||||
#include <io.h>
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _DISKFREE_T_DEFINED
|
||||
#define _DISKFREE_T_DEFINED
|
||||
struct _diskfree_t {
|
||||
unsigned total_clusters;
|
||||
unsigned avail_clusters;
|
||||
unsigned sectors_per_cluster;
|
||||
unsigned bytes_per_sector;
|
||||
};
|
||||
#endif
|
||||
|
||||
_CRTIMP char *__cdecl _getcwd(char *_DstBuf,int _SizeInBytes);
|
||||
_CRTIMP char *__cdecl _getdcwd(int _Drive,char *_DstBuf,int _SizeInBytes);
|
||||
char *__cdecl _getdcwd_nolock(int _Drive,char *_DstBuf,int _SizeInBytes);
|
||||
_CRTIMP int __cdecl _chdir(const char *_Path);
|
||||
_CRTIMP int __cdecl _mkdir(const char *_Path);
|
||||
_CRTIMP int __cdecl _rmdir(const char *_Path);
|
||||
_CRTIMP int __cdecl _chdrive(int _Drive);
|
||||
_CRTIMP int __cdecl _getdrive(void);
|
||||
_CRTIMP unsigned long __cdecl _getdrives(void);
|
||||
|
||||
#ifndef _GETDISKFREE_DEFINED
|
||||
#define _GETDISKFREE_DEFINED
|
||||
_CRTIMP unsigned __cdecl _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
|
||||
#endif
|
||||
|
||||
#ifndef _WDIRECT_DEFINED
|
||||
#define _WDIRECT_DEFINED
|
||||
_CRTIMP wchar_t *__cdecl _wgetcwd(wchar_t *_DstBuf,int _SizeInWords);
|
||||
_CRTIMP wchar_t *__cdecl _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
|
||||
wchar_t *__cdecl _wgetdcwd_nolock(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
|
||||
_CRTIMP int __cdecl _wchdir(const wchar_t *_Path);
|
||||
_CRTIMP int __cdecl _wmkdir(const wchar_t *_Path);
|
||||
_CRTIMP int __cdecl _wrmdir(const wchar_t *_Path);
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
|
||||
#define diskfree_t _diskfree_t
|
||||
|
||||
_CRTIMP char *__cdecl getcwd(char *_DstBuf,int _SizeInBytes);
|
||||
_CRTIMP int __cdecl chdir(const char *_Path);
|
||||
_CRTIMP int __cdecl mkdir(const char *_Path);
|
||||
_CRTIMP int __cdecl rmdir(const char *_Path);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma pack(pop)
|
||||
#endif
|
@@ -1,134 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
#ifndef _DIRENT_H_
|
||||
#define _DIRENT_H_
|
||||
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#include <io.h>
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct dirent
|
||||
{
|
||||
long d_ino; /* Always zero. */
|
||||
unsigned short d_reclen; /* Always zero. */
|
||||
unsigned short d_namlen; /* Length of name in d_name. */
|
||||
char* d_name; /* File name. */
|
||||
/* NOTE: The name in the dirent structure points to the name in the
|
||||
* finddata_t structure in the DIR. */
|
||||
};
|
||||
|
||||
/*
|
||||
* This is an internal data structure. Good programmers will not use it
|
||||
* except as an argument to one of the functions below.
|
||||
* dd_stat field is now int (was short in older versions).
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* disk transfer area for this dir */
|
||||
struct _finddata_t dd_dta;
|
||||
|
||||
/* dirent struct to return from dir (NOTE: this makes this thread
|
||||
* safe as long as only one thread uses a particular DIR struct at
|
||||
* a time) */
|
||||
struct dirent dd_dir;
|
||||
|
||||
/* _findnext handle */
|
||||
long dd_handle;
|
||||
|
||||
/*
|
||||
* Status of search:
|
||||
* 0 = not started yet (next entry to read is first entry)
|
||||
* -1 = off the end
|
||||
* positive = 0 based index of next entry
|
||||
*/
|
||||
int dd_stat;
|
||||
|
||||
/* given path for dir with search pattern (struct is extended) */
|
||||
char dd_name[1];
|
||||
} DIR;
|
||||
|
||||
DIR* __cdecl opendir (const char*);
|
||||
struct dirent* __cdecl readdir (DIR*);
|
||||
int __cdecl closedir (DIR*);
|
||||
void __cdecl rewinddir (DIR*);
|
||||
long __cdecl telldir (DIR*);
|
||||
void __cdecl seekdir (DIR*, long);
|
||||
|
||||
|
||||
/* wide char versions */
|
||||
|
||||
struct _wdirent
|
||||
{
|
||||
long d_ino; /* Always zero. */
|
||||
unsigned short d_reclen; /* Always zero. */
|
||||
unsigned short d_namlen; /* Length of name in d_name. */
|
||||
wchar_t* d_name; /* File name. */
|
||||
/* NOTE: The name in the dirent structure points to the name in the * wfinddata_t structure in the _WDIR. */
|
||||
};
|
||||
|
||||
/*
|
||||
* This is an internal data structure. Good programmers will not use it
|
||||
* except as an argument to one of the functions below.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* disk transfer area for this dir */
|
||||
struct _wfinddata_t dd_dta;
|
||||
|
||||
/* dirent struct to return from dir (NOTE: this makes this thread
|
||||
* safe as long as only one thread uses a particular DIR struct at
|
||||
* a time) */
|
||||
struct _wdirent dd_dir;
|
||||
|
||||
/* _findnext handle */
|
||||
long dd_handle;
|
||||
|
||||
/*
|
||||
* Status of search:
|
||||
* 0 = not started yet (next entry to read is first entry)
|
||||
* -1 = off the end
|
||||
* positive = 0 based index of next entry
|
||||
*/
|
||||
int dd_stat;
|
||||
|
||||
/* given path for dir with search pattern (struct is extended) */
|
||||
wchar_t dd_name[1];
|
||||
} _WDIR;
|
||||
|
||||
|
||||
|
||||
_WDIR* __cdecl _wopendir (const wchar_t*);
|
||||
struct _wdirent* __cdecl _wreaddir (_WDIR*);
|
||||
int __cdecl _wclosedir (_WDIR*);
|
||||
void __cdecl _wrewinddir (_WDIR*);
|
||||
long __cdecl _wtelldir (_WDIR*);
|
||||
void __cdecl _wseekdir (_WDIR*, long);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* Not RC_INVOKED */
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif /* Not _DIRENT_H_ */
|
||||
|
||||
|
||||
#endif /* Not __STRICT_ANSI__ */
|
||||
|
@@ -1,55 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_DOS
|
||||
#define _INC_DOS
|
||||
|
||||
#include <crtdefs.h>
|
||||
#include <io.h>
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _DISKFREE_T_DEFINED
|
||||
#define _DISKFREE_T_DEFINED
|
||||
|
||||
struct _diskfree_t {
|
||||
unsigned total_clusters;
|
||||
unsigned avail_clusters;
|
||||
unsigned sectors_per_cluster;
|
||||
unsigned bytes_per_sector;
|
||||
};
|
||||
#endif
|
||||
|
||||
#define _A_NORMAL 0x00
|
||||
#define _A_RDONLY 0x01
|
||||
#define _A_HIDDEN 0x02
|
||||
#define _A_SYSTEM 0x04
|
||||
#define _A_SUBDIR 0x10
|
||||
#define _A_ARCH 0x20
|
||||
|
||||
#ifndef _GETDISKFREE_DEFINED
|
||||
#define _GETDISKFREE_DEFINED
|
||||
_CRTIMP unsigned __cdecl _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
|
||||
#endif
|
||||
|
||||
#if (defined(_X86_) && !defined(__x86_64))
|
||||
void __cdecl _disable(void);
|
||||
void __cdecl _enable(void);
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
#define diskfree_t _diskfree_t
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma pack(pop)
|
||||
#endif
|
@@ -1,843 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _DVEC_H_INCLUDED
|
||||
#define _DVEC_H_INCLUDED
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#if !defined __cplusplus
|
||||
#error This file is only supported in C++ compilations!
|
||||
#endif
|
||||
|
||||
#include <emmintrin.h>
|
||||
#include <assert.h>
|
||||
#include <fvec.h>
|
||||
#include <crtdefs.h>
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
#include <iostream>
|
||||
#endif
|
||||
|
||||
#pragma pack(push,16)
|
||||
|
||||
#define EXPLICIT explicit
|
||||
|
||||
class I8vec16;
|
||||
class Is8vec16;
|
||||
class Iu8vec16;
|
||||
class I16vec8;
|
||||
class Is16vec8;
|
||||
class Iu16vec8;
|
||||
class I32vec4;
|
||||
class Is32vec4;
|
||||
class Iu32vec4;
|
||||
class I64vec2;
|
||||
class I128vec1;
|
||||
|
||||
#define _MM_16UB(element,vector) (*((unsigned char*)&##vector + ##element))
|
||||
#define _MM_16B(element,vector) (*((signed char*)&##vector + ##element))
|
||||
|
||||
#define _MM_8UW(element,vector) (*((unsigned short*)&##vector + ##element))
|
||||
#define _MM_8W(element,vector) (*((short*)&##vector + ##element))
|
||||
|
||||
#define _MM_4UDW(element,vector) (*((unsigned int*)&##vector + ##element))
|
||||
#define _MM_4DW(element,vector) (*((int*)&##vector + ##element))
|
||||
|
||||
#define _MM_2QW(element,vector) (*((__int64*)&##vector + ##element))
|
||||
|
||||
inline const __m128i get_mask128()
|
||||
{
|
||||
static const __m128i mask128 = _mm_set1_epi64(M64(0xffffffffffffffffi64));
|
||||
return mask128;
|
||||
}
|
||||
|
||||
class M128
|
||||
{
|
||||
protected:
|
||||
__m128i vec;
|
||||
|
||||
public:
|
||||
M128() { }
|
||||
M128(__m128i mm) { vec = mm; }
|
||||
|
||||
operator __m128i() const { return vec; }
|
||||
|
||||
M128& operator&=(const M128 &a) { return *this = (M128) _mm_and_si128(vec,a); }
|
||||
M128& operator|=(const M128 &a) { return *this = (M128) _mm_or_si128(vec,a); }
|
||||
M128& operator^=(const M128 &a) { return *this = (M128) _mm_xor_si128(vec,a); }
|
||||
|
||||
};
|
||||
|
||||
inline M128 operator&(const M128 &a,const M128 &b) { return _mm_and_si128(a,b); }
|
||||
inline M128 operator|(const M128 &a,const M128 &b) { return _mm_or_si128(a,b); }
|
||||
inline M128 operator^(const M128 &a,const M128 &b) { return _mm_xor_si128(a,b); }
|
||||
inline M128 andnot(const M128 &a,const M128 &b) { return _mm_andnot_si128(a,b); }
|
||||
|
||||
class I128vec1 : public M128
|
||||
{
|
||||
public:
|
||||
I128vec1() { }
|
||||
I128vec1(__m128i mm) : M128(mm) { }
|
||||
|
||||
I128vec1& operator= (const M128 &a) { return *this = (I128vec1) a; }
|
||||
I128vec1& operator&=(const M128 &a) { return *this = (I128vec1) _mm_and_si128(vec,a); }
|
||||
I128vec1& operator|=(const M128 &a) { return *this = (I128vec1) _mm_or_si128(vec,a); }
|
||||
I128vec1& operator^=(const M128 &a) { return *this = (I128vec1) _mm_xor_si128(vec,a); }
|
||||
|
||||
};
|
||||
|
||||
class I64vec2 : public M128
|
||||
{
|
||||
public:
|
||||
I64vec2() { }
|
||||
I64vec2(__m128i mm) : M128(mm) { }
|
||||
|
||||
I64vec2(__m64 q1,__m64 q0)
|
||||
{
|
||||
_MM_2QW(0,vec) = *(__int64*)&q0;
|
||||
_MM_2QW(1,vec) = *(__int64*)&q1;
|
||||
}
|
||||
|
||||
I64vec2& operator= (const M128 &a) { return *this = (I64vec2) a; }
|
||||
|
||||
I64vec2& operator&=(const M128 &a) { return *this = (I64vec2) _mm_and_si128(vec,a); }
|
||||
I64vec2& operator|=(const M128 &a) { return *this = (I64vec2) _mm_or_si128(vec,a); }
|
||||
I64vec2& operator^=(const M128 &a) { return *this = (I64vec2) _mm_xor_si128(vec,a); }
|
||||
|
||||
I64vec2& operator +=(const I64vec2 &a) { return *this = (I64vec2) _mm_add_epi64(vec,a); }
|
||||
I64vec2& operator -=(const I64vec2 &a) { return *this = (I64vec2) _mm_sub_epi64(vec,a); }
|
||||
|
||||
I64vec2 operator<<(const I64vec2 &a) { return _mm_sll_epi64(vec,a); }
|
||||
I64vec2 operator<<(int count) { return _mm_slli_epi64(vec,count); }
|
||||
I64vec2& operator<<=(const I64vec2 &a) { return *this = (I64vec2) _mm_sll_epi64(vec,a); }
|
||||
I64vec2& operator<<=(int count) { return *this = (I64vec2) _mm_slli_epi64(vec,count); }
|
||||
I64vec2 operator>>(const I64vec2 &a) { return _mm_srl_epi64(vec,a); }
|
||||
I64vec2 operator>>(int count) { return _mm_srli_epi64(vec,count); }
|
||||
I64vec2& operator>>=(const I64vec2 &a) { return *this = (I64vec2) _mm_srl_epi64(vec,a); }
|
||||
I64vec2& operator>>=(int count) { return *this = (I64vec2) _mm_srli_epi64(vec,count); }
|
||||
|
||||
const __int64& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 2);
|
||||
return _MM_2QW(i,vec);
|
||||
}
|
||||
|
||||
__int64& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 2);
|
||||
return _MM_2QW(i,vec);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
inline I64vec2 unpack_low(const I64vec2 &a,const I64vec2 &b) {return _mm_unpacklo_epi64(a,b); }
|
||||
inline I64vec2 unpack_high(const I64vec2 &a,const I64vec2 &b) {return _mm_unpackhi_epi64(a,b); }
|
||||
|
||||
class I32vec4 : public M128
|
||||
{
|
||||
public:
|
||||
I32vec4() { }
|
||||
I32vec4(__m128i mm) : M128(mm) { }
|
||||
|
||||
I32vec4& operator= (const M128 &a) { return *this = (I32vec4) a; }
|
||||
|
||||
I32vec4& operator&=(const M128 &a) { return *this = (I32vec4) _mm_and_si128(vec,a); }
|
||||
I32vec4& operator|=(const M128 &a) { return *this = (I32vec4) _mm_or_si128(vec,a); }
|
||||
I32vec4& operator^=(const M128 &a) { return *this = (I32vec4) _mm_xor_si128(vec,a); }
|
||||
|
||||
I32vec4& operator +=(const I32vec4 &a) { return *this = (I32vec4)_mm_add_epi32(vec,a); }
|
||||
I32vec4& operator -=(const I32vec4 &a) { return *this = (I32vec4)_mm_sub_epi32(vec,a); }
|
||||
|
||||
I32vec4 operator<<(const I32vec4 &a) { return _mm_sll_epi32(vec,a); }
|
||||
I32vec4 operator<<(int count) { return _mm_slli_epi32(vec,count); }
|
||||
I32vec4& operator<<=(const I32vec4 &a) { return *this = (I32vec4)_mm_sll_epi32(vec,a); }
|
||||
I32vec4& operator<<=(int count) { return *this = (I32vec4)_mm_slli_epi32(vec,count); }
|
||||
|
||||
};
|
||||
|
||||
inline I32vec4 cmpeq(const I32vec4 &a,const I32vec4 &b) { return _mm_cmpeq_epi32(a,b); }
|
||||
inline I32vec4 cmpneq(const I32vec4 &a,const I32vec4 &b) { return _mm_andnot_si128(_mm_cmpeq_epi32(a,b),get_mask128()); }
|
||||
|
||||
inline I32vec4 unpack_low(const I32vec4 &a,const I32vec4 &b) { return _mm_unpacklo_epi32(a,b); }
|
||||
inline I32vec4 unpack_high(const I32vec4 &a,const I32vec4 &b) { return _mm_unpackhi_epi32(a,b); }
|
||||
|
||||
class Is32vec4 : public I32vec4
|
||||
{
|
||||
public:
|
||||
Is32vec4() { }
|
||||
Is32vec4(__m128i mm) : I32vec4(mm) { }
|
||||
Is32vec4(int i3,int i2,int i1,int i0)
|
||||
{
|
||||
_MM_4DW(0,vec) = i0;
|
||||
_MM_4DW(1,vec) = i1;
|
||||
_MM_4DW(2,vec) = i2;
|
||||
_MM_4DW(3,vec) = i3;
|
||||
}
|
||||
|
||||
Is32vec4& operator= (const M128 &a) { return *this = (Is32vec4) a; }
|
||||
|
||||
Is32vec4& operator&=(const M128 &a) { return *this = (Is32vec4) _mm_and_si128(vec,a); }
|
||||
Is32vec4& operator|=(const M128 &a) { return *this = (Is32vec4) _mm_or_si128(vec,a); }
|
||||
Is32vec4& operator^=(const M128 &a) { return *this = (Is32vec4) _mm_xor_si128(vec,a); }
|
||||
|
||||
Is32vec4& operator +=(const I32vec4 &a) { return *this = (Is32vec4)_mm_add_epi32(vec,a); }
|
||||
Is32vec4& operator -=(const I32vec4 &a) { return *this = (Is32vec4)_mm_sub_epi32(vec,a); }
|
||||
|
||||
Is32vec4 operator<<(const M128 &a) { return _mm_sll_epi32(vec,a); }
|
||||
Is32vec4 operator<<(int count) { return _mm_slli_epi32(vec,count); }
|
||||
Is32vec4& operator<<=(const M128 &a) { return *this = (Is32vec4)_mm_sll_epi32(vec,a); }
|
||||
Is32vec4& operator<<=(int count) { return *this = (Is32vec4)_mm_slli_epi32(vec,count); }
|
||||
|
||||
Is32vec4 operator>>(const M128 &a) { return _mm_sra_epi32(vec,a); }
|
||||
Is32vec4 operator>>(int count) { return _mm_srai_epi32(vec,count); }
|
||||
Is32vec4& operator>>=(const M128 &a) { return *this = (Is32vec4) _mm_sra_epi32(vec,a); }
|
||||
Is32vec4& operator>>=(int count) { return *this = (Is32vec4) _mm_srai_epi32(vec,count); }
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream& operator<< (std::ostream &os,const Is32vec4 &a)
|
||||
{
|
||||
os << "[3]:" << _MM_4DW(3,a)
|
||||
<< " [2]:" << _MM_4DW(2,a)
|
||||
<< " [1]:" << _MM_4DW(1,a)
|
||||
<< " [0]:" << _MM_4DW(0,a);
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const int& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 4);
|
||||
return _MM_4DW(i,vec);
|
||||
}
|
||||
|
||||
int& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 4);
|
||||
return _MM_4DW(i,vec);
|
||||
}
|
||||
};
|
||||
|
||||
inline Is32vec4 cmpeq(const Is32vec4 &a,const Is32vec4 &b) { return _mm_cmpeq_epi32(a,b); }
|
||||
inline Is32vec4 cmpneq(const Is32vec4 &a,const Is32vec4 &b) { return _mm_andnot_si128(_mm_cmpeq_epi32(a,b),get_mask128()); }
|
||||
inline Is32vec4 cmpgt(const Is32vec4 &a,const Is32vec4 &b) { return _mm_cmpgt_epi32(a,b); }
|
||||
inline Is32vec4 cmplt(const Is32vec4 &a,const Is32vec4 &b) { return _mm_cmpgt_epi32(b,a); }
|
||||
|
||||
inline Is32vec4 unpack_low(const Is32vec4 &a,const Is32vec4 &b) { return _mm_unpacklo_epi32(a,b); }
|
||||
inline Is32vec4 unpack_high(const Is32vec4 &a,const Is32vec4 &b) { return _mm_unpackhi_epi32(a,b); }
|
||||
|
||||
class Iu32vec4 : public I32vec4
|
||||
{
|
||||
public:
|
||||
Iu32vec4() { }
|
||||
Iu32vec4(__m128i mm) : I32vec4(mm) { }
|
||||
Iu32vec4(unsigned int ui3,unsigned int ui2,unsigned int ui1,unsigned int ui0)
|
||||
{
|
||||
_MM_4UDW(0,vec) = ui0;
|
||||
_MM_4UDW(1,vec) = ui1;
|
||||
_MM_4UDW(2,vec) = ui2;
|
||||
_MM_4UDW(3,vec) = ui3;
|
||||
}
|
||||
|
||||
Iu32vec4& operator= (const M128 &a) { return *this = (Iu32vec4) a; }
|
||||
|
||||
Iu32vec4& operator&=(const M128 &a) { return *this = (Iu32vec4) _mm_and_si128(vec,a); }
|
||||
Iu32vec4& operator|=(const M128 &a) { return *this = (Iu32vec4) _mm_or_si128(vec,a); }
|
||||
Iu32vec4& operator^=(const M128 &a) { return *this = (Iu32vec4) _mm_xor_si128(vec,a); }
|
||||
|
||||
Iu32vec4& operator +=(const I32vec4 &a) { return *this = (Iu32vec4)_mm_add_epi32(vec,a); }
|
||||
Iu32vec4& operator -=(const I32vec4 &a) { return *this = (Iu32vec4)_mm_sub_epi32(vec,a); }
|
||||
|
||||
Iu32vec4 operator<<(const M128 &a) { return _mm_sll_epi32(vec,a); }
|
||||
Iu32vec4 operator<<(int count) { return _mm_slli_epi32(vec,count); }
|
||||
Iu32vec4& operator<<=(const M128 &a) { return *this = (Iu32vec4)_mm_sll_epi32(vec,a); }
|
||||
Iu32vec4& operator<<=(int count) { return *this = (Iu32vec4)_mm_slli_epi32(vec,count); }
|
||||
Iu32vec4 operator>>(const M128 &a) { return _mm_srl_epi32(vec,a); }
|
||||
Iu32vec4 operator>>(int count) { return _mm_srli_epi32(vec,count); }
|
||||
Iu32vec4& operator>>=(const M128 &a) { return *this = (Iu32vec4) _mm_srl_epi32(vec,a); }
|
||||
Iu32vec4& operator>>=(int count) { return *this = (Iu32vec4) _mm_srli_epi32(vec,count); }
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream& operator<< (std::ostream &os,const Iu32vec4 &a)
|
||||
{
|
||||
os << "[3]:" << _MM_4UDW(3,a)
|
||||
<< " [2]:" << _MM_4UDW(2,a)
|
||||
<< " [1]:" << _MM_4UDW(1,a)
|
||||
<< " [0]:" << _MM_4UDW(0,a);
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const unsigned int& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 4);
|
||||
return _MM_4UDW(i,vec);
|
||||
}
|
||||
|
||||
unsigned int& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 4);
|
||||
return _MM_4UDW(i,vec);
|
||||
}
|
||||
};
|
||||
|
||||
inline I64vec2 operator*(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_mul_epu32(a,b); }
|
||||
inline Iu32vec4 cmpeq(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_cmpeq_epi32(a,b); }
|
||||
inline Iu32vec4 cmpneq(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_andnot_si128(_mm_cmpeq_epi32(a,b),get_mask128()); }
|
||||
|
||||
inline Iu32vec4 unpack_low(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_unpacklo_epi32(a,b); }
|
||||
inline Iu32vec4 unpack_high(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_unpackhi_epi32(a,b); }
|
||||
|
||||
class I16vec8 : public M128
|
||||
{
|
||||
public:
|
||||
I16vec8() { }
|
||||
I16vec8(__m128i mm) : M128(mm) { }
|
||||
|
||||
I16vec8& operator= (const M128 &a) { return *this = (I16vec8) a; }
|
||||
|
||||
I16vec8& operator&=(const M128 &a) { return *this = (I16vec8) _mm_and_si128(vec,a); }
|
||||
I16vec8& operator|=(const M128 &a) { return *this = (I16vec8) _mm_or_si128(vec,a); }
|
||||
I16vec8& operator^=(const M128 &a) { return *this = (I16vec8) _mm_xor_si128(vec,a); }
|
||||
|
||||
I16vec8& operator +=(const I16vec8 &a) { return *this = (I16vec8) _mm_add_epi16(vec,a); }
|
||||
I16vec8& operator -=(const I16vec8 &a) { return *this = (I16vec8) _mm_sub_epi16(vec,a); }
|
||||
I16vec8& operator *=(const I16vec8 &a) { return *this = (I16vec8) _mm_mullo_epi16(vec,a); }
|
||||
|
||||
I16vec8 operator<<(const M128 &a) { return _mm_sll_epi16(vec,a); }
|
||||
I16vec8 operator<<(int count) { return _mm_slli_epi16(vec,count); }
|
||||
I16vec8& operator<<=(const M128 &a) { return *this = (I16vec8)_mm_sll_epi16(vec,a); }
|
||||
I16vec8& operator<<=(int count) { return *this = (I16vec8)_mm_slli_epi16(vec,count); }
|
||||
|
||||
};
|
||||
|
||||
inline I16vec8 operator*(const I16vec8 &a,const I16vec8 &b) { return _mm_mullo_epi16(a,b); }
|
||||
|
||||
inline I16vec8 cmpeq(const I16vec8 &a,const I16vec8 &b) { return _mm_cmpeq_epi16(a,b); }
|
||||
inline I16vec8 cmpneq(const I16vec8 &a,const I16vec8 &b) { return _mm_andnot_si128(_mm_cmpeq_epi16(a,b),get_mask128()); }
|
||||
|
||||
inline I16vec8 unpack_low(const I16vec8 &a,const I16vec8 &b) { return _mm_unpacklo_epi16(a,b); }
|
||||
inline I16vec8 unpack_high(const I16vec8 &a,const I16vec8 &b) { return _mm_unpackhi_epi16(a,b); }
|
||||
|
||||
class Is16vec8 : public I16vec8
|
||||
{
|
||||
public:
|
||||
Is16vec8() { }
|
||||
Is16vec8(__m128i mm) : I16vec8(mm) { }
|
||||
Is16vec8(signed short s7,signed short s6,signed short s5,signed short s4,signed short s3,signed short s2,signed short s1,signed short s0)
|
||||
{
|
||||
_MM_8W(0,vec) = s0;
|
||||
_MM_8W(1,vec) = s1;
|
||||
_MM_8W(2,vec) = s2;
|
||||
_MM_8W(3,vec) = s3;
|
||||
_MM_8W(4,vec) = s4;
|
||||
_MM_8W(5,vec) = s5;
|
||||
_MM_8W(6,vec) = s6;
|
||||
_MM_8W(7,vec) = s7;
|
||||
}
|
||||
|
||||
Is16vec8& operator= (const M128 &a) { return *this = (Is16vec8) a; }
|
||||
|
||||
Is16vec8& operator&=(const M128 &a) { return *this = (Is16vec8) _mm_and_si128(vec,a); }
|
||||
Is16vec8& operator|=(const M128 &a) { return *this = (Is16vec8) _mm_or_si128(vec,a); }
|
||||
Is16vec8& operator^=(const M128 &a) { return *this = (Is16vec8) _mm_xor_si128(vec,a); }
|
||||
|
||||
Is16vec8& operator +=(const I16vec8 &a) { return *this = (Is16vec8) _mm_add_epi16(vec,a); }
|
||||
Is16vec8& operator -=(const I16vec8 &a) { return *this = (Is16vec8) _mm_sub_epi16(vec,a); }
|
||||
Is16vec8& operator *=(const I16vec8 &a) { return *this = (Is16vec8) _mm_mullo_epi16(vec,a); }
|
||||
|
||||
Is16vec8 operator<<(const M128 &a) { return _mm_sll_epi16(vec,a); }
|
||||
Is16vec8 operator<<(int count) { return _mm_slli_epi16(vec,count); }
|
||||
Is16vec8& operator<<=(const M128 &a) { return *this = (Is16vec8)_mm_sll_epi16(vec,a); }
|
||||
Is16vec8& operator<<=(int count) { return *this = (Is16vec8)_mm_slli_epi16(vec,count); }
|
||||
|
||||
Is16vec8 operator>>(const M128 &a) { return _mm_sra_epi16(vec,a); }
|
||||
Is16vec8 operator>>(int count) { return _mm_srai_epi16(vec,count); }
|
||||
Is16vec8& operator>>=(const M128 &a) { return *this = (Is16vec8)_mm_sra_epi16(vec,a); }
|
||||
Is16vec8& operator>>=(int count) { return *this = (Is16vec8)_mm_srai_epi16(vec,count); }
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream& operator<< (std::ostream &os,const Is16vec8 &a)
|
||||
{
|
||||
os << "[7]:" << _MM_8W(7,a)
|
||||
<< " [6]:" << _MM_8W(6,a)
|
||||
<< " [5]:" << _MM_8W(5,a)
|
||||
<< " [4]:" << _MM_8W(4,a)
|
||||
<< " [3]:" << _MM_8W(3,a)
|
||||
<< " [2]:" << _MM_8W(2,a)
|
||||
<< " [1]:" << _MM_8W(1,a)
|
||||
<< " [0]:" << _MM_8W(0,a);
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const signed short& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 8);
|
||||
return _MM_8W(i,vec);
|
||||
}
|
||||
|
||||
signed short& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 8);
|
||||
return _MM_8W(i,vec);
|
||||
}
|
||||
};
|
||||
|
||||
inline Is16vec8 operator*(const Is16vec8 &a,const Is16vec8 &b) { return _mm_mullo_epi16(a,b); }
|
||||
|
||||
inline Is16vec8 cmpeq(const Is16vec8 &a,const Is16vec8 &b) { return _mm_cmpeq_epi16(a,b); }
|
||||
inline Is16vec8 cmpneq(const Is16vec8 &a,const Is16vec8 &b) { return _mm_andnot_si128(_mm_cmpeq_epi16(a,b),get_mask128()); }
|
||||
inline Is16vec8 cmpgt(const Is16vec8 &a,const Is16vec8 &b) { return _mm_cmpgt_epi16(a,b); }
|
||||
inline Is16vec8 cmplt(const Is16vec8 &a,const Is16vec8 &b) { return _mm_cmpgt_epi16(b,a); }
|
||||
|
||||
inline Is16vec8 unpack_low(const Is16vec8 &a,const Is16vec8 &b) { return _mm_unpacklo_epi16(a,b); }
|
||||
inline Is16vec8 unpack_high(const Is16vec8 &a,const Is16vec8 &b) { return _mm_unpackhi_epi16(a,b); }
|
||||
|
||||
inline Is16vec8 mul_high(const Is16vec8 &a,const Is16vec8 &b) { return _mm_mulhi_epi16(a,b); }
|
||||
inline Is32vec4 mul_add(const Is16vec8 &a,const Is16vec8 &b) { return _mm_madd_epi16(a,b);}
|
||||
|
||||
inline Is16vec8 sat_add(const Is16vec8 &a,const Is16vec8 &b) { return _mm_adds_epi16(a,b); }
|
||||
inline Is16vec8 sat_sub(const Is16vec8 &a,const Is16vec8 &b) { return _mm_subs_epi16(a,b); }
|
||||
|
||||
inline Is16vec8 simd_max(const Is16vec8 &a,const Is16vec8 &b) { return _mm_max_epi16(a,b); }
|
||||
inline Is16vec8 simd_min(const Is16vec8 &a,const Is16vec8 &b) { return _mm_min_epi16(a,b); }
|
||||
|
||||
class Iu16vec8 : public I16vec8
|
||||
{
|
||||
public:
|
||||
Iu16vec8() { }
|
||||
Iu16vec8(__m128i mm) : I16vec8(mm) { }
|
||||
Iu16vec8(unsigned short s7,unsigned short s6,unsigned short s5,unsigned short s4,unsigned short s3,unsigned short s2,unsigned short s1,unsigned short s0)
|
||||
{
|
||||
_MM_8UW(0,vec) = s0;
|
||||
_MM_8UW(1,vec) = s1;
|
||||
_MM_8UW(2,vec) = s2;
|
||||
_MM_8UW(3,vec) = s3;
|
||||
_MM_8UW(4,vec) = s4;
|
||||
_MM_8UW(5,vec) = s5;
|
||||
_MM_8UW(6,vec) = s6;
|
||||
_MM_8UW(7,vec) = s7;
|
||||
}
|
||||
|
||||
Iu16vec8& operator= (const M128 &a) { return *this = (Iu16vec8) a; }
|
||||
|
||||
Iu16vec8& operator&=(const M128 &a) { return *this = (Iu16vec8) _mm_and_si128(vec,a); }
|
||||
Iu16vec8& operator|=(const M128 &a) { return *this = (Iu16vec8) _mm_or_si128(vec,a); }
|
||||
Iu16vec8& operator^=(const M128 &a) { return *this = (Iu16vec8) _mm_xor_si128(vec,a); }
|
||||
|
||||
Iu16vec8& operator +=(const I16vec8 &a) { return *this = (Iu16vec8) _mm_add_epi16(vec,a); }
|
||||
Iu16vec8& operator -=(const I16vec8 &a) { return *this = (Iu16vec8) _mm_sub_epi16(vec,a); }
|
||||
Iu16vec8& operator *=(const I16vec8 &a) { return *this = (Iu16vec8) _mm_mullo_epi16(vec,a); }
|
||||
|
||||
Iu16vec8 operator<<(const M128 &a) { return _mm_sll_epi16(vec,a); }
|
||||
Iu16vec8 operator<<(int count) { return _mm_slli_epi16(vec,count); }
|
||||
Iu16vec8& operator<<=(const M128 &a) { return *this = (Iu16vec8)_mm_sll_epi16(vec,a); }
|
||||
Iu16vec8& operator<<=(int count) { return *this = (Iu16vec8)_mm_slli_epi16(vec,count); }
|
||||
Iu16vec8 operator>>(const M128 &a) { return _mm_srl_epi16(vec,a); }
|
||||
Iu16vec8 operator>>(int count) { return _mm_srli_epi16(vec,count); }
|
||||
Iu16vec8& operator>>=(const M128 &a) { return *this = (Iu16vec8) _mm_srl_epi16(vec,a); }
|
||||
Iu16vec8& operator>>=(int count) { return *this = (Iu16vec8) _mm_srli_epi16(vec,count); }
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream& operator << (std::ostream &os,const Iu16vec8 &a)
|
||||
{
|
||||
os << "[7]:" << unsigned short(_MM_8UW(7,a))
|
||||
<< " [6]:" << unsigned short(_MM_8UW(6,a))
|
||||
<< " [5]:" << unsigned short(_MM_8UW(5,a))
|
||||
<< " [4]:" << unsigned short(_MM_8UW(4,a))
|
||||
<< " [3]:" << unsigned short(_MM_8UW(3,a))
|
||||
<< " [2]:" << unsigned short(_MM_8UW(2,a))
|
||||
<< " [1]:" << unsigned short(_MM_8UW(1,a))
|
||||
<< " [0]:" << unsigned short(_MM_8UW(0,a));
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const unsigned short& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 8);
|
||||
return _MM_8UW(i,vec);
|
||||
}
|
||||
|
||||
unsigned short& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 8);
|
||||
return _MM_8UW(i,vec);
|
||||
}
|
||||
};
|
||||
|
||||
inline Iu16vec8 operator*(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_mullo_epi16(a,b); }
|
||||
|
||||
inline Iu16vec8 cmpeq(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_cmpeq_epi16(a,b); }
|
||||
inline Iu16vec8 cmpneq(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_andnot_si128(_mm_cmpeq_epi16(a,b),get_mask128()); }
|
||||
|
||||
inline Iu16vec8 unpack_low(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_unpacklo_epi16(a,b); }
|
||||
inline Iu16vec8 unpack_high(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_unpackhi_epi16(a,b); }
|
||||
|
||||
inline Iu16vec8 sat_add(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_adds_epu16(a,b); }
|
||||
inline Iu16vec8 sat_sub(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_subs_epu16(a,b); }
|
||||
|
||||
inline Iu16vec8 simd_avg(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_avg_epu16(a,b); }
|
||||
inline I16vec8 mul_high(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_mulhi_epu16(a,b); }
|
||||
|
||||
class I8vec16 : public M128
|
||||
{
|
||||
public:
|
||||
I8vec16() { }
|
||||
I8vec16(__m128i mm) : M128(mm) { }
|
||||
|
||||
I8vec16& operator= (const M128 &a) { return *this = (I8vec16) a; }
|
||||
|
||||
I8vec16& operator&=(const M128 &a) { return *this = (I8vec16) _mm_and_si128(vec,a); }
|
||||
I8vec16& operator|=(const M128 &a) { return *this = (I8vec16) _mm_or_si128(vec,a); }
|
||||
I8vec16& operator^=(const M128 &a) { return *this = (I8vec16) _mm_xor_si128(vec,a); }
|
||||
|
||||
I8vec16& operator +=(const I8vec16 &a) { return *this = (I8vec16) _mm_add_epi8(vec,a); }
|
||||
I8vec16& operator -=(const I8vec16 &a) { return *this = (I8vec16) _mm_sub_epi8(vec,a); }
|
||||
|
||||
};
|
||||
|
||||
inline I8vec16 cmpeq(const I8vec16 &a,const I8vec16 &b) { return _mm_cmpeq_epi8(a,b); }
|
||||
inline I8vec16 cmpneq(const I8vec16 &a,const I8vec16 &b) { return _mm_andnot_si128(_mm_cmpeq_epi8(a,b),get_mask128()); }
|
||||
|
||||
inline I8vec16 unpack_low(const I8vec16 &a,const I8vec16 &b) { return _mm_unpacklo_epi8(a,b); }
|
||||
inline I8vec16 unpack_high(const I8vec16 &a,const I8vec16 &b) { return _mm_unpackhi_epi8(a,b); }
|
||||
|
||||
class Is8vec16 : public I8vec16
|
||||
{
|
||||
public:
|
||||
Is8vec16() { }
|
||||
Is8vec16(__m128i mm) : I8vec16(mm) { }
|
||||
|
||||
Is8vec16& operator= (const M128 &a) { return *this = (Is8vec16) a; }
|
||||
|
||||
Is8vec16& operator&=(const M128 &a) { return *this = (Is8vec16) _mm_and_si128(vec,a); }
|
||||
Is8vec16& operator|=(const M128 &a) { return *this = (Is8vec16) _mm_or_si128(vec,a); }
|
||||
Is8vec16& operator^=(const M128 &a) { return *this = (Is8vec16) _mm_xor_si128(vec,a); }
|
||||
|
||||
Is8vec16& operator +=(const I8vec16 &a) { return *this = (Is8vec16) _mm_add_epi8(vec,a); }
|
||||
Is8vec16& operator -=(const I8vec16 &a) { return *this = (Is8vec16) _mm_sub_epi8(vec,a); }
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream& operator << (std::ostream &os,const Is8vec16 &a)
|
||||
{
|
||||
os << "[15]:" << short(_MM_16B(15,a))
|
||||
<< " [14]:" << short(_MM_16B(14,a))
|
||||
<< " [13]:" << short(_MM_16B(13,a))
|
||||
<< " [12]:" << short(_MM_16B(12,a))
|
||||
<< " [11]:" << short(_MM_16B(11,a))
|
||||
<< " [10]:" << short(_MM_16B(10,a))
|
||||
<< " [9]:" << short(_MM_16B(9,a))
|
||||
<< " [8]:" << short(_MM_16B(8,a))
|
||||
<< " [7]:" << short(_MM_16B(7,a))
|
||||
<< " [6]:" << short(_MM_16B(6,a))
|
||||
<< " [5]:" << short(_MM_16B(5,a))
|
||||
<< " [4]:" << short(_MM_16B(4,a))
|
||||
<< " [3]:" << short(_MM_16B(3,a))
|
||||
<< " [2]:" << short(_MM_16B(2,a))
|
||||
<< " [1]:" << short(_MM_16B(1,a))
|
||||
<< " [0]:" << short(_MM_16B(0,a));
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const signed char& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 16);
|
||||
return _MM_16B(i,vec);
|
||||
}
|
||||
|
||||
signed char& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 16);
|
||||
return _MM_16B(i,vec);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
inline Is8vec16 cmpeq(const Is8vec16 &a,const Is8vec16 &b) { return _mm_cmpeq_epi8(a,b); }
|
||||
inline Is8vec16 cmpneq(const Is8vec16 &a,const Is8vec16 &b) { return _mm_andnot_si128(_mm_cmpeq_epi8(a,b),get_mask128()); }
|
||||
inline Is8vec16 cmpgt(const Is8vec16 &a,const Is8vec16 &b) { return _mm_cmpgt_epi8(a,b); }
|
||||
inline Is8vec16 cmplt(const Is8vec16 &a,const Is8vec16 &b) { return _mm_cmplt_epi8(a,b); }
|
||||
|
||||
inline Is8vec16 unpack_low(const Is8vec16 &a,const Is8vec16 &b) { return _mm_unpacklo_epi8(a,b); }
|
||||
inline Is8vec16 unpack_high(const Is8vec16 &a,const Is8vec16 &b) { return _mm_unpackhi_epi8(a,b); }
|
||||
|
||||
inline Is8vec16 sat_add(const Is8vec16 &a,const Is8vec16 &b) { return _mm_adds_epi8(a,b); }
|
||||
inline Is8vec16 sat_sub(const Is8vec16 &a,const Is8vec16 &b) { return _mm_subs_epi8(a,b); }
|
||||
|
||||
class Iu8vec16 : public I8vec16
|
||||
{
|
||||
public:
|
||||
Iu8vec16() { }
|
||||
Iu8vec16(__m128i mm) : I8vec16(mm) { }
|
||||
|
||||
Iu8vec16& operator= (const M128 &a) { return *this = (Iu8vec16) a; }
|
||||
|
||||
Iu8vec16& operator&=(const M128 &a) { return *this = (Iu8vec16) _mm_and_si128(vec,a); }
|
||||
Iu8vec16& operator|=(const M128 &a) { return *this = (Iu8vec16) _mm_or_si128(vec,a); }
|
||||
Iu8vec16& operator^=(const M128 &a) { return *this = (Iu8vec16) _mm_xor_si128(vec,a); }
|
||||
|
||||
Iu8vec16& operator +=(const I8vec16 &a) { return *this = (Iu8vec16) _mm_add_epi8(vec,a); }
|
||||
Iu8vec16& operator -=(const I8vec16 &a) { return *this = (Iu8vec16) _mm_sub_epi8(vec,a); }
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream& operator << (std::ostream &os,const Iu8vec16 &a)
|
||||
{
|
||||
os << "[15]:" << unsigned short(_MM_16UB(15,a))
|
||||
<< " [14]:" << unsigned short(_MM_16UB(14,a))
|
||||
<< " [13]:" << unsigned short(_MM_16UB(13,a))
|
||||
<< " [12]:" << unsigned short(_MM_16UB(12,a))
|
||||
<< " [11]:" << unsigned short(_MM_16UB(11,a))
|
||||
<< " [10]:" << unsigned short(_MM_16UB(10,a))
|
||||
<< " [9]:" << unsigned short(_MM_16UB(9,a))
|
||||
<< " [8]:" << unsigned short(_MM_16UB(8,a))
|
||||
<< " [7]:" << unsigned short(_MM_16UB(7,a))
|
||||
<< " [6]:" << unsigned short(_MM_16UB(6,a))
|
||||
<< " [5]:" << unsigned short(_MM_16UB(5,a))
|
||||
<< " [4]:" << unsigned short(_MM_16UB(4,a))
|
||||
<< " [3]:" << unsigned short(_MM_16UB(3,a))
|
||||
<< " [2]:" << unsigned short(_MM_16UB(2,a))
|
||||
<< " [1]:" << unsigned short(_MM_16UB(1,a))
|
||||
<< " [0]:" << unsigned short(_MM_16UB(0,a));
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const unsigned char& operator[](int i)const
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 16);
|
||||
return _MM_16UB(i,vec);
|
||||
}
|
||||
|
||||
unsigned char& operator[](int i)
|
||||
{
|
||||
assert(static_cast<unsigned int>(i) < 16);
|
||||
return _MM_16UB(i,vec);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
inline Iu8vec16 cmpeq(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_cmpeq_epi8(a,b); }
|
||||
inline Iu8vec16 cmpneq(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_andnot_si128(_mm_cmpeq_epi8(a,b),get_mask128()); }
|
||||
|
||||
inline Iu8vec16 unpack_low(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_unpacklo_epi8(a,b); }
|
||||
inline Iu8vec16 unpack_high(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_unpackhi_epi8(a,b); }
|
||||
|
||||
inline Iu8vec16 sat_add(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_adds_epu8(a,b); }
|
||||
inline Iu8vec16 sat_sub(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_subs_epu8(a,b); }
|
||||
|
||||
inline I64vec2 sum_abs(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_sad_epu8(a,b); }
|
||||
|
||||
inline Iu8vec16 simd_avg(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_avg_epu8(a,b); }
|
||||
inline Iu8vec16 simd_max(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_max_epu8(a,b); }
|
||||
inline Iu8vec16 simd_min(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_min_epu8(a,b); }
|
||||
|
||||
inline Is16vec8 pack_sat(const Is32vec4 &a,const Is32vec4 &b) { return _mm_packs_epi32(a,b); }
|
||||
inline Is8vec16 pack_sat(const Is16vec8 &a,const Is16vec8 &b) { return _mm_packs_epi16(a,b); }
|
||||
inline Iu8vec16 packu_sat(const Is16vec8 &a,const Is16vec8 &b) { return _mm_packus_epi16(a,b);}
|
||||
|
||||
#define IVEC128_LOGICALS(vect,element) inline I##vect##vec##element operator& (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_and_si128(a,b); } inline I##vect##vec##element operator| (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_or_si128(a,b); } inline I##vect##vec##element operator^ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_xor_si128(a,b); } inline I##vect##vec##element andnot (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_andnot_si128(a,b); }
|
||||
|
||||
IVEC128_LOGICALS(8,16)
|
||||
IVEC128_LOGICALS(u8,16)
|
||||
IVEC128_LOGICALS(s8,16)
|
||||
IVEC128_LOGICALS(16,8)
|
||||
IVEC128_LOGICALS(u16,8)
|
||||
IVEC128_LOGICALS(s16,8)
|
||||
IVEC128_LOGICALS(32,4)
|
||||
IVEC128_LOGICALS(u32,4)
|
||||
IVEC128_LOGICALS(s32,4)
|
||||
IVEC128_LOGICALS(64,2)
|
||||
IVEC128_LOGICALS(128,1)
|
||||
#undef IVEC128_LOGICALS
|
||||
|
||||
#define IVEC128_ADD_SUB(vect,element,opsize) inline I##vect##vec##element operator+ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_add_##opsize(a,b); } inline I##vect##vec##element operator- (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_sub_##opsize(a,b); }
|
||||
|
||||
IVEC128_ADD_SUB(8,16,epi8)
|
||||
IVEC128_ADD_SUB(u8,16,epi8)
|
||||
IVEC128_ADD_SUB(s8,16,epi8)
|
||||
IVEC128_ADD_SUB(16,8,epi16)
|
||||
IVEC128_ADD_SUB(u16,8,epi16)
|
||||
IVEC128_ADD_SUB(s16,8,epi16)
|
||||
IVEC128_ADD_SUB(32,4,epi32)
|
||||
IVEC128_ADD_SUB(u32,4,epi32)
|
||||
IVEC128_ADD_SUB(s32,4,epi32)
|
||||
IVEC128_ADD_SUB(64,2,epi64)
|
||||
#undef IVEC128_ADD_SUB
|
||||
|
||||
#define IVEC128_SELECT(vect12,vect34,element,selop,arg1,arg2) inline I##vect34##vec##element select_##selop (const I##vect12##vec##element &a,const I##vect12##vec##element &b,const I##vect34##vec##element &c,const I##vect34##vec##element &d) { I##vect12##vec##element mask = cmp##selop(a,b); return(I##vect34##vec##element ((mask & arg1) | I##vect12##vec##element ((_mm_andnot_si128(mask,arg2))))); }
|
||||
IVEC128_SELECT(8,s8,16,eq,c,d)
|
||||
IVEC128_SELECT(8,u8,16,eq,c,d)
|
||||
IVEC128_SELECT(8,8,16,eq,c,d)
|
||||
IVEC128_SELECT(8,s8,16,neq,c,d)
|
||||
IVEC128_SELECT(8,u8,16,neq,c,d)
|
||||
IVEC128_SELECT(8,8,16,neq,c,d)
|
||||
|
||||
IVEC128_SELECT(16,s16,8,eq,c,d)
|
||||
IVEC128_SELECT(16,u16,8,eq,c,d)
|
||||
IVEC128_SELECT(16,16,8,eq,c,d)
|
||||
IVEC128_SELECT(16,s16,8,neq,c,d)
|
||||
IVEC128_SELECT(16,u16,8,neq,c,d)
|
||||
IVEC128_SELECT(16,16,8,neq,c,d)
|
||||
|
||||
IVEC128_SELECT(32,s32,4,eq,c,d)
|
||||
IVEC128_SELECT(32,u32,4,eq,c,d)
|
||||
IVEC128_SELECT(32,32,4,eq,c,d)
|
||||
IVEC128_SELECT(32,s32,4,neq,c,d)
|
||||
IVEC128_SELECT(32,u32,4,neq,c,d)
|
||||
IVEC128_SELECT(32,32,4,neq,c,d)
|
||||
|
||||
IVEC128_SELECT(s8,s8,16,gt,c,d)
|
||||
IVEC128_SELECT(s8,u8,16,gt,c,d)
|
||||
IVEC128_SELECT(s8,8,16,gt,c,d)
|
||||
IVEC128_SELECT(s8,s8,16,lt,c,d)
|
||||
IVEC128_SELECT(s8,u8,16,lt,c,d)
|
||||
IVEC128_SELECT(s8,8,16,lt,c,d)
|
||||
|
||||
IVEC128_SELECT(s16,s16,8,gt,c,d)
|
||||
IVEC128_SELECT(s16,u16,8,gt,c,d)
|
||||
IVEC128_SELECT(s16,16,8,gt,c,d)
|
||||
IVEC128_SELECT(s16,s16,8,lt,c,d)
|
||||
IVEC128_SELECT(s16,u16,8,lt,c,d)
|
||||
IVEC128_SELECT(s16,16,8,lt,c,d)
|
||||
|
||||
#undef IVEC128_SELECT
|
||||
|
||||
class F64vec2
|
||||
{
|
||||
protected:
|
||||
__m128d vec;
|
||||
public:
|
||||
|
||||
F64vec2() {}
|
||||
|
||||
F64vec2(__m128d m) { vec = m;}
|
||||
|
||||
F64vec2(double d1,double d0) { vec= _mm_set_pd(d1,d0); }
|
||||
|
||||
EXPLICIT F64vec2(double d) { vec = _mm_set1_pd(d); }
|
||||
|
||||
operator __m128d() const { return vec; }
|
||||
|
||||
friend F64vec2 operator &(const F64vec2 &a,const F64vec2 &b) { return _mm_and_pd(a,b); }
|
||||
friend F64vec2 operator |(const F64vec2 &a,const F64vec2 &b) { return _mm_or_pd(a,b); }
|
||||
friend F64vec2 operator ^(const F64vec2 &a,const F64vec2 &b) { return _mm_xor_pd(a,b); }
|
||||
|
||||
friend F64vec2 operator +(const F64vec2 &a,const F64vec2 &b) { return _mm_add_pd(a,b); }
|
||||
friend F64vec2 operator -(const F64vec2 &a,const F64vec2 &b) { return _mm_sub_pd(a,b); }
|
||||
friend F64vec2 operator *(const F64vec2 &a,const F64vec2 &b) { return _mm_mul_pd(a,b); }
|
||||
friend F64vec2 operator /(const F64vec2 &a,const F64vec2 &b) { return _mm_div_pd(a,b); }
|
||||
|
||||
F64vec2& operator +=(F64vec2 &a) { return *this = _mm_add_pd(vec,a); }
|
||||
F64vec2& operator -=(F64vec2 &a) { return *this = _mm_sub_pd(vec,a); }
|
||||
F64vec2& operator *=(F64vec2 &a) { return *this = _mm_mul_pd(vec,a); }
|
||||
F64vec2& operator /=(F64vec2 &a) { return *this = _mm_div_pd(vec,a); }
|
||||
F64vec2& operator &=(F64vec2 &a) { return *this = _mm_and_pd(vec,a); }
|
||||
F64vec2& operator |=(F64vec2 &a) { return *this = _mm_or_pd(vec,a); }
|
||||
F64vec2& operator ^=(F64vec2 &a) { return *this = _mm_xor_pd(vec,a); }
|
||||
|
||||
friend double add_horizontal(F64vec2 &a)
|
||||
{
|
||||
F64vec2 ftemp = _mm_add_sd(a,_mm_shuffle_pd(a,a,1));
|
||||
return ftemp[0];
|
||||
}
|
||||
|
||||
friend F64vec2 andnot(const F64vec2 &a,const F64vec2 &b) { return _mm_andnot_pd(a,b); }
|
||||
|
||||
friend F64vec2 sqrt(const F64vec2 &a) { return _mm_sqrt_pd(a); }
|
||||
|
||||
#define F64vec2_COMP(op) friend F64vec2 cmp##op (const F64vec2 &a,const F64vec2 &b) { return _mm_cmp##op##_pd(a,b); }
|
||||
F64vec2_COMP(eq)
|
||||
F64vec2_COMP(lt)
|
||||
F64vec2_COMP(le)
|
||||
F64vec2_COMP(gt)
|
||||
F64vec2_COMP(ge)
|
||||
F64vec2_COMP(ngt)
|
||||
F64vec2_COMP(nge)
|
||||
F64vec2_COMP(neq)
|
||||
F64vec2_COMP(nlt)
|
||||
F64vec2_COMP(nle)
|
||||
#undef F64vec2_COMP
|
||||
|
||||
friend F64vec2 simd_min(const F64vec2 &a,const F64vec2 &b) { return _mm_min_pd(a,b); }
|
||||
friend F64vec2 simd_max(const F64vec2 &a,const F64vec2 &b) { return _mm_max_pd(a,b); }
|
||||
|
||||
#define F64vec2_COMI(op) friend int comi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_comi##op##_sd(a,b); }
|
||||
F64vec2_COMI(eq)
|
||||
F64vec2_COMI(lt)
|
||||
F64vec2_COMI(le)
|
||||
F64vec2_COMI(gt)
|
||||
F64vec2_COMI(ge)
|
||||
F64vec2_COMI(neq)
|
||||
#undef F64vec2_COMI
|
||||
|
||||
#define F64vec2_UCOMI(op) friend int ucomi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_ucomi##op##_sd(a,b); }
|
||||
F64vec2_UCOMI(eq)
|
||||
F64vec2_UCOMI(lt)
|
||||
F64vec2_UCOMI(le)
|
||||
F64vec2_UCOMI(gt)
|
||||
F64vec2_UCOMI(ge)
|
||||
F64vec2_UCOMI(neq)
|
||||
#undef F64vec2_UCOMI
|
||||
|
||||
#if defined(_ENABLE_VEC_DEBUG)
|
||||
|
||||
friend std::ostream & operator<<(std::ostream & os,const F64vec2 &a) {
|
||||
double *dp = (double*)&a;
|
||||
os << " [1]:" << *(dp+1)
|
||||
<< " [0]:" << *dp;
|
||||
return os;
|
||||
}
|
||||
#endif
|
||||
|
||||
const double &operator[](int i) const {
|
||||
assert((0 <= i) && (i <= 1));
|
||||
double *dp = (double*)&vec;
|
||||
return *(dp+i);
|
||||
}
|
||||
|
||||
double &operator[](int i) {
|
||||
assert((0 <= i) && (i <= 1));
|
||||
double *dp = (double*)&vec;
|
||||
return *(dp+i);
|
||||
}
|
||||
};
|
||||
|
||||
inline F64vec2 unpack_low(const F64vec2 &a,const F64vec2 &b) { return _mm_unpacklo_pd(a,b); }
|
||||
inline F64vec2 unpack_high(const F64vec2 &a,const F64vec2 &b) { return _mm_unpackhi_pd(a,b); }
|
||||
inline int move_mask(const F64vec2 &a) { return _mm_movemask_pd(a); }
|
||||
inline void loadu(F64vec2 &a,double *p) { a = _mm_loadu_pd(p); }
|
||||
inline void storeu(double *p,const F64vec2 &a) { _mm_storeu_pd(p,a); }
|
||||
inline void store_nta(double *p,F64vec2 &a) { _mm_stream_pd(p,a); }
|
||||
|
||||
#define F64vec2_SELECT(op) inline F64vec2 select_##op (const F64vec2 &a,const F64vec2 &b,const F64vec2 &c,const F64vec2 &d) { F64vec2 mask = _mm_cmp##op##_pd(a,b); return((mask & c) | F64vec2((_mm_andnot_pd(mask,d)))); }
|
||||
F64vec2_SELECT(eq)
|
||||
F64vec2_SELECT(lt)
|
||||
F64vec2_SELECT(le)
|
||||
F64vec2_SELECT(gt)
|
||||
F64vec2_SELECT(ge)
|
||||
F64vec2_SELECT(neq)
|
||||
F64vec2_SELECT(nlt)
|
||||
F64vec2_SELECT(nle)
|
||||
#undef F64vec2_SELECT
|
||||
|
||||
inline int F64vec2ToInt(const F64vec2 &a) { return _mm_cvttsd_si32(a); }
|
||||
inline F64vec2 F32vec4ToF64vec2(const F32vec4 &a) { return _mm_cvtps_pd(a); }
|
||||
inline F32vec4 F64vec2ToF32vec4(const F64vec2 &a) { return _mm_cvtpd_ps(a); }
|
||||
inline F64vec2 IntToF64vec2(const F64vec2 &a,int b) { return _mm_cvtsi32_sd(a,b); }
|
||||
|
||||
#pragma pack(pop)
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
#endif
|
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifndef _EH_H_
|
||||
#define _EH_H_
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error eh.h is only for C++!
|
||||
#endif
|
||||
|
||||
typedef void (__cdecl *terminate_function)();
|
||||
typedef void (__cdecl *terminate_handler)();
|
||||
typedef void (__cdecl *unexpected_function)();
|
||||
typedef void (__cdecl *unexpected_handler)();
|
||||
|
||||
struct _EXCEPTION_POINTERS;
|
||||
typedef void (__cdecl *_se_translator_function)(unsigned int,struct _EXCEPTION_POINTERS *);
|
||||
|
||||
_CRTIMP __declspec(noreturn) void __cdecl terminate(void);
|
||||
_CRTIMP void __cdecl unexpected(void);
|
||||
_CRTIMP int __cdecl _is_exception_typeof(const type_info &_Type,struct _EXCEPTION_POINTERS *_ExceptionPtr);
|
||||
_CRTIMP terminate_function __cdecl set_terminate(terminate_function _NewPtFunc);
|
||||
extern "C" _CRTIMP terminate_function __cdecl _get_terminate(void);
|
||||
_CRTIMP unexpected_function __cdecl set_unexpected(unexpected_function _NewPtFunc);
|
||||
extern "C" _CRTIMP unexpected_function __cdecl _get_unexpected(void);
|
||||
_CRTIMP _se_translator_function __cdecl _set_se_translator(_se_translator_function _NewPtFunc);
|
||||
_CRTIMP bool __cdecl __uncaught_exception();
|
||||
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
#endif /* End _EH_H_ */
|
||||
|
@@ -1,75 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_ERRNO
|
||||
#define _INC_ERRNO
|
||||
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _CRT_ERRNO_DEFINED
|
||||
#define _CRT_ERRNO_DEFINED
|
||||
_CRTIMP extern int *__cdecl _errno(void);
|
||||
#define errno (*_errno())
|
||||
|
||||
errno_t __cdecl _set_errno(int _Value);
|
||||
errno_t __cdecl _get_errno(int *_Value);
|
||||
#endif
|
||||
|
||||
#define EPERM 1
|
||||
#define ENOENT 2
|
||||
#define ESRCH 3
|
||||
#define EINTR 4
|
||||
#define EIO 5
|
||||
#define ENXIO 6
|
||||
#define E2BIG 7
|
||||
#define ENOEXEC 8
|
||||
#define EBADF 9
|
||||
#define ECHILD 10
|
||||
#define EAGAIN 11
|
||||
#define ENOMEM 12
|
||||
#define EACCES 13
|
||||
#define EFAULT 14
|
||||
#define EBUSY 16
|
||||
#define EEXIST 17
|
||||
#define EXDEV 18
|
||||
#define ENODEV 19
|
||||
#define ENOTDIR 20
|
||||
#define EISDIR 21
|
||||
#define ENFILE 23
|
||||
#define EMFILE 24
|
||||
#define ENOTTY 25
|
||||
#define EFBIG 27
|
||||
#define ENOSPC 28
|
||||
#define ESPIPE 29
|
||||
#define EROFS 30
|
||||
#define EMLINK 31
|
||||
#define EPIPE 32
|
||||
#define EDOM 33
|
||||
#define EDEADLK 36
|
||||
#define ENAMETOOLONG 38
|
||||
#define ENOLCK 39
|
||||
#define ENOSYS 40
|
||||
#define ENOTEMPTY 41
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
#if !defined(_SECURECRT_ERRCODE_VALUES_DEFINED)
|
||||
#define _SECURECRT_ERRCODE_VALUES_DEFINED
|
||||
#define EINVAL 22
|
||||
#define ERANGE 34
|
||||
#define EILSEQ 42
|
||||
#define STRUNCATE 80
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define EDEADLOCK EDEADLK
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
@@ -1,129 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_EXCPT
|
||||
#define _INC_EXCPT
|
||||
|
||||
#include <crtdefs.h>
|
||||
|
||||
#pragma pack(push,_CRT_PACKING)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum _EXCEPTION_DISPOSITION
|
||||
{
|
||||
ExceptionContinueExecution,
|
||||
ExceptionContinueSearch,
|
||||
ExceptionNestedException,
|
||||
ExceptionCollidedUnwind,
|
||||
} EXCEPTION_DISPOSITION;
|
||||
|
||||
#if (defined(_X86_) && !defined(__x86_64))
|
||||
struct _EXCEPTION_RECORD;
|
||||
struct _CONTEXT;
|
||||
|
||||
EXCEPTION_DISPOSITION __cdecl _except_handler(struct _EXCEPTION_RECORD *_ExceptionRecord,void *_EstablisherFrame,struct _CONTEXT *_ContextRecord,void *_DispatcherContext);
|
||||
#elif defined(__ia64__)
|
||||
|
||||
typedef struct _EXCEPTION_POINTERS *Exception_info_ptr;
|
||||
struct _EXCEPTION_RECORD;
|
||||
struct _CONTEXT;
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
__MINGW_EXTENSION _CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,unsigned __int64 _MemoryStackFp,unsigned __int64 _BackingStoreFp,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext,unsigned __int64 _GlobalPointer);
|
||||
#elif defined(__x86_64)
|
||||
|
||||
struct _EXCEPTION_RECORD;
|
||||
struct _CONTEXT;
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
_CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,void *_EstablisherFrame,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext);
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER // HACK!!!
|
||||
#define GetExceptionCode _exception_code
|
||||
#define exception_code _exception_code
|
||||
#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
|
||||
#define exception_info (struct _EXCEPTION_POINTERS *)_exception_info
|
||||
#define AbnormalTermination _abnormal_termination
|
||||
#define abnormal_termination _abnormal_termination
|
||||
#endif
|
||||
|
||||
unsigned long __cdecl _exception_code(void);
|
||||
void *__cdecl _exception_info(void);
|
||||
int __cdecl _abnormal_termination(void);
|
||||
|
||||
#define EXCEPTION_EXECUTE_HANDLER 1
|
||||
#define EXCEPTION_CONTINUE_SEARCH 0
|
||||
#define EXCEPTION_CONTINUE_EXECUTION -1
|
||||
|
||||
#if 0
|
||||
/* CRT stuff */
|
||||
typedef void (__cdecl * _PHNDLR)(int);
|
||||
|
||||
struct _XCPT_ACTION {
|
||||
unsigned long XcptNum;
|
||||
int SigNum;
|
||||
_PHNDLR XcptAction;
|
||||
};
|
||||
|
||||
extern struct _XCPT_ACTION _XcptActTab[];
|
||||
extern int _XcptActTabCount;
|
||||
extern int _XcptActTabSize;
|
||||
extern int _First_FPE_Indx;
|
||||
extern int _Num_FPE;
|
||||
|
||||
int __cdecl __CppXcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr);
|
||||
int __cdecl _XcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr);
|
||||
|
||||
/*
|
||||
* The type of function that is expected as an exception handler to be
|
||||
* installed with _try1.
|
||||
*/
|
||||
typedef EXCEPTION_DISPOSITION (*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
|
||||
|
||||
#ifndef HAVE_NO_SEH
|
||||
/*
|
||||
* This is not entirely necessary, but it is the structure installed by
|
||||
* the _try1 primitive below.
|
||||
*/
|
||||
typedef struct _EXCEPTION_REGISTRATION {
|
||||
struct _EXCEPTION_REGISTRATION *prev;
|
||||
EXCEPTION_DISPOSITION (*handler)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
|
||||
} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;
|
||||
|
||||
typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD;
|
||||
typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
|
||||
#endif
|
||||
|
||||
#if (defined(_X86_) && !defined(__x86_64))
|
||||
#define __try1(pHandler) \
|
||||
__asm__ ("pushl %0;pushl %%fs:0;movl %%esp,%%fs:0;" : : "g" (pHandler));
|
||||
|
||||
#define __except1 \
|
||||
__asm__ ("movl (%%esp),%%eax;movl %%eax,%%fs:0;addl $8,%%esp;" \
|
||||
: : : "%eax");
|
||||
#elif defined(__x86_64)
|
||||
#define __try1(pHandler) \
|
||||
__asm__ ("pushq %0;pushq %%gs:0;movq %%rsp,%%gs:0;" : : "g" (pHandler));
|
||||
|
||||
#define __except1 \
|
||||
__asm__ ("movq (%%rsp),%%rax;movq %%rax,%%gs:0;addq $16,%%rsp;" \
|
||||
: : : "%rax");
|
||||
#else
|
||||
#define __try1(pHandler)
|
||||
#define __except1
|
||||
#endif
|
||||
|
||||
#endif // 0
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma pack(pop)
|
||||
#endif
|
@@ -1,50 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#include <crtdefs.h>
|
||||
|
||||
#ifndef _INC_FCNTL
|
||||
#define _INC_FCNTL
|
||||
|
||||
#define _O_RDONLY 0x0000
|
||||
#define _O_WRONLY 0x0001
|
||||
#define _O_RDWR 0x0002
|
||||
#define _O_APPEND 0x0008
|
||||
#define _O_CREAT 0x0100
|
||||
#define _O_TRUNC 0x0200
|
||||
#define _O_EXCL 0x0400
|
||||
#define _O_TEXT 0x4000
|
||||
#define _O_BINARY 0x8000
|
||||
#define _O_WTEXT 0x10000
|
||||
#define _O_U16TEXT 0x20000
|
||||
#define _O_U8TEXT 0x40000
|
||||
#define _O_ACCMODE (_O_RDONLY|_O_WRONLY|_O_RDWR)
|
||||
|
||||
#define _O_RAW _O_BINARY
|
||||
#define _O_NOINHERIT 0x0080
|
||||
#define _O_TEMPORARY 0x0040
|
||||
#define _O_SHORT_LIVED 0x1000
|
||||
|
||||
#define _O_SEQUENTIAL 0x0020
|
||||
#define _O_RANDOM 0x0010
|
||||
|
||||
#if !defined(NO_OLDNAMES) || defined(_POSIX)
|
||||
#define O_RDONLY _O_RDONLY
|
||||
#define O_WRONLY _O_WRONLY
|
||||
#define O_RDWR _O_RDWR
|
||||
#define O_APPEND _O_APPEND
|
||||
#define O_CREAT _O_CREAT
|
||||
#define O_TRUNC _O_TRUNC
|
||||
#define O_EXCL _O_EXCL
|
||||
#define O_TEXT _O_TEXT
|
||||
#define O_BINARY _O_BINARY
|
||||
#define O_RAW _O_BINARY
|
||||
#define O_TEMPORARY _O_TEMPORARY
|
||||
#define O_NOINHERIT _O_NOINHERIT
|
||||
#define O_SEQUENTIAL _O_SEQUENTIAL
|
||||
#define O_RANDOM _O_RANDOM
|
||||
#define O_ACCMODE _O_ACCMODE
|
||||
#endif
|
||||
#endif
|
@@ -1,106 +0,0 @@
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _FENV_H_
|
||||
#define _FENV_H_
|
||||
|
||||
/* FPU status word exception flags */
|
||||
#define FE_INVALID 0x01
|
||||
#define FE_DENORMAL 0x02
|
||||
#define FE_DIVBYZERO 0x04
|
||||
#define FE_OVERFLOW 0x08
|
||||
#define FE_UNDERFLOW 0x10
|
||||
#define FE_INEXACT 0x20
|
||||
#define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO \
|
||||
| FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
|
||||
|
||||
/* FPU control word rounding flags */
|
||||
#define FE_TONEAREST 0x0000
|
||||
#define FE_DOWNWARD 0x0400
|
||||
#define FE_UPWARD 0x0800
|
||||
#define FE_TOWARDZERO 0x0c00
|
||||
|
||||
/* The MXCSR exception flags are the same as the
|
||||
FE flags. */
|
||||
#define __MXCSR_EXCEPT_FLAG_SHIFT 0
|
||||
|
||||
/* How much to shift FE status word exception flags
|
||||
to get MXCSR rounding flags, */
|
||||
#define __MXCSR_ROUND_FLAG_SHIFT 3
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
/*
|
||||
For now, support only for the basic abstraction of flags that are
|
||||
either set or clear. fexcept_t could be structure that holds more
|
||||
info about the fp environment.
|
||||
*/
|
||||
typedef unsigned short fexcept_t;
|
||||
|
||||
/* This 32-byte struct represents the entire floating point
|
||||
environment as stored by fnstenv or fstenv, augmented by
|
||||
the contents of the MXCSR register, as stored by stmxcsr
|
||||
(if CPU supports it). */
|
||||
typedef struct
|
||||
{
|
||||
unsigned short __control_word;
|
||||
unsigned short __unused0;
|
||||
unsigned short __status_word;
|
||||
unsigned short __unused1;
|
||||
unsigned short __tag_word;
|
||||
unsigned short __unused2;
|
||||
unsigned int __ip_offset; /* instruction pointer offset */
|
||||
unsigned short __ip_selector;
|
||||
unsigned short __opcode;
|
||||
unsigned int __data_offset;
|
||||
unsigned short __data_selector;
|
||||
unsigned short __unused3;
|
||||
unsigned int __mxcsr; /* contents of the MXCSR register */
|
||||
} fenv_t;
|
||||
|
||||
|
||||
/*The C99 standard (7.6.9) allows us to define implementation-specific macros for
|
||||
different fp environments */
|
||||
|
||||
/* The default Intel x87 floating point environment (64-bit mantissa) */
|
||||
#define FE_PC64_ENV ((const fenv_t *)-1)
|
||||
|
||||
/* The floating point environment set by MSVCRT _fpreset (53-bit mantissa) */
|
||||
#define FE_PC53_ENV ((const fenv_t *)-2)
|
||||
|
||||
/* The FE_DFL_ENV macro is required by standard.
|
||||
fesetenv will use the environment set at app startup.*/
|
||||
#define FE_DFL_ENV ((const fenv_t *) 0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*TODO: Some of these could be inlined */
|
||||
/* 7.6.2 Exception */
|
||||
|
||||
extern int __cdecl feclearexcept (int);
|
||||
extern int __cdecl fegetexceptflag (fexcept_t * flagp, int excepts);
|
||||
extern int __cdecl feraiseexcept (int excepts );
|
||||
extern int __cdecl fesetexceptflag (const fexcept_t *, int);
|
||||
extern int __cdecl fetestexcept (int excepts);
|
||||
|
||||
/* 7.6.3 Rounding */
|
||||
|
||||
extern int __cdecl fegetround (void);
|
||||
extern int __cdecl fesetround (int mode);
|
||||
|
||||
/* 7.6.4 Environment */
|
||||
|
||||
extern int __cdecl fegetenv(fenv_t * envp);
|
||||
extern int __cdecl fesetenv(const fenv_t * );
|
||||
extern int __cdecl feupdateenv(const fenv_t *);
|
||||
extern int __cdecl feholdexcept(fenv_t *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* Not RC_INVOKED */
|
||||
|
||||
#endif /* ndef _FENV_H */
|