llvm-utils.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (C) 2015, Wang Nan <wangnan0@huawei.com>
  3. * Copyright (C) 2015, Huawei Inc.
  4. */
  5. #include <stdio.h>
  6. #include "util.h"
  7. #include "debug.h"
  8. #include "llvm-utils.h"
  9. #include "cache.h"
  10. #define CLANG_BPF_CMD_DEFAULT_TEMPLATE \
  11. "$CLANG_EXEC -D__KERNEL__ $CLANG_OPTIONS " \
  12. "$KERNEL_INC_OPTIONS -Wno-unused-value " \
  13. "-Wno-pointer-sign -working-directory " \
  14. "$WORKING_DIR -c \"$CLANG_SOURCE\" -target bpf -O2 -o -"
  15. struct llvm_param llvm_param = {
  16. .clang_path = "clang",
  17. .clang_bpf_cmd_template = CLANG_BPF_CMD_DEFAULT_TEMPLATE,
  18. .clang_opt = NULL,
  19. .kbuild_dir = NULL,
  20. .kbuild_opts = NULL,
  21. };
  22. int perf_llvm_config(const char *var, const char *value)
  23. {
  24. if (prefixcmp(var, "llvm."))
  25. return 0;
  26. var += sizeof("llvm.") - 1;
  27. if (!strcmp(var, "clang-path"))
  28. llvm_param.clang_path = strdup(value);
  29. else if (!strcmp(var, "clang-bpf-cmd-template"))
  30. llvm_param.clang_bpf_cmd_template = strdup(value);
  31. else if (!strcmp(var, "clang-opt"))
  32. llvm_param.clang_opt = strdup(value);
  33. else if (!strcmp(var, "kbuild-dir"))
  34. llvm_param.kbuild_dir = strdup(value);
  35. else if (!strcmp(var, "kbuild-opts"))
  36. llvm_param.kbuild_opts = strdup(value);
  37. else
  38. return -1;
  39. return 0;
  40. }