]> O.S.I.I.S - jp/vkvg.git/commitdiff
fix win compilation issues
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 10 Jan 2022 15:13:05 +0000 (16:13 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 10 Jan 2022 15:13:05 +0000 (16:13 +0100)
CMakeLists.txt
include/vkvg.h
tests/CMakeLists.txt
vkh

index 114331b45aa3982527ec48678e2000519cd239c5..2b58aff45bde3b21d6e963f3e27141b69583ac14 100644 (file)
@@ -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 "$<$<BOOL:${VKVG_USE_FONTCONFIG}>:${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
-                       "$<$<BOOL:${UNIX} AND ${VKVG_BUILD_SHARED_LIB}>:-lm>"
-               PRIVATE
-                       "$<$<BOOL:${VKVG_USE_FREETYPE}>:${FREETYPE_LIBRARIES}>"
-                       "$<$<BOOL:${VKVG_USE_HARFBUZZ}>:${HarfBuzz_LIBRARIES}>"
-                       "$<$<BOOL:${VKVG_USE_FONTCONFIG}>:${Fontconfig_LIBRARIES}>"
-                       "$<$<BOOL:${VKVG_FILL_NZ_GLUTESS}>: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.")
index 1dea2ac13100b1fd8bdfc0d73818b4f9cd4e4de2..219e5a2403a443e4bf6b922e23ac4d42992cfbe6 100644 (file)
@@ -68,7 +68,7 @@ extern "C" {
 #include <stdbool.h>
 
 #ifndef vkvg_public
-       #ifndef VKVG_STATIC_BUILD
+       #ifdef VKVG_SHARED_BUILD
                #if (defined(_WIN32) || defined(_WIN64))
                        #define vkvg_public __declspec(dllimport)
                #else
index 7aba8157a039d5735679f17f06923e3d5bde5afd..0b48cdc311c67379c48c7cc248cb1186640273ff 100644 (file)
@@ -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_OBJECTS:tests_common>)
+       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}
-               $<$<TARGET_EXISTS:vkvg_static>:vkvg_static>
-               $<$<TARGET_EXISTS:vkvg>:vkvg>
-               $<$<BOOL:${VKVG_SVG}>: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 58085f9026d05d57a36520138fdfa3102ec03e45..661caa9f99524df30b76fda45309f73a04cd3cfb 160000 (submodule)
--- a/vkh
+++ b/vkh
@@ -1 +1 @@
-Subproject commit 58085f9026d05d57a36520138fdfa3102ec03e45
+Subproject commit 661caa9f99524df30b76fda45309f73a04cd3cfb