| Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 1 | cmake_minimum_required (VERSION 2.8.11) |
| 2 | |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 3 | macro(run_xgl_helper subcmd) |
| 4 | add_custom_command(OUTPUT ${ARGN} |
| Jon Ashburn | 34cafb6 | 2015-03-18 09:29:11 -0600 | [diff] [blame] | 5 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/xgl_helper.py --${subcmd} ${PROJECT_SOURCE_DIR}/include/xgl.h --abs_out_dir ${CMAKE_CURRENT_BINARY_DIR} |
| Tobin Ehlis | 6cd0637 | 2014-12-17 17:44:50 -0700 | [diff] [blame] | 6 | DEPENDS ${PROJECT_SOURCE_DIR}/xgl_helper.py ${PROJECT_SOURCE_DIR}/include/xgl.h |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 7 | ) |
| 8 | endmacro() |
| 9 | |
| 10 | macro(run_xgl_layer_generate subcmd output) |
| 11 | add_custom_command(OUTPUT ${output} |
| Jon Ashburn | 34cafb6 | 2015-03-18 09:29:11 -0600 | [diff] [blame] | 12 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/xgl-layer-generate.py ${subcmd} ${PROJECT_SOURCE_DIR}/include/xgl.h > ${output} |
| Tobin Ehlis | 6cd0637 | 2014-12-17 17:44:50 -0700 | [diff] [blame] | 13 | DEPENDS ${PROJECT_SOURCE_DIR}/xgl-layer-generate.py ${PROJECT_SOURCE_DIR}/include/xgl.h ${PROJECT_SOURCE_DIR}/xgl.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) |
| 18 | macro(add_xgl_layer target) |
| 19 | add_custom_command(OUTPUT XGLLayer${target}.def |
| Jon Ashburn | 34cafb6 | 2015-03-18 09:29:11 -0600 | [diff] [blame] | 20 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/xgl-win-def-file-generate.py ${target} > XGLLayer${target}.def |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 21 | DEPENDS ${PROJECT_SOURCE_DIR}/xgl-win-def-file-generate.py |
| 22 | ) |
| 23 | add_library(XGLLayer${target} SHARED ${ARGN} XGLLayer${target}.def) |
| Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 24 | target_link_Libraries(XGLLayer${target} layer_utils) |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 25 | add_dependencies(XGLLayer${target} generate_xgl_layer_helpers) |
| 26 | add_dependencies(XGLLayer${target} ${CMAKE_CURRENT_BINARY_DIR}/XGLLayer${target}.def) |
| 27 | set_target_properties(XGLLayer${target} PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_BINARY_DIR}/XGLLayer${target}.def") |
| 28 | endmacro() |
| 29 | else() |
| 30 | macro(add_xgl_layer target) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 31 | add_library(XGLLayer${target} SHARED ${ARGN}) |
| Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 32 | target_link_Libraries(XGLLayer${target} layer_utils) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 33 | add_dependencies(XGLLayer${target} generate_xgl_layer_helpers) |
| Chia-I Wu | 7397c43 | 2015-02-18 14:39:54 -0700 | [diff] [blame] | 34 | set_target_properties(XGLLayer${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic") |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 35 | endmacro() |
| 36 | endif() |
| Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 37 | |
| Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 38 | include_directories( |
| 39 | ${CMAKE_CURRENT_SOURCE_DIR} |
| Ian Elliott | 81ac44c | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 40 | ${CMAKE_CURRENT_SOURCE_DIR}/../loader |
| Chia-I Wu | c92dcde | 2014-11-19 23:05:04 +0800 | [diff] [blame] | 41 | ${CMAKE_CURRENT_BINARY_DIR} |
| 42 | ) |
| 43 | |
| Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 44 | if (WIN32) |
| Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 45 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DXGL_PROTOTYPES -D_CRT_SECURE_NO_WARNINGS") |
| 46 | set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DXGL_PROTOTYPES -D_CRT_SECURE_NO_WARNINGS") |
| 47 | endif() |
| 48 | if (NOT WIN32) |
| 49 | set (CMAKE_CXX_FLAGS "-std=c++11") |
| Ian Elliott | 3fdadc8 | 2015-02-13 14:04:01 -0700 | [diff] [blame] | 50 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DXGL_PROTOTYPES -Wpointer-arith") |
| 51 | set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DXGL_PROTOTYPES -Wpointer-arith") |
| Ian Elliott | 64f74a8 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 52 | endif() |
| Jon Ashburn | d43f9b6 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 53 | |
| Chia-I Wu | 0f65b1e | 2015-01-04 23:11:43 +0800 | [diff] [blame] | 54 | add_custom_command(OUTPUT xgl_dispatch_table_helper.h |
| Jon Ashburn | 34cafb6 | 2015-03-18 09:29:11 -0600 | [diff] [blame] | 55 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/xgl-generate.py dispatch-table-ops layer > xgl_dispatch_table_helper.h |
| Chia-I Wu | 0f65b1e | 2015-01-04 23:11:43 +0800 | [diff] [blame] | 56 | DEPENDS ${PROJECT_SOURCE_DIR}/xgl-generate.py ${PROJECT_SOURCE_DIR}/xgl.py) |
| 57 | |
| Chia-I Wu | 706533e | 2015-01-05 13:18:57 +0800 | [diff] [blame] | 58 | add_custom_command(OUTPUT xgl_generic_intercept_proc_helper.h |
| Jon Ashburn | 34cafb6 | 2015-03-18 09:29:11 -0600 | [diff] [blame] | 59 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/xgl-generate.py layer-intercept-proc > xgl_generic_intercept_proc_helper.h |
| Chia-I Wu | 706533e | 2015-01-05 13:18:57 +0800 | [diff] [blame] | 60 | DEPENDS ${PROJECT_SOURCE_DIR}/xgl-generate.py ${PROJECT_SOURCE_DIR}/xgl.py) |
| 61 | |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 62 | run_xgl_helper(gen_enum_string_helper xgl_enum_string_helper.h) |
| 63 | run_xgl_helper(gen_struct_wrappers |
| 64 | xgl_struct_string_helper.h |
| Tobin Ehlis | 434db7c | 2015-01-10 12:42:41 -0700 | [diff] [blame] | 65 | xgl_struct_string_helper_cpp.h |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 66 | xgl_struct_string_helper_no_addr.h |
| Tobin Ehlis | 434db7c | 2015-01-10 12:42:41 -0700 | [diff] [blame] | 67 | xgl_struct_string_helper_no_addr_cpp.h |
| Tobin Ehlis | ff765b0 | 2015-03-12 14:50:40 -0600 | [diff] [blame] | 68 | xgl_struct_size_helper.h |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 69 | xgl_struct_wrappers.h |
| 70 | xgl_struct_wrappers.cpp |
| 71 | ) |
| 72 | run_xgl_helper(gen_graphviz xgl_struct_graphviz_helper.h) |
| 73 | |
| 74 | add_custom_target(generate_xgl_layer_helpers DEPENDS |
| Chia-I Wu | 0f65b1e | 2015-01-04 23:11:43 +0800 | [diff] [blame] | 75 | xgl_dispatch_table_helper.h |
| Chia-I Wu | 706533e | 2015-01-05 13:18:57 +0800 | [diff] [blame] | 76 | xgl_generic_intercept_proc_helper.h |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 77 | xgl_enum_string_helper.h |
| 78 | xgl_struct_string_helper.h |
| 79 | xgl_struct_string_helper_no_addr.h |
| Tobin Ehlis | 434db7c | 2015-01-10 12:42:41 -0700 | [diff] [blame] | 80 | xgl_struct_string_helper_cpp.h |
| 81 | xgl_struct_string_helper_no_addr_cpp.h |
| Tobin Ehlis | 91b2b64 | 2015-03-16 10:44:40 -0600 | [diff] [blame] | 82 | xgl_struct_size_helper.h |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 83 | xgl_struct_wrappers.h |
| 84 | xgl_struct_wrappers.cpp |
| 85 | xgl_struct_graphviz_helper.h |
| 86 | ) |
| 87 | |
| 88 | run_xgl_layer_generate(Generic generic_layer.c) |
| 89 | run_xgl_layer_generate(ApiDump api_dump.c) |
| 90 | run_xgl_layer_generate(ApiDumpFile api_dump_file.c) |
| 91 | run_xgl_layer_generate(ApiDumpNoAddr api_dump_no_addr.c) |
| Tobin Ehlis | 434db7c | 2015-01-10 12:42:41 -0700 | [diff] [blame] | 92 | run_xgl_layer_generate(ApiDumpCpp api_dump.cpp) |
| 93 | run_xgl_layer_generate(ApiDumpNoAddrCpp api_dump_no_addr.cpp) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 94 | run_xgl_layer_generate(ObjectTracker object_track.c) |
| Tobin Ehlis | 6cd0637 | 2014-12-17 17:44:50 -0700 | [diff] [blame] | 95 | run_xgl_layer_generate(ParamChecker param_checker.c) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 96 | |
| Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 97 | add_library(layer_utils SHARED layers_config.cpp) |
| Ian Elliott | 6d49668 | 2015-02-12 11:36:44 -0700 | [diff] [blame] | 98 | if (WIN32) |
| 99 | add_library(layer_utils_static STATIC layers_config.cpp) |
| 100 | set_target_properties(layer_utils_static PROPERTIES OUTPUT_NAME layer_utils) |
| 101 | target_link_libraries(layer_utils) |
| 102 | endif() |
| Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 103 | |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 104 | add_xgl_layer(Basic basic.cpp) |
| 105 | add_xgl_layer(Multi multi.cpp) |
| Jon Ashburn | e9b0b02 | 2015-01-13 15:22:19 -0700 | [diff] [blame] | 106 | add_xgl_layer(DrawState draw_state.c) |
| Mark Lobodzinski | 1542710 | 2015-02-18 16:38:17 -0600 | [diff] [blame] | 107 | add_xgl_layer(MemTracker mem_tracker.c) |
| Peter Lohrmann | c8094e9 | 2015-03-24 16:14:01 -0700 | [diff] [blame^] | 108 | add_xgl_layer(GlaveSnapshot glave_snapshot.c) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 109 | # generated |
| 110 | add_xgl_layer(Generic generic_layer.c) |
| 111 | add_xgl_layer(APIDump api_dump.c) |
| 112 | add_xgl_layer(APIDumpFile api_dump_file.c) |
| 113 | add_xgl_layer(APIDumpNoAddr api_dump_no_addr.c) |
| Tobin Ehlis | 434db7c | 2015-01-10 12:42:41 -0700 | [diff] [blame] | 114 | add_xgl_layer(APIDumpCpp api_dump.cpp) |
| 115 | add_xgl_layer(APIDumpNoAddrCpp api_dump_no_addr.cpp) |
| Chia-I Wu | d91dbdd | 2014-12-19 10:59:01 +0800 | [diff] [blame] | 116 | add_xgl_layer(ObjectTracker object_track.c) |
| Tobin Ehlis | 6cd0637 | 2014-12-17 17:44:50 -0700 | [diff] [blame] | 117 | add_xgl_layer(ParamChecker param_checker.c) |