xmake.lua 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package("libjpeg")
  2. set_homepage("http://ijg.org/")
  3. set_description("A widely used C library for reading and writing JPEG image files.")
  4. set_urls("https://www.ijg.org/files/jpegsrc.$(version).tar.gz")
  5. add_versions("v9b", "566241ad815df935390b341a5d3d15a73a4000e5aab40c58505324c2855cbbb8")
  6. add_versions("v9c", "682aee469c3ca857c4c38c37a6edadbfca4b04d42e56613b11590ec6aa4a278d")
  7. add_versions("v9d", "2303a6acfb6cc533e0e86e8a9d29f7e6079e118b9de3f96e07a71a11c082fa6a")
  8. add_versions("v9e", "4077d6a6a75aeb01884f708919d25934c93305e49f7e3f36db9129320e6f4f3d")
  9. add_configs("headeronly", {description = "Install headerfiles only.", default = false, type = "boolean"})
  10. on_install(function (package)
  11. io.writefile("xmake.lua", [[
  12. add_rules("mode.debug", "mode.release")
  13. target("jpeg")
  14. set_kind("static")
  15. add_files("jaricom.c", "jcapimin.c", "jcapistd.c", "jcarith.c", "jccoefct.c", "jccolor.c")
  16. add_files("jcdctmgr.c", "jchuff.c", "jcinit.c", "jcmainct.c", "jcmarker.c", "jcmaster.c")
  17. add_files("jcomapi.c", "jcparam.c", "jcprepct.c", "jcsample.c", "jctrans.c", "jdapimin.c")
  18. add_files("jdapistd.c", "jdarith.c", "jdatadst.c", "jdatasrc.c", "jdcoefct.c", "jdcolor.c")
  19. add_files("jddctmgr.c", "jdhuff.c", "jdinput.c", "jdmainct.c", "jdmarker.c", "jdmaster.c")
  20. add_files("jdmerge.c", "jdpostct.c", "jdsample.c", "jdtrans.c", "jerror.c", "jfdctflt.c")
  21. add_files("jfdctfst.c", "jfdctint.c", "jidctflt.c", "jidctfst.c", "jidctint.c", "jquant1.c")
  22. add_files("jquant2.c", "jutils.c", "jmemmgr.c", "jmemansi.c")
  23. if is_plat("windows") then
  24. add_configfiles("jconfig.vc", {filename = "jconfig.h"})
  25. else
  26. add_configfiles("jconfig.txt", {filename = "jconfig.h"})
  27. end
  28. add_includedirs("$(buildir)", {public = true})
  29. add_headerfiles("jerror.h", "jmorecfg.h", "jpeglib.h", "$(buildir)/jconfig.h")
  30. ]])
  31. local configs = {}
  32. if package:config("shared") then
  33. configs.kind = "shared"
  34. elseif not package:is_plat("windows", "mingw") and package:config("pic") ~= false then
  35. configs.cxflags = "-fPIC"
  36. end
  37. if package:config("headeronly") then
  38. if package:is_plat("windows") then
  39. os.cp("jconfig.vc", "jconfig.h")
  40. else
  41. os.cp("jconfig.txt", "jconfig.h")
  42. end
  43. os.cp("*.h", package:installdir("include"))
  44. else
  45. import("package.tools.xmake").install(package, configs)
  46. end
  47. end)
  48. on_test(function (package)
  49. if package:config("headeronly") then
  50. assert(package:has_cincludes({"stdio.h", "jpeglib.h"}))
  51. else
  52. assert(package:has_cfuncs("jpeg_create_compress(0)", {includes = {"stdio.h", "jpeglib.h"}}))
  53. end
  54. end)