From 51cf34eb8fdef936328c565276615880997e28bb Mon Sep 17 00:00:00 2001 From: maxim nikonov Date: Fri, 6 Feb 2026 12:53:10 +0500 Subject: wip --- FL/2026-02-05-claudemd.txt | 1962 -------------------------------------------- 1 file changed, 1962 deletions(-) delete mode 100644 FL/2026-02-05-claudemd.txt (limited to 'FL') diff --git a/FL/2026-02-05-claudemd.txt b/FL/2026-02-05-claudemd.txt deleted file mode 100644 index 7a4c1a861..000000000 --- a/FL/2026-02-05-claudemd.txt +++ /dev/null @@ -1,1962 +0,0 @@ - -╭─── Claude Code v2.1.6 ───────────────────────────────────────────────────────╮ -│ │ Tips for getting │ -│ Welcome back Maxim! │ started │ -│ │ Run /init to create a … │ -│ ▗ ▗ ▖ ▖ │ ─────────────────────── │ -│ │ Recent activity │ -│ ▘▘ ▝▝ │ No recent activity │ -│ │ │ -│ Opus 4.5 · Claude Max · │ │ -│ maksimgrinberg01@gmail.com's Organization │ │ -│ ~/Desktop/fltk/FL │ │ -╰──────────────────────────────────────────────────────────────────────────────╯ -══════════════════ Conversation compacted · ctrl+o for history ═════════════════ - ⎿  Referenced file ../CMake/options.cmake - ⎿  Read ../CMakeLists.txt (405 lines) - ⎿  Referenced file ../src/CMakeLists.txt - ⎿  Read platform.H (72 lines) - ⎿  Todo list read (10 items) - ⎿  Plan file referenced (~/.claude/plans/compiled-petting-babbage.md) - -⏺ Продолжаю работу над Фазой 1. Нужно дочистить CMake/options.cmake, затем - перейти к очистке #ifdef мёртвых веток в исходниках. - -⏺ Read(~/Desktop/fltk/CMake/options.cmake) - ⎿  Read 749 lines - -⏺ Вижу оставшиеся проблемы в options.cmake. Нужно убрать: - 1. set(FLTK_USE_WAYLAND FALSE) (строка 240) - 2. if(NOT FLTK_USE_WAYLAND) guard (строка 570) - 3. FLTK_USE_WAYLAND в условии Pango (строка 632) - 4. Весь блок if(FLTK_USE_WAYLAND) для GTK (строки 639-653) - 5. if(APPLE AND FLTK_BACKEND_X11) для fontconfig (строки 659-661) - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Removed 1 line - 237 ############################################################## - ######### - 238 - 239 list(APPEND FLTK_LDLIBS -lm) - 240 -set(FLTK_USE_WAYLAND FALSE) - 240 - 241 ############################################################## - ######### - 242 - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Added 1 line, removed 3 lines - 566 ############################################################## - ######### - 567 if(X11_Xft_FOUND) - 568 option(FLTK_USE_PANGO "use lib Pango" OFF) - 569 - if(NOT FLTK_USE_WAYLAND) - 570 - option(FLTK_GRAPHICS_CAIRO "all drawing to X11 windows use - -s Cairo" OFF) - 571 - endif(NOT FLTK_USE_WAYLAND) - 569 + option(FLTK_GRAPHICS_CAIRO "all drawing to X11 windows uses - +Cairo" OFF) - 570 if(NOT FLTK_GRAPHICS_CAIRO) - 571 option(FLTK_USE_XFT "use lib Xft" ON) - 572 endif() - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Added 1 line, removed 18 lines - 626 - 627 endif((PANGOXFT_FOUND OR NOT USE_PANGOXFT) AND PANGOCAIRO_FO - UND AND CAIRO_FOUND) - 628 - 629 - if(USE_PANGO AND (FLTK_GRAPHICS_CAIRO OR FLTK_USE_WAYLAND)) - 629 + if(USE_PANGO AND FLTK_GRAPHICS_CAIRO) - 630 set(FLTK_USE_CAIRO 1) - 631 - # fl_debug_var(FLTK_USE_CAIRO) - 631 endif() - 632 - 633 endif((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) - 634 - 636 -if(FLTK_USE_WAYLAND) - 637 - - 638 - # Note: Disable FLTK_USE_LIBDECOR_GTK to get cairo titlebars - - rather than GTK - 639 - if(FLTK_USE_LIBDECOR_GTK AND NOT USE_SYSTEM_LIBDECOR) - 640 - pkg_check_modules(GTK IMPORTED_TARGET gtk+-3.0) - 641 - if(GTK_FOUND) - 642 - list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${GTK_INCLUDE - -_DIRS}) - 643 - list(APPEND FLTK_LDLIBS ${GTK_LDFLAGS}) - 644 - else() - 645 - message(WARNING "Installation of the development files f - -or the GTK library " - 646 - "(e.g., libgtk-3-dev) is recommended when using the gnom - -e desktop.") - 647 - endif(GTK_FOUND) - 648 - endif(FLTK_USE_LIBDECOR_GTK AND NOT USE_SYSTEM_LIBDECOR) - 649 - - 650 -endif() - 651 - - 635 if(FLTK_USE_XFT) - 636 set(USE_XFT X11_Xft_FOUND) - 637 list(APPEND FLTK_LDLIBS -lXft) - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Removed 3 lines - 636 set(USE_XFT X11_Xft_FOUND) - 637 list(APPEND FLTK_LDLIBS -lXft) - 638 set(FLTK_XFT_FOUND TRUE) - 639 - if(APPLE AND FLTK_BACKEND_X11) - 640 - find_library(LIB_fontconfig fontconfig "/opt/X11/lib") - 641 - endif() - 639 else() - 640 set(FLTK_XFT_FOUND FALSE) - 641 endif(FLTK_USE_XFT) - -⏺ Также уберу ссылку на CMAKE_MSVC_RUNTIME_LIBRARY в секции debug: - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Removed 1 line - 697 fl_debug_var(OPENGL_FOUND) - 698 fl_debug_var(OPENGL_INCLUDE_DIR) - 699 fl_debug_var(OPENGL_LIBRARIES) - 700 - fl_debug_var(CMAKE_MSVC_RUNTIME_LIBRARY) - 700 message("--- bundled libraries ---") - 701 fl_debug_var(FLTK_USE_SYSTEM_LIBJPEG) - 702 fl_debug_var(FLTK_USE_SYSTEM_LIBPNG) - -⏺ Теперь проверю, что в файле больше нет ссылок на Wayland и APPLE: - -⏺ Search(pattern: "WAYLAND|__APPLE__|APPLE|_WIN32|MSVC|CYGWIN|MINGW", path: - "~/Desktop/fltk/CMake/options.cmake", output_mode: "content") - ⎿  Found 0 lines - -⏺ options.cmake полностью очищен. Помечу задачу как завершённую и перейду к - следующей. - -⏺ Теперь нужно найти файлы с #ifdef _WIN32, #ifdef __APPLE__, FLTK_USE_WAYLAND в - src/ и FL/. Запущу поиск параллельно. - -⏺ Search(pattern: "_WIN32|WIN32", path: "~/Desktop/fltk/src") - ⎿  Found 5 files (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32", path: "~/Desktop/fltk/FL") - ⎿  Found 6 files (ctrl+o to expand) - -⏺ Search(pattern: "__APPLE__", path: "~/Desktop/fltk/src") - ⎿  Found 1 file (ctrl+o to expand) - -⏺ Search(pattern: "__APPLE__", path: "~/Desktop/fltk/FL") - ⎿  Found 3 files (ctrl+o to expand) - -⏺ Search(pattern: "FLTK_USE_WAYLAND|USE_WAYLAND", path: "~/Desktop/fltk/src") - ⎿  Found 3 files (ctrl+o to expand) - -⏺ Search(pattern: "FLTK_USE_WAYLAND|USE_WAYLAND", path: "~/Desktop/fltk/FL") - ⎿  Found 0 files - -⏺ Файлов не так много. Запущу параллельное чтение нужных файлов, чтобы увидеть - контекст #ifdef веток и удалить мёртвый код. - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: - "~/Desktop/fltk/src/Fl.cxx", output_mode: "content") - ⎿  Found 11 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: - "~/Desktop/fltk/src/Fl_Cairo.cxx", output_mode: "content") - ⎿  Found 86 lines (ctrl+o to expand) - -⏺ Нужно прочитать все затронутые файлы. Запущу чтение параллельно. - -⏺ Read(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Read 338 lines - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: - "~/Desktop/fltk/src/flstring.h", output_mode: "content") - ⎿  Found 14 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: - "~/Desktop/fltk/src/forms_fselect.cxx", output_mode: "content") - ⎿  Found 11 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: - "~/Desktop/fltk/src/fl_call_main.c", output_mode: "content") - ⎿  Found 11 lines (ctrl+o to expand) - -⏺ Теперь прочитаю заголовки FL/ с платформо-специфичным кодом. - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "math.h", output_mode: - "content") - ⎿  Found 13 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "platform_types.h", - output_mode: "content") - ⎿  Found 12 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "fl_utf8.h", - output_mode: "content") - ⎿  Found 18 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "gl.h", output_mode: - "content") - ⎿  Found 31 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "glu.h", output_mode: - "content") - ⎿  Found 22 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "Fl_Window.H", - output_mode: "content") - ⎿  Found 23 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32|WIN32|__APPLE__|WAYLAND", path: "Fl.H", output_mode: - "content") - ⎿  Found 11 lines (ctrl+o to expand) - -⏺ Нашёл все файлы с платформо-специфичным кодом. Начну очистку — сначала простые - файлы параллельно. - -⏺ Update(math.h) - ⎿  File must be read first - -⏺ Read(math.h) - ⎿  Read 51 lines - -⏺ Read(platform_types.h) - ⎿  Read 153 lines - -⏺ Read(fl_utf8.h) - ⎿  Read 30 lines - -⏺ Read(gl.h) - ⎿  Read 100 lines - -⏺ Read(glu.h) - ⎿  Read 46 lines - -⏺ Read(Fl_Window.H) - ⎿  Read 50 lines - -⏺ Read(Fl.H) - ⎿  Read 20 lines - -⏺ Read(~/Desktop/fltk/src/flstring.h) - ⎿  Read 102 lines - -⏺ Read(~/Desktop/fltk/src/forms_fselect.cxx) - ⎿  Read 20 lines - -⏺ Read(~/Desktop/fltk/src/fl_call_main.c) - ⎿  Read 159 lines - -⏺ Теперь применю все правки. Начну с простых файлов параллельно. - -⏺ Update(math.h) - ⎿  Removed 8 lines - 14 // https://www.fltk.org/bugs.php - 15 // - 16 - 17 -// Xcode on macOS includes files by recursing down into directo - -ries. - 18 -// This code catches the cycle and directly includes the requir - -ed file. - 19 -#ifdef fl_math_h_cyclic_include - 20 -# include "/usr/include/math.h" - 21 -#endif - 22 - - 17 #ifndef fl_math_h - 18 # define fl_math_h - 19 - 26 -# define fl_math_h_cyclic_include - 20 # include - 28 -# undef fl_math_h_cyclic_include - 21 - 22 # ifndef M_PI - 23 # define M_PI 3.14159265358979323846 - -⏺ Update(math.h) - ⎿  Removed 7 lines - 32 # define M_SQRT1_2 0.70710678118654752440 - 33 # endif // !M_SQRT2 - 34 - 35 -# if (defined(_WIN32) || defined(CRAY)) && !defined(__MINGW32_ - -_) - 36 - - 37 -inline double rint(double v) {return floor(v+.5);} - 38 -inline double copysign(double a, double b) {return b<0 ? -a : a - -;} - 39 - - 40 -# endif // (_WIN32 || CRAY) && !__MINGW32__ - 41 - - 35 #endif // !fl_math_h - -⏺ Update(fl_utf8.h) - ⎿  Removed 8 lines - 116 FL_EXPORT unsigned fl_utf8from_mb(char *dst, unsigned dstlen, - const char *src, unsigned srclen); - 117 - 118 /************************************************************* - ****************/ - 119 -#ifdef _WIN32 - 120 -/* these two Windows-only functions are kept for API compatibi - -lity */ - 121 -/* OD: Attempt to convert the UTF-8 string to the current loca - -le */ - 122 -FL_EXPORT char *fl_utf8_to_locale(const char *s, int len, unsi - -gned int codepage); - 119 - 124 -/* OD: Attempt to convert a string in the current locale to UT - -F-8 */ - 125 -FL_EXPORT char *fl_locale_to_utf8(const char *s, int len, unsi - -gned int codepage); - 126 -#endif /* _WIN32 */ - 127 - - 120 /************************************************************* - **************** - 121 * The following functions are intended to provide portable, U - TF-8 aware - 122 * versions of standard functions - -⏺ Update(gl.h) - ⎿  Added 2 lines, removed 18 lines - 43 # define FL_gl_H - 44 - 45 # include "Enumerations.H" // for color names - 46 -# ifdef _WIN32 - 47 -# include - 48 -# endif - 46 # ifndef APIENTRY - 50 -# if defined(__CYGWIN__) - 51 -# define APIENTRY __attribute__ ((__stdcall__)) - 52 -# else - 53 -# define APIENTRY - 54 -# endif - 47 +# define APIENTRY - 48 # endif - 49 - 57 -# ifdef __APPLE__ // PORTME: OpenGL path abstraction - 58 -# ifndef GL_SILENCE_DEPRECATION - 59 -# define GL_SILENCE_DEPRECATION 1 - 60 -# endif - 61 -# if !defined(__gl3_h_) // make sure OpenGL/gl3.h was not in - -cluded before - 62 -# include - 63 -# endif - 64 -# else - 65 -# include - 66 -# endif // __APPLE__ // PORTME: OpenGL Path abstraction - 50 +# include - 51 - 52 FL_EXPORT void gl_start(); - 53 FL_EXPORT void gl_finish(); - -⏺ Update(glu.h) - ⎿  Added 2 lines, removed 13 lines - 25 # define FL_glu_H - 26 - 27 # include "Enumerations.H" // for color names - 28 -# ifdef _WIN32 - 29 -# include - 30 -# endif - 28 # ifndef APIENTRY - 32 -# if defined(__CYGWIN__) - 33 -# define APIENTRY __attribute__ ((__stdcall__)) - 34 -# else - 35 -# define APIENTRY - 36 -# endif - 29 +# define APIENTRY - 30 # endif - 31 - 39 -# ifdef __APPLE__ // PORTME: OpenGL Path abstraction - 40 -# include - 41 -# else - 42 -# include - 43 -# endif - 32 +# include - 33 - 34 #endif // !FL_glu_H - -⏺ Update(Fl.H) - ⎿  Removed 5 lines - 77 FL_EXPORT extern Fl_Screen_Driver *screen_driver(); - 78 FL_EXPORT extern Fl_System_Driver *system_driver(); - 79 - 80 -#ifdef __APPLE__ // deprecated in 1.4 - only for compatibility - -with 1.3 - 81 -FL_EXPORT extern void reset_marked_text(); - 82 -FL_EXPORT extern void insertion_point_location(int x, int y, in - -t height); - 83 -#endif - 84 - - 80 FL_EXPORT extern int box_shadow_width(); - 81 FL_EXPORT extern void box_shadow_width(int W); - 82 - -⏺ Update(~/Desktop/fltk/src/flstring.h) - ⎿  Removed 5 lines - 53 * Some of these functions are also defined in ISO C99... - 54 */ - 55 - 56 -# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MIN - -GW32__) - 57 -# define strcasecmp(s,t) _stricmp((s), (t)) - 58 -# define strncasecmp(s,t,n) _strnicmp((s), (t), (n)) - 59 -# endif /* _WIN32 && ... */ - 60 - - 56 # ifdef __cplusplus - 57 extern "C" { - 58 # endif /* __cplusplus */ - -⏺ Update(~/Desktop/fltk/src/forms_fselect.cxx) - ⎿  Added 2 lines, removed 5 lines - 29 if (pat && pat[0]) fl_pattern = pat; - 30 if (fname && fname[0]) strlcpy(fl_filename,fname,sizeof(fl_fi - lename)); - 31 char *p = fl_directory+strlen(fl_directory); - 32 - if (p > fl_directory && *(p-1)!='/' - 33 -#ifdef _WIN32 - 34 - && *(p-1)!='\\' && *(p-1)!=':' - 35 -#endif - 36 - ) *p++ = '/'; - 32 + if (p > fl_directory && *(p-1)!='/') - 33 + *p++ = '/'; - 34 strlcpy(p,fl_filename,sizeof(fl_directory) - (p - fl_director - y)); - 35 const char *q = fl_file_chooser(message,fl_pattern,fl_directo - ry); - 36 if (!q) return 0; - ⎿  Found 20 new diagnostic issues in 5 files (ctrl+o to expand) - -⏺ Теперь обработаю FL/platform_types.h — уберу Windows-специфичный код. - -⏺ Update(platform_types.h) - ⎿  Removed 15 lines - 95 different signedness of socket numbers on *some* platforms - . - 96 */ - 97 - 98 -#ifdef _WIN64 - 99 - - 100 -#if defined(_MSC_VER) && (_MSC_VER < 1600) - 101 -# include /* stdint.h not available before VS 2010 - - (1600) */ - 102 -#else - 103 -# include - 104 -#endif - 105 - - 106 -typedef intptr_t fl_intptr_t; - 107 -typedef uintptr_t fl_uintptr_t; - 108 - - 109 -#else /* ! _WIN64 */ - 110 - - 98 typedef long fl_intptr_t; - 99 typedef unsigned long fl_uintptr_t; - 100 - 114 -#endif /* _WIN64 */ - 115 - - 101 typedef void *GLContext; - 102 typedef void *Fl_Region; - 103 typedef fl_uintptr_t Fl_Offscreen; - -⏺ Update(platform_types.h) - ⎿  Added 1 line, removed 10 lines - 102 typedef void *Fl_Region; - 103 typedef fl_uintptr_t Fl_Offscreen; - 104 - 105 -/* Allows all hybrid combinations except WIN32 + X11 with MSVC - - */ - 106 -#if defined(_WIN32) && !defined(__MINGW32__) - 107 - struct dirent {char d_name[1];}; - 108 -#else - 109 -# include - 110 -#endif - 105 +#include - 106 - 112 -# if defined(_WIN64) && defined(_MSC_VER) - 113 -typedef unsigned __int64 FL_SOCKET; /* *FIXME* - FL_SOCKET - - (see above) */ - 114 -# else - 107 typedef int FL_SOCKET; - 116 -# endif - 108 - 109 #include - 110 extern FL_EXPORT int fl_command_modifier(); - ⎿  Found 4 new diagnostic issues in 2 files (ctrl+o to expand) - -⏺ Теперь удалю HICON-блок из Fl_Window.H и удалю fl_call_main.c. - -⏺ Update(Fl_Window.H) - ⎿  Removed 37 lines - 385 void icon(const Fl_RGB_Image*); - 386 void icons(const Fl_RGB_Image*[], int); - 387 - 388 -#if defined(_WIN32) || defined(FL_DOXYGEN) - 389 - typedef struct HICON__* HICON; - 390 - // These 2 member functions break the driver model but are k - -ept for back compatibility. - 391 - // They are implemented in Fl_win32.cxx - 392 - - 393 - /** Sets the default window icons (Windows platform only). - 394 - - 395 - Convenience function to set the default icons using Windows - -' - 396 - native HICON icon handles. - 397 - - 398 - The given icons are copied. You can free the icons immediat - -ely after - 399 - this call. - 400 - - 401 - \param[in] big_icon default large icon for all windows - 402 - subsequently created - 403 - \param[in] small_icon default small icon for all windows - 404 - subsequently created - 405 - - 406 - \see Fl_Window::default_icon(const Fl_RGB_Image *) - 407 - \see Fl_Window::default_icons(const Fl_RGB_Image *[], int) - 408 - \see Fl_Window::icon(const Fl_RGB_Image *) - 409 - \see Fl_Window::icons(const Fl_RGB_Image *[], int) - 410 - \see Fl_Window::icons(HICON, HICON) - 411 - */ - 412 - static void default_icons(HICON big_icon, HICON small_icon); - 413 - - 414 - /** Sets the window icons using HICON handles (Windows platf - -orm only). - 415 - - 416 - The given icons are copied. You can free the icons immediat - -ely after - 417 - this call. - 418 - - 419 - \param[in] big_icon large window icon - 420 - \param[in] small_icon small window icon - 421 - */ - 422 - void icons(HICON big_icon, HICON small_icon); - 423 -#endif // defined(_WIN32) || defined(FL_DOXYGEN) - 424 - - 388 /* for legacy compatibility */ - 389 const void* icon() const; - 390 void icon(const void * ic); - -⏺ Bash(rm /Users/mnik01/Desktop/fltk/src/fl_call_main.c) - ⎿ /Users/mnik01/.zprofile:source:3: no such file or directory: /Users/mni - k01/Desktop/hobby/emsdk/emsdk_env.sh - - ⎿  Found 4 new diagnostic issues in 1 file (ctrl+o to expand) - -⏺ Теперь самое сложное — src/Fl_Cairo.cxx. Упрощу его до X11-only. - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Added 1 line, removed 29 lines - 27 - 28 #ifdef FLTK_HAVE_CAIRO - 29 - 30 -// Define USE_MAC_OS for convenience (below). We use macOS spec - -ific features - 31 -// if USE_MAC_OS is defined, otherwise we're using X11 (XQuartz - -) on macOS - 32 - - 33 -#if defined __APPLE__ && !defined(FLTK_USE_X11) - 34 -#define USE_MAC_OS - 35 -#include - 36 -#endif - 37 - - 30 #include - 31 #include - 32 +#include - 33 - 41 -// Cairo is currently supported for the following platforms: - 42 -// Windows, macOS (Apple Quartz), X11, Wayland - 43 - - 44 -#if defined(_WIN32) // Windows - 45 -# include - 46 -#elif defined(FLTK_USE_WAYLAND) // Wayland or hybrid - 47 -# include "../src/drivers/Wayland/Fl_Wayland_Graphics_Driver.H - -" - 48 -# include "../src/drivers/Wayland/Fl_Wayland_Window_Driver.H" - 49 -# if defined(FLTK_USE_X11) - 50 -# include - 51 -# else - 52 - static void *fl_gc = NULL; - 53 -# endif - 54 -#elif defined(FLTK_USE_X11) // X11 - 55 -# include - 56 -#elif defined(__APPLE__) // macOS - 57 -# include - 58 -#else - 59 -# error Cairo is not supported on this platform. - 60 -#endif - 61 - - 34 // static initialization - 35 - 36 Fl_Cairo_State Fl::Private::cairo_state_; ///< current Cairo co - ntext information - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Removed 11 lines - 119 return NULL; - 120 cairo_t *cairo_ctxt; - 121 - 122 -#if defined(FLTK_USE_WAYLAND) - 123 - if (fl_wl_display()) { // true means using wayland backend - 124 - struct wld_window *xid = fl_wl_xid(wi); - 125 - if (!xid || !xid->buffer) - 126 - return NULL; // this may happen with GL windows or if wi - -ndow is not shown - 127 - cairo_ctxt = xid->buffer->draw_buffer.cairo_; - 128 - Fl::Private::cairo_state_.cc(cairo_ctxt, false); - 129 - return cairo_ctxt; - 130 - } - 131 -#endif - 132 - - 122 if (fl_gc == 0) { // means remove current cc - 123 Fl::cairo_cc(0); // destroy any previous cc - 124 Fl::Private::cairo_state_.window(0); - ⎿  Found 3 new diagnostic issues in 1 file (ctrl+o to expand) - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Added 2 lines, removed 15 lines - 129 if (fl_gc == Fl::Private::cairo_state_.gc() && fl_xid(wi) == - (Window)Fl::Private::cairo_state_.window()) - 130 return Fl::cairo_cc(); - 131 - 132 - // Scale the Cairo context appropriately. This is platform d - -ependent - 133 - - 134 -#if !defined(USE_MAC_OS) - 135 - float scale = Fl::screen_scale(wi->screen_num()); // get the - - screen scaling factor - 136 -#endif - 137 - - 138 -#if defined(FLTK_USE_X11) - 132 + // Scale the Cairo context appropriately - 133 + float scale = Fl::screen_scale(wi->screen_num()); - 134 cairo_ctxt = Fl::Private::cairo_make_current(0, wi->w() * sc - ale, wi->h() * scale); - 140 -#else - 141 - // on macOS, scaling is done before by Fl_Window::make_curre - -nt(), on Windows, the size is not used - 142 - cairo_ctxt = Fl::Private::cairo_make_current(fl_gc, wi->w(), - - wi->h()); - 143 -#endif - 144 - - 135 Fl::Private::cairo_state_.window((void *)fl_xid(wi)); - 146 - - 147 -#if !defined(USE_MAC_OS) - 136 cairo_scale(cairo_ctxt, scale, scale); - 149 -#endif - 137 return cairo_ctxt; - 138 } - 139 - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Removed 10 lines - 144 */ - 145 - 146 static cairo_surface_t *cairo_create_surface(void *gc, int W, - int H) { - 147 -#if defined(FLTK_USE_X11) - 147 return cairo_xlib_surface_create(fl_display, fl_window, fl_v - isual->visual, W, H); - 149 -#elif defined(FLTK_USE_WAYLAND) - 150 - return NULL; - 151 -#elif defined(_WIN32) - 152 - return cairo_win32_surface_create((HDC)gc); - 153 -#elif defined(__APPLE__) - 154 - return cairo_quartz_surface_create_for_cg_context((CGContext - -Ref)gc, W, H); - 155 -#else - 156 -#error Cairo is not supported on this platform. - 157 -#endif - 148 } - 149 - 150 - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Теперь очищу блок #if 0 (мёртвый код — неиспользуемая функция) и блок с - USE_MAC_OS: - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Removed 45 lines - 148 } - 149 - 150 - 151 -#if 0 // this non-public function appears not to be used anywh - -ere in FLTK - 151 /** - 153 - Creates a Cairo context from a \a gc only, gets its window s - -ize or - 154 - offscreen size if fl_window is null. - 155 - - 156 - \note Only available if CMake FLTK_OPTION_CAIRO_WINDOW is en - -abled. - 157 -*/ - 158 -cairo_t *Fl::Private::cairo_make_current(void *gc) { - 159 - int W = 0, H = 0; - 160 -#if defined(FLTK_USE_X11) || defined(FLTK_USE_WAYLAND) - 161 - // FIXME X11 get W,H - 162 - // gc will be the window handle here - 163 - // # warning FIXME get W,H for cairo_make_current(void*) - 164 -#elif defined(__APPLE__) - 165 - if (fl_window) { - 166 - W = Fl_Window::current()->w(); - 167 - H = Fl_Window::current()->h(); - 168 - } else { - 169 - W = CGBitmapContextGetWidth(fl_gc); - 170 - H = CGBitmapContextGetHeight(fl_gc); - 171 - } - 172 -#elif defined(_WIN32) - 173 - // we don't need any W,H for Windows - 174 -#else - 175 -#error Cairo is not supported on this platform. - 176 -#endif - 177 - - 178 - if (!gc) { - 179 - Fl::cairo_cc(0); - 180 - cairo_state_.gc(0); // keep track for next time - 181 - return 0; - 182 - } - 183 - if (gc == Fl::Private::cairo_state_.gc() && - 184 - fl_window == (Window)Fl::Private::cairo_state_.window() - -&& - 185 - cairo_state_.cc() != 0) - 186 - return Fl::cairo_cc(); - 187 - cairo_state_.gc(fl_gc); // keep track for next time - 188 - cairo_surface_t *s = cairo_create_surface(gc, W, H); - 189 - cairo_t *c = cairo_create(s); - 190 - cairo_surface_destroy(s); - 191 - cairo_state_.cc(c); - 192 - return c; - 193 -} - 194 -#endif - 195 - - 196 -/** - 152 Creates a Cairo context from a \p gc and the given size. - 153 - 154 \note Only available if CMake FLTK_OPTION_CAIRO_WINDOW is en - abled. - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Теперь уберу оставшийся USE_MAC_OS блок в cairo_make_current(void*, int, int): - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Removed 12 lines - 162 // we need to (re-)create a fresh cc ... - 163 cairo_state_.gc(gc); // keep track for next time - 164 cairo_surface_t *s = cairo_create_surface(gc, W, H); - 165 - - 166 -#if defined(USE_MAC_OS) && defined(FLTK_HAVE_CAIROEXT) - 167 - CGAffineTransform at = CGContextGetCTM((CGContextRef)gc); - 168 - CGContextSaveGState((CGContextRef)gc); - 169 - CGContextConcatCTM((CGContextRef)gc, CGAffineTransformInvert - -(at)); - 170 -#endif - 171 - - 165 cairo_t *c = cairo_create(s); - 173 - - 174 -#if defined(USE_MAC_OS) && defined(FLTK_HAVE_CAIROEXT) - 175 - CGContextRestoreGState((CGContextRef)gc); - 176 -#endif - 177 - - 166 cairo_state_.cc(c); // and purge any previously owned conte - xt - 167 cairo_surface_destroy(s); - 168 return c; - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Теперь обработаю два оставшихся файла с WAYLAND-ссылками. - -⏺ Search(pattern: "WAYLAND|_WIN32|__APPLE__", path: - "~/Desktop/fltk/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx", - output_mode: "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "WAYLAND|_WIN32|__APPLE__", path: - "~/Desktop/fltk/src/drivers/PostScript/Fl_PostScript.cxx", output_mode: - "content") - ⎿  Found 23 lines (ctrl+o to expand) - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Read(~/Desktop/fltk/src/drivers/PostScript/Fl_PostScript.cxx) - ⎿  Read 30 lines - -⏺ Update(~/Desktop/fltk/src/drivers/PostScript/Fl_PostScript.cxx) - ⎿  Added 1 line, removed 1 line - 1470 fprintf(output, "GR GR\n"); - 1471 } - 1472 - 1473 -#if defined(FLTK_USE_X11) || defined(FLTK_USE_WAYLAND) - 1473 +#if defined(FLTK_USE_X11) - 1474 - 1475 Fl_Paged_Device *Fl_PDF_File_Surface::new_platform_pdf_surfac - e_(const char ***pfname) { - 1476 *pfname = NULL; - -⏺ Update(~/Desktop/fltk/src/drivers/PostScript/Fl_PostScript.cxx) - ⎿  Added 1 line, removed 1 line - 1492 return begin_job(NULL, perr_message); - 1493 } - 1494 - 1495 -#endif // defined(FLTK_USE_X11) || defined(FLTK_USE_WAYLAND) - 1495 +#endif // defined(FLTK_USE_X11) - 1496 - 1497 # else // USE_PANGO - 1498 - ⎿  Found 10 new diagnostic issues in 1 file (ctrl+o to expand) - -⏺ Все диагностики — LSP-ошибки из-за отсутствия сгенерированных файлов - (config.h, fl_config.h). Это нормально. - - Также почищу документацию в Fl_Cairo.cxx (убрал ссылки на другие платформы в - комментариях). Проверю, остались ли ещё ссылки на Wayland в комментарии: - -⏺ Search(pattern: "Wayland|Windows|macOS|WIN32|__APPLE__|USE_MAC_OS", path: - "~/Desktop/fltk/src/Fl_Cairo.cxx", output_mode: "content") - ⎿  Found 5 lines (ctrl+o to expand) - ⎿  Found 10 new diagnostic issues in 1 file (ctrl+o to expand) - -⏺ Осталось только в комментариях. Почищу комментарии. - -⏺ Read(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Read 15 lines - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Added 1 line, removed 1 line - 112 \note Only available when CMake option '-D FLTK_OPTION_CAIRO - _WINDOW' is set. - 113 - 114 \return The valid cairo_t *cairo context associated to this - window. - 115 - \retval NULL if \a wi is NULL or maybe with GL windows under - - Wayland - 115 + \retval NULL if \a wi is NULL - 116 */ - 117 cairo_t *Fl::cairo_make_current(Fl_Window *wi) { - 118 if (!wi) - -⏺ Read(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Read 10 lines - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Added 1 line, removed 3 lines - 138 } - 139 - 140 /* - 141 - Creates transparently a cairo_surface_t object. - 142 - gc is an HDC context in Windows, a CGContext* in Quartz, and - 143 - a display on X11 (not used on this platform) - 141 + Creates a cairo_surface_t object using X11/Xlib. - 142 */ - 143 - 144 static cairo_surface_t *cairo_create_surface(void *gc, int W, - int H) { - -⏺ Read(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Read 50 lines - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Added 1 line, removed 4 lines - 167 } - 168 - 169 /** Flush Cairo drawings on Cairo context \p c. - 170 - This is \b required on Windows if you use the Cairo context - -provided - 171 - by the "Cairo autolink" option. Call this when all your draw - -ings on - 172 - the Cairo context are finished. This is maybe not necessary - -on other - 173 - platforms than Windows but it does no harm if you call it al - -ways. - 170 + Call this when all your drawings on the Cairo context are fi - +nished. - 171 - 172 You don't need to use this if you use an Fl_Cairo_Window whi - ch does - 173 this automatically after the draw callback returns. - -⏺ Update(~/Desktop/fltk/src/Fl_Cairo.cxx) - ⎿  Added 1 line, removed 1 line - 197 \see Fl::cairo_make_current(Fl_Window*); - 198 */ - 199 FL_EXPORT extern void Fl::cairo_flush(cairo_t *c) { - 200 - // flush Cairo drawings: necessary at least for Windows - 200 + // flush Cairo drawings - 201 cairo_surface_t *s = cairo_get_target(c); - 202 cairo_surface_flush(s); - 203 } - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Теперь также очищу Doxygen-документацию в FL/platform_types.h от упоминаний - других платформ: - -⏺ Update(platform_types.h) - ⎿  Added 1 line, removed 5 lines - 37 - 38 /** - 39 Platform-specific value representing an offscreen drawing buff - er. - 40 - \note This value can be safely cast to these types on each pl - -atform: - 41 - \li X11: Pixmap - 42 - \li Wayland: cairo_t * - 43 - \li Windows: HBITMAP - 44 - \li macOS: CGContextRef - 40 + \note This value can be safely cast to Pixmap on X11. - 41 */ - 42 typedef opaque Fl_Offscreen; - 43 - -⏺ Update(platform_types.h) - ⎿  Added 1 line, removed 5 lines - 43 - 44 /** - 45 Pointer to a platform-specific structure representing a collec - tion of rectangles. - 46 - \note This pointer can be safely cast to these types on each - -platform: - 47 - \li X11: Region as defined by X11 - 48 - \li Wayland: cairo_region_t * - 49 - \li Windows: HRGN - 50 - \li macOS: struct flCocoaRegion * - 46 + \note This pointer can be safely cast to Region as defined by - + X11. - 47 */ - 48 typedef struct opaque *Fl_Region; - 49 typedef opaque FL_SOCKET; /**< socket or file descriptor */ - -⏺ Update(platform_types.h) - ⎿  Added 1 line, removed 5 lines - 49 typedef opaque FL_SOCKET; /**< socket or file descriptor */ - 50 /** - 51 Pointer to a platform-specific structure representing the wind - ow's OpenGL rendering context. - 52 - \note This pointer can be safely cast to these types on each - -platform: - 53 - \li X11: GLXContext - 54 - \li Wayland: EGLContext - 55 - \li Windows: HGLRC - 56 - \li macOS: NSOpenGLContext * - 52 + \note This pointer can be safely cast to GLXContext on X11. - 53 */ - 54 typedef struct opaque *GLContext; - 55 - ⎿  Found 2 new diagnostic issues in 1 file (ctrl+o to expand) - -⏺ Также уберу FL_COMMAND/FL_CONTROL документацию о MacOS: - -⏺ Update(platform_types.h) - ⎿  Added 2 lines, removed 2 lines - 60 */ - 61 typedef opaque Fl_Timestamp; - 62 - 63 -# define FL_COMMAND opaque /**< An alias for FL_CTRL on Win - -dows and X11, or FL_META on MacOS X */ - 64 -# define FL_CONTROL opaque /**< An alias for FL_META on Win - -dows and X11, or FL_CTRL on MacOS X */ - 63 +# define FL_COMMAND opaque /**< An alias for FL_CTRL on X11 - + */ - 64 +# define FL_CONTROL opaque /**< An alias for FL_META on X11 - + */ - 65 - 66 #else /* FL_DOXYGEN */ - 67 - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Основные файлы обработаны. Теперь помечу задачу как завершённую и запущу - верификационный grep. - -⏺ Запускаю верификацию — поиск оставшихся _WIN32, __APPLE__, FLTK_USE_WAYLAND в - src/ и FL/. - -⏺ Search(pattern: "#\s*if.*_WIN32|#\s*ifdef\s+_WIN32|#\s*if.*WIN32", path: - "~/Desktop/fltk/src", output_mode: "content") - ⎿  Found 1 line (ctrl+o to expand) - -⏺ Search(pattern: "#\s*if.*_WIN32|#\s*ifdef\s+_WIN32|#\s*if.*WIN32", path: - "~/Desktop/fltk/FL", output_mode: "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "#\s*if.*__APPLE__", path: "~/Desktop/fltk/src", output_mode: - "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "#\s*if.*__APPLE__", path: "~/Desktop/fltk/FL", output_mode: - "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "FLTK_USE_WAYLAND", path: "~/Desktop/fltk/src", output_mode: - "content") - ⎿  Found 1 line (ctrl+o to expand) - -⏺ Search(pattern: "FLTK_USE_WAYLAND", path: "~/Desktop/fltk/FL", output_mode: - "content") - ⎿  Found 0 lines - -⏺ Осталось 2 вхождения. Исправлю оба. - -⏺ Search(pattern: "FLTK_USE_WAYLAND", path: - "~/Desktop/fltk/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx", - output_mode: "content") - ⎿  Found 21 lines (ctrl+o to expand) - -⏺ Search(pattern: "_WIN32", path: "~/Desktop/fltk/src/Fl.cxx", output_mode: - "content") - ⎿  Found 11 lines (ctrl+o to expand) - -⏺ Read(~/Desktop/fltk/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx) - ⎿  Read 10 lines - -⏺ Read(~/Desktop/fltk/src/Fl.cxx) - ⎿  Read 30 lines - -⏺ Update(~/Desktop/fltk/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx) - ⎿  Removed 2 lines - 40 } - 41 }; - 42 - 43 -#ifndef FLTK_USE_WAYLAND - 43 Fl_Gl_Window_Driver *Fl_Gl_Window_Driver::newGlWindowDriver(Fl_ - Gl_Window *w) - 44 { - 45 return new Fl_X11_Gl_Window_Driver(w); - 46 } - 48 -#endif - 47 - 48 void Fl_X11_Gl_Window_Driver::draw_string_legacy(const char* st - r, int n) { - 49 draw_string_legacy_get_list(str, n); - -⏺ Теперь обновлю комментарий в Fl.cxx — функция args_to_utf8 на X11 ничего не - делает (это noop для не-Windows). Упрощу комментарий. - -⏺ Read(~/Desktop/fltk/src/Fl.cxx) - ⎿  Read 50 lines - ⎿  Found 1 new diagnostic issue in 1 file (ctrl+o to expand) - -⏺ Read(~/Desktop/fltk/src/Fl.cxx) - ⎿  Read 24 lines - -⏺ Update(~/Desktop/fltk/src/Fl.cxx) - ⎿  Added 5 lines, removed 62 lines - 2572 FL_EXPORT const char* fl_local_ctrl = Fl::system_driver()->c - ontrol_name(); - 2573 - 2574 /** - 2575 - Convert Windows commandline arguments to UTF-8. - 2575 + Ensure commandline arguments are UTF-8 encoded. - 2576 - 2577 - \note This function does nothing on other (non-Windows) pla - -tforms, hence - 2578 - you may call it on all platforms or only on Windows by us - -ing platform - 2579 - specific code like '\#ifdef _WIN32' etc. - it's - -your choice. - 2580 - Calling it on other platforms returns quickly w/o wasting - - much CPU time. - 2577 + On X11 this is a no-op since arguments are already in the l - +ocale encoding - 2578 + which is typically UTF-8 on modern systems. - 2579 - 2582 - This function must be called on Windows platforms - - in \c main() - 2583 - before the array \c argv is used if your program uses any c - -ommandline - 2584 - argument strings (these should be UTF-8 encoded). - 2585 - This applies also to standard FLTK commandline arguments li - -ke - 2586 - "-name" (class name) and "-title" (window title in the titl - -e bar). - 2587 - - 2588 - Unfortunately Windows \b neither provides commandline argum - -ents in UTF-8 - 2589 - encoding \b nor as Windows "Wide Character" strings in the - -standard - 2590 - \c main() and/or the Windows specific \c WinMain() function - -. - 2591 - - 2592 - On Windows platforms (no matter which build system) this fu - -nction calls - 2593 - a Windows specific function to retrieve commandline argumen - -ts as Windows - 2594 - "Wide Character" strings, converts these strings to an inte - -rnally allocated - 2595 - buffer (or multiple buffers) and returns the result in \c a - -rgv. - 2596 - For implementation details please refer to the source code; - - however these - 2597 - details may be changed in the future. - 2598 - - 2599 - Note that \c argv is provided by reference so it can be ove - -rwritten. - 2600 - - 2601 - In the recommended simple form the function overwrites the - -variable - 2602 - \c argv and allocates a new array of strings pointed to by - -\c argv. - 2603 - You may use this form on all platforms and it is as simple - -as adding - 2604 - one line to old programs to make them work with internation - -al (UTF-8) - 2605 - commandline arguments. - 2606 - - 2607 - \code - 2608 - int main(int argc, char **argv) { - 2609 - Fl::args_to_utf8(argc, argv); // add this line - 2610 - // ... use argc and argv, e.g. for commandline parsing - 2611 - window->show(argc, argv); - 2612 - return Fl::run(); - 2613 - } - 2614 - \endcode - 2615 - - 2616 - For an example see 'examples/howto-parse-args.cxx' in the F - -LTK sources. - 2617 - - 2618 - If you want to retain the original \c argc and \c argv vari - -ables the - 2619 - following slightly longer and more complicated code works a - -s well on - 2620 - all platforms. - 2621 - - 2622 - \code - 2623 - int main(int argc, char **argv) { - 2624 - char **argvn = argv; // must copy argv to wo - -rk on all platforms - 2625 - int argcn = Fl::args_to_utf8(argc, argvn); - 2626 - // ... use argcn and argvn, e.g. for commandline parsin - -g - 2627 - window->show(argcn, argvn); - 2628 - return Fl::run(); - 2629 - } - 2630 - \endcode - 2631 - - 2632 - \param[in] argc used only on non-Windows platforms - 2633 - \param[out] argv modified only on Windows platforms - 2580 + \param[in] argc argument count - 2581 + \param[out] argv argument array - 2582 \returns argument count (always the same as argc) - 2583 - 2584 \since 1.4.0 - 2637 - - 2638 - \internal This function must not open the display, otherwis - -e - 2639 - commandline processing (e.g. by fluid) would open the dis - -play. - 2640 - OTOH calling it when the display is opened wouldn't work - -either - 2641 - for the same reasons ('fluid -c' doesn't open the display - -). - 2585 */ - 2586 int Fl::args_to_utf8(int argc, char ** &argv) { - 2587 return Fl::system_driver()->args_to_utf8(argc, argv); - -⏺ Теперь повторю верификационный grep: - -⏺ Search(pattern: "#\s*if.*(_WIN32|WIN32\b)|#\s*ifdef\s+(_WIN32|WIN32\b)", path: - "~/Desktop/fltk/src", output_mode: "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "#\s*if.*(_WIN32|WIN32\b)|#\s*ifdef\s+(_WIN32|WIN32\b)", path: - "~/Desktop/fltk/FL", output_mode: "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "#\s*if.*__APPLE__", path: "~/Desktop/fltk/src", output_mode: - "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "#\s*if.*__APPLE__", path: "~/Desktop/fltk/FL", output_mode: - "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "FLTK_USE_WAYLAND", path: "~/Desktop/fltk/src", output_mode: - "content") - ⎿  Found 0 lines - -⏺ Search(pattern: "FLTK_USE_WAYLAND", path: "~/Desktop/fltk/FL", output_mode: - "content") - ⎿  Found 0 lines - ⎿  Found 10 new diagnostic issues in 1 file (ctrl+o to expand) - -⏺ Все 0 результатов — _WIN32, __APPLE__ и FLTK_USE_WAYLAND полностью удалены из - src/ и FL/. Также проверю CMake/ и другие ключевые директории: - -⏺ Search(pattern: "#\s*if.*(_WIN32|__APPLE__|FLTK_USE_WAYLAND)", path: - "~/Desktop/fltk/CMake", output_mode: "content") - ⎿  Found 2 lines (ctrl+o to expand) - -⏺ Search(pattern: "APPLE|WIN32|MSVC|WAYLAND", path: "~/Desktop/fltk/CMake") - ⎿  Found 10 files (ctrl+o to expand) - -⏺ Есть остатки в CMake файлах. Запущу агент для их глубокой проверки. - -⏺ Explore(Find platform refs in CMake) - ⎿  Done (16 tool uses · 22.4k tokens · 55s) - -⏺ Осталось много платформо-специфичного кода в CMake файлах. Почищу их. Начну с - чтения файлов параллельно. - -⏺ Read(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Read 345 lines - -⏺ Read(~/Desktop/fltk/CMake/setup.cmake) - ⎿  Read 210 lines - -⏺ Read(~/Desktop/fltk/CMake/variables.cmake) - ⎿  Read 178 lines - -⏺ Буду чистить CMake файлы. Начну с параллельных правок. - -⏺ Update(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Added 1 line, removed 6 lines - 136 - 137 fl_find_header(HAVE_X11_XREGION_H "X11/Xlib.h;X11/Xregion.h") - 138 - 139 -if(WIN32 AND NOT CYGWIN) - 140 - # we don't use pthreads on Windows (except for Cygwin, see o - -ptions.cmake) - 141 - set(HAVE_PTHREAD_H 0) - 142 -else() - 143 - fl_find_header(HAVE_PTHREAD_H pthread.h) - 144 -endif(WIN32 AND NOT CYGWIN) - 139 +fl_find_header(HAVE_PTHREAD_H pthread.h) - 140 - 141 # Do we have PTHREAD_MUTEX_RECURSIVE ? - 142 - -⏺ Update(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Removed 25 lines - 149 set(HAVE_PTHREAD_MUTEX_RECURSIVE 0) - 150 endif() - 151 - 152 -# Special case for Microsoft Visual Studio generator (MSVC): - 153 -# - 154 -# The header files and are located in th - -e SDK's - 155 -# for Visual Studio. If CMake is invoked from a desktop icon o - -r the Windows - 156 -# menu it doesn't have the correct paths to find these header - -files. - 157 -# The CMake folks recommend not to search for these files at a - -ll, because - 158 -# they must always be there, but we do anyway. - 159 -# If we don't find them we issue a warning and continue anyway - -. - 160 -# - 161 -# Note: these cache variables can only be seen in "advanced" m - -ode. - 162 - - 163 -if(MSVC) - 164 - - 165 - if(NOT HAVE_GL_GLU_H) - 166 - message(STATUS "Info: Header file GL/glu.h was not found. - -Continuing...") - 167 - set(HAVE_GL_GLU_H 1) - 168 - endif(NOT HAVE_GL_GLU_H) - 169 - - 170 - if(NOT HAVE_LOCALE_H) - 171 - message(STATUS "Info: Header file locale.h was not found. - -Continuing...") - 172 - set(HAVE_LOCALE_H 1) - 173 - endif(NOT HAVE_LOCALE_H) - 174 - - 175 -endif(MSVC) - 176 - - 152 # Simulate the behavior of autoconf macro AC_HEADER_DIRENT, se - e: - 153 # https://www.gnu.org/software/autoconf/manual/autoconf-2.69/h - tml_node/Particular-Headers.html - 154 # "Check for the following header files. For the first one tha - t is found - -⏺ Update(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Added 2 lines, removed 2 lines - 178 find_path(FREETYPE_PATH freetype.h PATH_SUFFIXES freetype2) - 179 find_path(FREETYPE_PATH freetype/freetype.h PATH_SUFFIXES free - type2) - 180 - 181 -if(FREETYPE_PATH AND ((NOT APPLE) OR FLTK_BACKEND_X11)) - 181 +if(FREETYPE_PATH) - 182 list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${FREETYPE_PATH}) - 183 -endif(FREETYPE_PATH AND ((NOT APPLE) OR FLTK_BACKEND_X11)) - 183 +endif(FREETYPE_PATH) - 184 - 185 mark_as_advanced(FREETYPE_PATH) - 186 - -⏺ Update(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Added 1 line, removed 3 lines - 187 ############################################################## - ######### - 188 # libraries - 189 find_library(LIB_dl dl) - 190 -if((NOT APPLE) OR FLTK_BACKEND_X11) - 191 - find_library(LIB_fontconfig fontconfig) - 192 -endif((NOT APPLE) OR FLTK_BACKEND_X11) - 190 +find_library(LIB_fontconfig fontconfig) - 191 find_library(LIB_freetype freetype) - 192 find_library(LIB_GL GL) - 193 find_library(LIB_MesaGL MesaGL) - -⏺ Update(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Removed 5 lines - 237 check_symbol_exists(scandir "dirent.h" HAVE_SCA - NDIR) - 238 check_symbol_exists(snprintf "stdio.h" HAVE_SNP - RINTF) - 239 - 240 -# not really true but we convert strcasecmp calls to _stricmp - -calls in flstring.h - 241 -if(MSVC) - 242 - set(HAVE_STRCASECMP 1) - 243 -endif(MSVC) - 244 - - 240 check_symbol_exists(strcasecmp "strings.h" HAVE_STRCASEC - MP) - 241 - 242 check_symbol_exists(strlcat "string.h" HAVE_STRLCAT) - -⏺ Update(~/Desktop/fltk/CMake/resources.cmake) - ⎿  Added 1 line, removed 2 lines - 245 - 246 check_symbol_exists(setenv "stdlib.h" HAVE_SETENV) - 247 - 248 -# Windows doesn't require '-lm' for trunc(), other platforms d - -o - 249 -if(LIB_m AND NOT WIN32) - 248 +if(LIB_m) - 249 set(CMAKE_REQUIRED_LIBRARIES ${LIB_m}) - 250 endif() - 251 - -⏺ Теперь setup.cmake: - -⏺ Update(~/Desktop/fltk/CMake/setup.cmake) - ⎿  Added 1 line, removed 7 lines - 93 ############################################################## - ######### - 94 - 95 # set where config files go - 96 -if(WIN32 AND NOT CYGWIN) - 97 - set(FLTK_CONFIG_PATH CMake) - 98 -elseif(APPLE AND NOT FLTK_BACKEND_X11) - 99 - set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk) - 100 -else() - 101 - set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk) - 102 -endif(WIN32 AND NOT CYGWIN) - 96 +set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk) - 97 - 98 include(TestBigEndian) - 99 TEST_BIG_ENDIAN(WORDS_BIGENDIAN) - -⏺ Update(~/Desktop/fltk/CMake/setup.cmake) - ⎿  Removed 69 lines - 104 set(CMAKE_XCODE_GENERATE_SCHEME 1) - 105 endif() - 106 - 107 -if(APPLE) - 108 - # Check if the __MAC_OS_X_VERSION_MAX_ALLOWED compile time m - -acro is at least - 109 - # the version encoded in SDK_VERSION and return TRUE or FALS - -E in RESULT. - 110 - # Note 1: try_compile() always creates an *internal* CMake c - -ache variable for - 111 - # the result which we set to 'FLTK_CHECK_OSX_MAX_ALL - -OWED_${SDK_VERSION}'. - 112 - # Note 2: 'FLTK_' to avoid polluting the cache if FLTK is bu - -ilt as a subproject. - 113 - # Note 3: We don't care about the cache, i.e. we run try_com - -pile() unconditionally - 114 - # so users can switch SDK's, particularly if they *u - -pgrade* Xcode. - 115 - - 116 - function(CHECK_OSX_MAX_ALLOWED SDK_VERSION RESULT) - 117 - set(_result FLTK_CHECK_OSX_MAX_ALLOWED_${SDK_VERSION}) - 118 - try_compile(${_result} - 119 - ${CMAKE_CURRENT_BINARY_DIR}/CHECK_OSX_MAX_ALLOWED_${SDK_ - -VERSION} - 120 - SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CMake/macOSMaxAllowe - -d.c - 121 - COMPILE_DEFINITIONS -DSDK_VERSION_CHECK=${SDK_VERSION} - 122 - ) - 123 - set(${RESULT} ${${_result}} PARENT_SCOPE) - 124 - endfunction() - 125 - - 126 - # APPLE macOS setup - 127 - set(HAVE_STRCASECMP 1) - 128 - set(HAVE_DIRENT_H 1) - 129 - set(HAVE_SNPRINTF 1) - 130 - set(HAVE_VSNPRINTF 1) - 131 - set(HAVE_SCANDIR 1) - 132 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") - 133 - if(FLTK_BACKEND_X11) - 134 - if(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) # a.k - -.a. macOS version ≥ 10.13 - 135 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_TH - -READ_API_PTHREAD") - 136 - endif(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) - 137 - else() - 138 - set(FLTK_COCOA_FRAMEWORKS "-framework Cocoa") - 139 - if (NOT (CMAKE_OSX_ARCHITECTURES STREQUAL "ppc" OR CMAKE_O - -SX_ARCHITECTURES STREQUAL "i386")) - 140 - CHECK_OSX_MAX_ALLOWED(150000 SDK_15_AVAILABLE) # at leas - -t SDK 15.0.0 ? - 141 - if (SDK_15_AVAILABLE) - 142 - list(APPEND FLTK_COCOA_FRAMEWORKS "-weak_framework Scr - -eenCaptureKit") # 15.0 - 143 - list(APPEND FLTK_COCOA_FRAMEWORKS "-weak_framework Uni - -formTypeIdentifiers") # 11.0 - 144 - else(SDK_15_AVAILABLE) - 145 - CHECK_OSX_MAX_ALLOWED(110000 SDK_11_AVAILABLE) # at le - -ast SDK 11.0.0 ? - 146 - if (SDK_11_AVAILABLE) - 147 - list(APPEND FLTK_COCOA_FRAMEWORKS "-weak_framework U - -niformTypeIdentifiers") - 148 - endif(SDK_11_AVAILABLE) - 149 - endif(SDK_15_AVAILABLE) - 150 - endif() - 151 - endif(FLTK_BACKEND_X11) - 152 -endif(APPLE) - 153 - - 154 -if(WIN32) - 155 - # we do no longer define WIN32 or _WIN32 (since FLTK 1.4.0) - 156 - # ... but if we did, we'd define _WIN32 (since FLTK 1.4.0) - 157 - # add_definitions (-D_WIN32) - 158 - if(MSVC) - 159 - add_definitions (-DWIN32_LEAN_AND_MEAN) - 160 - add_definitions (-D_CRT_SECURE_NO_WARNINGS) - 161 - if(NOT MSVC_VERSION VERSION_LESS 1900) # Visual Studio 201 - -5 - 162 - add_compile_options (/utf-8) # equivalent to `/s - -ource-charset:utf-8 /execution-charset:utf-8` - 163 - endif() - 164 - set(BORDER_WIDTH 2) - 165 - endif(MSVC) - 166 - - 167 - # Don't use the following code, it breaks building with MSYS - -2/UCRT64 - 168 - # See GitHub PR #1167. Solution is to remove the entire bloc - -k! - 169 - - 170 - ### if(MINGW AND EXISTS /mingw) - 171 - ### list(APPEND CMAKE_PREFIX_PATH /mingw) - 172 - ### endif(MINGW AND EXISTS /mingw) - 173 - - 174 -endif(WIN32) - 175 - - 107 ############################################################## - ######### - 108 # size of ints - 109 include(CheckTypeSize) - -⏺ Теперь variables.cmake: - -⏺ Update(~/Desktop/fltk/CMake/variables.cmake) - ⎿  Added 1 line, removed 17 lines - 39 # FIXME: libraries may need reordering. - 40 # FIXME: check fontconfig conditions (only if Xft is used or .. - .) - 41 - 42 -if(WIN32) - 43 - list(APPEND FLTK_LDLIBS -lole32 -luuid -lcomctl32 -lws2_32 -l - -winspool) - 44 -elseif(APPLE AND NOT FLTK_BACKEND_X11) - 45 - list(APPEND FLTK_LDLIBS ${FLTK_COCOA_FRAMEWORKS}) - 46 -elseif(FLTK_USE_WAYLAND) - 47 - foreach(_lib WLDCURSOR WLDCLIENT XKBCOMMON) - 48 - list(APPEND FLTK_LDLIBS "${${_lib}_LDFLAGS}") - 49 - endforeach() - 50 - if(FLTK_USE_DBUS AND DBUS_FOUND) - 51 - list(APPEND FLTK_LDLIBS "${DBUS_LDFLAGS}") - 52 - endif() - 53 - if(USE_SYSTEM_LIBDECOR) - 54 - list(APPEND FLTK_LDLIBS ${SYSTEM_LIBDECOR_LDFLAGS}) - 55 - endif(USE_SYSTEM_LIBDECOR) - 56 -else() - 57 - list(APPEND FLTK_LDLIBS -lm) - 58 -endif(WIN32) - 42 +list(APPEND FLTK_LDLIBS -lm) - 43 - 44 if(LIB_fontconfig) - 45 list(APPEND FLTK_LDLIBS -lfontconfig) - -⏺ Update(~/Desktop/fltk/CMake/variables.cmake) - ⎿  Removed 4 lines - 64 # should be set here, whereas variables with different values s - hould - 65 # be set in install.cmake or export.cmake, respectively. - 66 - 67 -if(WIN32) - 68 - set(LDFLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows") - 69 -endif() - 70 - - 67 set(IMAGELIBS) - 68 set(STATICIMAGELIBS) - 69 - -⏺ Теперь прочитаю и почищу оставшиеся CMake файлы. - -⏺ Read(~/Desktop/fltk/CMake/export.cmake) - ⎿  Read 151 lines - -⏺ Read(~/Desktop/fltk/CMake/fl_add_library.cmake) - ⎿  Read 258 lines - -⏺ Read(~/Desktop/fltk/CMake/fl_create_example.cmake) - ⎿  Read 174 lines - -⏺ Теперь применю правки к export.cmake, fl_add_library.cmake и - fl_create_example.cmake параллельно, а также удалю Windows-only файл. - -⏺ Update(~/Desktop/fltk/CMake/export.cmake) - ⎿  Added 2 lines, removed 7 lines - 24 - 25 if(FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING) - 26 # Use the fluid executable we build using its namespaced targ - et name - 27 - if(WIN32) - 28 - set(FLTK_FLUID_EXECUTABLE fltk::fluid-cmd) - 29 - set(FLUID_EXPORT fluid fluid-cmd) # export fluid and f - -luid-cmd - 30 - else() - 31 - set(FLTK_FLUID_EXECUTABLE fltk::fluid) - 32 - set(FLUID_EXPORT fluid) # export fluid - 33 - endif() - 27 + set(FLTK_FLUID_EXECUTABLE fltk::fluid) - 28 + set(FLUID_EXPORT fluid) # export fluid - 29 else() - 30 # We don't build fluid /or/ we are cross-compiling (or both): - 31 # we need to find a fluid executable on the build host. - -⏺ Update(~/Desktop/fltk/CMake/export.cmake) - ⎿  Removed 3 lines - 57 # set fltk-options export names (built or not, Windows) - 58 if(FLTK_BUILD_FLTK_OPTIONS) - 59 set(FLTK_OPTIONS_EXPORT fltk-options) - 60 - if(WIN32) - 61 - list(APPEND FLTK_OPTIONS_EXPORT fltk-options-cmd) - 62 - endif() - 60 else() - 61 set(FLTK_OPTIONS_EXPORT) - 62 endif() - -⏺ Update(~/Desktop/fltk/CMake/export.cmake) - ⎿  Added 2 lines, removed 4 lines - 117 # use fallback before CMake 3.19 - 118 - 119 if(CMAKE_VERSION VERSION_LESS 3.19) - 120 - if(UNIX OR MSYS OR MINGW) - 121 - execute_process(COMMAND chmod 755 fltk-config - 122 - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - 123 - endif() - 120 + execute_process(COMMAND chmod 755 fltk-config - 121 + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - 122 else(CMAKE_VERSION VERSION_LESS 3.19) - 123 file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/fltk-config" - 124 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - -⏺ Update(~/Desktop/fltk/CMake/fl_add_library.cmake) - ⎿  Added 1 line, removed 5 lines - 57 - 58 string(REPLACE "fltk_" "" EXPORT_NAME ${TARGET_NAME}) - 59 - 60 - if(MSVC) - 61 - set(OUTPUT_NAME_DEBUG "${LIBNAME}d") - 62 - else() - 63 - set(OUTPUT_NAME_DEBUG "${LIBNAME}") - 64 - endif(MSVC) - 60 + set(OUTPUT_NAME_DEBUG "${LIBNAME}") - 61 - 62 set(OUTPUT_NAME_RELEASE "${LIBNAME}") - 63 - -⏺ Update(~/Desktop/fltk/CMake/fl_add_library.cmake) - ⎿  Added 1 line, removed 7 lines - 151 $ - 152 ) - 153 - 154 - if(APPLE AND NOT FLTK_BACKEND_X11) - 155 - foreach(item ${FLTK_COCOA_FRAMEWORKS}) - 156 - target_link_libraries(${TARGET_NAME} PUBLIC "${item}") - 157 - endforeach() - 158 - endif() - 159 - - 160 - # we must link fltk with cairo if Cairo or Wayland is enab - -led (or both) - 154 + # we must link fltk with cairo if Cairo is enabled - 155 if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO) - 156 target_include_directories(${TARGET_NAME} PUBLIC ${PKG_C - AIRO_INCLUDE_DIRS}) - 157 target_link_directories (${TARGET_NAME} PUBLIC ${PKG_C - AIRO_LIBRARY_DIRS}) - -⏺ Update(~/Desktop/fltk/CMake/fl_add_library.cmake) - ⎿  Removed 9 lines - 183 OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE} - 184 EXPORT_NAME ${EXPORT_NAME} - 185 ) - 186 - # Visual Studio only: - 187 - if(MSVC) - 188 - set_target_properties(${TARGET_NAME} PROPERTIES - 189 - OUTPUT_NAME ${LIBNAME}_dll - 190 - OUTPUT_NAME_DEBUG ${LIBNAME}_dlld - 191 - OUTPUT_NAME_RELEASE ${LIBNAME}_dll - 192 - ) - 193 - target_compile_definitions(${TARGET_NAME} PUBLIC FL_DLL) - 194 - endif(MSVC) - 186 endif(LIBTYPE STREQUAL "SHARED") - 187 - 188 # Debug library output names (optional) - -⏺ Update(~/Desktop/fltk/CMake/fl_add_library.cmake) - ⎿  Removed 8 lines - 205 message(STATUS "--- /DEBUG_ONAME ---") - 206 endif(DEBUG_ONAME) - 207 - 208 - if(MSVC) - 209 - if(FLTK_OPTION_LARGE_FILE) - 210 - set_target_properties(${TARGET_NAME} PROPERTIES - 211 - LINK_FLAGS /LARGEADDRESSAWARE - 212 - ) - 213 - endif(FLTK_OPTION_LARGE_FILE) - 214 - endif(MSVC) - 215 - - 208 install(TARGETS ${TARGET_NAME} EXPORT FLTK-Targets - 209 RUNTIME DESTINATION ${FLTK_BINDIR} - 210 LIBRARY DESTINATION ${FLTK_LIBDIR} - -⏺ Теперь fl_create_example.cmake: - -⏺ Update(~/Desktop/fltk/CMake/fl_create_example.cmake) - ⎿  Added 1 line, removed 13 lines - 56 set(PLIST) # macOS .plist file(max. one) - 57 set(ICON_PATH) # macOS icon resource path - 58 - 59 - # create macOS bundle? 0 = no, 1 = yes - 59 + # filter input files for different handling (fluid, source) - 60 - 61 - if(APPLE AND NOT FLTK_BACKEND_X11) - 62 - set(MAC_BUNDLE 1) - 63 - else() - 64 - set(MAC_BUNDLE 0) - 65 - endif() - 66 - - 67 - # filter input files for different handling (fluid, icon, pli - -st, source) - 68 - - 61 foreach(src ${SOURCES}) - 62 if("${src}" MATCHES "\\.fl$") - 63 list(APPEND flsrcs ${src}) - 72 - elseif("${src}" MATCHES "\\.icns$") - 73 - set(ICON_NAME "${src}") - 74 - elseif("${src}" MATCHES "\\.plist$") - 75 - set(PLIST "${src}") - 64 else() - 65 list(APPEND srcs ${src}) - 66 endif("${src}" MATCHES "\\.fl$") - -⏺ Update(~/Desktop/fltk/CMake/fl_create_example.cmake) - ⎿  Added 2 lines, removed 12 lines - 78 unset(FLUID_SOURCES) - 79 endif(flsrcs) - 80 - 81 - # set macOS (icon) resource path if applicable - 82 - - 83 - if(MAC_BUNDLE AND ICON_NAME) - 84 - set(ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/mac-resources/${ - -ICON_NAME}") - 85 - endif(MAC_BUNDLE AND ICON_NAME) - 86 - - 81 ############################################################# - ################# - 88 - # add executable target and set properties (all platforms) - 82 + # add executable target and set properties - 83 ############################################################# - ################# - 84 - 91 - if(MAC_BUNDLE) - 92 - add_executable (${TARGET_NAME} MACOSX_BUNDLE ${srcs} - - ${ICON_PATH}) - 93 - else() - 94 - add_executable (${TARGET_NAME} WIN32 ${srcs}) - 95 - endif(MAC_BUNDLE) - 85 + add_executable (${TARGET_NAME} ${srcs}) - 86 - 87 set_target_properties (${TARGET_NAME} PROPERTIES OUTPUT_NAM - E ${NAME}) - 88 target_link_libraries (${TARGET_NAME} PRIVATE ${LIBRARIES}) - -⏺ Update(~/Desktop/fltk/CMake/fl_create_example.cmake) - ⎿  Removed 4 lines - 87 set_target_properties (${TARGET_NAME} PROPERTIES OUTPUT_NAM - E ${NAME}) - 88 target_link_libraries (${TARGET_NAME} PRIVATE ${LIBRARIES}) - 89 - 90 - # make sure we're "exporting" global symbols like 'fl_disable - -_wayland', - 91 - # see also README.Wayland.txt and CMake policy CMP0065. - 92 - - 90 set_target_properties (${TARGET_NAME} PROPERTIES ENABLE_EXP - ORTS TRUE) - 91 - 95 - - 92 # Search the current binary directory for header files create - d by CMake - 93 # or fluid and the source folder for other headers included b - y test programs - 94 - -⏺ Update(~/Desktop/fltk/CMake/fl_create_example.cmake) - ⎿  Removed 47 lines - 97 ${CMAKE_CURRENT_SOURCE_DIR} - 98 ) - 99 - 100 - if(MAC_BUNDLE) - 101 - if(PLIST) - 102 - set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_B - -UNDLE_INFO_PLIST - 103 - "${CMAKE_CURRENT_SOURCE_DIR}/mac-r - -esources/${PLIST}") - 104 - endif() - 105 - - 106 - string(REPLACE "_" "-" FLTK_BUNDLE_ID "org.fltk.${TARGET_N - -AME}") - 107 - set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUN - -DLE_BUNDLE_NAME "${TARGET_NAME}") - 108 - set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUN - -DLE_GUI_IDENTIFIER "${FLTK_BUNDLE_ID}") - 109 - set_target_properties(${TARGET_NAME} PROPERTIES XCODE_ATTR - -IBUTE_PRODUCT_BUNDLE_IDENTIFIER "${FLTK_BUNDLE_ID}") - 110 - - 111 - if(ICON_NAME) - 112 - set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_B - -UNDLE_ICON_FILE ${ICON_NAME}) - 113 - set_target_properties(${TARGET_NAME} PROPERTIES RESOURCE - - ${ICON_PATH}) - 114 - endif() - 115 - endif() - 116 - - 117 - ############################################################ - -################## - 118 - # Copy macOS "bundle wrapper" (shell script) to target direc - -tory. - 119 - # The "custom command" will be executed "POST_BUILD". - 120 - ############################################################ - -################## - 121 - - 122 - if(MAC_BUNDLE) - 123 - set(WRAPPER "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR} - -/${TARGET_NAME}") - 124 - - 125 - add_custom_command( - 126 - TARGET ${TARGET_NAME} POST_BUILD - 127 - COMMAND cp ${FLTK_SOURCE_DIR}/CMake/macOS-bundle-wrapper - -.in ${WRAPPER} - 128 - COMMAND chmod u+x,g+x,o+x ${WRAPPER} - 129 - BYPRODUCTS ${WRAPPER} - 130 - # COMMENT "Creating macOS bundle wrapper script ${WRAPPE - -R}" - 131 - VERBATIM - 132 - ) - 133 - unset(WRAPPER) - 134 - endif(MAC_BUNDLE) - 135 - - 136 - ############################################################ - -################## - 137 - # MSVC: Add fltk-shared (DLL) path to Environment 'PATH' for - - debugging - 138 - ############################################################ - -################## - 139 - - 140 - if(MSVC AND TARGET fltk-shared) - 141 - set(DllDir "$>") - 142 - set_target_properties(${TARGET_NAME} PROPERTIES - 143 - VS_DEBUGGER_ENVIRONMENT "PATH=${DllDir};$ENV{PATH}" - 144 - ) - 145 - endif() - 146 - - 100 endfunction() - -⏺ Удалю Windows-only файл pen-support.c и проверю FLTKConfig.cmake.in: - -⏺ Bash(rm /Users/mnik01/Desktop/fltk/CMake/pen-support.c) - ⎿ /Users/mnik01/.zprofile:source:3: no such file or directory: /Users/mni - k01/Desktop/hobby/emsdk/emsdk_env.sh - - -⏺ Search(pattern: "APPLE|WIN32|MSVC|WAYLAND|MINGW|CYGWIN", path: - "~/Desktop/fltk/CMake/FLTKConfig.cmake.in", output_mode: "content") - ⎿  Found 7 lines (ctrl+o to expand) - -⏺ Read(~/Desktop/fltk/CMake/FLTKConfig.cmake.in) - ⎿  Read 20 lines - -⏺ Update(~/Desktop/fltk/CMake/FLTKConfig.cmake.in) - ⎿  Added 2 lines, removed 7 lines - 125 endif() # Create aliases ... - 126 - 127 # set FLTK_FLUID_EXECUTABLE: try to use the fltk::target nam - e if it - 128 - # exists and fall back to 'fluid-cmd' or 'fluid' if not. Thi - -s will - 129 - # eventually call the build host's fluid if found in the use - -rs's PATH - 128 + # exists and fall back to 'fluid' if not. - 129 - 131 - if(TARGET fltk::fluid-cmd) # Windows only - 132 - set(FLTK_FLUID_EXECUTABLE fltk::fluid-cmd) - 133 - elseif(TARGET fltk::fluid) - 130 + if(TARGET fltk::fluid) - 131 set(FLTK_FLUID_EXECUTABLE fltk::fluid) - 135 - elseif(WIN32) - 136 - set(FLTK_FLUID_EXECUTABLE fluid-cmd) - 132 else() - 133 set(FLTK_FLUID_EXECUTABLE fluid) - 134 endif() - -⏺ Теперь проверю, не осталось ли ещё ссылок на удалённый check_mac_sdk.c: - -⏺ Search(pattern: "check_mac_sdk|macOSMaxAllowed|CHECK_OSX_MAX_ALLOWED", path: - "~/Desktop/fltk/CMake") - ⎿  Found 0 files - -⏺ Финальная верификация — поиск платформо-специфичных ссылок во всех CMake - файлах: - -⏺ Search(pattern: "\bAPPLE\b|\bWIN32\b|\bMSVC\b|\bWAYLAND\b|\bMINGW\b|\bCYGWIN\b - |\b__APPLE__\b|\b_WIN32\b", path: "~/Desktop/fltk/CMake", output_mode: - "content") - ⎿  Found 6 lines (ctrl+o to expand) - -⏺ Остались только ссылки в комментариях и debug-блоках — это неопасно. Почищу - debug-блоки в options.cmake: - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Added 2 lines, removed 2 lines - 50 set(DEBUG_OPTIONS_CMAKE 0) - 51 if(DEBUG_OPTIONS_CMAKE) - 52 message(STATUS "[** options.cmake **]") - 53 - fl_debug_var(WIN32) - 53 + # fl_debug_var(WIN32) # removed: X11-only - 54 fl_debug_var(FLTK_LDLIBS) - 55 endif(DEBUG_OPTIONS_CMAKE) - 56 - ... - 690 - 691 if(DEBUG_OPTIONS_CMAKE) - 692 message(STATUS "") # empty line - 693 - fl_debug_var(WIN32) - 693 + # fl_debug_var(WIN32) # removed: X11-only - 694 fl_debug_var(LIBS) - 695 fl_debug_var(GLLIBS) - 696 fl_debug_var(FLTK_LDLIBS) - -⏺ Update(~/Desktop/fltk/CMake/options.cmake) - ⎿  Added 1 line, removed 1 line - 470 # always use native threads on Windows (even if libpthread is - available). - 471 - 472 # Note: HAVE_PTHREAD_H has already been determined in resource - s.cmake - 473 -# before this file is included (or set to 0 for WIN32). - 473 +# before this file is included. - 474 - 475 option(FLTK_USE_PTHREADS "use multi-threading with pthreads" O - N) - 476 - -⏺ Также проверю, нет ли ссылок на fl_call_main.c в CMakeLists файлах (мы его - удалили): - -⏺ Search(pattern: "fl_call_main", path: "~/Desktop/fltk", glob: "*.cmake") - ⎿  Found 0 files - -⏺ Search(pattern: "fl_call_main", path: "~/Desktop/fltk", glob: - "CMakeLists.txt") - ⎿  Found 0 files - -⏺ Отлично. Также нужно проверить fluid/ и test/ на платформо-специфичные #ifdef - ветки — но эти директории не входили в текущую задачу Фазы 1. Проверю только - остатки в ключевых директориях: - -⏺ Search(pattern: "\bAPPLE\b|\bWIN32\b|\bMSVC\b|\bWAYLAND\b", path: - "~/Desktop/fltk/CMake", glob: "*.cmake", output_mode: "content") - ⎿  Found 5 lines (ctrl+o to expand) - -⏺ Только комментарии. Верификация src/ и FL/: - -⏺ Search(pattern: "#\s*if.*(WIN32|_WIN32|__APPLE__|WAYLAND|MSVC|CYGWIN|MINGW)", - path: "~/Desktop/fltk/src", output_mode: "count") - ⎿  Found 3 matches across 2 files (ctrl+o to expand) - -⏺ Search(pattern: "#\s*if.*(WIN32|_WIN32|__APPLE__|WAYLAND|MSVC|CYGWIN|MINGW)", - path: "~/Desktop/fltk/FL", output_mode: "count") - ⎿  Found 0 matches across 0 files - -⏺ Search(pattern: "#\s*if.*(WIN32|_WIN32|__APPLE__|WAYLAND|MSVC|CYGWIN|MINGW)", - path: - "~/Desktop/fltk/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx", - output_mode: "content") - ⎿  Found 15 lines (ctrl+o to expand) - -⏺ Search(pattern: "#\s*if.*(WIN32|_WIN32|__APPLE__|WAYLAND|MSVC|CYGWIN|MINGW)", - path: "~/Desktop/fltk/src/Fl_JPEG_Image.cxx", output_mode: "content") - ⎿  Found 11 lines (ctrl+o to expand) - -⏺ Остались 3 __CYGWIN__ ссылки — Cygwin технически является X11-платформой (Xft - обработка разной ширины wchar_t), поэтому это допустимо. Все основные - платформо-специфичные ветки _WIN32, __APPLE__, FLTK_USE_WAYLAND полностью - удалены. - -⏺ Фаза 1 завершена. Вот итоговая сводка выполненной работы: - - Фаза 1: Удаление не-X11 платформ — Завершено - - Удалённые директории (~70 файлов): - - - src/drivers/Cocoa/, src/drivers/Darwin/, src/drivers/GDI/, - src/drivers/Quartz/, src/drivers/Wayland/, src/drivers/WinAPI/, libdecor/ - - Удалённые исходные файлы: - - - src/: Fl_win32.cxx, fl_dnd_win32.cxx, Fl_get_key_win32.cxx, Fl_cocoa.mm, - Fl_get_key_mac.cxx, Fl_MacOS_Sys_Menu_Bar.mm, - Fl_Native_File_Chooser_WIN32.cxx, Fl_Native_File_Chooser_MAC.mm, - fl_encoding_mac_roman.cxx, scandir_win32.c, fl_call_main.c - - FL/: win32.H, mac.H, wayland.H - - CMake/: pen-support.c, MacOSXBundleInfo.plist.in, macOS-bundle-wrapper.in, - macOSMaxAllowed.c - - README.macOS.md, README.Windows.txt, README.Wayland.txt - - fluid/tools/ExternalCodeEditor_WIN32.cxx - - Упрощённые файлы: - - - FL/platform.H — только #include "x11.H" - - FL/math.h — убран macOS cyclic include и WIN32/CRAY блок - - FL/gl.h, FL/glu.h — убраны WIN32/APPLE пути, только - - FL/fl_utf8.h — убран WIN32 блок - - FL/Fl_Window.H — убран HICON блок (36 строк) - - FL/Fl.H — убран APPLE блок - - FL/platform_types.h — убраны WIN64/WIN32 типы и dirent - - src/Fl_Cairo.cxx — упрощён до X11-only (убрано ~80 строк - платформо-зависимого кода) - - src/Fl.cxx — упрощена документация args_to_utf8 - - src/flstring.h — убран WIN32 strcasecmp хак - - src/forms_fselect.cxx — убрана WIN32 проверка пути - - src/CMakeLists.txt — убрано ~400 строк платформо-зависимого кода - - CMakeLists.txt — убраны macOS/MSVC/Wayland секции - - CMake/options.cmake — убраны Wayland, WIN32, APPLE опции и детекция - - CMake/resources.cmake — убраны WIN32/MSVC/APPLE блоки - - CMake/setup.cmake — убраны APPLE и WIN32 секции (~60 строк) - - CMake/variables.cmake — упрощено до X11 линковки - - CMake/export.cmake — убраны WIN32 пути для fluid/fltk-options - - CMake/fl_add_library.cmake — убраны MSVC/APPLE секции - - CMake/fl_create_example.cmake — убраны MAC_BUNDLE/WIN32/MSVC секции - - CMake/FLTKConfig.cmake.in — убран WIN32 fluid-cmd - - Результат верификации: - - - #ifdef _WIN32 в src/, FL/ → 0 результатов - - #ifdef __APPLE__ в src/, FL/ → 0 результатов - - FLTK_USE_WAYLAND в src/, FL/ → 0 результатов - - Платформо-специфичный CMake код в CMake/ → только комментарии - - Следующая фаза по плану — Фаза 2: Замена CMake на Makefile. - -✻ Crunched for 33m 46s - -- cgit v1.2.3