Reintegrate header-work branch. Thanks to hours of boring work on the ddk headers (Most of it done by Amine Khaldi), we have now a decent set, which is still incomplete but already relatively close to latest WDK. A clean rebuild is recommended.
svn path=/trunk/; revision=46155
- Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor)
- Patch by Amine Khaldi [[email protected]]
svn path=/trunk/; revision=45685
- Major improvements in the msvc backend
- Create a .vsprops file for every configuration in the root folder. This lets us make vcproj files a lot smaller
- When building with our headers actually use all of our headers and not a mix of our sdks and the headers of the crt that comes with msvc
- Add a rule to build .s files based on the idea by jcatena
- Add a rule for .spec and .pspec files. pspec doesn't work well yet
- Various fixes
- Please note the the above are aplied only to the vcproj files and not to the vcxrpoj files
The above let us compile large parts of trunk with the generated visual studio projects
svn path=/trunk/; revision=45564
- Set the minimum GCC version to 4.4.0 and minimum Binutils version to 20091016.
- Remove the -fno-unit-at-a-time hacks.
- Remove dgorbachev's temporary hacks for user-mode C++ applications.
- Merge ntoskrnl's "precomp.h" and "ntoskrnl.h" again, the PCH issues have been fixed.
- Use our "ofmt_stub.a" to be compatible with newer MinGW Runtime versions.
- Use LD's new -exclude-all-symbols option to not auto-export all symbols in case no DEF file or __declspec(dllexport) was specified.
We used to patch our LD version to work around this problem.
- Use LD's --start-group and --end-group parameters to allow a more flexible linking order.
- Use GCC's -fno-set-stack-executable for amd64 and i386 targets to disable adding the __enable_execute_stack code.
- Change the makefile's name to "makefile-$(ARCH).auto" for all architectures.
- Remove some -Wno-error flags.
See issue #4810 for more details.
svn path=/trunk/; revision=45535
- Now the only complication is that RAMDISK loaded at 0x80000 which will conflict with the 0x800000 range where kernel loads. Could move RAMDISK in code through LLB, but that would be very expensive (shift by 16MB up). Instead, NANDflash creates ramdisk image starting at offset 16MB. This way, emulator thinks it's loading at 0x80000, but actually loads at 0x1800000. Would be better if QEMU not hardcoded the INITRD_LOAD_ADDR...
svn path=/trunk/; revision=45423
- Added -P Pipeline option for Powershell support, see below
- Renaming some structs to avoid potential naming conflicts with windows.h
- stdin/out -> stdIn/Out for redirecting
- Fixed potential mem leak
- A little more tracing and cleanup
Updated piperead (Jan Roeloffzen) Bug 5146
- Added Pipe client function, based on msdn example
- Improved option handling (try piperead -h)
- logging, error handling
- Integrated in build (pipetools.mak)
svn path=/trunk/; revision=45287
Please, next time before you harass us with e-mails, try to read your logs. LD choses a random entrypoint if the symbol cannot be found.
svn path=/trunk/; revision=45162
This is going to be a host tool that autogenerates assembly definitions from the target headers. This is done in two steps: 1) a raw data file is compiled with the target compiler using the target headers 2) The host tool parses this data file and creates an appropriate .h or .inc file.
So far there's only the source for the data file, which is halfway complete and currently compiled as bootloader type, as we don't seem to have raw binary target.
WIP
svn path=/trunk/; revision=44748
New ${checkpoint} command to create an empty "checkpoint" file, to store the last modified date of a make target
modified tools/rbuild/backend/mingw/rules.mak
Rules that output more than one file at once don't mix well with parallel builds: serialize dependency checks through the use of checkpoint files. Fixes intermittent widl issues in highly parallel builds
Bonus internal rbuild function that I had to commit one day or another
See issue #4994 for more details.
svn path=/trunk/; revision=44594
Sync winebuild to Wine_1_1_34
Lots of reactos hacks are gone now. ARM is natively supported now. Windows headers are no longer included, winglue.h is gone, the code that was previously removed is back again, there is no point in removing unused features. still there: the fastcall and pedll modifications. Added a ros-diff.
svn path=/trunk/; revision=44490
Rewrite the rtl bitmap implementation.
The old one was a little .... suboptimal. The new one should outperform the old one by several orders of magnitude, especially RtlFindClearBits that was literally searching bit by bit.
svn path=/trunk/; revision=44464
- Remove the 'test' file name bug I put in to stop people overwriting their vcproj files.
- Don't forget object cleanup Ged ... this isn't .NET.
- 'make msvc#' is now working again.
svn path=/trunk/; revision=44401
- Split the MSVCBackend class into it's respective worker objects :
- * Use an abstract ProjMaker base class which we can now use to better implement support for future VS releases
- * Move sln creation into its own class
- Don't create the .user files anymore, they're not required for our use.
- Remove support for Visual Studio 6, Visual Studio 2002 and Visual Studio 2003
Although I haven't tested it, I'm 99.9% sure this breaks 'make msvc#' so DON'T RUN IT yet unless you want your vcproj files destroyed.
svn path=/trunk/; revision=44377
- Add a new makefile config to the global configuration called RosBuild
- Use the new makefile config to process and external batch file which make use of rbuild.
- Split and partially rewrite _generate_vcproj. Configurations are now written in support functions.
- Remove the creation of .vcproj.user files. They're rather pointless for our needs
- Start to add support for VS2010 (make msvc10), it's very incomplete at the moment so don't bother trying it.
After this commit, you can now use Visual Studio to build individual reactos components. Run 'make msvc9', open up any vcproj file, select the RosBuild config and hit the build/rebuild button. Working build features are 'build', 'rebuild' and 'clean'
svn path=/trunk/; revision=44343
$(ECHO_DLLTOOL) -> $(ECHO_IMPLIB)
New status line ECHO_RSP for built-in response file generator rule
$(NL) variable that expands to a newline -- only known way to escape the newline character in GNU make
modified tools/rbuild/backend/mingw/linkers/ld.mak
$(ECHO DLLTOOL) -> $(ECHO_DLLTOOL) -> $(ECHO_IMPLIB)
Generate a response file with the list of object files, instead of passing every single object file on the linker command line. Our really long linker command lines should no longer be an issue
modified tools/rbuild/backend/mingw/modulehandler.cpp
Clean files generated by externally-defined rules
Build issues fix 1/2 (1/3?)
svn path=/trunk/; revision=44208
Give poor pefixup its own echo line
modified ReactOS-amd64.rbuild
modified ReactOS-arm.rbuild
modified ReactOS-i386.rbuild
Set global linker flags globally
Goodbye NTOSKRNL_SHARED
modified tools/rbuild/backend/codeblocks/codeblocks.cpp
modified tools/rbuild/backend/msvc/vcprojmaker.cpp
Build fixes. I really want to delete these dead backends
modified tools/rbuild/backend/mingw/linkers/ld.mak
Makefile rule for the linker. Also generates the .lib and .exp for DLLs, and obsoletes a whole lot of shitty rbuild code
modified tools/rbuild/backend/mingw/mingw.cpp
modified tools/rbuild/backend/mingw/mingw.h
Specify module type-specific linker flags... in the specification of flags for module types, instead of wherever
Fix generation of project-global linker and NASM flags
Give better names to the variables that contain names of BE-provided libraries
Don't put quotes around the names of BE-provided libraries, GNU make doesn't support quoting in any way, shape or form and quotes around filenames actually break shit on Windows (see <http://reactos-blog.blogspot.com/2009/11/gnu-make-fails-on-windows-with-multiple.html>). Just install the BE in a path without spaces in it
Typo: LFLAGS is the flags for lex, flags for linker come from LDFLAGS
modified tools/rbuild/backend/mingw/modulehandler.cpp
modified tools/rbuild/backend/mingw/modulehandler.h
modified tools/rbuild/module.cpp
modified tools/rbuild/rbuild.h
Moved generation of linker and import library generation rules out of rbuild and into sub-makefiles. A lot of code deleted, nothing of value was lost
More LFLAGS -> LDFLAGS
Goodbye mangledsymbols and underscoresymbols attributes, they don't do shit other than complicating my life
If we have to add an underscore in front of the entry point name for some architectures, how about we do it in a single place?
modified tools/rbuild/backend/mingw/rules.mak
Minor cosmetic change
svn path=/trunk/; revision=44091
MinGW provides a good enough POSIX-like environment to do away with a couple platform checks/hacks
Print error messages on stderr instead of stdout
Don't print anything when pefixup does nothing - "no news is good news"
svn path=/trunk/; revision=44058