From 912c8ad98786f836598e20ca22923ec4602e643e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 20 Mar 2023 19:54:20 +0100 Subject: [PATCH] [KDGDB] Don't make GDB a separate citizen (#5187) But add KDGDB compilation only for x86 and x64, since for other architectures (e.g. ARM) it currently emits the following error: ``` drivers/base/kdgdb/kdgdb.h(149): fatal error C1189: #error: "Please define relevant macros for your architecture" ``` For the time being, keep the "GDB" build configuration macro, used for Gitpod testing... but this needs to be replaced with a more robust solution. Because of this, rename kdgdb.dll to kdcom.dll, and kdcom.dll to kdser.dll so that GDB is used by default, and we don't get a file name clash too. Revert also commit 57cf5cdc5d. --- drivers/base/CMakeLists.txt | 11 +++++------ drivers/base/kdcom/CMakeLists.txt | 9 +++++++-- drivers/base/kdgdb/CMakeLists.txt | 23 +++++++++++++--------- drivers/filesystems/fastfat/CMakeLists.txt | 3 --- sdk/cmake/config.cmake | 3 ++- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/drivers/base/CMakeLists.txt b/drivers/base/CMakeLists.txt index a984b21f4b3..2008309a227 100644 --- a/drivers/base/CMakeLists.txt +++ b/drivers/base/CMakeLists.txt @@ -4,13 +4,12 @@ add_subdirectory(bootvid) add_subdirectory(condrv) if(_WINKD_) - if(GDB) + add_subdirectory(kdcom) + if(ARCH STREQUAL "i386" OR ARCH STREQUAL "amd64") add_subdirectory(kdgdb) - else() - add_subdirectory(kdcom) - if(NOT ARCH STREQUAL "arm") - add_subdirectory(kdvm) - endif() + endif() + if(NOT ARCH STREQUAL "arm") + add_subdirectory(kdvm) endif() else() add_subdirectory(kdrosdbg) diff --git a/drivers/base/kdcom/CMakeLists.txt b/drivers/base/kdcom/CMakeLists.txt index 84279b811a1..8ffc3f4127e 100644 --- a/drivers/base/kdcom/CMakeLists.txt +++ b/drivers/base/kdcom/CMakeLists.txt @@ -11,11 +11,16 @@ add_library(kdcom MODULE ${SOURCE} kdcom.rc ${CMAKE_CURRENT_BINARY_DIR}/kdcom.def) +add_pch(kdcom kddll.h SOURCE) set_module_type(kdcom kerneldll ENTRYPOINT 0) set_subsystem(kdcom native) add_importlibs(kdcom ntoskrnl hal) target_link_libraries(kdcom cportlib strtol) add_dependencies(kdcom psdk bugcodes) -add_pch(kdcom kddll.h SOURCE) -add_cd_file(TARGET kdcom DESTINATION reactos/system32 NO_CAB FOR all) +if(GDB) ## See PR #5187 + set(KDCOM_NAME_ON_CD kdser.dll) +else() + set(KDCOM_NAME_ON_CD "$") +endif() +add_cd_file(TARGET kdcom DESTINATION reactos/system32 NO_CAB NAME_ON_CD KDCOM_NAME_ON_CD FOR all) diff --git a/drivers/base/kdgdb/CMakeLists.txt b/drivers/base/kdgdb/CMakeLists.txt index 28e88c2103a..96e0b78a123 100644 --- a/drivers/base/kdgdb/CMakeLists.txt +++ b/drivers/base/kdgdb/CMakeLists.txt @@ -1,5 +1,5 @@ -spec2def(kdcom.dll kdgdb.spec ADD_IMPORTLIB) +spec2def(kdgdb.dll kdgdb.spec) list(APPEND SOURCE gdb_input.c @@ -17,14 +17,19 @@ elseif(ARCH STREQUAL "amd64") list(APPEND SOURCE amd64_sup.c) endif() -add_library(kdcom MODULE +add_library(kdgdb MODULE ${SOURCE} kdgdb.rc - ${CMAKE_CURRENT_BINARY_DIR}/kdcom.def) + ${CMAKE_CURRENT_BINARY_DIR}/kdgdb.def) +add_pch(kdgdb kdgdb.h SOURCE) -set_module_type(kdcom kerneldll ENTRYPOINT 0) -set_subsystem(kdcom native) -add_importlibs(kdcom ntoskrnl hal) -target_link_libraries(kdcom cportlib strtol) -add_pch(kdcom kdgdb.h SOURCE) -add_cd_file(TARGET kdcom DESTINATION reactos/system32 NO_CAB FOR all) +set_module_type(kdgdb kerneldll ENTRYPOINT 0) +set_subsystem(kdgdb native) +add_importlibs(kdgdb ntoskrnl hal) +target_link_libraries(kdgdb cportlib strtol) +if(GDB) ## See PR #5187 + set(KDGDB_NAME_ON_CD kdcom.dll) +else() + set(KDGDB_NAME_ON_CD "$") +endif() +add_cd_file(TARGET kdgdb DESTINATION reactos/system32 NO_CAB NAME_ON_CD KDGDB_NAME_ON_CD FOR all) diff --git a/drivers/filesystems/fastfat/CMakeLists.txt b/drivers/filesystems/fastfat/CMakeLists.txt index d00e6eca900..7abdce95302 100644 --- a/drivers/filesystems/fastfat/CMakeLists.txt +++ b/drivers/filesystems/fastfat/CMakeLists.txt @@ -38,9 +38,6 @@ list(APPEND SOURCE add_library(fastfat MODULE ${SOURCE} fastfat.rc) set_module_type(fastfat kernelmodedriver) target_link_libraries(fastfat ${PSEH_LIB} memcmp) -if(GDB AND NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") - target_compile_options(fastfat PRIVATE -O0) -endif() add_importlibs(fastfat ntoskrnl hal) add_pch(fastfat fatprocs.h SOURCE) add_cd_file(TARGET fastfat DESTINATION reactos/system32/drivers NO_CAB FOR all) diff --git a/sdk/cmake/config.cmake b/sdk/cmake/config.cmake index fb737211f02..49ef39739eb 100644 --- a/sdk/cmake/config.cmake +++ b/sdk/cmake/config.cmake @@ -64,7 +64,8 @@ set(LTCG FALSE CACHE BOOL "Whether to build with link-time code generation") set(GDB FALSE CACHE BOOL -"Whether to compile for debugging with GDB. +"Whether to use by default KDGDB.DLL instead of KDCOM.DLL for debugging with GDB. +Mainly used for cloud-based ReactOS development using Gitpod and Docker. If you don't use GDB, don't enable this.") if(CMAKE_BUILD_TYPE STREQUAL "Release")