Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the CMakeLists.txt of tgfx. #118

Merged
merged 1 commit into from
Feb 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

232 changes: 59 additions & 173 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ elseif (MACOS)
set(PAG_BUILD_TESTS ON CACHE BOOL "Build libpag tests" FORCE)
endif ()

message("PAG_USE_LIBAVC: ${PAG_USE_LIBAVC}")
message("PAG_USE_RTTR: ${PAG_USE_RTTR}")
message("PAG_BUILD_SHARED: ${PAG_BUILD_SHARED}")
message("PAG_BUILD_TESTS: ${PAG_BUILD_TESTS}")

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
cmake_policy(SET CMP0063 NEW)
Expand All @@ -72,32 +77,23 @@ endif (MSVC)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDEBUG)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -g -O1")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -g -O1")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fPIE -g -O1")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=nullability -g -O1")
endif ()

# collects pag include directories.
set(PAG_INCLUDES ./ include src tgfx/include tgfx/src)
set(PAG_INCLUDES ./ include src)

# collects pag source files.
file(GLOB_RECURSE PAG_FILES
src/base/*.*
src/codec/*.*
src/rendering/*.*
tgfx/src/core/utils/*.*
tgfx/src/gpu/gradients/*.*)
src/rendering/*.*)

if (NOT WEB)
file(GLOB PAG_VIDEO_FILES src/video/*.*)
list(APPEND PAG_FILES ${PAG_VIDEO_FILES})
endif ()
file(GLOB PAG_COMMON_FILES
src/platform/*.*
tgfx/src/core/*.*
tgfx/src/core/images/*.*
tgfx/src/core/vectors/*.*
tgfx/src/gpu/*.*
tgfx/src/platform/*.*)

file(GLOB PAG_COMMON_FILES src/platform/*.*)
list(APPEND PAG_FILES ${PAG_COMMON_FILES})

if (PAG_USE_QT)
Expand All @@ -110,93 +106,20 @@ else ()
set(USE_NATIVE_PLATFORM ON)
endif ()

if (PAG_USE_FREETYPE)
# Freetype needs libpng
set(PAG_USE_PNG_DECODE ON)
endif ()

if (PAG_USE_PNG_DECODE)
add_definitions(-DTGFX_USE_PNG_DECODE)
set(PAG_USE_PNG ON)
endif ()

if (PAG_USE_PNG_ENCODE)
add_definitions(-DTGFX_USE_PNG_ENCODE)
set(PAG_USE_PNG ON)
endif ()

if (PAG_USE_PNG)
set(PAG_USE_ZLIB ON)
endif ()

if (PAG_USE_JPEG_DECODE)
add_definitions(-DTGFX_USE_JPEG_DECODE)
set(PAG_USE_JPEG ON)
endif ()

if (PAG_USE_JPEG_ENCODE)
add_definitions(-DTGFX_USE_JPEG_ENCODE)
set(PAG_USE_JPEG ON)
endif ()

if (PAG_USE_WEBP_DECODE)
add_definitions(-DTGFX_USE_WEBP_DECODE)
set(PAG_USE_WEBP ON)
endif ()

if (PAG_USE_WEBP_ENCODE)
add_definitions(-DTGFX_USE_WEBP_ENCODE)
set(PAG_USE_WEBP ON)
endif ()

if (PAG_USE_OPENGL)
file(GLOB GFX_PLATFORM_FILES tgfx/src/gpu/opengl/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
endif ()

if (PAG_USE_FREETYPE)
add_definitions(-DTGFX_USE_FREETYPE)
list(APPEND PAG_STATIC_VENDORS freetype)
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/core/vectors/freetype/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
list(APPEND PAG_INCLUDES third_party/freetype/include)
elseif (WEB)
add_definitions(-DTGFX_BUILD_FOR_WEB)
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/core/vectors/web/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
elseif (APPLE)
# Uses CoreGraphics instead.
add_definitions(-DTGFX_USE_CORE_GRAPHICS)
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/core/vectors/coregraphics/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
endif ()

if (PAG_USE_JPEG)
list(APPEND PAG_STATIC_VENDORS libjpeg-turbo)
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/core/images/jpeg/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
list(APPEND PAG_INCLUDES third_party/out/libjpeg-turbo/${INCLUDE_ENTRY})
endif ()

if (PAG_USE_WEBP)
list(APPEND PAG_STATIC_VENDORS libwebp)
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/core/images/webp/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
list(APPEND PAG_INCLUDES third_party/libwebp/src)
endif ()

if (PAG_USE_PNG)
list(APPEND PAG_STATIC_VENDORS libpng)
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/core/images/png/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
list(APPEND PAG_INCLUDES third_party/out/libpng/${INCLUDE_ENTRY})
endif ()

if (PAG_USE_ZLIB)
if (NOT ANDROID)
list(APPEND PAG_STATIC_VENDORS zlib)
endif ()
endif ()
set(TGFX_USE_OPENGL ${PAG_USE_OPENGL})
set(TGFX_USE_QT ${PAG_USE_QT})
set(TGFX_USE_SWIFTSHADER ${PAG_USE_SWIFTSHADER})
set(TGFX_USE_FREETYPE ${PAG_USE_FREETYPE})
set(TGFX_USE_PNG_DECODE ${PAG_USE_PNG_DECODE})
set(TGFX_USE_PNG_ENCODE ${PAG_USE_PNG_ENCODE})
set(TGFX_USE_JPEG_DECODE ${PAG_USE_JPEG_DECODE})
set(TGFX_USE_JPEG_ENCODE ${PAG_USE_JPEG_ENCODE})
set(TGFX_USE_WEBP_DECODE ${PAG_USE_WEBP_DECODE})
set(TGFX_USE_WEBP_ENCODE ${PAG_USE_WEBP_ENCODE})

set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
add_subdirectory(tgfx/ EXCLUDE_FROM_ALL)
list(APPEND PAG_INCLUDES tgfx/include tgfx/src)

if (PAG_USE_LIBAVC)
add_definitions(-DPAG_USE_LIBAVC)
Expand All @@ -216,14 +139,10 @@ if (PAG_USE_QT)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${Qt5OpenGL_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
list(APPEND PAG_PLATFORM_INCLUDES ${Qt5OpenGL_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Quick_INCLUDE_DIRS})
file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/qt/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/qt/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
elseif (PAG_USE_SWIFTSHADER)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${SWIFTSHADER_LIBRARIES})
list(APPEND PAG_PLATFORM_INCLUDES ${SWIFTSHADER_INCLUDE_DIRS})
file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/swiftshader/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/egl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
endif ()

if (PAG_USE_RTTR)
Expand All @@ -242,17 +161,10 @@ function(find_include_dirs out)
set(${out} ${include_dirs} PARENT_SCOPE)
endfunction()

list(APPEND PAG_STATIC_VENDORS pathkit)
list(APPEND PAG_INCLUDES third_party/pathkit)
list(APPEND PAG_STATIC_VENDORS skcms)
list(APPEND PAG_INCLUDES third_party/skcms)

if (WEB)
add_definitions(-DPAG_BUILD_FOR_WEB)
if (USE_NATIVE_PLATFORM)
file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/web/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/webgl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
endif ()
elseif (IOS)
# finds all required platform libraries.
Expand All @@ -279,22 +191,18 @@ elseif (IOS)
find_library(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${ICONV_LIBRARIES})

if (PAG_USE_OPENGL)
find_library(OpenGLES_LIBS OpenGLES REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${OpenGLES_LIBS})
add_definitions(-DGL_SILENCE_DEPRECATION)
else ()
# Uses Metal instead.
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/gpu/metal/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
find_library(Metal_LIBS Metal REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${Metal_LIBS})
endif ()

if (USE_NATIVE_PLATFORM)
if (PAG_USE_OPENGL)
find_library(OpenGLES_LIBS OpenGLES REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${OpenGLES_LIBS})
add_definitions(-DGL_SILENCE_DEPRECATION)
elseif (USE_NATIVE_PLATFORM)
# Uses Metal instead.
find_library(Metal_LIBS Metal REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${Metal_LIBS})
endif ()

file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/ios/*.* src/platform/cocoa/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/eagl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
find_include_dirs(IOS_PLATFORM_INCLUDES
src/platform/ios/*.h
src/platform/ios/private/*.h
Expand All @@ -319,20 +227,18 @@ elseif (MACOS)
find_library(CORE_MEDIA CoreMedia)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${CORE_MEDIA})

if (PAG_USE_OPENGL)
find_library(OpenGL_LIBS OpenGL REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${OpenGL_LIBS})
add_definitions(-DGL_SILENCE_DEPRECATION)
else ()
# Uses Metal instead.
file(GLOB_RECURSE GFX_PLATFORM_FILES tgfx/src/gpu/metal/*.*)
list(APPEND PAG_FILES ${GFX_PLATFORM_FILES})
endif ()

if (USE_NATIVE_PLATFORM)
if (PAG_USE_OPENGL)
find_library(OpenGL_LIBS OpenGL REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${OpenGL_LIBS})
add_definitions(-DGL_SILENCE_DEPRECATION)
elseif (USE_NATIVE_PLATFORM)
# Uses Metal instead.
find_library(Metal_LIBS Metal REQUIRED)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${Metal_LIBS})
endif ()

file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/mac/*.* src/platform/cocoa/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/cgl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
find_include_dirs(MAC_PLATFORM_INCLUDES
src/platform/mac/*.h
src/platform/mac/private/*.h
Expand All @@ -341,44 +247,34 @@ elseif (MACOS)
list(APPEND PAG_PLATFORM_INCLUDES ${MAC_PLATFORM_INCLUDES})
endif ()
elseif (ANDROID)

# finds all required platform libraries.
find_library(LOG_LIB log)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${LOG_LIB})
find_library(GLESV2_LIB GLESv2)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${GLESV2_LIB})
find_library(EGL_LIB EGL)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${EGL_LIB})
find_library(ANDROID_LIB android)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${ANDROID_LIB})
find_library(JNIGRAPHICS_LIB jnigraphics)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${JNIGRAPHICS_LIB})
if (PAG_USE_ZLIB)
find_library(Z_LIB z)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${Z_LIB})
endif ()

# optimizes the output size
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/android/libpag/export.def")
add_compile_options(-ffunction-sections -fdata-sections -Os -fno-exceptions -fno-rtti)

if (USE_NATIVE_PLATFORM)
find_library(GLESV2_LIB GLESv2)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${GLESV2_LIB})
find_library(EGL_LIB EGL)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${EGL_LIB})
file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/android/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/egl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
endif ()
elseif (WIN32)
set(BUILD_USE_64BITS ON)
add_definitions(-DNOMINMAX -D_USE_MATH_DEFINES)

if (USE_NATIVE_PLATFORM)
list(APPEND PAG_PLATFORM_INCLUDES vendor/angle/include)
file(GLOB ANGLE_LIBS vendor/angle/${PLATFORM}/${ARCH}/*${CMAKE_STATIC_LIBRARY_SUFFIX})
list(APPEND PAG_PLATFORM_SHARED_LIBS ${ANGLE_LIBS})
file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/win/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/egl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
endif ()
file(GLOB ANGLE_LIBS vendor/angle/${PLATFORM}/${ARCH}/*${CMAKE_STATIC_LIBRARY_SUFFIX})
list(APPEND PAG_PLATFORM_STATIC_LIBS ${ANGLE_LIBS})
find_library(Bcrypt_LIB Bcrypt)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${Bcrypt_LIB})
find_library(ws2_32_LIB ws2_32)
Expand All @@ -390,45 +286,35 @@ elseif (CMAKE_HOST_SYSTEM_NAME MATCHES "Linux")
list(APPEND PAG_PLATFORM_SHARED_LIBS dl)
add_compile_options(-fPIC -pthread)
if (USE_NATIVE_PLATFORM)
find_library(GLESV2_LIB GLESv2)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${GLESV2_LIB})
find_library(EGL_LIB EGL)
list(APPEND PAG_PLATFORM_SHARED_LIBS ${EGL_LIB})
file(GLOB_RECURSE PAG_PLATFORM_FILES src/platform/linux/*.*)
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/egl/*.*)
list(APPEND PAG_PLATFORM_FILES ${GL_PLATFORM_FILES})
endif ()
endif ()

add_vendor_target(PAG STATIC_VENDORS ${PAG_STATIC_VENDORS} SHARED_VENDORS ${PAG_SHARED_VENDORS})
list(APPEND PAG_PLATFORM_STATIC_LIBS ${PAG_VENDOR_STATIC_LIBRARIES})
list(APPEND PAG_PLATFORM_SHARED_LIBS ${PAG_VENDOR_SHARED_LIBRARIES})

if (WEB)
file(GLOB_RECURSE TGFX_PLATFORM_FILES tgfx/src/platform/web/*.*)
elseif (IOS OR MACOS)
file(GLOB_RECURSE TGFX_PLATFORM_FILES tgfx/src/platform/apple/*.*)
elseif (ANDROID)
file(GLOB_RECURSE TGFX_PLATFORM_FILES tgfx/src/platform/android/*.*)
else ()
file(GLOB_RECURSE TGFX_PLATFORM_FILES tgfx/src/platform/mock/*.*)
endif ()

if (PAG_BUILD_SHARED)
add_library(pag SHARED ${PAG_VENDOR_TARGET} ${PAG_FILES} ${PAG_PLATFORM_FILES} ${TGFX_PLATFORM_FILES})
add_library(pag SHARED ${PAG_VENDOR_TARGET} ${PAG_FILES} ${PAG_PLATFORM_FILES})
target_compile_definitions(pag PUBLIC PAG_DLL)
target_include_directories(pag PUBLIC ${PAG_INCLUDES} ${PAG_PLATFORM_INCLUDES})
target_link_libraries(pag ${PAG_PLATFORM_STATIC_LIBS} ${PAG_PLATFORM_SHARED_LIBS})
target_link_libraries(pag ${PAG_PLATFORM_STATIC_LIBS} $<TARGET_FILE:tgfx> ${PAG_PLATFORM_SHARED_LIBS})
else ()
add_library(pag STATIC ${PAG_VENDOR_TARGET} ${PAG_FILES} ${PAG_PLATFORM_FILES} ${TGFX_PLATFORM_FILES})
merge_libraries_into(pag ${PAG_PLATFORM_STATIC_LIBS})
add_library(pag STATIC ${PAG_VENDOR_TARGET} ${PAG_FILES} ${PAG_PLATFORM_FILES})
merge_libraries_into(pag ${PAG_PLATFORM_STATIC_LIBS} $<TARGET_FILE:tgfx>)
target_include_directories(pag PUBLIC ${PAG_INCLUDES} ${PAG_PLATFORM_INCLUDES})
target_link_libraries(pag)
endif ()

if (PAG_BUILD_TESTS)
file(GLOB_RECURSE SWIFTSHADER_PLATFORM_FILES src/platform/swiftshader/*.*)
list(APPEND SWIFTSHADER_PLATFORM_FILES ${TGFX_PLATFORM_FILES})
file(GLOB GL_PLATFORM_FILES tgfx/src/gpu/opengl/egl/*.*)
list(APPEND SWIFTSHADER_PLATFORM_FILES ${GL_PLATFORM_FILES})
add_library(pag-ss STATIC ${PAG_VENDOR_TARGET} ${PAG_FILES} ${SWIFTSHADER_PLATFORM_FILES})
merge_libraries_into(pag-ss ${PAG_PLATFORM_STATIC_LIBS})
merge_libraries_into(pag-ss ${PAG_PLATFORM_STATIC_LIBS} $<TARGET_FILE:tgfx-ss>)
target_include_directories(pag-ss PUBLIC ${PAG_INCLUDES} ${SWIFTSHADER_INCLUDE_DIRS})
target_link_libraries(pag-ss)

Expand Down
2 changes: 1 addition & 1 deletion DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"common": [
{
"url": "${PAG_GROUP}/vendor_tools.git",
"commit": "9b28c43638b358c05a0a9c26042390e86d1a213d",
"commit": "00907e189429712aafe57da2d937e369f1e9ea84",
"dir": "vendor_tools"
},
{
Expand Down
Loading