1## set up lists of sources and headers for tags 2file(GLOB_RECURSE all_srcs 3 buildheader/*.cc 4 db-benchmark-test/*.cc 5 ft/*.cc 6 include/*.cc 7 locktree/*.cc 8 portability/*.cc 9 src/*.cc 10 utils/*.cc 11 util/*.cc 12 db-benchmark-test/*.cc 13 ) 14list(APPEND all_srcs 15 ${CMAKE_CURRENT_BINARY_DIR}/ft/log_code.cc 16 ${CMAKE_CURRENT_BINARY_DIR}/ft/log_print.cc 17 ) 18file(GLOB_RECURSE all_hdrs 19 buildheader/*.h 20 db-benchmark-test/*.h 21 ft/*.h 22 include/*.h 23 locktree/*.h 24 portability/*.h 25 src/*.h 26 utils/*.h 27 util/*.h 28 db-benchmark-test/*.h 29 ) 30list(APPEND all_hdrs 31 ${CMAKE_CURRENT_BINARY_DIR}/portability/toku_config.h 32 ${CMAKE_CURRENT_BINARY_DIR}/buildheader/db.h 33 ${CMAKE_CURRENT_BINARY_DIR}/ft/log_header.h 34 ) 35 36option(USE_ETAGS "Build the etags database." ON) 37if (USE_ETAGS) 38 find_program(ETAGS "etags") 39 if (NOT ETAGS MATCHES NOTFOUND) 40 add_custom_command( 41 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/TAGS" 42 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/etags-stamp" 43 COMMAND ${ETAGS} -o TAGS ${all_srcs} ${all_hdrs} 44 COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/etags-stamp" 45 DEPENDS ${all_srcs} ${all_hdrs} install_tdb_h generate_config_h generate_log_code 46 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") 47 add_custom_target(build_etags ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/TAGS" etags-stamp) 48 endif () 49endif () 50 51option(USE_CTAGS "Build the ctags database." ON) 52if (USE_CTAGS AND 53 # Macs by default are not case-sensitive, so tags and TAGS clobber each other. Do etags and not ctags in that case, because Emacs is superior. :P 54 (NOT APPLE OR NOT USE_ETAGS)) 55 find_program(CTAGS "ctags") 56 if (NOT CTAGS MATCHES NOTFOUND) 57 add_custom_command( 58 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/tags" 59 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ctags-stamp" 60 COMMAND ${CTAGS} -o tags ${all_srcs} ${all_hdrs} 61 COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/ctags-stamp" 62 DEPENDS ${all_srcs} ${all_hdrs} install_tdb_h generate_config_h generate_log_code 63 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") 64 add_custom_target(build_ctags ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tags" ctags-stamp) 65 endif () 66endif () 67 68option(USE_CSCOPE "Build the cscope database." ON) 69if (USE_CSCOPE) 70 find_program(CSCOPE "cscope") 71 if (NOT CSCOPE MATCHES NOTFOUND) 72 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cscope.files" "") 73 foreach(file ${all_srcs} ${all_hdrs}) 74 file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cscope.files" "${file}\n") 75 endforeach(file) 76 add_custom_command( 77 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/cscope.out" 78 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/cscope.in.out" 79 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/cscope.po.out" 80 COMMAND ${CSCOPE} -b -q -R -i"${CMAKE_CURRENT_BINARY_DIR}/cscope.files" -I"${CMAKE_CURRENT_SOURCE_DIR}" -I"${CMAKE_CURRENT_SOURCE_DIR}/include" -I"${CMAKE_CURRENT_SOURCE_DIR}/portability" -I"${CMAKE_CURRENT_SOURCE_DIR}/portability" -I"${CMAKE_CURRENT_SOURCE_DIR}/ft" -I"${CMAKE_CURRENT_SOURCE_DIR}/src" -I"${CMAKE_CURRENT_SOURCE_DIR}/locktree" -I"${CMAKE_CURRENT_SOURCE_DIR}/utils" -I"${CMAKE_CURRENT_SOURCE_DIR}/db-benchmark-test" -I"${CMAKE_CURRENT_BINARY_DIR}" -I"${CMAKE_CURRENT_BINARY_DIR}/portability" -I"${CMAKE_CURRENT_BINARY_DIR}/buildheader" 81 DEPENDS ${all_srcs} ${all_hdrs} install_tdb_h generate_config_h generate_log_code 82 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") 83 add_custom_target(build_cscope.out ALL DEPENDS 84 "${CMAKE_CURRENT_SOURCE_DIR}/cscope.out" 85 "${CMAKE_CURRENT_SOURCE_DIR}/cscope.in.out" 86 "${CMAKE_CURRENT_SOURCE_DIR}/cscope.po.out") 87 endif () 88endif () 89 90option(USE_GTAGS "Build the gtags database." ON) 91if (USE_GTAGS) 92 find_program(GTAGS "gtags") 93 if (NOT GTAGS MATCHES NOTFOUND) 94 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gtags.files" "") 95 foreach(file ${all_srcs} ${all_hdrs}) 96 file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/gtags.files" "${file}\n") 97 endforeach(file) 98 add_custom_command( 99 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/GTAGS" 100 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/GRTAGS" 101 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/GPATH" 102 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/GSYMS" 103 COMMAND ${GTAGS} -f "${CMAKE_CURRENT_BINARY_DIR}/gtags.files" 104 DEPENDS ${all_srcs} ${all_hdrs} install_tdb_h generate_config_h generate_log_code 105 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") 106 add_custom_target(build_GTAGS ALL DEPENDS 107 "${CMAKE_CURRENT_SOURCE_DIR}/GTAGS" 108 "${CMAKE_CURRENT_SOURCE_DIR}/GRTAGS" 109 "${CMAKE_CURRENT_SOURCE_DIR}/GPATH" 110 "${CMAKE_CURRENT_SOURCE_DIR}/GSYMS") 111 endif () 112endif () 113 114option(USE_MKID "Build the idutils database." ON) 115if (USE_MKID) 116 find_program(MKID "mkid") 117 if (NOT MKID MATCHES NOTFOUND) 118 add_custom_command( 119 OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/ID" 120 COMMAND ${MKID} ${all_srcs} ${all_hdrs} 121 DEPENDS ${all_srcs} ${all_hdrs} install_tdb_h generate_config_h generate_log_code 122 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") 123 add_custom_target(build_MKID ALL DEPENDS 124 "${CMAKE_CURRENT_SOURCE_DIR}/ID") 125 endif () 126endif () 127