-CMAKE_MINIMUM_REQUIRED(VERSION 3.21)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.20)
SET(LANG "CXX")
SET(CMAKE_C_STANDARD 11)
SET(CMAKE_BUILD_TYPE Release)
ENDIF()
-IF (UNIX)
- SET(LINKER_FLAGS "-lm")
- SET(CMAKE_EXE_LINKER_FLAGS ${LINKER_FLAGS})
- SET(CMAKE_SHARED_LINKER_FLAGS ${LINKER_FLAGS})
-ENDIF()
+# IF (UNIX)
+# SET(LINKER_FLAGS "-lm")
+# SET(CMAKE_EXE_LINKER_FLAGS ${LINKER_FLAGS})
+# SET(CMAKE_SHARED_LINKER_FLAGS ${LINKER_FLAGS})
+# ENDIF()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
ADD_DEFINITIONS (-DDEBUG)
ADD_DEFINITIONS (-DVKVG_DBG_STATS)
ENDIF ()
-OPTION(VKVG_FILL_NZ_GLUTESS "Fill non-zero with glu tesselator" OFF)
-IF (VKVG_FILL_NZ_GLUTESS)
+OPTION(VKVG_USE_GLUTESS "Fill non-zero with glu tesselator" OFF)
+IF (VKVG_USE_GLUTESS)
ADD_DEFINITIONS (-DVKVG_FILL_NZ_GLUTESS)
ENDIF ()
-OPTION(VKVG_SVG "render svg with vkvg-svg library" ON)
+CMAKE_DEPENDENT_OPTION(VKVG_SVG "render svg with vkvg-svg library" ON "UNIX" OFF)
IF (VKVG_SVG)
ADD_DEFINITIONS (-DVKVG_SVG)
ENDIF ()
OPTION(GIT_SUBMODULE "Check submodules during build" ON)
IF(GIT_SUBMODULE)
updateGitSubmodule(vkh)
- IF (VKVG_FILL_NZ_GLUTESS)
+ IF (VKVG_USE_GLUTESS)
updateGitSubmodule(external/glutess)
ENDIF ()
IF (VKVG_SVG)
CMAKE_DEPENDENT_OPTION(VKVG_LCD_FONT_FILTER "enable freetype lcd font filtering" OFF "VKVG_USE_FONTCONFIG" OFF)
-
IF (ENABLE_DBG_UTILS)
ADD_DEFINITIONS (-DVKVG_DBG_UTILS)
ENDIF ()
#add_definitions( -DDEBUG_VK_PERF=true )
ENDIF()
-IF (VKVG_FILL_NZ_GLUTESS)
+IF (VKVG_USE_GLUTESS)
ADD_SUBDIRECTORY (external/glutess)
ENDIF ()
CONFIGURE_FILE(vkvg.pc.in vkvg.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkvg.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
+add_custom_target(print
+ ${CMAKE_COMMAND} -E echo "$<$<BOOL:${VKVG_USE_FONTCONFIG}>:${Fontconfig_LIBRARIES}>"
+)
+
FUNCTION (setup_lib LibName)
LIST (APPEND VKVG_TARGETS ${LibName})
${CMAKE_CURRENT_SOURCE_DIR}/vkh/include
)
+ get_target_property(libtype "${LibName}" TYPE)
+
+ IF (UNIX AND ($libtype STREQUAL "SHARED_LIBRARY"))
+ TARGET_LINK_LIBRARIES("${LibName}" PUBLIC "-lm")
+ ENDIF()
+
+ IF(VKVG_USE_FREETYPE)
+ #TARGET_INCLUDE_DIRECTORIES("${LibName}" PRIVATE ${FREETYPE_INCLUDE_DIRS})
+ TARGET_LINK_LIBRARIES("${LibName}" PRIVATE ${FREETYPE_LIBRARIES})
+ ENDIF()
+ IF(VKVG_USE_FONTCONFIG)
+ #TARGET_INCLUDE_DIRECTORIES("${LibName}" PRIVATE ${Fontconfig_INCLUDE_DIRS})
+ TARGET_LINK_LIBRARIES("${LibName}" PRIVATE ${Fontconfig_LIBRARIES})
+ ENDIF()
+ IF(VKVG_USE_HARFBUZZ)
+ #TARGET_INCLUDE_DIRECTORIES("${LibName}" PRIVATE ${HarfBuzz_INCLUDE_DIRS})
+ TARGET_LINK_LIBRARIES("${LibName}" PRIVATE ${HarfBuzz_LIBRARIES})
+ ENDIF()
+ IF(VKVG_USE_GLUTESS)
+ TARGET_LINK_LIBRARIES("${LibName}" PRIVATE glutess)
+ ENDIF()
+
TARGET_LINK_LIBRARIES("${LibName}"
PUBLIC
${Vulkan_LIBRARIES}
vkh
- "$<$<BOOL:${UNIX} AND ${VKVG_BUILD_SHARED_LIB}>:-lm>"
- PRIVATE
- "$<$<BOOL:${VKVG_USE_FREETYPE}>:${FREETYPE_LIBRARIES}>"
- "$<$<BOOL:${VKVG_USE_HARFBUZZ}>:${HarfBuzz_LIBRARIES}>"
- "$<$<BOOL:${VKVG_USE_FONTCONFIG}>:${Fontconfig_LIBRARIES}>"
- "$<$<BOOL:${VKVG_FILL_NZ_GLUTESS}>:glutess>"
)
INSTALL(TARGETS "${LibName}"
ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKVG_SRC} ${SHADERS} ${SHADERS_H})
SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE ON)
SET_PROPERTY(TARGET vkh PROPERTY POSITION_INDEPENDENT_CODE ON)
+ TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKVG_SHARED_BUILD)
IF (TARGET glutess)
SET_PROPERTY(TARGET glutess PROPERTY POSITION_INDEPENDENT_CODE ON)
ENDIF()
setup_lib ("${PROJECT_NAME}")
ELSE()
ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKVG_SRC} ${SHADERS} ${SHADERS_H} )
- target_compile_definitions("${PROJECT_NAME}" PUBLIC -DVKVG_STATIC_BUILD)
SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE OFF)
SET_PROPERTY(TARGET vkh PROPERTY POSITION_INDEPENDENT_CODE OFF)
IF (TARGET glutess)
ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKVG_SRC} ${SHADERS} ${SHADERS_H})
SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON)
+ TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}_shared" PUBLIC -DVKVG_SHARED_BUILD)
setup_lib ("${PROJECT_NAME}_shared")
ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKVG_SRC} ${SHADERS} ${SHADERS_H} )
)
TARGET_LINK_LIBRARIES(test_offscreen
${Vulkan_LIBRARIES}
- vkvg
)
+ IF (TARGET vkvg_static)
+ TARGET_LINK_LIBRARIES(${TEST_NAME} PUBLIC vkvg_static)
+ ELSEIF (TARGET vkvg_shared)
+ TARGET_LINK_LIBRARIES(${TEST_NAME} PUBLIC vkvg_shared)
+ ELSEIF (TARGET vkvg)
+ TARGET_LINK_LIBRARIES(${TEST_NAME} PUBLIC vkvg)
+ ENDIF()
ENDIF (VKVG_BUILD_TESTS)
IF (VKVG_BUILD_DOCS)
ELSE ()
MESSAGE(STATUS "Font filtering\t= Grayscale.")
ENDIF ()
-IF (VKVG_FILL_NZ_GLUTESS)
+IF (VKVG_USE_GLUTESS)
MESSAGE(STATUS "Fill NON ZERO\t= glu tessellator.")
ELSE ()
MESSAGE(STATUS "Fill NON ZERO\t= ear clipping.")
FUNCTION (buildtest TEST_FILE)
GET_FILENAME_COMPONENT(TEST_NAME ${TEST_FILE} NAME_WE)
- ADD_EXECUTABLE(${TEST_NAME} ${TEST_FILE})
+ ADD_EXECUTABLE(${TEST_NAME} ${TEST_FILE} $<TARGET_OBJECTS:tests_common>)
+ TARGET_INCLUDE_DIRECTORIES(${TEST_NAME}
+ PRIVATE
+ ${Vulkan_INCLUDE_DIRS}
+ ${GLFW3_INCLUDE_DIR}
+ "${CMAKE_CURRENT_SOURCE_DIR}/../include"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../src"
+ "${CMAKE_CURRENT_SOURCE_DIR}/common"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../vkh/include"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../vkh/src"
+ )
TARGET_LINK_LIBRARIES(${TEST_NAME}
- tests_common
+ PRIVATE
+ ${Vulkan_LIBRARIES}
+ ${GLFW3_LIBRARY}
)
+ IF (TARGET vkvg_static)
+ TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE vkvg_static)
+ ELSEIF (TARGET vkvg_shared)
+ TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE vkvg_shared)
+ ELSEIF (TARGET vkvg)
+ TARGET_LINK_LIBRARIES(${TEST_NAME} PRIVATE vkvg)
+ ENDIF()
+
ENDFUNCTION (buildtest)
-ADD_LIBRARY("tests_common" STATIC common/vkengine.c common/test.c common/rnd.c)
+ADD_LIBRARY(tests_common OBJECT common/vkengine.c common/test.c common/rnd.c)
TARGET_INCLUDE_DIRECTORIES(tests_common
- PUBLIC
- ${Vulkan_INCLUDE_DIRS}
- ${GLFW3_INCLUDE_DIR}
- "${CMAKE_CURRENT_SOURCE_DIR}/../include"
- "${CMAKE_CURRENT_SOURCE_DIR}/../src"
- "${CMAKE_CURRENT_SOURCE_DIR}/common"
- "${CMAKE_CURRENT_SOURCE_DIR}/../vkh/include"
- "${CMAKE_CURRENT_SOURCE_DIR}/../vkh/src"
-)
-TARGET_LINK_LIBRARIES(tests_common
- PUBLIC
- ${Vulkan_LIBRARIES}
- ${GLFW3_LIBRARY}
- $<$<TARGET_EXISTS:vkvg_static>:vkvg_static>
- $<$<TARGET_EXISTS:vkvg>:vkvg>
- $<$<BOOL:${VKVG_SVG}>:vkvg-svg>
+ PRIVATE
+ ${Vulkan_INCLUDE_DIRS}
+ ${GLFW3_INCLUDE_DIR}
+ "${CMAKE_CURRENT_SOURCE_DIR}/../include"
+ #"${CMAKE_CURRENT_SOURCE_DIR}/../src"
+ "${CMAKE_CURRENT_SOURCE_DIR}/common"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../vkh/include"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../vkh/src"
)
file(GLOB_RECURSE DATAS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "data/*")