| Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 1 | cmake_minimum_required (VERSION 2.8.11) |
| 2 | |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 3 | macro(run_vk_helper subcmd) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 4 | add_custom_command(OUTPUT ${ARGN} |
| David Pinedo | 329ca9e | 2015-11-06 12:54:48 -0700 | [diff] [blame] | 5 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk_helper.py --${subcmd} ${PROJECT_SOURCE_DIR}/include/vulkan/vulkan.h --abs_out_dir ${CMAKE_CURRENT_BINARY_DIR} |
| 6 | DEPENDS ${PROJECT_SOURCE_DIR}/vk_helper.py ${PROJECT_SOURCE_DIR}/include/vulkan/vulkan.h |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 7 | ) |
| 8 | endmacro() |
| 9 | |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 10 | macro(run_vk_layer_generate subcmd output) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 11 | add_custom_command(OUTPUT ${output} |
| David Pinedo | 329ca9e | 2015-11-06 12:54:48 -0700 | [diff] [blame] | 12 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-layer-generate.py ${subcmd} ${PROJECT_SOURCE_DIR}/include/vulkan/vulkan.h > ${output} |
| 13 | DEPENDS ${PROJECT_SOURCE_DIR}/vk-layer-generate.py ${PROJECT_SOURCE_DIR}/include/vulkan/vulkan.h ${PROJECT_SOURCE_DIR}/vulkan.py |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 14 | ) |
| 15 | endmacro() |
| 16 | |
| Courtney Goeltzenleuchter | 440b907 | 2015-07-07 14:27:31 -0600 | [diff] [blame] | 17 | set(LAYER_JSON_FILES |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 18 | VkLayer_api_dump |
| 19 | VkLayer_basic |
| 20 | VkLayer_draw_state |
| 21 | VkLayer_generic |
| 22 | VkLayer_image |
| 23 | VkLayer_mem_tracker |
| 24 | VkLayer_multi |
| 25 | VkLayer_object_tracker |
| 26 | VkLayer_param_checker |
| 27 | VkLayer_screenshot |
| 28 | VkLayer_swapchain |
| 29 | VkLayer_threading |
| 30 | VkLayer_device_limits |
| Courtney Goeltzenleuchter | 440b907 | 2015-07-07 14:27:31 -0600 | [diff] [blame] | 31 | ) |
| 32 | |
| Mike Stroyan | 82e7fa1 | 2015-07-10 12:51:14 -0600 | [diff] [blame] | 33 | set(VK_LAYER_RPATH /usr/lib/x86_64-linux-gnu/vulkan/layer:/usr/lib/i386-linux-gnu/vulkan/layer) |
| 34 | set(CMAKE_INSTALL_RPATH ${VK_LAYER_RPATH}) |
| 35 | |
| Courtney Goeltzenleuchter | 440b907 | 2015-07-07 14:27:31 -0600 | [diff] [blame] | 36 | if (NOT WIN32) |
| 37 | # extra setup for out-of-tree builds |
| 38 | if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)) |
| 39 | foreach (config_file ${LAYER_JSON_FILES}) |
| 40 | add_custom_target(${config_file}-json ALL |
| Courtney Goeltzenleuchter | bbba93f | 2015-07-30 10:49:03 -0600 | [diff] [blame] | 41 | COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/linux/${config_file}.json |
| Courtney Goeltzenleuchter | 440b907 | 2015-07-07 14:27:31 -0600 | [diff] [blame] | 42 | VERBATIM |
| 43 | ) |
| 44 | endforeach(config_file) |
| 45 | endif() |
| 46 | else() |
| 47 | if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)) |
| 48 | foreach (config_file ${LAYER_JSON_FILES}) |
| Courtney Goeltzenleuchter | bbba93f | 2015-07-30 10:49:03 -0600 | [diff] [blame] | 49 | FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/windows/${config_file}.json src_json) |
| David Pinedo | 395eafe | 2015-09-15 10:58:27 -0600 | [diff] [blame] | 50 | FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/${config_file}.json dst_json) |
| Cody Northrop | 6bf975b | 2015-07-08 16:22:51 -0600 | [diff] [blame] | 51 | add_custom_target(${config_file}-json ALL |
| Cody Northrop | 02b61d2 | 2015-07-09 10:47:40 -0600 | [diff] [blame] | 52 | COMMAND copy ${src_json} ${dst_json} |
| Courtney Goeltzenleuchter | 440b907 | 2015-07-07 14:27:31 -0600 | [diff] [blame] | 53 | VERBATIM |
| 54 | ) |
| 55 | endforeach(config_file) |
| 56 | endif() |
| 57 | endif() |
| 58 | |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 59 | if (WIN32) |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 60 | macro(add_vk_layer target) |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 61 | add_custom_command(OUTPUT VkLayer_${target}.def |
| 62 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py win-def-file VkLayer_${target} layer > VkLayer_${target}.def |
| Ian Elliott | b41e247 | 2015-04-15 11:16:04 -0600 | [diff] [blame] | 63 | DEPENDS ${PROJECT_SOURCE_DIR}/vk-generate.py ${PROJECT_SOURCE_DIR}/vk.py |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 64 | ) |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 65 | add_library(VkLayer_${target} SHARED ${ARGN} VkLayer_${target}.def) |
| 66 | target_link_Libraries(VkLayer_${target} layer_utils) |
| 67 | add_dependencies(VkLayer_${target} layer_utils_static) |
| 68 | add_dependencies(VkLayer_${target} generate_vk_layer_helpers) |
| 69 | set_target_properties(VkLayer_${target} PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_BINARY_DIR}/VkLayer_${target}.def") |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 70 | endmacro() |
| 71 | else() |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 72 | macro(add_vk_layer target) |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 73 | add_library(VkLayer_${target} SHARED ${ARGN}) |
| 74 | target_link_Libraries(VkLayer_${target} layer_utils) |
| 75 | add_dependencies(VkLayer_${target} generate_vk_layer_helpers) |
| 76 | set_target_properties(VkLayer_${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic") |
| 77 | install(TARGETS VkLayer_${target} DESTINATION ${PROJECT_BINARY_DIR}/install_staging) |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 78 | endmacro() |
| 79 | endif() |
| Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 80 | |
| Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 81 | include_directories( |
| 82 | ${CMAKE_CURRENT_SOURCE_DIR} |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 83 | ${CMAKE_CURRENT_SOURCE_DIR}/../loader |
| David Pinedo | 329ca9e | 2015-11-06 12:54:48 -0700 | [diff] [blame] | 84 | ${CMAKE_CURRENT_SOURCE_DIR}/../include/vulkan |
| Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 85 | ${CMAKE_CURRENT_BINARY_DIR} |
| Chris Forbes | 98a7a6c | 2015-11-25 09:36:03 +1300 | [diff] [blame] | 86 | ${PROJECT_SOURCE_DIR}/../glslang/SPIRV |
| Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 87 | ) |
| 88 | |
| Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 89 | if (WIN32) |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 90 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_PROTOTYPES -D_CRT_SECURE_NO_WARNINGS") |
| 91 | set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVK_PROTOTYPES -D_CRT_SECURE_NO_WARNINGS") |
| Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 92 | endif() |
| 93 | if (NOT WIN32) |
| 94 | set (CMAKE_CXX_FLAGS "-std=c++11") |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 95 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_PROTOTYPES -Wpointer-arith") |
| 96 | set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVK_PROTOTYPES -Wpointer-arith") |
| Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 97 | endif() |
| Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 98 | |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 99 | add_custom_command(OUTPUT vk_dispatch_table_helper.h |
| Courtney Goeltzenleuchter | a8c0628 | 2015-04-14 14:55:44 -0600 | [diff] [blame] | 100 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py dispatch-table-ops layer > vk_dispatch_table_helper.h |
| 101 | DEPENDS ${PROJECT_SOURCE_DIR}/vk-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py) |
| Chia-I Wu | 0f65b1e | 2015-01-04 23:11:43 +0800 | [diff] [blame] | 102 | |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 103 | run_vk_helper(gen_enum_string_helper vk_enum_string_helper.h) |
| 104 | run_vk_helper(gen_struct_wrappers |
| 105 | vk_struct_string_helper.h |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 106 | vk_struct_string_helper_cpp.h |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 107 | vk_struct_string_helper_no_addr.h |
| 108 | vk_struct_string_helper_no_addr_cpp.h |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 109 | vk_struct_size_helper.h |
| 110 | vk_struct_size_helper.c |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 111 | vk_struct_wrappers.h |
| 112 | vk_struct_wrappers.cpp |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 113 | ) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 114 | |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 115 | add_custom_target(generate_vk_layer_helpers DEPENDS |
| 116 | vk_dispatch_table_helper.h |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 117 | vk_enum_string_helper.h |
| 118 | vk_struct_string_helper.h |
| 119 | vk_struct_string_helper_no_addr.h |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 120 | vk_struct_string_helper_cpp.h |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 121 | vk_struct_string_helper_no_addr_cpp.h |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 122 | vk_struct_size_helper.h |
| 123 | vk_struct_size_helper.c |
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 124 | vk_struct_wrappers.h |
| 125 | vk_struct_wrappers.cpp |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 126 | ) |
| 127 | |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 128 | run_vk_layer_generate(generic generic_layer.cpp) |
| 129 | run_vk_layer_generate(api_dump api_dump.cpp) |
| 130 | run_vk_layer_generate(object_tracker object_tracker.cpp) |
| 131 | run_vk_layer_generate(threading threading.cpp) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 132 | |
| Mark Lobodzinski | ddaecf8 | 2015-09-22 09:33:21 -0600 | [diff] [blame] | 133 | add_library(layer_utils SHARED vk_layer_config.cpp vk_layer_extension_utils.cpp vk_layer_utils.cpp) |
| Ian Elliott | 6d49668 | 2015-02-12 11:36:44 -0700 | [diff] [blame] | 134 | if (WIN32) |
| Mark Lobodzinski | ddaecf8 | 2015-09-22 09:33:21 -0600 | [diff] [blame] | 135 | add_library(layer_utils_static STATIC vk_layer_config.cpp vk_layer_extension_utils.cpp vk_layer_utils.cpp) |
| Ian Elliott | 6d49668 | 2015-02-12 11:36:44 -0700 | [diff] [blame] | 136 | set_target_properties(layer_utils_static PROPERTIES OUTPUT_NAME layer_utils) |
| 137 | target_link_libraries(layer_utils) |
| Mike Stroyan | 82e7fa1 | 2015-07-10 12:51:14 -0600 | [diff] [blame] | 138 | else() |
| 139 | install(TARGETS layer_utils DESTINATION ${PROJECT_BINARY_DIR}/install_staging) |
| Ian Elliott | 6d49668 | 2015-02-12 11:36:44 -0700 | [diff] [blame] | 140 | endif() |
| Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 141 | |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 142 | add_vk_layer(basic basic.cpp vk_layer_table.cpp) |
| 143 | add_vk_layer(multi multi.cpp vk_layer_table.cpp) |
| 144 | add_vk_layer(draw_state draw_state.cpp vk_layer_debug_marker_table.cpp vk_layer_table.cpp) |
| 145 | add_vk_layer(device_limits device_limits.cpp vk_layer_debug_marker_table.cpp vk_layer_table.cpp vk_layer_utils.cpp) |
| 146 | add_vk_layer(mem_tracker mem_tracker.cpp vk_layer_table.cpp) |
| 147 | add_vk_layer(image image.cpp vk_layer_table.cpp) |
| 148 | add_vk_layer(param_checker param_checker.cpp vk_layer_debug_marker_table.cpp vk_layer_table.cpp) |
| 149 | add_vk_layer(screenshot screenshot.cpp vk_layer_table.cpp) |
| 150 | add_vk_layer(swapchain swapchain.cpp vk_layer_table.cpp) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 151 | # generated |
| Mark Lobodzinski | 2e87e61 | 2015-12-30 08:16:12 -0700 | [diff] [blame] | 152 | add_vk_layer(generic generic_layer.cpp vk_layer_table.cpp) |
| 153 | add_vk_layer(api_dump api_dump.cpp vk_layer_table.cpp) |
| 154 | add_vk_layer(object_tracker object_tracker.cpp vk_layer_table.cpp) |
| 155 | add_vk_layer(threading threading.cpp vk_layer_table.cpp) |