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} |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 5 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk_helper.py --${subcmd} ${PROJECT_SOURCE_DIR}/include/vulkan.h --abs_out_dir ${CMAKE_CURRENT_BINARY_DIR} |
| 6 | DEPENDS ${PROJECT_SOURCE_DIR}/vk_helper.py ${PROJECT_SOURCE_DIR}/include/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} |
Courtney Goeltzenleuchter | a8c0628 | 2015-04-14 14:55:44 -0600 | [diff] [blame] | 12 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-layer-generate.py ${subcmd} ${PROJECT_SOURCE_DIR}/include/vulkan.h > ${output} |
| 13 | DEPENDS ${PROJECT_SOURCE_DIR}/vk-layer-generate.py ${PROJECT_SOURCE_DIR}/include/vulkan.h ${PROJECT_SOURCE_DIR}/vulkan.py |
Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 14 | ) |
| 15 | endmacro() |
| 16 | |
Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 17 | if (WIN32) |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 18 | macro(add_vk_layer target) |
| 19 | add_custom_command(OUTPUT VKLayer${target}.def |
Ian Elliott | b41e247 | 2015-04-15 11:16:04 -0600 | [diff] [blame] | 20 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py win-def-file VKLayer${target} layer > VKLayer${target}.def |
| 21 | DEPENDS ${PROJECT_SOURCE_DIR}/vk-generate.py ${PROJECT_SOURCE_DIR}/vk.py |
Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 22 | ) |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 23 | add_library(VKLayer${target} SHARED ${ARGN} VKLayer${target}.def) |
| 24 | target_link_Libraries(VKLayer${target} layer_utils) |
Cody Northrop | 87c572f | 2015-05-28 10:09:50 -0600 | [diff] [blame^] | 25 | add_dependencies(VKLayer${target} layer_utils_static) |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 26 | add_dependencies(VKLayer${target} generate_vk_layer_helpers) |
| 27 | add_dependencies(VKLayer${target} ${CMAKE_CURRENT_BINARY_DIR}/VKLayer${target}.def) |
| 28 | 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] | 29 | endmacro() |
| 30 | else() |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 31 | macro(add_vk_layer target) |
| 32 | add_library(VKLayer${target} SHARED ${ARGN}) |
| 33 | target_link_Libraries(VKLayer${target} layer_utils) |
| 34 | add_dependencies(VKLayer${target} generate_vk_layer_helpers) |
| 35 | set_target_properties(VKLayer${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic") |
Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 36 | endmacro() |
| 37 | endif() |
Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 38 | |
Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 39 | include_directories( |
| 40 | ${CMAKE_CURRENT_SOURCE_DIR} |
Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 41 | ${CMAKE_CURRENT_SOURCE_DIR}/../loader |
Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 42 | ${CMAKE_CURRENT_BINARY_DIR} |
| 43 | ) |
| 44 | |
Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 45 | if (WIN32) |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 46 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_PROTOTYPES -D_CRT_SECURE_NO_WARNINGS") |
| 47 | 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] | 48 | endif() |
| 49 | if (NOT WIN32) |
| 50 | set (CMAKE_CXX_FLAGS "-std=c++11") |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 51 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_PROTOTYPES -Wpointer-arith") |
| 52 | set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVK_PROTOTYPES -Wpointer-arith") |
Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 53 | endif() |
Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 54 | |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 55 | add_custom_command(OUTPUT vk_dispatch_table_helper.h |
Courtney Goeltzenleuchter | a8c0628 | 2015-04-14 14:55:44 -0600 | [diff] [blame] | 56 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py dispatch-table-ops layer > vk_dispatch_table_helper.h |
| 57 | 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] | 58 | |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 59 | add_custom_command(OUTPUT vk_generic_intercept_proc_helper.h |
Courtney Goeltzenleuchter | a8c0628 | 2015-04-14 14:55:44 -0600 | [diff] [blame] | 60 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/vk-generate.py layer-intercept-proc > vk_generic_intercept_proc_helper.h |
| 61 | DEPENDS ${PROJECT_SOURCE_DIR}/vk-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py) |
Chia-I Wu | 706533e | 2015-01-05 13:18:57 +0800 | [diff] [blame] | 62 | |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 63 | run_vk_helper(gen_enum_string_helper vk_enum_string_helper.h) |
| 64 | run_vk_helper(gen_struct_wrappers |
| 65 | vk_struct_string_helper.h |
| 66 | vk_struct_string_helper_cpp.h |
| 67 | vk_struct_string_helper_no_addr.h |
| 68 | vk_struct_string_helper_no_addr_cpp.h |
| 69 | vk_struct_size_helper.h |
| 70 | vk_struct_size_helper.c |
| 71 | vk_struct_wrappers.h |
| 72 | vk_struct_wrappers.cpp |
Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 73 | ) |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 74 | run_vk_helper(gen_graphviz vk_struct_graphviz_helper.h) |
Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 75 | |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 76 | add_custom_target(generate_vk_layer_helpers DEPENDS |
| 77 | vk_dispatch_table_helper.h |
| 78 | vk_generic_intercept_proc_helper.h |
| 79 | vk_enum_string_helper.h |
| 80 | vk_struct_string_helper.h |
| 81 | vk_struct_string_helper_no_addr.h |
| 82 | vk_struct_string_helper_cpp.h |
| 83 | vk_struct_string_helper_no_addr_cpp.h |
| 84 | vk_struct_size_helper.h |
| 85 | vk_struct_size_helper.c |
| 86 | vk_struct_wrappers.h |
| 87 | vk_struct_wrappers.cpp |
| 88 | vk_struct_graphviz_helper.h |
Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 89 | ) |
| 90 | |
Mark Lobodzinski | 579797d | 2015-05-21 14:19:45 -0500 | [diff] [blame] | 91 | run_vk_layer_generate(Generic generic_layer.cpp) |
Tobin Ehlis | 4a636a1 | 2015-04-09 09:19:36 -0600 | [diff] [blame] | 92 | run_vk_layer_generate(APIDump api_dump.cpp) |
Mark Lobodzinski | 7d2d5ac | 2015-05-20 17:33:47 -0500 | [diff] [blame] | 93 | run_vk_layer_generate(ObjectTracker object_track.cpp) |
Mike Stroyan | b326d2c | 2015-04-02 11:59:05 -0600 | [diff] [blame] | 94 | run_vk_layer_generate(Threading threading.cpp) |
Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 95 | |
Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 96 | add_library(layer_utils SHARED layers_config.cpp) |
Ian Elliott | 6d49668 | 2015-02-12 11:36:44 -0700 | [diff] [blame] | 97 | if (WIN32) |
| 98 | add_library(layer_utils_static STATIC layers_config.cpp) |
| 99 | set_target_properties(layer_utils_static PROPERTIES OUTPUT_NAME layer_utils) |
| 100 | target_link_libraries(layer_utils) |
| 101 | endif() |
Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 102 | |
Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame] | 103 | add_vk_layer(Basic basic.cpp) |
| 104 | add_vk_layer(Multi multi.cpp) |
| 105 | add_vk_layer(DrawState draw_state.cpp) |
| 106 | add_vk_layer(MemTracker mem_tracker.cpp) |
Ian Elliott | ea4f4cf | 2015-04-15 12:55:43 -0600 | [diff] [blame] | 107 | #add_vk_layer(GlaveSnapshot glave_snapshot.c) |
Chris Forbes | aab9d11 | 2015-04-02 13:22:31 +1300 | [diff] [blame] | 108 | add_vk_layer(ShaderChecker shader_checker.cpp) |
Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 109 | # generated |
Mark Lobodzinski | 579797d | 2015-05-21 14:19:45 -0500 | [diff] [blame] | 110 | add_vk_layer(Generic generic_layer.cpp) |
Tobin Ehlis | 4a636a1 | 2015-04-09 09:19:36 -0600 | [diff] [blame] | 111 | add_vk_layer(APIDump api_dump.cpp) |
Mark Lobodzinski | 7d2d5ac | 2015-05-20 17:33:47 -0500 | [diff] [blame] | 112 | add_vk_layer(ObjectTracker object_track.cpp) |
Courtney Goeltzenleuchter | 3331817 | 2015-04-10 17:06:20 -0600 | [diff] [blame] | 113 | add_vk_layer(ParamChecker param_checker.cpp) |
Mike Stroyan | 2fea26c | 2015-04-16 14:11:54 -0600 | [diff] [blame] | 114 | add_vk_layer(Threading threading.cpp) |