xmake.lua 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package("filc")
  2. set_kind("toolchain")
  3. set_homepage("https://fil-c.org/")
  4. set_description("A memory safe implementation of the C and C++ programming languages.")
  5. set_license("LLVM")
  6. if is_host("linux") then
  7. if os.arch() == "x86_64" then
  8. set_urls("https://github.com/pizlonator/fil-c/releases/download/v$(version)/filc-$(version)-linux-x86_64.tar.xz")
  9. add_versions("0.674", "a8ec349f383a49dacc09a9540643164c67081245e591c1e6823609653f2c9740")
  10. end
  11. end
  12. add_deps("patchelf") -- needed for setup.sh
  13. on_install("@linux|x86_64", function (package)
  14. local installdir = package:installdir()
  15. os.cp(path.join(os.curdir(), "*"), installdir)
  16. -- now we replicate the commands in setup.sh...
  17. local pathx = path.join(installdir, "pizfix/lib64") .. ":" .. path.join(installdir, "pizfix/lib")
  18. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib/libc.so"})
  19. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib/libpizlo.so"})
  20. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib/libc++.so.1.0"})
  21. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib/libc++abi.so.1.0"})
  22. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib_test/libpizlo.so"})
  23. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib_test_gcverify/libpizlo.so"})
  24. os.runv("patchelf", {"--set-rpath", pathx, "pizfix/lib_gcverify/libpizlo.so"})
  25. local dest = path.join(installdir, "pizfix", "os-include")
  26. os.ln("/usr/include/linux", path.join(dest, "linux"))
  27. if os.exists("/usr/include/x86_64-linux-gnu/asm") then
  28. os.ln("/usr/include/x86_64-linux-gnu/asm", path.join(dest, "asm"))
  29. else
  30. os.ln("/usr/include/asm", path.join(dest, "asm"))
  31. end
  32. os.ln("/usr/include/asm-generic", path.join(dest, "asm-generic"))
  33. -- we must preserve relative directory positions
  34. package:addenv("PATH", "build/bin")
  35. end)
  36. on_test(function (package)
  37. os.vrun("filcc --version")
  38. end)