[Bf-blender-cvs] [1c9829f3518] master: GHOST: tests now build again

Campbell Barton noreply at git.blender.org
Wed Mar 11 05:18:22 CET 2020


Commit: 1c9829f3518f909936e1410ea582e1f332318970
Author: Campbell Barton
Date:   Wed Mar 11 15:15:06 2020 +1100
Branches: master
https://developer.blender.org/rB1c9829f3518f909936e1410ea582e1f332318970

GHOST: tests now build again

GLX gears work as expected, multitest_c only creates windows
but misses font drawing still.

===================================================================

M	intern/ghost/test/CMakeLists.txt
M	intern/ghost/test/multitest/MultiTest.c
M	intern/ghost/test/multitest/stubs.c

===================================================================

diff --git a/intern/ghost/test/CMakeLists.txt b/intern/ghost/test/CMakeLists.txt
index f97397715bf..2d97489f657 100644
--- a/intern/ghost/test/CMakeLists.txt
+++ b/intern/ghost/test/CMakeLists.txt
@@ -1,16 +1,36 @@
 
+# see "cmake --help-policy CMP0003"
+# So library linking is more sane
 cmake_policy(SET CMP0003 NEW)
+
+# So BUILDINFO and BLENDERPATH strings are automatically quoted
 cmake_policy(SET CMP0005 NEW)
 
-cmake_minimum_required(VERSION 2.8)
+# So syntax problems are errors
+cmake_policy(SET CMP0010 NEW)
+
+# Input directories must have CMakeLists.txt
+cmake_policy(SET CMP0014 NEW)
+
+cmake_minimum_required(VERSION 3.5)
+
+project(GhostMultiTest)
 
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../..//build_files/cmake/Modules")
 
 set(WITH_GUARDEDALLOC ON)
 
+add_executable(datatoc
+  "${CMAKE_SOURCE_DIR}/../../../source/blender/datatoc/datatoc.c")
+
+# Fake the current source dir for includes.
+set(_CMAKE_CURRENT_SOURCE_DIR_INIT "${CMAKE_CURRENT_SOURCE_DIR}")
+
 # -----------------------------------------------------------------------------
 # Macros
 
+# For data_to_c macro.
+# include(../../../build_files/cmake/macros.cmake)
 
 # stub macro, does nothing
 macro(blender_add_lib
@@ -18,6 +38,7 @@ macro(blender_add_lib
   sources
   includes
   includes_sys
+  library_deps # ignored.
   )
 
 endmacro()
@@ -28,10 +49,15 @@ macro(suffix_relpaths
 
   set(${new_files})
   foreach(_file ${files})
-    if(IS_ABSOLUTE _file)
+    if(IS_ABSOLUTE "${_file}")
       list(APPEND ${new_files} ${_file})
     else()
-      list(APPEND ${new_files} "${prefix}${_file}")
+      set(_file_to "${prefix}${_file}")
+      list(APPEND ${new_files} ${_file_to})
+      get_source_file_property(_is_generated ${_file} GENERATED)
+      set_source_files_properties(${_file_to} PROPERTIES GENERATED ${_is_generated})
+      unset(_file_to)
+      unset(_is_generated)
     endif()
   endforeach()
   unset(_file)
@@ -48,11 +74,39 @@ macro(data_to_c
   add_custom_command(
     OUTPUT ${file_to}
     COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
-    COMMAND ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/datatoc ${file_from} ${file_to}
+    COMMAND "$<TARGET_FILE:datatoc>" ${file_from} ${file_to}
     DEPENDS ${file_from} datatoc)
   unset(_file_to_path)
 endmacro()
 
+# same as above but generates the var name and output automatic.
+function(data_to_c_simple
+  file_from
+  list_to_add
+  )
+
+  # remove ../'s
+  get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from}   REALPATH)
+  get_filename_component(_file_to   ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH)
+
+
+  list(APPEND ${list_to_add} ${_file_to})
+  source_group(Generated FILES ${_file_to})
+  list(APPEND ${list_to_add} ${file_from})
+  set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
+
+  get_filename_component(_file_to_path ${_file_to} PATH)
+
+  message(OUTPUT "  ${_file_to}")
+  add_custom_command(
+    OUTPUT  ${_file_to}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
+    COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to}
+    DEPENDS ${_file_from} datatoc)
+
+  set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
+endfunction()
+
 # -----------------------------------------------------------------------------
 # Defines
 
@@ -96,6 +150,13 @@ suffix_relpaths(SRC_NEW "${SRC}" "../../string/")
 include_directories(${INC_NEW})
 add_library(string_lib ${SRC_NEW})
 
+# numaapi (for 'bli_lib')
+include(${CMAKE_SOURCE_DIR}/../../numaapi/CMakeLists.txt)
+suffix_relpaths(INC_NEW "${INC}" "../../numaapi/")
+suffix_relpaths(SRC_NEW "${SRC}" "../../numaapi/")
+include_directories(${INC_NEW})
+add_library(numaapi_lib ${SRC_NEW})
+
 # guardedalloc
 include(${CMAKE_SOURCE_DIR}/../../guardedalloc/CMakeLists.txt)
 suffix_relpaths(INC_NEW "${INC}" "../../guardedalloc/")
@@ -103,6 +164,25 @@ suffix_relpaths(SRC_NEW "${SRC}" "../../guardedalloc/")
 include_directories(${INC_NEW})
 add_library(guardedalloc_lib ${SRC_NEW})
 
+# gpu (used by blenfont)
+add_definitions(-DGPU_STANDALONE)
+set(CMAKE_CURRENT_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../../../source/blender/gpu")
+include(${CMAKE_SOURCE_DIR}/../../../source/blender/gpu/CMakeLists.txt)
+suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/gpu/")
+suffix_relpaths(SRC_NEW "${SRC}" "../../../source/blender/gpu/")
+include_directories(${INC_NEW})
+add_library(gpu_lib ${SRC_NEW})
+set(CMAKE_CURRENT_SOURCE_DIR "${_CMAKE_CURRENT_SOURCE_DIR_INIT}")
+
+# imbuf (used by )
+# set(CMAKE_CURRENT_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../../../source/blender/imbuf")
+# include(${CMAKE_SOURCE_DIR}/../../../source/blender/imbuf/CMakeLists.txt)
+# suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/imbuf/")
+# suffix_relpaths(SRC_NEW "${SRC}" "../../../source/blender/imbuf/")
+# include_directories(${INC_NEW})
+# add_library(imbuf_lib ${SRC_NEW})
+# set(CMAKE_CURRENT_SOURCE_DIR "${_CMAKE_CURRENT_SOURCE_DIR_INIT}")
+
 # blenfont
 include(${CMAKE_SOURCE_DIR}/../../../source/blender/blenfont/CMakeLists.txt)
 suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/blenfont/")
@@ -128,6 +208,10 @@ add_library(glewmx_lib ${SRC_NEW})
 include_directories(
   "../../../source/blender/blenlib"
 )
+
+# Needed for math_matrix.c to avoid eigen_capi.h dep.
+add_definitions(-DMATH_STANDALONE)
+
 add_library(bli_lib
   "../../../source/blender/blenlib/intern/fileops.c"
   "../../../source/blender/blenlib/intern/gsqueue.c"
@@ -136,15 +220,23 @@ add_library(bli_lib
   "../../../source/blender/blenlib/intern/string_utf8.c"
   "../../../source/blender/blenlib/intern/listbase.c"
   "../../../source/blender/blenlib/intern/math_color.c"
+  "../../../source/blender/blenlib/intern/math_geom.c"
+  "../../../source/blender/blenlib/intern/math_matrix.c"
+  "../../../source/blender/blenlib/intern/math_rotation.c"
+  "../../../source/blender/blenlib/intern/math_vector.c"
   "../../../source/blender/blenlib/intern/storage.c"
   "../../../source/blender/blenlib/intern/task.c"
   "../../../source/blender/blenlib/intern/threads.c"
   "../../../source/blender/blenlib/intern/time.c"
   "../../../source/blender/blenlib/intern/path_util.c"
   "../../../source/blender/blenlib/intern/BLI_dynstr.c"
+  "../../../source/blender/blenlib/intern/BLI_ghash.c"
+  "../../../source/blender/blenlib/intern/BLI_ghash_utils.c"
   "../../../source/blender/blenlib/intern/BLI_linklist.c"
   "../../../source/blender/blenlib/intern/BLI_memarena.c"
   "../../../source/blender/blenlib/intern/BLI_mempool.c"
+  "../../../source/blender/blenlib/intern/hash_mm2a.c"
+  "../../../source/blender/blenlib/intern/string_utils.c"
   "../../../source/blender/blenlib/intern/system.c"
 )
 
@@ -190,10 +282,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
 # -----------------------------------------------------------------------------
 # Executables
 
-# DataToC
-add_executable(datatoc
-    ${CMAKE_SOURCE_DIR}/../../../source/blender/datatoc/datatoc.c)
-
 # Gears (C)
 add_executable(gears_c
     ${CMAKE_SOURCE_DIR}/gears/GHOST_C-Test.c)
@@ -224,8 +312,11 @@ target_link_libraries(gears_cpp
 
 # MultiTest (C)
 set(data_to_c_files)
-data_to_c(${CMAKE_SOURCE_DIR}/../../../release/datafiles/bfont.ttf
-          ${CMAKE_CURRENT_BINARY_DIR}/bfont.ttf.c data_to_c_files)
+data_to_c(
+  ${CMAKE_SOURCE_DIR}/../../../release/datafiles/bfont.ttf
+  ${CMAKE_CURRENT_BINARY_DIR}/bfont.ttf.c
+  data_to_c_files
+)
 
 add_executable(multitest_c
   ${CMAKE_SOURCE_DIR}/multitest/Basic.c
@@ -240,16 +331,20 @@ add_executable(multitest_c
 
 
 target_link_libraries(multitest_c
-    blenfont_lib
-    bli_lib
-    ghost_lib
-    glewmx_lib
-    string_lib
-    guardedalloc_lib
-    wcwidth_lib
-    ${OPENGL_gl_LIBRARY}
-    ${FREETYPE_LIBRARY}
-    ${ZLIB_LIBRARIES}
-    ${CMAKE_DL_LIBS}
-    ${PLATFORM_LINKLIBS}
-    )
+  blenfont_lib
+  bli_lib
+  gpu_lib
+  # imbuf_lib
+  ghost_lib
+  bli_lib  # again...
+  glewmx_lib
+  string_lib
+  numaapi_lib
+  guardedalloc_lib
+  wcwidth_lib
+  ${OPENGL_gl_LIBRARY}
+  ${FREETYPE_LIBRARY}
+  ${ZLIB_LIBRARIES}
+  ${CMAKE_DL_LIBS}
+  ${PLATFORM_LINKLIBS}
+)
diff --git a/intern/ghost/test/multitest/MultiTest.c b/intern/ghost/test/multitest/MultiTest.c
index 45ea4afa274..374c7170dc6 100644
--- a/intern/ghost/test/multitest/MultiTest.c
+++ b/intern/ghost/test/multitest/MultiTest.c
@@ -16,6 +16,19 @@
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  */
+
+/* Developers Note:
+ *
+ * This test currently only creates windows and draws a 'dot' under the cursor on LMB,
+ * quits when Q is pressed.
+ *
+ * More work is needed for logging drawing to work properly.
+ *
+ * - Use GPU_matrix API.
+ * - Replace old OpenGL calls to glColor, etc with 'imm' API.
+ * - Investigate BLF font flushing (UI_widgetbase_draw_cache_flush) which is currently disabled.
+ */
+
 #ifdef _MSC_VER
 #  pragma warning(disable : 4244 4305)
 #endif
@@ -25,6 +38,7 @@
 #include <stdio.h>
 #include <math.h>
 
+#include <GL/glew.h>
 #include "GL.h"
 
 #include "MEM_guardedalloc.h"
@@ -32,11 +46,6 @@
 #include "GHOST_C-api.h"
 
 #include "BLF_api.h"
-extern int datatoc_bfont_ttf_size;
-extern char datatoc_bfont_ttf[];
-
-/* cheat */
-char U[1024] = {0};
 
 #include "Util.h"
 #include "Basic.h"
@@ -45,7 +54,13 @@ char U[1024] = {0};
 
 #include "WindowData.h"
 
-/***/
+/* GPU API. */
+#include "GPU_immediate.h"
+#include "GPU_context.h"
+#include "GPU_init_exit.h"
+
+extern int datatoc_bfont_ttf_size;
+extern char datatoc_bfont_ttf[];
 
 typedef struct _LoggerWindow LoggerWindow;
 typedef struct _MultiTestApp MultiTestApp;
@@ -122,6 +137,7 @@ typedef struct {
   MultiTestApp *app;
 
   GHOST_WindowHandle win;
+  GPUContext *gpu_context;
 
   int size[2];
 
@@ -138,6 +154,7 @@ static void mainwindow_log(MainWindow *mw, char *str)
 static void mainwindow_do_draw(MainWindow *mw)
 {
   GHOST_ActivateWindowDrawingContext(mw->win);
+  GPU_context_active_set(mw->gpu_context);
 
   if (mw->lmbut[0]) {
     glClearColor(0.5, 0.5, 0.5, 1);
@@ -158,6 +175,7 @@ static void mainwindow_do_reshape(MainWindow *mw)
   GHOST_RectangleHandle bounds = GHOST_GetClientBounds(mw->win);
 
   GHOST_ActivateWindowDrawingContext(mw->win);
+  GPU_context_active_set(mw-

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list