CMAKE_MINIMUM_REQUIRED(VERSION 3.21)
-OPTION (BUILD_SHARED_LIBS "Build using shared libraries" ON)
+OPTION (VKH_BUILD_SHARED_LIB "Build using shared libraries" OFF)
OPTION(VKH_ENABLE_VMA "enable Vulkan Memory Allocator" ON)
if (VKH_ENABLE_VMA)
INCLUDE(GNUInstallDirs)
-FILE(GLOB sources src/*.c)
+FILE(GLOB VKH_SRC src/*.c)
if (VKH_ENABLE_VMA)
- LIST(APPEND sources src/VmaUsage.cpp)
+ LIST(APPEND VKH_SRC src/VmaUsage.cpp)
ENDIF()
CONFIGURE_FILE(vkh.pc.in vkh.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkh.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
-ADD_LIBRARY("${PROJECT_NAME}" ${sources})
-
-SET_TARGET_PROPERTIES("${PROJECT_NAME}" PROPERTIES
- OUTPUT_NAME ${PROJECT_NAME}
- VERSION ${PROJECT_VERSION}
- SOVERSION 1
- C_STANDARD 11
- C_EXTENSIONS OFF
- PUBLIC_HEADER include/vkh.h
-)
-TARGET_INCLUDE_DIRECTORIES("${PROJECT_NAME}"
- PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}/include
- ${Vulkan_INCLUDE_DIRS}
-)
-TARGET_LINK_LIBRARIES("${PROJECT_NAME}"
- PUBLIC
- ${Vulkan_LIBRARIES}
-)
-INSTALL(TARGETS "${PROJECT_NAME}"
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+FUNCTION (setup_lib LibName)
+ SET_TARGET_PROPERTIES("${LibName}" PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME}
+ VERSION ${PROJECT_VERSION}
+ SOVERSION 1
+ C_STANDARD 11
+ C_EXTENSIONS OFF
+ PUBLIC_HEADER include/vkh.h
+ )
+ TARGET_INCLUDE_DIRECTORIES("${LibName}"
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${Vulkan_INCLUDE_DIRS}
+ )
+ TARGET_LINK_LIBRARIES("${LibName}"
+ PUBLIC
+ ${Vulkan_LIBRARIES}
+ )
+ INSTALL(TARGETS "${LibName}"
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+ENDFUNCTION(setup_lib)
+
+GET_DIRECTORY_PROPERTY (vkh_has_root_project PARENT_DIRECTORY)
+
+IF (vkh_has_root_project)
+ IF (VKH_BUILD_SHARED_LIBS)
+ ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKH_SRC})
+ setup_lib ("${PROJECT_NAME}")
+ ELSE()
+ ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_SRC})
+ target_compile_definitions("${PROJECT_NAME}" PUBLIC -DVKVG_STATIC_BUILD)
+ setup_lib ("${PROJECT_NAME}")
+ ENDIF()
+ELSE()
+ ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKH_SRC})
+ SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON)
+ setup_lib ("${PROJECT_NAME}_shared")
+
+ ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKH_SRC})
+ target_compile_definitions("${PROJECT_NAME}_static" PUBLIC -DVKH_STATIC_BUILD)
+ SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE OFF)
+ setup_lib ("${PROJECT_NAME}_static")
+ENDIF()
+
--- /dev/null
+find_path(vkh_INCLUDE_DIR vkh.h)
+
+find_library(vkh_LIBRARY NAMES vkh)
+
+# handle the QUIETLY and REQUIRED arguments and set VKHFOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(vkh DEFAULT_MSG
+ vkh_LIBRARY vkh_INCLUDE_DIR)
+
+if(vkh_FOUND)
+ set( vkh_LIBRARIES ${vkh_LIBRARY} )
+endif()
+
+mark_as_advanced(vkh_INCLUDE_DIR vkh_LIBRARY vkh_LIBRARIES)