Commit graph

254 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto
79f281e74f
[SDK:CMAKE] Remove unused BUILD_MP build option (#7862)
It was introduced in commit 1f9c4940d (r38270), but this flag isn't used
anymore in our source tree, and nowadays, we actively compile both UP
and MP support.
2025-04-12 22:37:48 +02:00
Katayama Hirofumi MZ
7efab12e6f
[CMAKE] Introduce set_wine_module (Retry) (#7860)
Re-trial of #7800. Deleting __WINESRC__
hacks.
JIRA issue: CORE-5743
- Add sdk/cmake/set_wine_module.cmake.
- Load set_wine_module.cmake at
  top-level CMakeLists.txt.
- Use set_wine_module cmake function
  and delete __WINESRC__ as possible.
- Delete many include_directories.
2025-04-04 20:44:38 +09:00
Timo Kreuzer
6a4dbedd1e [CMAKE] Support WITH_DBG and NO_DBG overrides in spec2def
This is to be able to build ucrtbase without debug and later ucrtbased with debug.
2025-03-24 23:02:06 +00:00
Timo Kreuzer
4a5fdb9a3a [RSYM64] Nuke rsym64
It's purpose was to create x64 unwind information from DWARF debug info, but it was never fully working and is pointless now anyway, because x64 GCC does this itself properly.
2025-03-24 18:05:28 +00:00
Justin Miller
6c7d2a2e25
[SDK] Fix RelWithDebInfo (#7811) 2025-03-22 23:12:52 +01:00
Timo Kreuzer
bb9392e4e1 [CMAKE] Define _CRT_SUPPRESS_RESTRICT on GCC builds
This prevents the use of __declspec(restrict) in UCRT headers.
2025-01-30 11:30:32 +02:00
Timo Kreuzer
d92f02e2e5 [CMAKE] Build host tools as Debug by default
This is to fix kmtests on Test WHS. Seemingly something is broken with release builds of host tools, at least on GCC x86.
2025-01-26 23:52:45 +02:00
Timo Kreuzer
0133dba0c6 [CMAKE] Disable GCC builtin math functions 2025-01-26 18:08:55 +02:00
Timo Kreuzer
82ef7b5df1 [CMAKE] Do not implicitly link libgcc/stdc++compat to msvcrt
This allows ucrtbase and modules linked to it to be linked to those helper libraries.
2025-01-26 18:08:55 +02:00
Timo Kreuzer
dc25409cbf [SPEC2DEF] Implement support for debug-only exports 2025-01-19 09:02:58 +02:00
Timo Kreuzer
8a63d7e898 [CMAKE] Build host-tools as release by default
This setting can be overwritten by defining the CMake variable HOST_BUILD_TYPE.
The target build type is passed to the host build as TARGET_BUILD_TYPE CMake variable.
This improves time to build cab+iso:
MSVC x86: 37s -> 28s
GCC x86: 32s -> 16s
2025-01-19 09:02:58 +02:00
Timo Kreuzer
7a15da2a8c [CMAKE] Fix definition of NDEBUG on MSVC release builds
Prevents redefinition warnings.
2025-01-19 09:02:58 +02:00
Timo Kreuzer
995e4c829a [WIDL] Properly pass architecture flag instead of modifying the code
This reverts commit 73c776c744 "[WIDL] Fix non-x86 builds".
2025-01-15 08:29:53 +02:00
Timo Kreuzer
aa7ab16fd0 [CMAKE] Disable a number of warnings for clang
Also remove the totally useless and stupid -Werror=unknown-warning-option
2025-01-14 13:34:24 +02:00
Timo Kreuzer
c9a99bf63a [CMAKE] Silence warnings about unused variables on release builds 2024-10-25 14:37:52 +03:00
Timo Kreuzer
a5c5c19bcf [CMAKE] Fix warning about redefinition of NDEBUG on release builds
"-DNDEBUG" will result in NDEBUG being defined as 0. To define it to nothing, like we do in our code, it must be "-DNDEBUG="
2024-10-25 14:37:52 +03:00
Timo Kreuzer
81b8d07acd [CPPRT] Add cpprt for GCC, tool
- Link it to libsup++
- Add __cxa_pure_virtual
2024-10-24 18:39:50 +03:00
Justin Miller
50647e58e4 [SDK] Disable the unknown-pragma for GCC 2024-10-19 13:45:59 -07:00
Timo Kreuzer
fd265bd7ac [CMAKE] Enable proper definition of __cplusplus macro on MSVC
MSVC defaults to always reporting 199711L to satisfy broken C++ code. You have to add a command line argument to make it work correctly. See https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-170
2024-10-19 15:11:44 +03:00
Timo Kreuzer
4e5e72fa12 [CMAKE] Silence ML's "Assembling ..." message 2024-10-17 12:01:17 +03:00
Timo Kreuzer
fcbccaa194 [GCC-COMPAT] Add support library for GCC's libsupc++ and libstdc++
__throw_out_of_range_fmt is implemented in libstdc++, but it is needed by libsupc++ and that would mean we would have to link all C++ code to libstdc++.
2024-07-09 12:01:24 +02:00
Timo Kreuzer
486a20dbc4 [CMAKE] Add imported library winpthread 2024-07-09 12:01:24 +02:00
Timo Kreuzer
6291c5325a [CMAKE] Some compiler flags for GCC 13 2024-07-09 12:01:24 +02:00
Hermès Bélusca-Maïto
0b366ea122
[CMAKE][REACTOS] Introduce a utf16le_convert() cmake helper (#6904)
Used when we convert files to UTF16-LE during our build process.
Removes duplicated code.
2024-06-10 21:23:12 +02:00
Hermès Bélusca-Maïto
ee92f4b28e
[SDK:CMAKE/IDL] Fix dependency tracking in generate_idl_iids() and extra cleanup.
Do the same in add_idl_reg_script() (currently unused helper) as well.

This is an addendum to commit b587e7b32, where the removal of the
IDL_FILE_FULL variable definition, broke dependency tracking with
the DEPENDS option. Now we use the correct variable.

The problem was caught after doing a partial (non-clean) build after
commit 0d10fb814. In this commit, two new interfaces, IExecuteCommand
and IObjectWithSelection, were added in the psdk/shobjidl.idl file
and used elsewhere. Recompilation correctly regenerated the corresponding
header, psdk/shobjidl.h, but did not trigger a regeneration of the uuid
static library (via the regeneration of sdk/lib/uuid/shobjidl_i.c),
due to broken dependency tracking on the shobjidl.idl file.
Because of this, the shobjidl_i.c did not contain the new GUID
definitions for these new interfaces, IID_IExecuteCommand and
IID_IObjectWithSelection, and triggered linking errors for the
com_apitest, actxprxy and shell32 modules:

```
error LNK2001: unresolved external symbol _IID_IExecuteCommand
error LNK2001: unresolved external symbol _IID_IObjectWithSelection
fatal error LNK1120: 2 unresolved externals
```
2024-06-04 22:21:59 +02:00
Serge Gautherie
3cc4361cca
[CMAKE] Clang*: Add '-Werror=unknown-warning-option' for C/CXX (#6383)
* [UDFS] Clang: Fix a #pragma

'warning: unknown warning group '-Wstringop-overflow', ignored [-Wunknown-warning-option]'

Follow-up to 612b1f2e6 (0.4.15-dev-1129).

* [CREATESPEC] Clang: Fix a target_compile_options()

'warning: unknown warning option '-Wno-stringop-overflow'; did you mean '-Wno-shift-overflow'? [-Wunknown-warning-option]'

Addendum to 00ed72d7e (0.4.15-dev-1169).

* [MSVCRT_WINETEST] Clang*: Fix a target_compile_options()

'warning: unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-string-concatenation'? [-Wunknown-warning-option]'

Addendum to commits 00ed72d7e (0.4.15-dev-1169) then f155b9377 (0.4.15-dev-4612).

* [TELNET] Clang*: Fix a target_compile_options()

'warning: unknown warning option '-Wno-restrict' [-Wunknown-warning-option]'

Addendum to 447ef2aa4 (0.4.15-dev-4613).
2024-05-31 16:26:11 +02:00
Ratin Gao
ce0460b131
[CMAKE] Update sdk/cmake/baseaddress[_msvc].cmake (#6869)
Fix system boot crash with `STATUS_ILLEGAL_DLL_RELOCATION` when compiled with `-DDLL_EXPORT_VERSION=0x600`
2024-05-24 16:10:05 -07:00
Timo Kreuzer
60f4493a68 [SPEC2DEF] Implement support for import symbol aliases 2024-05-22 17:55:38 +02:00
Mark Jansen
24a56f89ab
Rework apisets to use a table
This removes all fake apiset forwarders,
and handles apisets inside ntdll.
This is not 100% compatible with how windows does it, but it should be good enough for us.
2024-04-27 22:51:34 +02:00
Katayama Hirofumi MZ
73d0d24d67
[CMAKE] Update sdk/cmake/baseaddress(,_msvc).cmake (#6627)
Follow-up to #6624 (fd96666). ReactOS got rekt in that PR
because kernel32.dll got so larger.
Fix base addresses of DLLs to boot successfully. Sorry.

(dll/ntdll/ldr/ldrutils.c:1423) Illegal DLL relocation!
C:\ReactOS\System32\ntdll.dll overlaps kernel32.dll
*** Fatal System Error: 0xc0000269

Proposed changes
After latest build:
python gen_baseaddress.py C:\Users\katahiromz\reactos-1\output-VS-i386
python gen_baseaddress.py C:\Users\katahiromz\reactos-1\output-MinGW-i386
2024-03-16 13:46:10 +09:00
Serge Gautherie
2c895c986f
[CMAKE][WIN32U_APITEST] Remove 3 useless 'set_module_type(... IMAGEBASE default)' (#6328)
And add an explicit documentation comment.

Addendum to commit 2b7246fd3.
2024-01-14 16:07:00 +01:00
Timo Kreuzer
9be24a9d51 [CMAKE] Add GCC options to make a long double 64 bits
This adds -mlong-double-64 to make the size of a long double 64 bits in GCC builds to match MSVC builds.
2024-01-07 11:03:08 +02:00
Hermès Bélusca-Maïto
6c93f3ca6b
[MSI_WINETEST][BASEADDRESS] Rename the 'custom' and 'selfreg' build targets.
They are renamed to 'msi_custom' and 'msi_selfreg', respectively.
This is to avoid any future build target name collisions with other
tests that would also use similarly-named targets. (For example, a
future setupapi wine-synced commit.)
2023-12-27 21:50:32 +01:00
Serge Gautherie
91d291f766
[SDK:CMAKE] writing_CmakeLists_for_ReactOS.txt: Fix typos (#6105) 2023-12-17 22:12:25 +01:00
Timo Kreuzer
e3f204e228 [CMAKE] Remove "/Gy" option from ML
Reason: VS solution builds pass the compiler options to the assembler. These are usually ignored and result in a warning only, but ML of the latest VS supports /Gy (function level linking), but that requires all functions to be declared with "PROC" and otherwise results in an error.
2023-11-19 09:19:33 +02:00
Timo Kreuzer
6ca8eb5c1e [CMAKE] Update baseaddress cmake files 2023-11-10 19:20:24 +02:00
Timo Kreuzer
9cc4d8994b [CMAKE] Use baseaddress64.cmake for all 64 bit builds
- Rename baseaddress_msvc_x64.cmake to baseaddress64.cmake
- Include it for all compilers and 64 bit architectures
2023-11-10 19:20:24 +02:00
Timo Kreuzer
2b7246fd3c [CMAKE] Add support for "IMAGEBASE default" and use it for test/sample dlls 2023-11-10 19:20:24 +02:00
Timo Kreuzer
3b7c7d8e68 [CMAKE] Don't use precompiled headers for autogenerated stub files 2023-10-17 09:41:18 +03:00
Timo Kreuzer
3c2bfb570f [CMAKE] Add DLL_EXPORT_VERSION config option
Set this to e.g. 0x600 to build with Vista exports
2023-08-11 19:00:42 +03:00
Adam Słaboń
2ffcda90b2 [CMAKE][MVDM] Fix CMAKE_ASM16_COMPILER for non-x86 MSVC builds
Ensure that CMAKE_ASM16_COMPILER is 32-bit MASM.
It is used only for compiling 16-bit x86 ASM code on non-x86 builds.

Original patch by serrox. CORE-10452, CORE-17604

Co-authored-by: Sergey Chernov <serrox@ya.ru>
2023-08-05 16:20:22 +02:00
Joachim Henze
0fb580a855
[SDK] Improve gen_baseaddress.py and its output files (#4964)
* [SDK:TOOLS] Improve gen_baseaddress.py

Adds some kbd layout modules into the excludes-section:
that we do lack for todays master: e.g._ kbdeo, kbdsf, kbdrost

and also some that we lacked in the past
(for improving backwards compatibility of the script to older rls-branches):
kbdgm, kbdes, kbdgrist, kbdja, kbdko, kbdsk, kbdsk1

* [SDK:CMAKE] Highlight in the output files where the script does misbehave
2023-03-04 11:45:06 +01:00
Timo Kreuzer
61cc62d1b2 [ASMPP] Implement asm preprocessor
This converts ML style assembly to GAS compatible syntax
2022-12-01 15:21:59 +02:00
Timo Kreuzer
20a6cff4dd [CRT] Implement _InterlockedCompareExchange128 intrinsic for GCC 2022-11-24 21:17:58 +02:00
Hermès Bélusca-Maïto
0e14378d3e
[SMDLL][SMLIB] Deprecate the legacy ROS-specific SMDLL and improve SM client functions. (#4821)
This DLL was exporting legacy NT-incompatible or ROS-specific SM client
functions, that have been since 10 years now (2012) replaced by the new
NT-compatible SM:

- SmConnectApiPort(): was just SmConnectToSm().

- SmCompleteSession():
  The legacy SMSS used it for when a subsystem initialization was finished.
  Now (NT-compatible) this function is called by subsystems **only** when a
  subsystem session **terminates**: SmSessionComplete().

- SmExecuteProgram(): was just the client side of SmLoadDeferedSubSystem()
  (whose server side is not implemented yet). The legacy SM "old" SmExecPgm
  implementation actually was "SmLoadDeferedSubSystem"...

- SmLookupSubsystem(): is a utility-only function to read any registry value
  inside "Session Manager\SubSystems".

Move SMDLL's readme into SMLIB and update its contents.

Collect some residual useful functions into smutils.c (and moved in SMLIB,
though not compiled yet):
- SmExecuteProgram(), now implemented as a wrapper around SmExecPgm();
- SmLookupSubsystem(), described above;
- SmQueryInformation(), that retrieves a list of currently-running subsystems.

[SMLIB] Validate SbApiPortName's length in SmConnectToSm().
Fix CommandLine length validation in SmStartCsr().

Add documentation (+ SAL annotations) to the NT-compatible SMSS client functions.

smmsg.h: Add both Win32 and Win64 struct sizes C_ASSERTs for those whose size
change between these two processor architecture sizes.

[SMLIB] Introduce SmSendMsgToSm() as helper to send data into the SM LPC port.
+ Make the other API functions use it.

It should be observed that in Vista+, both functions SmConnectToSm() and this
new SmSendMsgToSm() are exported by NTDLL under the names RtlConnectToSm()
and RtlSendMsgToSm() (and use the same signature).
See: https://www.geoffchappell.com/studies/windows/win32/ntdll/history/names60.htm

[NTDLL] Correctly stub RtlConnectToSm() and RtlSendMsgToSm().
[NTDLL_VISTA] Link to SMLIB and simply export RtlConnectToSm() and RtlSendMsgToSm().
2022-11-08 17:40:53 +01:00
Victor Perevertkin
447ef2aa4a
[CMAKE] Do not use USE_CLANG_CL variable in CMake scripts 2022-05-27 01:37:37 +03:00
Victor Perevertkin
f155b9377f
[CMAKE] Elimitate the use of GCC and CLANG variables 2022-05-27 01:37:34 +03:00
Justin Miller
4363e74ddc
[REACTOS] Finally get some ARM64 applications building (#4517)
- Add some missing ARM64 exports to ntdll, kernel32 and user32
- Create mmtypes header file based on WoA debug symbols
- Get the remaining headers in order, so we can build ARM64 apps
- Adjust subsystem version for binaries so they can run on WoA host
- Get calc, notepad and more base apps to build for ARM64 platform

CORE-17518

Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2022-05-25 17:06:32 +03:00
Victor Perevertkin
8f40fc7ede
[CMAKE] Build GCC and Clang builds with -fno-common 2022-04-26 04:22:27 +03:00
Hermès Bélusca-Maïto
ea3e4bb4cb
[CMAKE:MSVC] Refine ASM16 ml.exe path selection. Addendum to commit 60733590. 2022-04-17 19:31:48 +02:00