]> O.S.I.I.S - jp/vkvg.git/commitdiff
cmake cleanup
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 4 Jan 2022 10:07:17 +0000 (11:07 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 4 Jan 2022 10:07:17 +0000 (11:07 +0100)
.gitignore
CMakeLists.txt
vkh

index 48cac0c7baf08adfedbc35170f6715207a6c5c69..83978f678dd8d2879d34c82d65e9f5923079767c 100644 (file)
@@ -1,5 +1,6 @@
 build/
 *.user
+CMakeLists.txt.user.*
 ignore
 .vs/
 *.json
index cc48f3036a49d7d5760397b4ac3a9a4157243a39..72778477b8fbcf990a9a674ae9dafc5e2eb5b0a3 100644 (file)
@@ -4,6 +4,8 @@ SET(LANG "CXX")
 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(
@@ -175,71 +177,47 @@ SET (VKVG_PUBLIC_HEADERS "include/vkvg.h;include/vkvg-nsvg.h")
 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)
@@ -252,7 +230,7 @@ ELSEIF (VKVG_BUILD_OFFSCREEN_TEST)
        )
        TARGET_LINK_LIBRARIES(test_offscreen
                ${Vulkan_LIBRARIES}
-               vkvg_static
+               vkvg
        )
 ENDIF (VKVG_BUILD_TESTS)
 
@@ -305,6 +283,12 @@ IF (VKVG_BUILD_DOCS)
        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}")
 
diff --git a/vkh b/vkh
index 8fdbe5e40018f3b9b7122015bb456757717e9625..eacf8c433edb8b024c4edaa2564ba7dcaadf51a1 160000 (submodule)
--- a/vkh
+++ b/vkh
@@ -1 +1 @@
-Subproject commit 8fdbe5e40018f3b9b7122015bb456757717e9625
+Subproject commit eacf8c433edb8b024c4edaa2564ba7dcaadf51a1