SET(CMAKE_C_STANDARD 11)
SET(CMAKE_CXX_STANDARD 11)
+OPTION (BUILD_SHARED_LIBS "Build using shared libraries" ON)
+
PROJECT(vkvg VERSION 0.3.0 DESCRIPTION "Vulkan Vector Graphic")
ADD_COMPILE_DEFINITIONS(
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)
- SET_TARGET_PROPERTIES(${LibName} PROPERTIES
- OUTPUT_NAME ${PROJECT_NAME}
- VERSION ${vkvg_VERSION_MAJOR}.${vkvg_VERSION_MINOR}
- SOVERSION ${vkvg_VERSION_MAJOR}
- C_STANDARD 11
- #C_EXTENSIONS OFF
- PUBLIC_HEADER "${VKVG_PUBLIC_HEADERS}"
- )
+ADD_LIBRARY("${PROJECT_NAME}" ${VKVG_SRC} ${SHADERS} ${SHADERS_H} )
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME}
+ VERSION ${vkvg_VERSION_MAJOR}.${vkvg_VERSION_MINOR}
+ SOVERSION ${vkvg_VERSION_MAJOR}
+ C_STANDARD 11
+ #C_EXTENSIONS OFF
+ PUBLIC_HEADER "${VKVG_PUBLIC_HEADERS}"
+)
- TARGET_INCLUDE_DIRECTORIES(${LibName} PRIVATE
+TARGET_INCLUDE_DIRECTORIES("${PROJECT_NAME}"
+ 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}>"
+ PUBLIC
${Vulkan_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/include
- ${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/vkh/include
- ${CMAKE_CURRENT_SOURCE_DIR}/vkh/src
- )
- TARGET_LINK_LIBRARIES(${LibName}
+)
+TARGET_LINK_LIBRARIES("${PROJECT_NAME}"
+ PUBLIC
${Vulkan_LIBRARIES}
- vkh_static
- )
- IF (VKVG_USE_FREETYPE)
- TARGET_INCLUDE_DIRECTORIES(${LibName} PRIVATE
- ${FREETYPE_INCLUDE_DIRS}
- )
- TARGET_LINK_LIBRARIES(${LibName}
- ${FREETYPE_LIBRARIES}
- )
- ENDIF ()
- IF (VKVG_USE_HARFBUZZ)
- TARGET_INCLUDE_DIRECTORIES(${LibName} PRIVATE
- ${HarfBuzz_INCLUDE_DIRS}
- )
- TARGET_LINK_LIBRARIES(${LibName}
- ${HarfBuzz_LIBRARIES}
- )
- ENDIF ()
- IF (VKVG_USE_FONTCONFIG)
- TARGET_INCLUDE_DIRECTORIES(${LibName} PRIVATE
- ${Fontconfig_INCLUDE_DIRS}
- )
- TARGET_LINK_LIBRARIES(${LibName}
- ${Fontconfig_LIBRARIES}
- )
- ENDIF ()
-
- INSTALL(TARGETS ${LibName}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-ENDFUNCTION ()
-
-ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKVG_SRC} ${SHADERS} ${SHADERS_H} )
-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")
-
-ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKVG_SRC} ${SHADERS} ${SHADERS_H})
-SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON)
-setup_lib ("${PROJECT_NAME}_shared")
+ vkh
+ "$<$<BOOL:UNIX AND BUILD_SHARED_LIBS>:-lm>"
+ PRIVATE
+ "$<$<BOOL:VKVG_USE_FREETYPE>:${FREETYPE_LIBRARIES}>"
+ "$<$<BOOL:VKVG_USE_HARFBUZZ>:${HarfBuzz_LIBRARIES}>"
+ "$<$<BOOL:VKVG_USE_FONTCONFIG>:${Fontconfig_LIBRARIES}>"
+)
+INSTALL(TARGETS "${PROJECT_NAME}"
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
IF (SHADERS_H)
- ADD_DEPENDENCIES("${PROJECT_NAME}_shared" BuildShadersHeader)
- ADD_DEPENDENCIES("${PROJECT_NAME}_static" BuildShadersHeader)
+ ADD_DEPENDENCIES("${PROJECT_NAME}" BuildShadersHeader)
ENDIF ()
IF (VKVG_BUILD_TESTS)
)
TARGET_LINK_LIBRARIES(test_offscreen
${Vulkan_LIBRARIES}
- vkvg_static
+ vkvg
)
ENDIF (VKVG_BUILD_TESTS)
ENDIF ()
ENDIF (VKVG_BUILD_DOCS)
+IF (BUILD_SHARED_LIBS)
+ MESSAGE(STATUS "Build Shared library.")
+ELSE ()
+ MESSAGE(STATUS "Build Static library.")
+ENDIF ()
+
MESSAGE(STATUS "VKVG version\t\t= ${vkvg_VERSION_MAJOR}.${vkvg_VERSION_MINOR}.${vkvg_VERSION_PATCH}")
MESSAGE(STATUS "comp flags\t\t= ${CMAKE_${LANG}_FLAGS}")