Skip to content
This repository was archived by the owner on Nov 27, 2025. It is now read-only.

Commit 23d782e

Browse files
committed
docs: add logging, improve code by separating it in pieces
1 parent 645cdba commit 23d782e

File tree

8 files changed

+148
-98
lines changed

8 files changed

+148
-98
lines changed

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ message(" with languages ${CMAKE_PROJECT_LANGUAGES}")
2121
# Sets the location of the .cmake scripts
2222
set(CMAKE_MODULE_PATH
2323
${PROJECT_SOURCE_DIR}/buildscripts
24+
${PROJECT_SOURCE_DIR}/buildscripts/skia
2425
${CMAKE_MODULE_PATH}
2526
)
2627

@@ -37,6 +38,7 @@ include(ModuleSetup)
3738
# Add application code
3839

3940
message("-- Setting application's global include directories")
41+
message(" (tell C++ where to find the files in the project)")
4042
include_directories(
4143
${PROJECT_BINARY_DIR}
4244
${CMAKE_CURRENT_BINARY_DIR}
@@ -46,12 +48,15 @@ include_directories(
4648
${PROJECT_SOURCE_DIR}/thirdparty/skia/skia
4749
)
4850

51+
message("")
4952
message("-- Adding subdirectory: thirdparty")
5053
add_subdirectory(thirdparty)
5154

55+
message("")
5256
message("-- Adding subdirectory: src")
5357
add_subdirectory(src)
5458

59+
message("")
5560
message("-- Adding subdirectory: app")
5661
add_subdirectory(app)
5762

app/CMakeLists.txt

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,8 @@
11
message("-- Creating main executable with target name ${CMAKE_PROJECT_NAME}")
22
add_executable(${CMAKE_PROJECT_NAME} main.cpp)
33

4-
if(WIN32)
5-
set(SKIA_LIBRARIES
6-
skia
7-
user32
8-
opengl32)
9-
add_definitions(-DSKIA_DLL)
10-
else()
11-
if(APPLE)
12-
set(SKIA_LIBRARIES skia)
13-
else()
14-
set(SKIA_LIBRARIES skia.friction)
15-
endif()
16-
endif()
4+
message(" finding where Skia shared library is")
5+
include(FindSkiaSystem)
176

187
set(EXECUTABLE_LIBRARIES
198
${APP_DEPENDENCIES}

app/main.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#include <iostream>
2+
13
#include <glad/glad.h>
24
#include <GLFW/glfw3.h>
35

@@ -6,13 +8,21 @@
68
#include "ExampleCanvas.h"
79

810
int main(int argc, char *argv[]) {
11+
std::cout << "- Hello!" << std::endl;
12+
13+
std::cout << "- Initializing GLFW library..." << std::endl;
914
GLUtil::initializeGLFW();
1015

16+
std::cout << "- Create blank OpenGL Window" << std::endl;
17+
std::cout << " for GPU rendering" << std::endl;
1118
GLWindow window;
1219

20+
std::cout << "- Create and bind Skia to the GLWindow" << std::endl;
21+
std::cout << " and draw stuff" << std::endl;
1322
auto canvas = ExampleCanvas(&window);
1423

15-
// We don't want the app to immediately close after running
24+
std::cout << "- Running application loop" << std::endl;
25+
std::cout << " we don't want the app to immediately close after running" << std::endl;
1626
return window.run();
1727
}
1828

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
message("-- Generated shared library")
2+
message(" from target Engine")
3+
message(" in ${SKIA_BUILD_DIR}/libskia.friction.so")
4+
message("-- Moving libskia.friction.so")
5+
message(" to ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
6+
7+
file(COPY ${SKIA_BUILD_DIR}/libskia.friction.so
8+
DESTINATION ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Finds where Skia shared library is depending on the operating system
2+
# SKIA_LIBRARIES: Which libraries to link to
3+
4+
if(WIN32)
5+
set(SKIA_LIBRARIES
6+
skia
7+
user32
8+
opengl32)
9+
add_definitions(-DSKIA_DLL)
10+
else()
11+
if(APPLE)
12+
set(SKIA_LIBRARIES skia)
13+
else()
14+
set(SKIA_LIBRARIES skia.friction)
15+
endif()
16+
endif()
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Sets up the following IMPORTANT skia variables:
2+
# GN_PATH: Absolute path to 'gn' utility, which builds skia
3+
# SKIA_ARGS: Arguments passed to 'gn --args'
4+
# SKIA_ARGS_EXTRA: Same as SKIA_ARGS but with extra commands
5+
# SKIA_BUILD_CMD: Arguments passed to 'BUILD_COMMAND' in ExternalProject
6+
# SKIA_UPDATE_CMD: Arguments passed to 'UDPATE_COMMAND' in ExternalProject
7+
# USE_SKIA_SYSTEM_LIBS: Whether to search for Skia's dependencies in the system
8+
#
9+
10+
if(APPLE)
11+
set(USE_SKIA_SYSTEM_LIBS OFF)
12+
endif()
13+
14+
if(${USE_SKIA_SYSTEM_LIBS} AND UNIX)
15+
set(SKIA_ENABLE_EXTERNAL "true")
16+
else()
17+
set(SKIA_ENABLE_EXTERNAL "false")
18+
endif()
19+
20+
if(WIN32)
21+
set(GN_PATH ${SKIA_SRC}/bin/gn.exe)
22+
set(SKIA_ARGS_EXTRA --ide=vs)
23+
set(SKIA_BUILD_CMD msbuild all.sln)
24+
if(${SYNC_SKIA_DEPS})
25+
set(SKIA_UPDATE_CMD python.exe "tools\\git-sync-deps")
26+
else()
27+
set(SKIA_UPDATE_CMD :)
28+
endif()
29+
set(SKIA_ARGS "target_os=\"windows\" host_os=\"win\" current_os=\"win\" target_cpu=\"x64\" is_component_build=true")
30+
set(SKIA_ARGS "${SKIA_ARGS} clang_win=\"C:\\Program Files\\LLVM\" cc=\"clang-cl\" cxx=\"clang-cl\"")
31+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\",\"/MD\",\"/O2\"]")
32+
else()
33+
set(GN_PATH ${SKIA_SRC}/bin/gn)
34+
set(SKIA_BUILD_CMD ninja -j${N})
35+
if(${USE_SKIA_SYSTEM_LIBS})
36+
set(SKIA_UPDATE_CMD true)
37+
else()
38+
if(${SYNC_SKIA_DEPS})
39+
set(SKIA_UPDATE_CMD python3 "tools/git-sync-deps")
40+
else()
41+
set(SKIA_UPDATE_CMD true)
42+
endif()
43+
endif()
44+
set(SKIA_ARGS "ar=\"${CMAKE_AR}\" cc=\"${CMAKE_C_COMPILER}\" cxx=\"${CMAKE_CXX_COMPILER}\"")
45+
if(UNIX AND NOT APPLE)
46+
if(${USE_EGL})
47+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_egl=true")
48+
endif()
49+
set(SKIA_ARGS "${SKIA_ARGS} is_component_build=true")
50+
if (${LINUX_DEPLOY})
51+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\"]")
52+
else()
53+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\", \"-Wno-psabi\"]")
54+
endif()
55+
endif()
56+
if(APPLE)
57+
set(GN_PATH ${SKIA_SRC}/bin/macOS/gn-${CMAKE_HOST_SYSTEM_PROCESSOR})
58+
set(SKIA_UPDATE_CMD python3 "tools/git-sync-deps")
59+
set(SKIA_ARGS "${SKIA_ARGS} target_cpu=\"${CMAKE_HOST_SYSTEM_PROCESSOR}\"")
60+
if(${MAC_DEPLOY})
61+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\", \"-Wno-psabi\", \"-mmacosx-version-min=12.7\"]")
62+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags_cc=[\"-frtti\", \"-mmacosx-version-min=12.7\"]")
63+
else()
64+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\", \"-Wno-psabi\"]")
65+
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags_cc=[\"-frtti\"]")
66+
endif()
67+
endif()
68+
endif()
69+
70+
set(SKIA_ARGS "${SKIA_ARGS} is_official_build=true is_debug=false")
71+
set(SKIA_ARGS "${SKIA_ARGS} skia_enable_pdf=false skia_enable_skottie=false skia_enable_tools=false skia_use_dng_sdk=false")
72+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_expat=${SKIA_ENABLE_EXTERNAL}")
73+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_libjpeg_turbo=${SKIA_ENABLE_EXTERNAL}")
74+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_libpng=${SKIA_ENABLE_EXTERNAL}")
75+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_libwebp=${SKIA_ENABLE_EXTERNAL}")
76+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_icu=${SKIA_ENABLE_EXTERNAL}")
77+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_harfbuzz=${SKIA_ENABLE_EXTERNAL}")
78+
if(WIN32 OR NOT ${USE_SKIA_SYSTEM_LIBS})
79+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_zlib=${SKIA_ENABLE_EXTERNAL}")
80+
endif()
81+
if(UNIX AND NOT APPLE)
82+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_freetype2=${SKIA_ENABLE_EXTERNAL}")
83+
endif()
84+
if(APPLE)
85+
set(SKIA_ARGS "${SKIA_ARGS} skia_use_libgifcodec=false")
86+
endif()

src/GLWindow.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ int GLWindow::run() {
6363

6464
return 0;
6565
};
66+
6667
void GLWindow::createGLWindow() {
6768
auto *window = glfwCreateWindow(
6869
width(),
@@ -83,10 +84,12 @@ void GLWindow::createGLWindow() {
8384

8485
m_glfwWindow = window;
8586
};
87+
8688
// Resize the GL Viewport when resizing the window
8789
void onResize(GLFWwindow *window, int width, int height) {
8890
glViewport(0, 0, width, height);
8991
};
92+
9093
void GLWindow::attachEvents(GLFWwindow *window) {
9194
// Attatch resize window event
9295
glfwSetFramebufferSizeCallback(m_glfwWindow, onResize);

thirdparty/skia/CMakeLists.txt

Lines changed: 17 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@
1919

2020
cmake_minimum_required(VERSION 3.12)
2121

22+
message("")
23+
message("-- Hello Skia!")
24+
2225
include(ExternalProject)
2326
include(ProcessorCount)
2427

2528
ProcessorCount(N)
2629

30+
2731
option(USE_SKIA_SYSTEM_LIBS "Use skia (third-party) system libraries on Linux" ON)
2832
option(LINUX_DEPLOY "Linux Deploy" OFF)
2933
option(MAC_DEPLOY "Mac Deploy" OFF)
@@ -35,87 +39,20 @@ endif()
3539

3640
set(SKIA_SRC "${CMAKE_CURRENT_SOURCE_DIR}/skia")
3741
set(SKIA_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/skia")
42+
message("-- SKIA_SRC: ${SKIA_SRC}")
43+
message("-- SKIA_BUILD_DIR: ${SKIA_BUILD_DIR}")
3844

39-
if(APPLE)
40-
set(USE_SKIA_SYSTEM_LIBS OFF)
41-
endif()
42-
43-
if(${USE_SKIA_SYSTEM_LIBS} AND UNIX)
44-
set(SKIA_ENABLE_EXTERNAL "true")
45-
else()
46-
set(SKIA_ENABLE_EXTERNAL "false")
47-
endif()
48-
49-
if(WIN32)
50-
set(GN_PATH ${SKIA_SRC}/bin/gn.exe)
51-
set(SKIA_ARGS_EXTRA --ide=vs)
52-
set(SKIA_BUILD_CMD msbuild all.sln)
53-
if(${SYNC_SKIA_DEPS})
54-
set(SKIA_UPDATE_CMD python.exe "tools\\git-sync-deps")
55-
else()
56-
set(SKIA_UPDATE_CMD :)
57-
endif()
58-
set(SKIA_ARGS "target_os=\"windows\" host_os=\"win\" current_os=\"win\" target_cpu=\"x64\" is_component_build=true")
59-
set(SKIA_ARGS "${SKIA_ARGS} clang_win=\"C:\\Program Files\\LLVM\" cc=\"clang-cl\" cxx=\"clang-cl\"")
60-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\",\"/MD\",\"/O2\"]")
61-
else()
62-
set(GN_PATH ${SKIA_SRC}/bin/gn)
63-
set(SKIA_BUILD_CMD ninja -j${N})
64-
if(${USE_SKIA_SYSTEM_LIBS})
65-
set(SKIA_UPDATE_CMD true)
66-
else()
67-
if(${SYNC_SKIA_DEPS})
68-
set(SKIA_UPDATE_CMD python3 "tools/git-sync-deps")
69-
else()
70-
set(SKIA_UPDATE_CMD true)
71-
endif()
72-
endif()
73-
set(SKIA_ARGS "ar=\"${CMAKE_AR}\" cc=\"${CMAKE_C_COMPILER}\" cxx=\"${CMAKE_CXX_COMPILER}\"")
74-
if(UNIX AND NOT APPLE)
75-
if(${USE_EGL})
76-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_egl=true")
77-
endif()
78-
set(SKIA_ARGS "${SKIA_ARGS} is_component_build=true")
79-
if (${LINUX_DEPLOY})
80-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\"]")
81-
else()
82-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\", \"-Wno-psabi\"]")
83-
endif()
84-
endif()
85-
if(APPLE)
86-
set(GN_PATH ${SKIA_SRC}/bin/macOS/gn-${CMAKE_HOST_SYSTEM_PROCESSOR})
87-
set(SKIA_UPDATE_CMD python3 "tools/git-sync-deps")
88-
set(SKIA_ARGS "${SKIA_ARGS} target_cpu=\"${CMAKE_HOST_SYSTEM_PROCESSOR}\"")
89-
if(${MAC_DEPLOY})
90-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\", \"-Wno-psabi\", \"-mmacosx-version-min=12.7\"]")
91-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags_cc=[\"-frtti\", \"-mmacosx-version-min=12.7\"]")
92-
else()
93-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags=[\"-Wno-error\", \"-Wno-psabi\"]")
94-
set(SKIA_ARGS "${SKIA_ARGS} extra_cflags_cc=[\"-frtti\"]")
95-
endif()
96-
endif()
97-
endif()
9845

99-
set(SKIA_ARGS "${SKIA_ARGS} is_official_build=true is_debug=false")
100-
set(SKIA_ARGS "${SKIA_ARGS} skia_enable_pdf=false skia_enable_skottie=false skia_enable_tools=false skia_use_dng_sdk=false")
101-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_expat=${SKIA_ENABLE_EXTERNAL}")
102-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_libjpeg_turbo=${SKIA_ENABLE_EXTERNAL}")
103-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_libpng=${SKIA_ENABLE_EXTERNAL}")
104-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_libwebp=${SKIA_ENABLE_EXTERNAL}")
105-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_icu=${SKIA_ENABLE_EXTERNAL}")
106-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_harfbuzz=${SKIA_ENABLE_EXTERNAL}")
107-
if(WIN32 OR NOT ${USE_SKIA_SYSTEM_LIBS})
108-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_zlib=${SKIA_ENABLE_EXTERNAL}")
109-
endif()
110-
if(UNIX AND NOT APPLE)
111-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_system_freetype2=${SKIA_ENABLE_EXTERNAL}")
112-
endif()
113-
if(APPLE)
114-
set(SKIA_ARGS "${SKIA_ARGS} skia_use_libgifcodec=false")
115-
endif()
46+
message("-- Setting up variables to pass to ExternalProject_Add")
47+
include(SetupSkiaVariables)
48+
message(" source code directory: ${SKIA_SRC}")
49+
message(" build directory: ${SKIA_BUILD_DIR}")
50+
message(" update command: ${SKIA_UPDATE_CMD}")
51+
message(" build command: ${SKIA_BUILD_CMD}")
52+
message(" skia argumentss: ${SKIA_ARGS}")
11653

117-
message("-- skia args: ${SKIA_ARGS}")
11854

55+
message("-- Building skia as ExternalProject Engine")
11956
ExternalProject_Add(
12057
Engine
12158
SOURCE_DIR ${SKIA_SRC}
@@ -131,16 +68,12 @@ ExternalProject_Add(
13168
USES_TERMINAL_BUILD true
13269
)
13370

71+
13472
if(UNIX AND NOT APPLE)
135-
include(GNUInstallDirs)
136-
install(
137-
FILES
138-
${SKIA_BUILD_DIR}/libskia.friction.so
139-
DESTINATION
140-
${CMAKE_INSTALL_LIBDIR}
141-
)
73+
#include(CopySkiaLibraryToInstallDir)
14274
endif()
14375

76+
14477
if(WIN32)
14578
add_custom_command(TARGET Engine POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${SKIA_BUILD_DIR}/skia.dll.lib ${SKIA_BUILD_DIR}/skia.lib)
14679
endif()

0 commit comments

Comments
 (0)