conanfile.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*
  3. from conans import ConanFile, tools, CMake
  4. class civetwebConan(ConanFile):
  5. name = "civetweb"
  6. license = "MIT"
  7. url = "https://github.com/civetweb/civetweb"
  8. description = "Embedded C/C++ web server"
  9. author = "Bernhard Lehner <bel2125@gmail.com>"
  10. topics = ("conan", "civetweb", "web-server", "embedded")
  11. exports = ("LICENSE.md", "README.md")
  12. exports_sources = ("src/*", "cmake/*", "include/*", "CMakeLists.txt")
  13. generators = "cmake"
  14. settings = "os", "compiler", "build_type", "arch"
  15. options = {
  16. "shared" : [True, False],
  17. "fPIC" : [True, False],
  18. "enable_ssl" : [True, False],
  19. "enable_websockets" : [True, False],
  20. "enable_ipv6" : [True, False],
  21. "enable_cxx" : [True, False]
  22. }
  23. default_options = {
  24. "shared" : False,
  25. "fPIC" : True,
  26. "enable_ssl" : True,
  27. "enable_websockets" : True,
  28. "enable_ipv6" : True,
  29. "enable_cxx" : True
  30. }
  31. def config_options(self):
  32. if self.settings.os == 'Windows':
  33. del self.options.fPIC
  34. def configure(self):
  35. if not self.options.enable_cxx:
  36. del self.settings.compiler.libcxx
  37. def requirements(self):
  38. if self.options.enable_ssl:
  39. self.requires("OpenSSL/1.0.2q@conan/stable")
  40. def _configure_cmake(self):
  41. cmake = CMake(self)
  42. cmake.verbose = True
  43. cmake.definitions["CIVETWEB_ENABLE_SSL"] = self.options.enable_ssl
  44. cmake.definitions["CIVETWEB_ENABLE_WEBSOCKETS"] = self.options.enable_websockets
  45. cmake.definitions["CIVETWEB_ENABLE_IPV6"] = self.options.enable_ipv6
  46. cmake.definitions["CIVETWEB_ENABLE_CXX"] = self.options.enable_cxx
  47. cmake.definitions["CIVETWEB_BUILD_TESTING"] = False
  48. cmake.definitions["CIVETWEB_ENABLE_ASAN"] = False
  49. cmake.configure(build_dir="build_subfolder")
  50. return cmake
  51. def build(self):
  52. tools.replace_in_file(file_path="CMakeLists.txt",
  53. search="project (civetweb)",
  54. replace="""project (civetweb)
  55. include(conanbuildinfo.cmake)
  56. conan_basic_setup()""")
  57. cmake = self._configure_cmake()
  58. cmake.build()
  59. def package(self):
  60. self.copy("LICENSE.md", dst="licenses")
  61. cmake = self._configure_cmake()
  62. cmake.install()
  63. def package_info(self):
  64. self.cpp_info.libs = tools.collect_libs(self)
  65. if self.settings.os == "Linux":
  66. self.cpp_info.libs.extend(["dl", "rt", "pthread"])
  67. if self.options.enable_cxx:
  68. self.cpp_info.libs.append("m")
  69. elif self.settings.os == "Macos":
  70. self.cpp_info.exelinkflags.append("-framework Cocoa")
  71. self.cpp_info.sharedlinkflags = self.cpp_info.exelinkflags
  72. self.cpp_info.defines.append("USE_COCOA")
  73. elif self.settings.os == "Windows":
  74. self.cpp_info.libs.append("Ws2_32")
  75. if self.options.enable_websockets:
  76. self.cpp_info.defines.append("USE_WEBSOCKET")
  77. if self.options.enable_ipv6:
  78. self.cpp_info.defines.append("USE_IPV6")
  79. if not self.options.enable_ssl:
  80. self.cpp_info.defines.append("NO_SSL")