Home | History | Annotate | Download | only in layers
      1 cmake_minimum_required (VERSION 2.8.11)
      2 
      3 set(LAYER_JSON_FILES
      4     VkLayer_wrap_objects
      5     VkLayer_test
      6     )
      7 
      8 set(VK_LAYER_RPATH /usr/lib/x86_64-linux-gnu/vulkan/layer:/usr/lib/i386-linux-gnu/vulkan/layer)
      9 set(CMAKE_INSTALL_RPATH ${VK_LAYER_RPATH})
     10 
     11 if (WIN32)
     12     if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
     13         foreach (config_file ${LAYER_JSON_FILES})
     14             FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/windows/${config_file}.json src_json)
     15             if (CMAKE_GENERATOR MATCHES "^Visual Studio.*")
     16                 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/${config_file}.json dst_json)
     17             else()
     18                 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/${config_file}.json dst_json)
     19             endif()
     20             add_custom_target(${config_file}-json ALL
     21                 COMMAND copy ${src_json} ${dst_json}
     22                 VERBATIM
     23                 )
     24                 add_dependencies(${config_file}-json ${config_file})
     25         endforeach(config_file)
     26     endif()
     27 else()
     28     # extra setup for out-of-tree builds
     29     if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
     30         foreach (config_file ${LAYER_JSON_FILES})
     31             add_custom_target(${config_file}-json ALL
     32                 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/linux/${config_file}.json
     33                 VERBATIM
     34                 )
     35         endforeach(config_file)
     36     endif()
     37 endif()
     38 
     39 if (WIN32)
     40     macro(add_vk_layer target)
     41     add_custom_command(OUTPUT VkLayer_${target}.def
     42         COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py ${DisplayServer} win-def-file VkLayer_${target} layer > VkLayer_${target}.def
     43         DEPENDS ${PROJECT_SOURCE_DIR}/vk-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py
     44     )
     45     add_library(VkLayer_${target} SHARED ${ARGN} VkLayer_${target}.def)
     46     add_dependencies(VkLayer_${target} generate_tests_dispatch_table_helper VkLayer_utils)
     47     endmacro()
     48 else()
     49     macro(add_vk_layer target)
     50     add_library(VkLayer_${target} SHARED ${ARGN})
     51     add_dependencies(VkLayer_${target} generate_tests_dispatch_table_helper VkLayer_utils)
     52     set_target_properties(VkLayer_${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic")
     53     endmacro()
     54 endif()
     55 
     56 include_directories(
     57     ${CMAKE_CURRENT_SOURCE_DIR}
     58     ${CMAKE_CURRENT_SOURCE_DIR}/../../layers
     59     ${CMAKE_CURRENT_SOURCE_DIR}/../../loader
     60     ${CMAKE_CURRENT_SOURCE_DIR}/../../include/vulkan
     61     ${CMAKE_CURRENT_BINARY_DIR}
     62     ${CMAKE_CURRENT_BINARY_DIR}/../../layers
     63 )
     64 
     65 if (WIN32)
     66     set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_CRT_SECURE_NO_WARNINGS")
     67     set (CMAKE_C_FLAGS_RELEASE   "${CMAKE_C_FLAGS_RELEASE} -D_CRT_SECURE_NO_WARNINGS")
     68     set (CMAKE_CXX_FLAGS_DEBUG   "${CMAKE_CXX_FLAGS_DEBUG} -D_CRT_SECURE_NO_WARNINGS /bigobj")
     69     set (CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS_DEBUG} -D_CRT_SECURE_NO_WARNINGS /bigobj")
     70 else()
     71     set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpointer-arith -Wno-unused-function")
     72     set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wno-unused-function")
     73 endif()
     74 
     75 add_custom_command(OUTPUT vk_dispatch_table_helper.h
     76     COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py ${DisplayServer} dispatch-table-ops layer > vk_dispatch_table_helper.h
     77     DEPENDS ${PROJECT_SOURCE_DIR}/vk-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py)
     78 
     79 add_custom_target(generate_tests_dispatch_table_helper DEPENDS
     80     vk_dispatch_table_helper.h
     81 )
     82 
     83 set (WRAP_SRCS
     84        wrap_objects.cpp
     85 	   ${CMAKE_CURRENT_SOURCE_DIR}/../../layers/vk_layer_table.cpp
     86 	   ${CMAKE_CURRENT_SOURCE_DIR}/../../layers/vk_layer_extension_utils.cpp
     87 	   )
     88 add_vk_layer(wrap_objects ${WRAP_SRCS})
     89 
     90 set (TEST_SRCS
     91        test.cpp
     92 	   ${CMAKE_CURRENT_SOURCE_DIR}/../../layers/vk_layer_table.cpp
     93 	   ${CMAKE_CURRENT_SOURCE_DIR}/../../layers/vk_layer_extension_utils.cpp
     94 	   )
     95 add_vk_layer(test ${TEST_SRCS})
     96 
     97 
     98