From: Jean-Philippe Bruyère Date: Mon, 10 Jan 2022 15:13:05 +0000 (+0100) Subject: fix win compilation issues X-Git-Tag: v0.3.0-beta~31 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=0ef5fba85bacfe902749ea0a617164e72bf929e9;p=jp%2Fvkvg.git fix win compilation issues --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 114331b..2b58aff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.21) +CMAKE_MINIMUM_REQUIRED(VERSION 3.20) SET(LANG "CXX") SET(CMAKE_C_STANDARD 11) @@ -25,11 +25,11 @@ IF(NOT CMAKE_BUILD_TYPE) 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) @@ -74,12 +74,12 @@ IF (VKVG_DBG_STATS) 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 () @@ -90,7 +90,7 @@ IF(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") 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) @@ -131,7 +131,6 @@ CMAKE_DEPENDENT_OPTION(VKVG_BUILD_DOCS "build documentation" OFF "DOXYGEN_FOUND 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 () @@ -199,7 +198,7 @@ IF(GLSLC AND XXD) #add_definitions( -DDEBUG_VK_PERF=true ) ENDIF() -IF (VKVG_FILL_NZ_GLUTESS) +IF (VKVG_USE_GLUTESS) ADD_SUBDIRECTORY (external/glutess) ENDIF () @@ -218,6 +217,10 @@ 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 "$<$:${Fontconfig_LIBRARIES}>" +) + FUNCTION (setup_lib LibName) LIST (APPEND VKVG_TARGETS ${LibName}) @@ -245,16 +248,32 @@ FUNCTION (setup_lib 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 - "$<$:-lm>" - PRIVATE - "$<$:${FREETYPE_LIBRARIES}>" - "$<$:${HarfBuzz_LIBRARIES}>" - "$<$:${Fontconfig_LIBRARIES}>" - "$<$:glutess>" ) INSTALL(TARGETS "${LibName}" @@ -270,13 +289,13 @@ IF (vkvg_has_root_project) 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) @@ -292,6 +311,7 @@ ELSE() 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} ) @@ -309,8 +329,14 @@ ELSE() ) 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) @@ -467,7 +493,7 @@ IF (VKVG_LCD_FONT_FILTER) 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.") diff --git a/include/vkvg.h b/include/vkvg.h index 1dea2ac..219e5a2 100644 --- a/include/vkvg.h +++ b/include/vkvg.h @@ -68,7 +68,7 @@ extern "C" { #include #ifndef vkvg_public - #ifndef VKVG_STATIC_BUILD + #ifdef VKVG_SHARED_BUILD #if (defined(_WIN32) || defined(_WIN64)) #define vkvg_public __declspec(dllimport) #else diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7aba815..0b48cdc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,31 +10,43 @@ ENDIF () 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_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} - $<$:vkvg_static> - $<$:vkvg> - $<$: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/*") diff --git a/vkh b/vkh index 58085f9..661caa9 160000 --- a/vkh +++ b/vkh @@ -1 +1 @@ -Subproject commit 58085f9026d05d57a36520138fdfa3102ec03e45 +Subproject commit 661caa9f99524df30b76fda45309f73a04cd3cfb