From cef6b7b2e4d334733a9c979fa822ed3e46fed10e Mon Sep 17 00:00:00 2001 From: Lenny Maiorani Date: Mon, 21 Dec 2020 10:48:32 -0700 Subject: [PATCH] CMake: Use built-in add_compile_definitions for *_DEBUG macros Problem: - Modifying CXXFLAGS directly is an old CMake style. - The giant and ever-growing list of `*_DEBUG` macros clutters the top-level CMakeLists.txt. Solution: - Use the more current `add_compile_definitions` function. - Sort all the debug options so that they are easy to view. - Move the `*_DEBUG` macros to their own file which can be included directly. --- CMakeLists.txt | 28 +----- Meta/all_the_debug_macros.cmake | 169 ++++++++++++++++++++++++++++++++ Meta/check-debug-flags.sh | 2 +- 3 files changed, 171 insertions(+), 28 deletions(-) create mode 100644 Meta/all_the_debug_macros.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ab2c11300e6..024f5223a91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,33 +55,7 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") endif() if (ALL_THE_DEBUG_MACROS) - # As you can see, this enables *ALL THE DEBUG MACROS*! - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DACPI_DEBUG -DAPIC_DEBUG -DAPIC_SMP_DEBUG -DARP_DEBUG -DAWAVLOADER_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBBFS_DEBUG -DBMP_DEBUG -DBXVGA_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCACHE_DEBUG -DCALLBACK_MACHINE_DEBUG -DCHTTPJOB_DEBUG -DCNETWORKJOB_DEBUG -DCOPY_DEBUG -DCOMPOSE_DEBUG -DCONTEXT_SWITCH_DEBUG -DCONTIGUOUS_VMOBJECT_DEBUG -DCRYPTO_DEBUG -DCSOCKET_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG_AUTOCOMPLETE -DDEBUG_CPP_LANGUAGE_SERVER -DDEBUG_CURSOR_TOOL -DDEBUG_DIFF -DDEBUG_FILE_CONTENT -DDEBUG_GZIP -DDEBUG_HIGHLIGHT_FOCUSED_FRAME -DDEBUG_HUNKS -DDEBUG_IO -DDEBUG_ITEM_RECTS -DDEBUG_LOCAL_SOCKET -DDEBUG_MAPPED_FILE -DDEBUG_MARKDOWN -DDEBUG_MENUS -DDEBUG_POLL_SELECT -DDEBUG_SH_LANGUAGE_SERVER -DDEBUG_SPAM -DDEBUG_STRINGIMPL -DDEBUG_SYNTAX_HIGHLIGHTING -DDEBUG_TEXTEDITOR -DDEFERRED_INVOKE_DEBUG -DDHCPV4CLIENT_DEBUG -DDHCPV4_DEBUG -DDOUBLECLICK_DEBUG -DDRAGDROP_DEBUG -DDWARF_DEBUG -DDYNAMIC_LOAD_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DE1000_DEBUG -DEBR_DEBUG -DEDITOR_DEBUG -DEMOJI_DEBUG -DETHERNET_DEBUG -DETHERNET_VERY_DEBUG -DEVENT_DEBUG -DEVENTLOOP_DEBUG -DEXEC_DEBUG -DEXT2_DEBUG -DEXT2_VERY_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIFO_DEBUG -DFILL_PATH_DEBUG -DFORK_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGBOXLAYOUT_DEBUG -DGEMINI_DEBUG -DGEMINIJOB_DEBUG -DGENERATE_DEBUG_CODE -DGHASH_PROCESS_DEBUG -DGIF_DEBUG -DGLOBAL_DTORS_DEBUG -DGMENU_DEBUG -DGPT_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHEAP_DEBUG -DHEX_DEBUG -DHPET_COMPARATOR_DEBUG -DHPET_DEBUG -DHTTPSJOB_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DICMP_DEBUG -DICO_DEBUG -DImage_DEBUG -DIMAGE_DECODER_CLIENT_DEBUG -DIMAGE_DECODER_DEBUG -DIMAGE_LOADER_DEBUG -DINTERRUPT_DEBUG -DIOAPIC_DEBUG -DIPC_DEBUG -DIPV4_DEBUG -DIPV4_SOCKET_DEBUG -DIRC_DEBUG -DIRQ_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJOB_DEBUG -DJPG_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DKEYBOARD_DEBUG -DKEYBOARD_SHORTCUTS_DEBUG -DKMALLOC_DEBUG_LARGE_ALLOCATIONS") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLEXER_DEBUG -DLoader_DEBUG -DLOCK_DEBUG -DLOCK_TRACE_DEBUG -DLOCK_RESTORE_DEBUG -DLOOKUPSERVER_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMALLOC_DEBUG -DMASTERPTY_DEBUG -DMBR_DEBUG -DMEMORY_DEBUG -DMENU_DEBUG -DMINIMIZE_ANIMATION_DEBUG -DMM_DEBUG -DMOVE_DEBUG -DMULTIPROCESSOR_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNETWORK_TASK_DEBUG -DNT_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOBJECT_DEBUG -DOCCLUSIONS_DEBUG -DOFFD_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPAGE_FAULT_DEBUG -DPARSER_DEBUG -DPATA_DEBUG -DPATA_DEVICE_DEBUG -DPATH_DEBUG -DPCI_DEBUG -DPNG_DEBUG -DPORTABLE_IMAGE_LOADER_DEBUG -DPROCESS_DEBUG -DPROCFS_DEBUG -DPS2MOUSE_DEBUG -DPTHREAD_DEBUG -DPTMX_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DREACHABLE_DEBUG -DREGEX_DEBUG -DRESIZE_DEBUG -DRESOURCE_DEBUG -DROUTING_DEBUG -DRTL8139_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSAFE_SYSCALL_DEBUG -DSB16_DEBUG -DSCHEDULER_DEBUG -DSCHEDULER_RUNNABLE_DEBUG -DSELECTION_DEBUG -DSERVICE_DEBUG -DSHARED_BUFFER_DEBUG -DSH_DEBUG -DSIGNAL_DEBUG -DSLAVEPTY_DEBUG -DSMP_DEBUG -DSOCKET_DEBUG -DSYSTEM_MENU_DEBUG -DSYSTEMSERVER_DEBUG -DSTORAGE_DEVICE_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTCP_DEBUG -DTCP_SOCKET_DEBUG -DTERMCAP_DEBUG -DTERMINAL_DEBUG -DTHREAD_DEBUG -DTLS_DEBUG -DTTY_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUCI_DEBUG -DUDP_DEBUG -DUPDATE_COALESCING_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVERY_DEBUG -DVFS_DEBUG -DVMWAREBACKDOOR_DEBUG -DVRA_DEBUG") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWAITBLOCK_DEBUG -DWAITQUEUE_DEBUG -DWEAKABLE_DEBUG -DWINDOWMANAGER_DEBUG -DWSMESSAGELOOP_DEBUG -DWSSCREEN_DEBUG") - # False positive: IF_BMP_DEBUG is not actually a flag. - # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIF_BMP_DEBUG") - # False positive: LOG_DEBUG is a flag, but for a bitset, not a feature. - # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLOG_DEBUG") + include(Meta/all_the_debug_macros.cmake) endif(ALL_THE_DEBUG_MACROS) include_directories(Libraries) diff --git a/Meta/all_the_debug_macros.cmake b/Meta/all_the_debug_macros.cmake new file mode 100644 index 00000000000..e0e637f07a0 --- /dev/null +++ b/Meta/all_the_debug_macros.cmake @@ -0,0 +1,169 @@ +add_compile_definitions("ACPI_DEBUG") +add_compile_definitions("APIC_DEBUG") +add_compile_definitions("APIC_SMP_DEBUG") +add_compile_definitions("ARP_DEBUG") +add_compile_definitions("AWAVLOADER_DEBUG") +add_compile_definitions("BBFS_DEBUG") +add_compile_definitions("BMP_DEBUG") +add_compile_definitions("BXVGA_DEBUG") +add_compile_definitions("CACHE_DEBUG") +add_compile_definitions("CALLBACK_MACHINE_DEBUG") +add_compile_definitions("CHTTPJOB_DEBUG") +add_compile_definitions("CNETWORKJOB_DEBUG") +add_compile_definitions("COMPOSE_DEBUG") +add_compile_definitions("CONTEXT_SWITCH_DEBUG") +add_compile_definitions("CONTIGUOUS_VMOBJECT_DEBUG") +add_compile_definitions("COPY_DEBUG") +add_compile_definitions("CRYPTO_DEBUG") +add_compile_definitions("CSOCKET_DEBUG") +add_compile_definitions("DEBUG_AUTOCOMPLETE") +add_compile_definitions("DEBUG_CPP_LANGUAGE_SERVER") +add_compile_definitions("DEBUG_CURSOR_TOOL") +add_compile_definitions("DEBUG_DIFF") +add_compile_definitions("DEBUG_FILE_CONTENT") +add_compile_definitions("DEBUG_GZIP") +add_compile_definitions("DEBUG_HIGHLIGHT_FOCUSED_FRAME") +add_compile_definitions("DEBUG_HUNKS") +add_compile_definitions("DEBUG_IO") +add_compile_definitions("DEBUG_ITEM_RECTS") +add_compile_definitions("DEBUG_LOCAL_SOCKET") +add_compile_definitions("DEBUG_MAPPED_FILE") +add_compile_definitions("DEBUG_MARKDOWN") +add_compile_definitions("DEBUG_MENUS") +add_compile_definitions("DEBUG_POLL_SELECT") +add_compile_definitions("DEBUG_SH_LANGUAGE_SERVER") +add_compile_definitions("DEBUG_SPAM") +add_compile_definitions("DEBUG_STRINGIMPL") +add_compile_definitions("DEBUG_SYNTAX_HIGHLIGHTING") +add_compile_definitions("DEBUG_TEXTEDITOR") +add_compile_definitions("DEFERRED_INVOKE_DEBUG") +add_compile_definitions("DHCPV4CLIENT_DEBUG") +add_compile_definitions("DHCPV4_DEBUG") +add_compile_definitions("DOUBLECLICK_DEBUG") +add_compile_definitions("DRAGDROP_DEBUG") +add_compile_definitions("DWARF_DEBUG") +add_compile_definitions("DYNAMIC_LOAD_DEBUG") +add_compile_definitions("E1000_DEBUG") +add_compile_definitions("EBR_DEBUG") +add_compile_definitions("EDITOR_DEBUG") +add_compile_definitions("EMOJI_DEBUG") +add_compile_definitions("ETHERNET_DEBUG") +add_compile_definitions("ETHERNET_VERY_DEBUG") +add_compile_definitions("EVENTLOOP_DEBUG") +add_compile_definitions("EVENT_DEBUG") +add_compile_definitions("EXEC_DEBUG") +add_compile_definitions("EXT2_DEBUG") +add_compile_definitions("EXT2_VERY_DEBUG") +add_compile_definitions("FIFO_DEBUG") +add_compile_definitions("FILL_PATH_DEBUG") +add_compile_definitions("FORK_DEBUG") +add_compile_definitions("GBOXLAYOUT_DEBUG") +add_compile_definitions("GEMINIJOB_DEBUG") +add_compile_definitions("GEMINI_DEBUG") +add_compile_definitions("GENERATE_DEBUG_CODE") +add_compile_definitions("GHASH_PROCESS_DEBUG") +add_compile_definitions("GIF_DEBUG") +add_compile_definitions("GLOBAL_DTORS_DEBUG") +add_compile_definitions("GMENU_DEBUG") +add_compile_definitions("GPT_DEBUG") +add_compile_definitions("HEAP_DEBUG") +add_compile_definitions("HEX_DEBUG") +add_compile_definitions("HPET_COMPARATOR_DEBUG") +add_compile_definitions("HPET_DEBUG") +add_compile_definitions("HTTPSJOB_DEBUG") +add_compile_definitions("ICMP_DEBUG") +add_compile_definitions("ICO_DEBUG") +add_compile_definitions("IMAGE_DECODER_CLIENT_DEBUG") +add_compile_definitions("IMAGE_DECODER_DEBUG") +add_compile_definitions("IMAGE_LOADER_DEBUG") +add_compile_definitions("INTERRUPT_DEBUG") +add_compile_definitions("IOAPIC_DEBUG") +add_compile_definitions("IPC_DEBUG") +add_compile_definitions("IPV4_DEBUG") +add_compile_definitions("IPV4_SOCKET_DEBUG") +add_compile_definitions("IRC_DEBUG") +add_compile_definitions("IRQ_DEBUG") +add_compile_definitions("Image_DEBUG") +add_compile_definitions("JOB_DEBUG") +add_compile_definitions("JPG_DEBUG") +add_compile_definitions("KEYBOARD_DEBUG") +add_compile_definitions("KEYBOARD_SHORTCUTS_DEBUG") +add_compile_definitions("KMALLOC_DEBUG_LARGE_ALLOCATIONS") +add_compile_definitions("LEXER_DEBUG") +add_compile_definitions("LOCK_DEBUG") +add_compile_definitions("LOCK_RESTORE_DEBUG") +add_compile_definitions("LOCK_TRACE_DEBUG") +add_compile_definitions("LOOKUPSERVER_DEBUG") +add_compile_definitions("Loader_DEBUG") +add_compile_definitions("MALLOC_DEBUG") +add_compile_definitions("MASTERPTY_DEBUG") +add_compile_definitions("MBR_DEBUG") +add_compile_definitions("MEMORY_DEBUG") +add_compile_definitions("MENU_DEBUG") +add_compile_definitions("MINIMIZE_ANIMATION_DEBUG") +add_compile_definitions("MM_DEBUG") +add_compile_definitions("MOVE_DEBUG") +add_compile_definitions("MULTIPROCESSOR_DEBUG") +add_compile_definitions("NETWORK_TASK_DEBUG") +add_compile_definitions("NT_DEBUG") +add_compile_definitions("OBJECT_DEBUG") +add_compile_definitions("OCCLUSIONS_DEBUG") +add_compile_definitions("OFFD_DEBUG") +add_compile_definitions("PAGE_FAULT_DEBUG") +add_compile_definitions("PARSER_DEBUG") +add_compile_definitions("PATA_DEBUG") +add_compile_definitions("PATA_DEVICE_DEBUG") +add_compile_definitions("PATH_DEBUG") +add_compile_definitions("PCI_DEBUG") +add_compile_definitions("PNG_DEBUG") +add_compile_definitions("PORTABLE_IMAGE_LOADER_DEBUG") +add_compile_definitions("PROCESS_DEBUG") +add_compile_definitions("PROCFS_DEBUG") +add_compile_definitions("PS2MOUSE_DEBUG") +add_compile_definitions("PTHREAD_DEBUG") +add_compile_definitions("PTMX_DEBUG") +add_compile_definitions("REACHABLE_DEBUG") +add_compile_definitions("REGEX_DEBUG") +add_compile_definitions("RESIZE_DEBUG") +add_compile_definitions("RESOURCE_DEBUG") +add_compile_definitions("ROUTING_DEBUG") +add_compile_definitions("RTL8139_DEBUG") +add_compile_definitions("SAFE_SYSCALL_DEBUG") +add_compile_definitions("SB16_DEBUG") +add_compile_definitions("SCHEDULER_DEBUG") +add_compile_definitions("SCHEDULER_RUNNABLE_DEBUG") +add_compile_definitions("SELECTION_DEBUG") +add_compile_definitions("SERVICE_DEBUG") +add_compile_definitions("SHARED_BUFFER_DEBUG") +add_compile_definitions("SH_DEBUG") +add_compile_definitions("SIGNAL_DEBUG") +add_compile_definitions("SLAVEPTY_DEBUG") +add_compile_definitions("SMP_DEBUG") +add_compile_definitions("SOCKET_DEBUG") +add_compile_definitions("STORAGE_DEVICE_DEBUG") +add_compile_definitions("SYSTEMSERVER_DEBUG") +add_compile_definitions("SYSTEM_MENU_DEBUG") +add_compile_definitions("TCP_DEBUG") +add_compile_definitions("TCP_SOCKET_DEBUG") +add_compile_definitions("TERMCAP_DEBUG") +add_compile_definitions("TERMINAL_DEBUG") +add_compile_definitions("THREAD_DEBUG") +add_compile_definitions("TLS_DEBUG") +add_compile_definitions("TTY_DEBUG") +add_compile_definitions("UCI_DEBUG") +add_compile_definitions("UDP_DEBUG") +add_compile_definitions("UPDATE_COALESCING_DEBUG") +add_compile_definitions("VERY_DEBUG") +add_compile_definitions("VFS_DEBUG") +add_compile_definitions("VMWAREBACKDOOR_DEBUG") +add_compile_definitions("VRA_DEBUG") +add_compile_definitions("WAITBLOCK_DEBUG") +add_compile_definitions("WAITQUEUE_DEBUG") +add_compile_definitions("WEAKABLE_DEBUG") +add_compile_definitions("WINDOWMANAGER_DEBUG") +add_compile_definitions("WSMESSAGELOOP_DEBUG") +add_compile_definitions("WSSCREEN_DEBUG") +# False positive: IF_BMP_DEBUG is not actually a flag. +# add_compile_definitions("IF_BMP_DEBUG") +# False positive: LOG_DEBUG is a flag, but for a bitset, not a feature. +# add_compile_definitions("LOG_DEBUG") diff --git a/Meta/check-debug-flags.sh b/Meta/check-debug-flags.sh index af384e592b0..0d305bfd7f4 100755 --- a/Meta/check-debug-flags.sh +++ b/Meta/check-debug-flags.sh @@ -11,7 +11,7 @@ while IFS= read -r FLAG; do # We simply search whether the CMakeLists.txt *ever* sets the flag. # There are (basically) no false positives, but there might be false negatives, # for example we intentionally don't check for commented-out lines here. - if ! grep -qP "set\(CMAKE_CXX_FLAGS \".* -D${FLAG}" CMakeLists.txt ; then + if ! grep -qP "add_compile_definitions\(\"${FLAG}" Meta/all_the_debug_macros.cmake ; then echo "ALL_THE_DEBUG_MACROS probably doesn't include ${FLAG}" MISSING_FLAGS=y fi