diff options
Diffstat (limited to 'FL/2026-02-05-claudemd.txt')
| -rw-r--r-- | FL/2026-02-05-claudemd.txt | 1962 |
1 files changed, 1962 insertions, 0 deletions
diff --git a/FL/2026-02-05-claudemd.txt b/FL/2026-02-05-claudemd.txt new file mode 100644 index 000000000..7a4c1a861 --- /dev/null +++ b/FL/2026-02-05-claudemd.txt @@ -0,0 +1,1962 @@ + +╭─── 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 <math.h> + 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 <windows.h> + 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 <OpenGL/gl.h> + 63 -# endif + 64 -# else + 65 -# include <GL/gl.h> + 66 -# endif // __APPLE__ // PORTME: OpenGL Path abstraction + 50 +# include <GL/gl.h> + 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 <windows.h> + 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 <OpenGL/glu.h> + 41 -# else + 42 -# include <GL/glu.h> + 43 -# endif + 32 +# include <GL/glu.h> + 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 <stddef.h> /* stdint.h not available before VS 2010 + - (1600) */ + 102 -#else + 103 -# include <stdint.h> + 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 <dirent.h> + 110 -#endif + 105 +#include <dirent.h> + 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 <FL/Fl_Export.H> + 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 <ApplicationServices/ApplicationServices.h> + 36 -#endif + 37 - + 30 #include <FL/platform.H> + 31 #include <FL/Fl_Window.H> + 32 +#include <cairo-xlib.h> + 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 <cairo-win32.h> + 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 <cairo-xlib.h> + 51 -# else + 52 - static void *fl_gc = NULL; + 53 -# endif + 54 -#elif defined(FLTK_USE_X11) // X11 + 55 -# include <cairo-xlib.h> + 56 -#elif defined(__APPLE__) // macOS + 57 -# include <cairo-quartz.h> + 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 <tt>'\#ifdef _WIN32'</tt> 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 <i>must be called <b>on Windows platforms</b> + -</i> 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 <GL/glu.h> and <locale.h> 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 $<INSTALL_INTERFACE:lib> + 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 "$<SHELL_PATH:$<TARGET_FILE_DIR:fltk-shared>>") + 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 пути, только <GL/gl.h> + - 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 + |
