ADD_SUBDIRECTORY (external/glutess)
ENDIF ()
-FILE(GLOB VKVG_SRC src/*.c)
+FILE(GLOB VKVG_OBJ_SRC src/*.c)
SET (VKVG_PUBLIC_HEADERS "include/vkvg.h")
IF (VKVG_SVG)
ELSE()
SET (VKVG_PUBLIC_HEADERS "${VKVG_PUBLIC_HEADERS};include/vkvg-svg.h")
FILE(GLOB NSVG_SRC src/nsvg/*.c)
- LIST (APPEND VKVG_SRC ${NSVG_SRC})
+ LIST (APPEND VKVG_OBJ_SRC ${NSVG_SRC})
ENDIF()
CONFIGURE_FILE(vkvg.pc.in vkvg.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkvg.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
+
FUNCTION (setup_lib LibName)
LIST (APPEND VKVG_TARGETS ${LibName})
GET_DIRECTORY_PROPERTY (vkvg_has_root_project PARENT_DIRECTORY)
+ADD_LIBRARY("${PROJECT_NAME}_obj" OBJECT ${VKVG_OBJ_SRC} ${SHADERS} ${SHADERS_H})
+
+TARGET_INCLUDE_DIRECTORIES("${PROJECT_NAME}_obj"
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}/vkh/src
+ $<$<BOOL:${VKVG_USE_FREETYPE}>:${FREETYPE_INCLUDE_DIRS}>
+ $<$<BOOL:${VKVG_USE_HARFBUZZ}>:${HarfBuzz_INCLUDE_DIRS}>
+ $<$<BOOL:${VKVG_USE_FONTCONFIG}>:${Fontconfig_INCLUDE_DIRS}>
+ $<$<NOT:$<BOOL:${VKVG_SVG}>>:${CMAKE_CURRENT_SOURCE_DIR}/src/nsvg>
+ $<$<BOOL:${VKVG_RECORDING}>:${CMAKE_CURRENT_SOURCE_DIR}/src/recording>
+ $<$<BOOL:${VKVG_USE_GLUTESS}>:${CMAKE_CURRENT_SOURCE_DIR}/external/glutess/include>
+ PUBLIC
+ ${Vulkan_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/vkh/include
+)
+SET_PROPERTY(TARGET "${PROJECT_NAME}_obj" PROPERTY POSITION_INDEPENDENT_CODE ON)
+
IF (vkvg_has_root_project)
IF (VKVG_BUILD_SHARED_LIBS)
- ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKVG_SRC} ${SHADERS} ${SHADERS_H})
+ ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKVG_SRC} $<TARGET_OBJECTS:${PROJECT_NAME}_obj>)
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)
ENDIF()
setup_lib ("${PROJECT_NAME}")
ELSE()
- ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKVG_SRC} ${SHADERS} ${SHADERS_H} )
+ ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKVG_SRC} $<TARGET_OBJECTS:${PROJECT_NAME}_obj>)
SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE OFF)
SET_PROPERTY(TARGET vkh PROPERTY POSITION_INDEPENDENT_CODE OFF)
IF (TARGET glutess)
SET_PROPERTY(TARGET glutess PROPERTY POSITION_INDEPENDENT_CODE ON)
ENDIF()
- ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKVG_SRC} ${SHADERS} ${SHADERS_H})
+ ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKVG_SRC} $<TARGET_OBJECTS:${PROJECT_NAME}_obj>)
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} )
+ ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKVG_SRC} $<TARGET_OBJECTS:${PROJECT_NAME}_obj>)
target_compile_definitions("${PROJECT_NAME}_static" PUBLIC -DVKVG_STATIC_BUILD)
SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE OFF)
setup_lib ("${PROJECT_NAME}_static")
ENDIF()
IF (SHADERS_H)
- FOREACH(VKVG_TARGET IN ${VKVG_TARGETS})
- MESSAGE(STATUS "TARGETS: ${VKVG_TARGET}")
- ADD_DEPENDENCIES("${VKVG_TARGET}" BuildShadersHeader)
- ENDFOREACH()
+ ADD_DEPENDENCIES("${PROJECT_NAME}_obj" BuildShadersHeader)
ENDIF ()
IF (BUILD_SHARED_LIBS)