feature-tests.mak 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. define SOURCE_HELLO
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5. return puts(\"hi\");
  6. }
  7. endef
  8. ifndef NO_DWARF
  9. define SOURCE_DWARF
  10. #include <dwarf.h>
  11. #include <elfutils/libdw.h>
  12. #include <elfutils/version.h>
  13. #ifndef _ELFUTILS_PREREQ
  14. #error
  15. #endif
  16. int main(void)
  17. {
  18. Dwarf *dbg = dwarf_begin(0, DWARF_C_READ);
  19. return (long)dbg;
  20. }
  21. endef
  22. endif
  23. define SOURCE_LIBELF
  24. #include <libelf.h>
  25. int main(void)
  26. {
  27. Elf *elf = elf_begin(0, ELF_C_READ, 0);
  28. return (long)elf;
  29. }
  30. endef
  31. define SOURCE_GLIBC
  32. #include <gnu/libc-version.h>
  33. int main(void)
  34. {
  35. const char *version = gnu_get_libc_version();
  36. return (long)version;
  37. }
  38. endef
  39. define SOURCE_BIONIC
  40. #include <android/api-level.h>
  41. int main(void)
  42. {
  43. return __ANDROID_API__;
  44. }
  45. endef
  46. define SOURCE_ELF_MMAP
  47. #include <libelf.h>
  48. int main(void)
  49. {
  50. Elf *elf = elf_begin(0, ELF_C_READ_MMAP, 0);
  51. return (long)elf;
  52. }
  53. endef
  54. define SOURCE_ELF_GETPHDRNUM
  55. #include <libelf.h>
  56. int main(void)
  57. {
  58. size_t dst;
  59. return elf_getphdrnum(0, &dst);
  60. }
  61. endef
  62. ifndef NO_SLANG
  63. define SOURCE_SLANG
  64. #include <slang.h>
  65. int main(void)
  66. {
  67. return SLsmg_init_smg();
  68. }
  69. endef
  70. endif
  71. ifndef NO_GTK2
  72. define SOURCE_GTK2
  73. #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
  74. #include <gtk/gtk.h>
  75. #pragma GCC diagnostic error \"-Wstrict-prototypes\"
  76. int main(int argc, char *argv[])
  77. {
  78. gtk_init(&argc, &argv);
  79. return 0;
  80. }
  81. endef
  82. define SOURCE_GTK2_INFOBAR
  83. #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
  84. #include <gtk/gtk.h>
  85. #pragma GCC diagnostic error \"-Wstrict-prototypes\"
  86. int main(void)
  87. {
  88. gtk_info_bar_new();
  89. return 0;
  90. }
  91. endef
  92. endif
  93. ifndef NO_LIBPERL
  94. define SOURCE_PERL_EMBED
  95. #include <EXTERN.h>
  96. #include <perl.h>
  97. int main(void)
  98. {
  99. perl_alloc();
  100. return 0;
  101. }
  102. endef
  103. endif
  104. ifndef NO_LIBPYTHON
  105. define SOURCE_PYTHON_VERSION
  106. #include <Python.h>
  107. #if PY_VERSION_HEX >= 0x03000000
  108. #error
  109. #endif
  110. int main(void)
  111. {
  112. return 0;
  113. }
  114. endef
  115. define SOURCE_PYTHON_EMBED
  116. #include <Python.h>
  117. int main(void)
  118. {
  119. Py_Initialize();
  120. return 0;
  121. }
  122. endef
  123. endif
  124. define SOURCE_BFD
  125. #include <bfd.h>
  126. int main(void)
  127. {
  128. bfd_demangle(0, 0, 0);
  129. return 0;
  130. }
  131. endef
  132. define SOURCE_CPLUS_DEMANGLE
  133. extern char *cplus_demangle(const char *, int);
  134. int main(void)
  135. {
  136. cplus_demangle(0, 0);
  137. return 0;
  138. }
  139. endef
  140. define SOURCE_STRLCPY
  141. #include <stdlib.h>
  142. extern size_t strlcpy(char *dest, const char *src, size_t size);
  143. int main(void)
  144. {
  145. strlcpy(NULL, NULL, 0);
  146. return 0;
  147. }
  148. endef
  149. ifndef NO_LIBUNWIND
  150. define SOURCE_LIBUNWIND
  151. #include <libunwind.h>
  152. #include <stdlib.h>
  153. extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
  154. unw_word_t ip,
  155. unw_dyn_info_t *di,
  156. unw_proc_info_t *pi,
  157. int need_unwind_info, void *arg);
  158. #define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)
  159. int main(void)
  160. {
  161. unw_addr_space_t addr_space;
  162. addr_space = unw_create_addr_space(NULL, 0);
  163. unw_init_remote(NULL, addr_space, NULL);
  164. dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);
  165. return 0;
  166. }
  167. endef
  168. endif
  169. ifndef NO_BACKTRACE
  170. define SOURCE_BACKTRACE
  171. #include <execinfo.h>
  172. #include <stdio.h>
  173. int main(void)
  174. {
  175. backtrace(NULL, 0);
  176. backtrace_symbols(NULL, 0);
  177. return 0;
  178. }
  179. endef
  180. endif
  181. ifndef NO_LIBAUDIT
  182. define SOURCE_LIBAUDIT
  183. #include <libaudit.h>
  184. int main(void)
  185. {
  186. printf(\"error message: %s\n\", audit_errno_to_name(0));
  187. return audit_open();
  188. }
  189. endef
  190. endif
  191. define SOURCE_ON_EXIT
  192. #include <stdio.h>
  193. int main(void)
  194. {
  195. return on_exit(NULL, NULL);
  196. }
  197. endef
  198. define SOURCE_LIBNUMA
  199. #include <numa.h>
  200. #include <numaif.h>
  201. int main(void)
  202. {
  203. numa_available();
  204. return 0;
  205. }
  206. endef