/cross/x265/Makefile

https://github.com/SynoCommunity/spksrc · Makefile · 130 lines · 98 code · 25 blank · 7 comment · 6 complexity · 4e8e4e490902c10bdedfb6a47efba4fe MD5 · raw file

  1. PKG_NAME = x265
  2. PKG_VERS = 3.5
  3. PKG_EXT = tar.gz
  4. PKG_DIST_NAME = $(PKG_NAME)_$(PKG_VERS).$(PKG_EXT)
  5. PKG_DIST_SITE = https://bitbucket.org/multicoreware/x265_git/downloads
  6. PKG_DIR = $(PKG_NAME)_$(PKG_VERS)/source
  7. OPTIONAL_DEPENDS = native/nasm
  8. HOMEPAGE = http://x265.org/
  9. COMMENT = x265 is an open source HEVC encoder.
  10. LICENSE = GPL
  11. CONFIGURE_TARGET = x265_configure
  12. CMAKE_ARGS = -DCMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX)
  13. CMAKE_ARGS += -DCMAKE_CROSSCOMPILING=TRUE
  14. CMAKE_ARGS += -DCMAKE_SYSTEM_NAME=Linux
  15. CMAKE_ARGS += -DCMAKE_C_COMPILER=$(TC_PATH)$(TC_PREFIX)gcc
  16. CMAKE_ARGS += -DCMAKE_CXX_COMPILER=$(TC_PATH)$(TC_PREFIX)g++
  17. CMAKE_ARGS += -DCMAKE_INSTALL_RPATH=$(INSTALL_PREFIX)/lib
  18. CMAKE_ARGS += -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE
  19. CMAKE_ARGS += -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE
  20. CMAKE_ARGS += -DENABLE_LIBNUMA=OFF
  21. # additional cmake args for the build of 10 and 12 bit depth libraries
  22. CMAKE_BITLIB_ARGS =
  23. # additional cmake args for the final multilib build
  24. CMAKE_MULTILIB_ARGS =
  25. include ../../mk/spksrc.cross-cc.mk
  26. # gcc version above 4.8 required to support hdr10plus
  27. PLIST_TRANSFORM = sed -e '/:lib\/libhdr10plus.so/d'
  28. ifneq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH))
  29. CMAKE_ARGS += -DENABLE_HDR10_PLUS=ON
  30. PLIST_TRANSFORM = cat
  31. endif
  32. ifeq ($(call version_ge, ${TCVERSION}, 7.0),1)
  33. CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_C99_MATH
  34. endif
  35. ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH))
  36. CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=armv5
  37. CMAKE_ARGS += -DCROSS_COMPILE_ARM=ON
  38. CMAKE_ARGS += -DENABLE_ASSEMBLY=OFF
  39. endif
  40. ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH))
  41. CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=armv7
  42. CMAKE_ARGS += -DCROSS_COMPILE_ARM=ON
  43. CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-fPIC
  44. CMAKE_ARGS += -DENABLE_ASSEMBLY=OFF
  45. endif
  46. ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH))
  47. CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=aarch64
  48. CMAKE_ARGS += -DCROSS_COMPILE_ARM=ON
  49. CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-fPIC
  50. CMAKE_ARGS += -DENABLE_ASSEMBLY=OFF
  51. endif
  52. ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH))
  53. CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=ppc64
  54. CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32
  55. CMAKE_ARGS += -DENABLE_ALTIVEC=OFF
  56. CMAKE_ARGS += -DCPU_POWER8=OFF
  57. CMAKE_ARGS += -DENABLE_ASSEMBLY=OFF
  58. endif
  59. ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH))
  60. BUILD_DEPENDS = native/nasm
  61. NASM_PATH = $(realpath $(WORK_DIR)/../../../native/nasm/work-native/install/usr/local/bin)
  62. ENV += PATH=$(NASM_PATH):$$PATH
  63. ENV += AS=$(NASM_PATH)/nasm
  64. CMAKE_ARGS += -DNASM_EXECUTABLE=$(NASM_PATH)/nasm
  65. ifeq ($(findstring $(ARCH),$(x64_ARCHS)),$(ARCH))
  66. CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy
  67. endif
  68. ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH))
  69. CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=x86
  70. # asm code for HIGH_BIT_DEPTH is not compatible with 32 bit arch
  71. CMAKE_BITLIB_ARGS += -DENABLE_ASSEMBLY=OFF
  72. CMAKE_MULTILIB_ARGS += -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy
  73. endif
  74. endif
  75. # For ppc853x-4.3, disable atomics
  76. ifeq ($(ARCH)-$(TCVERSION), ppc853x-4.3)
  77. CMAKE_ARGS += -DNO_ATOMICS=ON
  78. CMAKE_ARGS += -DCMAKE_CXX_FLAGS="-DSPKSRC_FIX_PPC853X_4_3"
  79. endif
  80. .PHONY: $(PKG_DIR)/libx265_main12.a $(PKG_DIR)/libx265_main10.a x265_configure
  81. # First create specific static libraries with build options for 12 and 10 bit depth
  82. PKG_WORK_DIR = $(WORK_DIR)/$(PKG_NAME)_$(PKG_VERS)
  83. PKG_BUILD_12BIT = $(PKG_WORK_DIR)/build12bit
  84. PKG_BUILD_10BIT = $(PKG_WORK_DIR)/build10bit
  85. CMAKE_BITLIB_ARGS += -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF
  86. CMAKE_BITLIB_ARGS += -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DEXTRA_LINK_FLAGS="-ldl"
  87. $(PKG_DIR)/libx265_main12.a:
  88. mkdir --parents $(PKG_BUILD_12BIT)
  89. @$(MSG) Configure for 12BIT libraries
  90. cd $(PKG_BUILD_12BIT) && cmake $(CMAKE_ARGS) $(CMAKE_BITLIB_ARGS) -DMAIN12=ON ../source
  91. @$(MSG) Build 12BIT libraries
  92. cd $(PKG_BUILD_12BIT) && $(MAKE) $(COMPILE_MAKE_OPTIONS)
  93. @$(RUN) ln -sf $(PKG_BUILD_12BIT)/libx265.a libx265_main12.a
  94. $(PKG_DIR)/libx265_main10.a:
  95. @$(MSG) Configure for 10BIT libraries
  96. mkdir --parents $(PKG_BUILD_10BIT)
  97. cd $(PKG_BUILD_10BIT) && cmake $(CMAKE_ARGS) $(CMAKE_BITLIB_ARGS) ../source
  98. @$(MSG) Build 10BIT libraries
  99. cd $(PKG_BUILD_10BIT) && $(MAKE) $(COMPILE_MAKE_OPTIONS)
  100. @$(RUN) ln -sf $(PKG_BUILD_10BIT)/libx265.a libx265_main10.a
  101. # Aggregate them all together in default 8 bit depth build
  102. CMAKE_MULTILIB_ARGS += -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DEXTRA_LINK_FLAGS="-ldl -L."
  103. CMAKE_MULTILIB_ARGS += -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_SHARED=ON
  104. x265_configure: $(PKG_DIR)/libx265_main12.a $(PKG_DIR)/libx265_main10.a
  105. @$(RUN) cmake $(CMAKE_ARGS) $(CMAKE_MULTILIB_ARGS) .