xmake.lua 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. add_rules("mode.debug", "mode.release")
  2. set_languages("c11")
  3. add_requires("openssl")
  4. includes("@builtin/check")
  5. configvar_check_cincludes("HAVE_DLFCN_H", "dlfcn.h", {default = 0})
  6. configvar_check_cincludes("HAVE_ERRNO_H", "errno.h", {default = 0})
  7. configvar_check_cincludes("HAVE_FCNTL_H", "fcntl.h", {default = 0})
  8. configvar_check_cincludes("HAVE_GETOPT_H", "getopt.h", {default = 0})
  9. configvar_check_cincludes("HAVE_INTTYPES_H", "inttypes.h", {default = 0})
  10. configvar_check_cincludes("HAVE_LOCALE_H", "locale.h", {default = 0})
  11. configvar_check_cincludes("HAVE_MALLOC_H", "malloc.h", {default = 0})
  12. configvar_check_cincludes("HAVE_STDINT_H", "stdint.h", {default = 0})
  13. configvar_check_cincludes("HAVE_STDIO_H", "stdio.h", {default = 0})
  14. configvar_check_cincludes("HAVE_STDLIB_H", "stdlib.h", {default = 0})
  15. configvar_check_cincludes("HAVE_STRINGS_H", "strings.h", {default = 0})
  16. configvar_check_cincludes("HAVE_STRING_H", "string.h", {default = 0})
  17. configvar_check_cincludes("HAVE_SYS_STAT_H", "sys/stat.h", {default = 0})
  18. configvar_check_cincludes("HAVE_SYS_TIME_H", "sys/time.h", {default = 0})
  19. configvar_check_cincludes("HAVE_SYS_TYPES_H", "sys/types.h", {default = 0})
  20. configvar_check_cincludes("HAVE_SYS_WAIT_H", "sys/wait.h", {default = 0})
  21. configvar_check_cincludes("HAVE_UNISTD_H", "unistd.h", {default = 0})
  22. configvar_check_cincludes("HAVE_UTMP_H", "utmp.h", {default = 0})
  23. configvar_check_cfuncs("HAVE_X509_GET0_NOTBEFORE", "X509_get0_notBefore", {includes = "openssl/x509.h", default = 0})
  24. configvar_check_cfuncs("HAVE_X509_GET0_NOTAFTER", "X509_get0_notAfter", {includes = "openssl/x509.h", default = 0})
  25. if is_plat("android") then
  26. configvar_check_cfuncs("HAVE_PTHREAD", "pthread_create", {includes = "pthread.h"})
  27. else
  28. configvar_check_links("HAVE_PTHREAD", "pthread")
  29. end
  30. configvar_check_csnippets("HAVE_PTHREAD_PRIO_INHERIT", [[
  31. #include <pthread.h>
  32. void test() {
  33. int i = PTHREAD_PRIO_INHERIT;
  34. return i;
  35. }]])
  36. target("libp11")
  37. set_kind("$(kind)")
  38. add_packages("openssl")
  39. set_configdir("src")
  40. add_configfiles("src/(config.h.in)", {filename = "config.h"})
  41. add_includedirs("src")
  42. add_files("src/*.c")
  43. add_headerfiles("src/libp11.h", "src/p11_err.h", "src/util.h")
  44. if is_plat("windows", "mingw", "cygwin") then
  45. add_defines("WIN32_LEAN_AND_MEAN", "_WIN32_WINNT=0x0600")
  46. add_syslinks("ws2_32", "user32", "advapi32", "crypt32", "gdi32")
  47. if is_plat("cygwin") then
  48. add_defines("USE_CYGWIN")
  49. end
  50. elseif is_plat("linux", "bsd", "android") then
  51. add_defines("HAVE_PTHREAD", "_DEFAULT_SOURCE", "_POSIX_C_SOURCE=200809L")
  52. add_syslinks("pthread", "dl")
  53. end
  54. if is_plat("windows") and is_kind("shared") then
  55. add_rules("utils.symbols.export_all")
  56. end
  57. if is_plat("windows", "mingw") then
  58. add_configfiles("src/libp11.rc.in")
  59. add_configfiles("src/pkcs11.rc.in")
  60. end