Commit graph

79 commits

Author SHA1 Message Date
Timo Kreuzer c735dbac35 [PRINTING] Add x64 print environment keys and folders 2020-03-09 07:03:47 +01:00
Serge Gautherie 29c1089983 [CMAKE] gcc.cmake: '-Wno-unused-const-variable' applies to GCC 6.1+
GCC 4.7.2 logs
'cc1: error: unrecognized command line option "-Wno-unused-const-variable" [-Werror]'

Addendum to 8eb7a1a2f4.
2020-03-08 13:30:10 +01:00
Hermès Bélusca-Maïto 93beefacbe
[CMAKE][FREELDR] Take the global defines into account when compiling ASM files.
Now the SARCH_xxx can be used in ASM files too.
Dedicated to Dmitry Borisov ;)
2020-03-06 22:55:12 +01:00
Thomas Faber 11ecf5c969
[CMAKE] Enable C4101 (unreferenced local variable) for MSVC builds.
This is already an error in GCC builds, so will make it harder for the
MSVC crowd to accidentally break GCC build.
2020-02-24 11:01:43 +01:00
Stanislav Motylkov 988f979139
[CMAKE][BOOTDATA] Properly load Xbox video miniport driver in LiveCD (#2325)
Surprisingly this also happens to "fix" random "Invalid Opcode" exceptions in XQEMU.
(But I think it's more like a coincidence... --hbelusca)

CORE-16627 CORE-16216
2020-02-10 23:20:12 +01:00
Dmitry Borisov 065afd93fd [FREELDR] Add FAT12 file system boot sector for NEC PC-98 series (#2025)
The first part of PC-98 Port - https://reactos.org/wiki/PC-98

- Add FAT12 file system boot sector for NEC PC-98 series.
- Add a new build target for a PC-98 bootable floppy disk.
- Add a new sub-architecture into config.cmake.
2020-01-18 19:16:23 +01:00
Mark Jansen 5b4dbec140
[CMAKE] Update baseaddresses with gcc 8.3 2019-12-27 19:52:21 +01:00
Mark Jansen 0bd9535d4d
[CMAKE] Update baseaddresses 2019-12-22 15:38:36 +01:00
Timo Kreuzer 0ff3bb904b [CMAKE] Turn printf format warnings (C4313 and C4477) into errors 2019-11-24 09:28:00 +01:00
Timo Kreuzer 70bcd0fc6b [CMAKE] Disable EH4 for x64 and VS versions 16.3+
This fixes x64 build with latest VS 2019
See https://developercommunity.visualstudio.com/content/problem/746534/visual-c-163-runtime-uses-an-unsupported-api-for-u.html
2019-11-24 09:26:59 +01:00
Timo Kreuzer 767d424b0a [CMAKE] Turn C4715: "'function': not all control paths return a value" into an error on MSVC builds 2019-08-23 14:47:39 +02:00
Victor Perevertkin e90b6bb1e9 [CMAKE] Define GCC and CLANG cmake variables 2019-08-20 15:05:47 +02:00
Andrew Cook 0341ea5e7b
Search for host-tools path
Allows source-relative paths
2019-08-17 17:39:44 +02:00
Andrew Cook f67345320f
Add WITH_HOST_TOOLS option
Required for cross-compiling with msvc as only one target
architecture is available at a time in the dev prompt
2019-08-17 17:39:43 +02:00
Andrew Cook ce531a28ec
Rework host tools
Now configured at the same time as reactos and only
one list of targets to maintain

Correctly rebuilds when a tool changes (tested widl)
2019-08-17 17:39:31 +02:00
Timo Kreuzer 5aab1831f7 [CMAKE] Update base addresses 2019-07-20 13:56:18 +02:00
Timo Kreuzer 4b79367647 [CMAKE] Define _GLIBCXX_HAVE_BROKEN_VSWPRINTF to fix build with GLIBCXX and our c++ headers 2019-07-20 13:56:18 +02:00
Timo Kreuzer 58b615f668 [CMAKE] Disable some overly sensitive warnings
-Wno-unused-const-variable
-Wno-unused-local-typedefs
-Wno-deprecated
2019-07-20 13:56:18 +02:00
Thomas Faber 36e9a6f8dd
[CMAKE] Disable INIT section ld scripts for now. CORE-16183 ROSBE-154 2019-07-07 16:06:43 +02:00
Thomas Faber c4d8e2a6e9
[CMAKE] Ensure the INIT section is placed at the end of a module. CORE-14683
For MSVC, marking the section as discardable will do this automatically.
For GCC, we use a linker script that places it after the .reloc section
(which should be the last "real" section, check ld --verbose output for the
default linker script).

This fixes what seems to be a regression from r55835 (!).
2019-07-07 08:18:10 +02:00
Timo Kreuzer 18e835b605 [SDK] Fix build with sal.h
* sal.h: add file header, uncomment _Interlocked_operand_ and PAL_STDCPP_COMPAT guard
* When including stl headers, define PAL_STDCPP_COMPAT
2019-06-29 12:13:09 +02:00
Hervé Poussineau 8eb7a1a2f4 [CMAKE] Disable unused-const-variable warning
This prevents some errors like this one:

In file included from ../dll/win32/wldap32/ber.c:27:0:
../sdk/include/reactos/wine/debug.h:378:48: error: '__wine_dbch___default' defined but not used [-Werror=unused-const-variable=]
     static struct __wine_debug_channel * const __wine_dbch___default = &__wine_dbch_##ch
                                                ^
../dll/win32/wldap32/ber.c:29:1: note: in expansion of macro 'WINE_DEFAULT_DEBUG_CHANNEL'
 WINE_DEFAULT_DEBUG_CHANNEL(wldap32);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
2019-05-27 13:22:40 +02:00
Hervé Poussineau 5fe74532af [CMAKE] Disable --compress-debug-sections on GCC >= 7.0
This leads to 'bad reloc address in section .zdebug_info'
2019-05-27 13:22:40 +02:00
Timo Kreuzer fad4b34db7 [CMAKE] Fix LINK_DEPENDS usage
Up to CMake 3.3 LINK_DEPENDS was ignored in non-Makefile generators. See also http://www.cmake.org/pipermail/cmake/2010-May/037206.html. Since CMake 3.4 it is no longer ignored, but requires CMP0005 policy to be set to NEW and it requires a full path which was already correctly used on GCC, but not on MSVC builds.
2019-04-27 14:29:33 +02:00
Andrew Cook 716613cddc [CMAKE] Use new policies for CMP0005 and CMP0018 (#1481)
* [CMAKE] Fix for CMP0018
The new behaviour lets us explicitly disabling position independent code, avoiding the need to change undocumented variables

* LINK_DEPENDS is semicolon separated

* [CMAKE] Fix for CMP0005
it seems impossible to have cmake correct escape PROXY_CLSID_IS so move it to the header
2019-04-27 11:33:37 +02:00
Serge Gautherie 9f3eb1f9a2 [CMAKE] msvc.cmake: Remove now redundant '/we4028' special case
Addendum to 545a2c7936.

CORE-7538
2019-04-19 20:47:03 +02:00
Timo Kreuzer 545a2c7936 [CMAKE] Add 3 more critical warnings for MSVC
- C4311: pointer truncation from '<pointer>' to '<integer>'
- C4312: conversion from '<integer>' to '<pointer>' of greater size
- C4133: incompatible types - from '<x> *' to '<y> *'
- C4028: formal parameter different from declaration
2019-04-13 14:07:50 +02:00
Foxlet 28804dd71d [THEMES] Mizu Theme RC. 2019-04-07 22:47:20 +02:00
Jérôme Gardou f489c3fd07 [CMAKE] Clear CMAKE_<LANGUAGE>_IMPLICIT_LINK_LIBRARIES and
_IMPLICIT_LINK_DIRECTORIES

Othrewise, if you link a RC module with a static C library (as done for
fusion DLLs), you get the standard C libraries from GCC. This is not
what we want.

This might have to be done for MSVC builds. Check build.ninja to verify
this.
2019-04-06 17:43:38 +02:00
Jérôme Gardou 979972b900 [CMAKE] unset EXPORT_SYMBOL for modules and shared libraries
We don't use that
2019-04-06 17:43:38 +02:00
Jérôme Gardou 23373acbb9 [CMAKE] Use modules instead of shared libraries
There is no need to compile our DLLs as shared libraries since we are
managing symbols exports and imports through spec files.

On my system, this reduces the configure-time by a factor of two.
2019-04-06 17:43:38 +02:00
Hervé Poussineau ef3ded6b97 [CMAKE] Enable -fno-aggressive-loop-optimizations only for GCC 4.8(+)
Previously, it was also enabled for GCC > 4.7, ie for example for GCC 4.7.1
2019-04-01 17:32:07 +02:00
Hervé Poussineau 95671c25ec [CMAKE] Add -fno-aggressive-loop-optimizations flag
ReactOS/Windows headers contain lots of structures whose last field is
fieldName[ANYSIZE] or fieldName[1].
Starting with GCC 4.8, gcc considers that accessing items [2], [3], ...
are undefined operation, and may optimize those accesses by removing them!

Add flag -fno-aggressive-loop-optimizations to prevent this unwanted behaviour.
2019-04-01 11:38:32 +02:00
Adam Słaboń 8946920109
[THEMES] Add new ReactOS theme - Lunar. By Adam Słaboń and Joann Mõndresku.
Reuse some Lautus assets, adjust the theme configuration and include it in the build process.
2019-03-31 22:13:15 +02:00
Serge Gautherie 237110604b [CMAKE] msvc.cmake: Remove 2 now redundant '/GF' (#1239)
Addendum to 5e673f3.
CORE-14373
2019-02-10 16:46:23 +01:00
Hermès Bélusca-Maïto 1b473cbeee
[SDK:CMAKE] Fix LINK command-line from the VS IDE for CMake VSSolution configurations, when using MSVC "linker script" files.
MSBuild, via the VS IDE, uses response files when calling CL or LINK.
We cannot specify a custom response file on the linker command-line,
since specifying response files from within response files is forbidden.
We therefore have to pre-process, at configuration time, the linker
script so as to retrieve the custom linker options to be appended
to the linker command-line.
2019-02-10 00:47:43 +01:00
Hermès Bélusca-Maïto 7d0cd6e937
[FREELDR][SDK:CMAKE] Move the `MSVC "linker script" file' functionality out of FreeLdr's cmake file and place it in the dedicated files instead. 2019-02-10 00:43:31 +01:00
Hermès Bélusca-Maïto 5e673f3118
[CMAKE] MSVC cmake settings improvements.
- Always use string pooling when building: this helps reducing the
  size of the binaries due to string redundancy coming from the usage
  of __FILE__ / __RELFILE__ in the debugging helper macros. Note also
  that GCC builds use string pooling by default.

- Use suitable add_compile_flags() command.
- Add some explanative comments for some settings.

Some numbers (obtained with my local builds):

Before / After => Reduction
===========================

freeldr.sys  :  443 KB (  453.632 bytes) /  364 KB (  372.736 bytes) => ~ 18%
win32k.sys   : 1877 KB (1.922.048 bytes) / 1562 KB (1.599.488 bytes) => ~ 17%
ntoskrnl.exe : 2253 KB (2.307.072 bytes) / 1902 KB (1.947.136 bytes) => ~ 15.6%
kernel32.dll : 3008 KB (3.080.192 bytes) / 2906 KB (2.975.744 bytes) => ~ 3.4%
2019-01-12 18:09:51 +01:00
Timo Kreuzer 71fefa32db
[NDK][NTOS] Add global definition of INIT_FUNCTION/INIT_SECTION (#779)
* Add an NDK header to define INIT_FUNCTION/INIT_SECTION globally
* Use _declspec(allocate(x)) and _declspec(code_seg(x)) on MSVC versions that support it
* Use INIT_FUNCTION on functions only and INIT_SECTION on data only (required by MSVC)
* Place INIT_FUNCTION before the return type (required by MSVC)
* Make sure declarations and implementations share the same modifiers (required by MSVC)
* Add a global linker option to suppress warnings about defined but unused INIT section
* Merge INIT section into .text in freeldr
2018-12-30 12:19:11 +01:00
Serge Gautherie d840d7cb1b [CMAKE] MSVC: Make C4028 warning into error, on "i386" only
"C4028: formal parameter N different from declaration"

CORE-7538
2018-12-16 23:12:22 +01:00
Bernhard Feichtinger 76daaf9faf [MODULES] Add a convenient option to transfer files into a new installation (#877)
Purpose:
When doing a PXE BootCD installation, you may be left without networking, usb and a cd drive.
This adds an easy way to include a few or more files to the installation which are then present on the disk after the installation and which does not require any change to ReactOS source code/build script files (and no manual editing of boot/bootdata/packages/reactos.dff.in).

Proposed changes:
Adds a new modules/3rdparty folder which lets the files end up in C:\ReactOS\3rdParty ready for use.
2018-11-16 23:26:58 +01:00
Jérôme Gardou 5c61063d25
[CMAKE] Do not add any extension to separate debug symbol files (#1000)
There is no possibility for GDB to recognize them otherwise
2018-10-30 17:23:42 +01:00
Mark Jansen ea84aef662
[SDK] Update baseaddresses 2018-10-25 06:59:45 +02:00
Hermès Bélusca-Maïto 8269478385
[CMAKE] Apply patch INF file for the SETUP SYSTEM registry hive that removes the entries in the Critical Device Database that cause problems with PnP setup during 1st-stage setup. 2018-10-25 00:45:10 +02:00
Mark Jansen b494abbd72
[SDK] Add version option to our spec2def cmake command 2018-10-12 19:30:36 +02:00
Mark Jansen 4e3f76352a
[SDK] Add the WITH_RELAY option to msvc's spec2def command. (GCC already had it) 2018-10-12 19:30:35 +02:00
Hermès Bélusca-Maïto 4e6fc201a0
[MKHIVE] Fixes for the previous fixes.
- Fix parsing of the options.
- Only uppercase the file name part and NOT the full path!
  And do it in a way GCC-Linux correctly understands, aka.:
      *ptr = toupper(*ptr); ++ptr;
  but NOT!:
      *ptr++ = toupper(*ptr);
  (that last one worked on GCC-Win and MSVC).

[CMAKE] Let's keep SETUPREG.HIV and BCD hive file names in uppercase
(use the '-u' switch) while keeping the other ones in lowercase.

Should definitively fix GCCLin builder!
2018-10-09 01:33:10 +02:00
Hermès Bélusca-Maïto efbe071e02
[MKHIVE] Minor additional functionality.
- Add support for '/' switch characters.
- Add '-?' switch.

TEMPORARY:
- Add a '-u' switch to generate hive file names in uppercase (by default
  we keep these in lowercase). Should help in fixing GCCLin builder.

[CMAKE] Fix expected file name case. Should help in fixing GCCLin builder.
2018-10-09 00:15:14 +02:00
Hermès Bélusca-Maïto 84d2264d9b
[MKHIVE][CMAKE] Make mkhive a bit more flexible, so that it can generate only specific hives on-demand (and not all of them always at once).
This commit is needed for building a single bootcd registry hive. It will also enable 1-st stage setup to have a proper registry present as done on Windows.
CORE-13347

[CMAKE]
Note that the mkhive commands should really depend on the generated UTF16 INF files since the latter are those that are actually used as input for mkhive.
Otherwise, the mkhive calls & the UTF16 INF file conversion is not serialized and we can generate "corrupted" hives due to the fact that mkhive is using
INF files that are in the process of being (and therefore, only partially) generated.

svn path=/branches/setup_improvements/; revision=74741
svn path=/branches/setup_improvements/; revision=74749
2018-10-08 21:23:38 +02:00
Hermès Bélusca-Maïto 287d35b84d
[BOOTDATA][CMAKE] Enumerate the four first installation directories in 'canonical' order, to keep compatibility with Windows' txtsetup.sif/layout.inf. 2018-10-08 21:16:58 +02:00