summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorJohn Stebbins <[email protected]>2017-11-06 07:57:01 -0800
committerGitHub <[email protected]>2017-11-06 07:57:01 -0800
commitef5e24d863a34ffff73ed9293635cdbfc1a98fe9 (patch)
treeb46da5c2d34838e9c63abc01d8d0abaceb376514 /contrib
parent5eb3abb1d962e0dddb05638497f43f6e7ef02e18 (diff)
x265: add support for 8/10/12 bit encoding in single static lib (#975)
Builds x265 three times, once for each bit depth. Then merges the static libs into one library that HandBrake can statically link against.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/x265/module.defs65
-rw-r--r--contrib/x265/module.rules5
-rw-r--r--contrib/x265_10bit/P00-mingw-lib.patch11
-rw-r--r--contrib/x265_10bit/module.defs51
-rw-r--r--contrib/x265_10bit/module.rules2
-rw-r--r--contrib/x265_12bit/P00-mingw-lib.patch11
-rw-r--r--contrib/x265_12bit/module.defs51
-rw-r--r--contrib/x265_12bit/module.rules2
-rw-r--r--contrib/x265_8bit/P00-mingw-lib.patch11
-rw-r--r--contrib/x265_8bit/module.defs45
-rw-r--r--contrib/x265_8bit/module.rules2
11 files changed, 233 insertions, 23 deletions
diff --git a/contrib/x265/module.defs b/contrib/x265/module.defs
index a2df551ab..5b28b8cac 100644
--- a/contrib/x265/module.defs
+++ b/contrib/x265/module.defs
@@ -1,4 +1,4 @@
-__deps__ := YASM CMAKE
+__deps__ := YASM CMAKE X265_8 X265_10 X265_12
$(eval $(call import.MODULE.defs,X265,x265,$(__deps__)))
$(eval $(call import.CONTRIB.defs,X265))
@@ -7,30 +7,19 @@ X265.FETCH.url += https://bitbucket.org/multicoreware/x265/downloads/x265_2.5
X265.FETCH.url += https://download.videolan.org/pub/videolan/x265/x265_2.5.tar.gz
X265.FETCH.sha256 = 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17
-X265.CONFIGURE.exe = cmake
-X265.CONFIGURE.args.prefix = -DCMAKE_INSTALL_PREFIX="$(X265.CONFIGURE.prefix)"
-X265.CONFIGURE.deps =
-X265.CONFIGURE.static =
-X265.CONFIGURE.shared = -DENABLE_SHARED=OFF
-X265.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=OFF -DENABLE_LIBNUMA=OFF
+# Silence "warning: overriding recipe for target" messages
+X265.FETCH.target =
-ifneq (none,$(X265.GCC.g))
- X265.CONFIGURE.extra += -DCMAKE_BUILD_TYPE=Debug
-endif
+X265.INSTALL.args.dir = -j 1 -C $(X265.BUILD.dir)/8bit install;
+X265.INSTALL.extra = $(CP.exe) $(X265.BUILD.dir)/libx265.a $(CONTRIB.build/)lib
+X265.INSTALL.args = !make @dir !extra
-ifeq (1,$(BUILD.cross))
- ifeq (mingw,$(BUILD.system))
- X265.CONFIGURE.extra += -DWIN32=ON
- endif
- X265.CONFIGURE.args.host = -DCMAKE_SYSTEM_NAME="$(X265.CONFIGURE.host)"
- X265.CONFIGURE.args.build = -DCMAKE_HOST_SYSTEM="$(X265.CONFIGURE.build)"
-else
- X265.CONFIGURE.args.host = -DCMAKE_HOST_SYSTEM="$(X265.CONFIGURE.host)"
- ifeq (1,$(FEATURE.local_yasm))
- X265.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
- X265.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
- endif
-endif
+X265.UNINSTALL.dir = $(X265.BUILD.dir)/8bit
+
+X265.CLEAN.make = $(RM.exe)
+X265.CLEAN.args.dir = cd $(1);
+X265.CLEAN.extra = libx265.a
+X265.CLEAN.args = @dir !make !extra
## find CMakeLists.txt
X265.CONFIGURE.extra += "$(call fn.ABSOLUTE,$(X265.EXTRACT.dir/)source/)"
@@ -38,3 +27,33 @@ X265.CONFIGURE.extra += "$(call fn.ABSOLUTE,$(X265.EXTRACT.dir/)source/)"
## optional static libs need to be marked
X265.OSL.libs = x265
X265.OSL.files = $(foreach i,$(X265.OSL.libs),$(call fn.ABSOLUTE,$(CONTRIB.build/)lib/lib$(i).a))
+
+# Override operations that are not needed
+X265.FETCH =
+X265.VERIFY = $(TOUCH.exe) $@
+X265.EXTRACT = $(TOUCH.exe) $@
+X265.PATCH = $(TOUCH.exe) $@
+X265.CONFIGURE = $(TOUCH.exe) $@
+X265.BUILD = $(TOUCH.exe) $@
+
+X265.SOURCE.libs = \
+ $(X265.BUILD.dir)/8bit/libx265_main.a \
+ $(X265.BUILD.dir)/10bit/libx265_main10.a \
+ $(X265.BUILD.dir)/12bit/libx265_main12.a
+
+ifeq (darwin, $(BUILD.system))
+ define X265.LINK
+ libtool -static -o $@ $(X265.SOURCE.libs)
+ endef
+else
+ X265.arscript = $(X265.BUILD.dir)/script.ar
+ define X265.LINK
+ echo "CREATE $@" > $(X265.arscript)
+ for a in $(X265.SOURCE.libs); do \
+ (echo "ADDLIB $$a" >> $(X265.arscript)); \
+ done
+ echo "SAVE" >> $(X265.arscript)
+ echo "END" >> $(X265.arscript)
+ $(AR.exe) -M < $(X265.arscript)
+ endef
+endif
diff --git a/contrib/x265/module.rules b/contrib/x265/module.rules
index 09c35f152..0360a327e 100644
--- a/contrib/x265/module.rules
+++ b/contrib/x265/module.rules
@@ -1,2 +1,7 @@
$(eval $(call import.MODULE.rules,X265))
$(eval $(call import.CONTRIB.rules,X265))
+
+$(X265.BUILD.dir)/libx265.a: $(X265.deps) $(X265.BUILD.target)
+ $(X265.LINK)
+
+$(X265.INSTALL.target): $(X265.BUILD.dir)/libx265.a
diff --git a/contrib/x265_10bit/P00-mingw-lib.patch b/contrib/x265_10bit/P00-mingw-lib.patch
new file mode 100644
index 000000000..5c822be0a
--- /dev/null
+++ b/contrib/x265_10bit/P00-mingw-lib.patch
@@ -0,0 +1,11 @@
+--- x265_2.5/source/x265-extras.h.orig 2017-07-13 07:20:07.000000000 -0400
++++ x265_2.5/source/x265-extras.h 2017-07-31 13:20:23.000000000 -0400
+@@ -33,7 +33,7 @@
+ extern "C" {
+ #endif
+
+-#if _WIN32
++#ifdef X265_API_IMPORTS
+ #define LIBAPI __declspec(dllexport)
+ #else
+ #define LIBAPI
diff --git a/contrib/x265_10bit/module.defs b/contrib/x265_10bit/module.defs
new file mode 100644
index 000000000..906f0de0f
--- /dev/null
+++ b/contrib/x265_10bit/module.defs
@@ -0,0 +1,51 @@
+__deps__ := YASM CMAKE X265_8
+$(eval $(call import.MODULE.defs,X265_10,x265_10,$(__deps__),x265))
+$(eval $(call import.CONTRIB.defs,X265_10))
+
+X265_10.FETCH.url = https://download.handbrake.fr/contrib/x265_2.5.tar.gz
+X265_10.FETCH.url += https://bitbucket.org/multicoreware/x265/downloads/x265_2.5.tar.gz
+X265_10.FETCH.url += https://download.videolan.org/pub/videolan/x265/x265_2.5.tar.gz
+X265_10.FETCH.sha256 = 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17
+
+# Silence "warning: overriding recipe for target" messages
+X265_10.FETCH.target =
+
+X265_10.build_dir = 10bit
+X265_10.CONFIGURE.exe = cmake
+X265_10.CONFIGURE.args.prefix = -DCMAKE_INSTALL_PREFIX="$(X265_10.CONFIGURE.prefix)"
+X265_10.CONFIGURE.deps =
+X265_10.CONFIGURE.static =
+X265_10.CONFIGURE.shared = -DENABLE_SHARED=OFF
+X265_10.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=ON -DENABLE_LIBNUMA=OFF -DEXPORT_C_API=OFF
+
+ifneq (none,$(X265_10.GCC.g))
+ X265_10.CONFIGURE.extra += -DCMAKE_BUILD_TYPE=Debug
+endif
+
+ifeq (1,$(BUILD.cross))
+ ifeq (mingw,$(BUILD.system))
+ X265_10.CONFIGURE.extra += -DWIN32=ON
+ endif
+ X265_10.CONFIGURE.args.host = -DCMAKE_SYSTEM_NAME="$(X265_10.CONFIGURE.host)"
+ X265_10.CONFIGURE.args.build = -DCMAKE_HOST_SYSTEM="$(X265_10.CONFIGURE.build)"
+else
+ X265_10.CONFIGURE.args.host = -DCMAKE_HOST_SYSTEM="$(X265_10.CONFIGURE.host)"
+ ifeq (1,$(FEATURE.local_yasm))
+ X265_10.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
+ X265_10.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
+ endif
+endif
+
+## find CMakeLists.txt
+X265_10.CONFIGURE.extra += "$(call fn.ABSOLUTE,$(X265_10.EXTRACT.dir/)source/)"
+
+X265_10.INSTALL.make = $(MV.exe)
+X265_10.INSTALL.args.dir = cd $(1);
+X265_10.INSTALL.extra = libx265.a libx265_main10.a
+X265_10.INSTALL.args = @dir !make !extra
+
+# Override operations that are not needed
+X265_10.FETCH =
+X265_10.EXTRACT = $(TOUCH.exe) $@
+X265_10.PATCH = $(TOUCH.exe) $@
+X265.XCLEAN =
diff --git a/contrib/x265_10bit/module.rules b/contrib/x265_10bit/module.rules
new file mode 100644
index 000000000..b5ca70ae2
--- /dev/null
+++ b/contrib/x265_10bit/module.rules
@@ -0,0 +1,2 @@
+$(eval $(call import.MODULE.rules,X265_10))
+$(eval $(call import.CONTRIB.rules,X265_10))
diff --git a/contrib/x265_12bit/P00-mingw-lib.patch b/contrib/x265_12bit/P00-mingw-lib.patch
new file mode 100644
index 000000000..5c822be0a
--- /dev/null
+++ b/contrib/x265_12bit/P00-mingw-lib.patch
@@ -0,0 +1,11 @@
+--- x265_2.5/source/x265-extras.h.orig 2017-07-13 07:20:07.000000000 -0400
++++ x265_2.5/source/x265-extras.h 2017-07-31 13:20:23.000000000 -0400
+@@ -33,7 +33,7 @@
+ extern "C" {
+ #endif
+
+-#if _WIN32
++#ifdef X265_API_IMPORTS
+ #define LIBAPI __declspec(dllexport)
+ #else
+ #define LIBAPI
diff --git a/contrib/x265_12bit/module.defs b/contrib/x265_12bit/module.defs
new file mode 100644
index 000000000..8d719a4b9
--- /dev/null
+++ b/contrib/x265_12bit/module.defs
@@ -0,0 +1,51 @@
+__deps__ := YASM CMAKE X265_8
+$(eval $(call import.MODULE.defs,X265_12,x265_12,$(__deps__),x265))
+$(eval $(call import.CONTRIB.defs,X265_12))
+
+X265_12.FETCH.url = https://download.handbrake.fr/contrib/x265_2.5.tar.gz
+X265_12.FETCH.url += https://bitbucket.org/multicoreware/x265/downloads/x265_2.5.tar.gz
+X265_12.FETCH.url += https://download.videolan.org/pub/videolan/x265/x265_2.5.tar.gz
+X265_12.FETCH.sha256 = 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17
+
+# Silence "warning: overriding recipe for target" messages
+X265_12.FETCH.target =
+
+X265_12.build_dir = 12bit
+X265_12.CONFIGURE.exe = cmake
+X265_12.CONFIGURE.args.prefix = -DCMAKE_INSTALL_PREFIX="$(X265_12.CONFIGURE.prefix)"
+X265_12.CONFIGURE.deps =
+X265_12.CONFIGURE.static =
+X265_12.CONFIGURE.shared = -DENABLE_SHARED=OFF
+X265_12.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=ON -DENABLE_LIBNUMA=OFF -DEXPORT_C_API=OFF -DMAIN12=ON
+
+ifneq (none,$(X265_12.GCC.g))
+ X265_12.CONFIGURE.extra += -DCMAKE_BUILD_TYPE=Debug
+endif
+
+ifeq (1,$(BUILD.cross))
+ ifeq (mingw,$(BUILD.system))
+ X265_12.CONFIGURE.extra += -DWIN32=ON
+ endif
+ X265_12.CONFIGURE.args.host = -DCMAKE_SYSTEM_NAME="$(X265_12.CONFIGURE.host)"
+ X265_12.CONFIGURE.args.build = -DCMAKE_HOST_SYSTEM="$(X265_12.CONFIGURE.build)"
+else
+ X265_12.CONFIGURE.args.host = -DCMAKE_HOST_SYSTEM="$(X265_12.CONFIGURE.host)"
+ ifeq (1,$(FEATURE.local_yasm))
+ X265_12.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
+ X265_12.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
+ endif
+endif
+
+## find CMakeLists.txt
+X265_12.CONFIGURE.extra += "$(call fn.ABSOLUTE,$(X265_12.EXTRACT.dir/)source/)"
+
+X265_12.INSTALL.make = $(MV.exe)
+X265_12.INSTALL.args.dir = cd $(1);
+X265_12.INSTALL.extra = libx265.a libx265_main12.a
+X265_12.INSTALL.args = @dir !make !extra
+
+# Override operations that are not needed
+X265_12.FETCH =
+X265_12.EXTRACT = $(TOUCH.exe) $@
+X265_12.PATCH = $(TOUCH.exe) $@
+X265.XCLEAN =
diff --git a/contrib/x265_12bit/module.rules b/contrib/x265_12bit/module.rules
new file mode 100644
index 000000000..1246ce815
--- /dev/null
+++ b/contrib/x265_12bit/module.rules
@@ -0,0 +1,2 @@
+$(eval $(call import.MODULE.rules,X265_12))
+$(eval $(call import.CONTRIB.rules,X265_12))
diff --git a/contrib/x265_8bit/P00-mingw-lib.patch b/contrib/x265_8bit/P00-mingw-lib.patch
new file mode 100644
index 000000000..5c822be0a
--- /dev/null
+++ b/contrib/x265_8bit/P00-mingw-lib.patch
@@ -0,0 +1,11 @@
+--- x265_2.5/source/x265-extras.h.orig 2017-07-13 07:20:07.000000000 -0400
++++ x265_2.5/source/x265-extras.h 2017-07-31 13:20:23.000000000 -0400
+@@ -33,7 +33,7 @@
+ extern "C" {
+ #endif
+
+-#if _WIN32
++#ifdef X265_API_IMPORTS
+ #define LIBAPI __declspec(dllexport)
+ #else
+ #define LIBAPI
diff --git a/contrib/x265_8bit/module.defs b/contrib/x265_8bit/module.defs
new file mode 100644
index 000000000..7b3cb8d80
--- /dev/null
+++ b/contrib/x265_8bit/module.defs
@@ -0,0 +1,45 @@
+__deps__ := YASM CMAKE
+$(eval $(call import.MODULE.defs,X265_8,x265_8,$(__deps__),x265))
+$(eval $(call import.CONTRIB.defs,X265_8))
+
+X265_8.FETCH.url = https://download.handbrake.fr/contrib/x265_2.5.tar.gz
+X265_8.FETCH.url += https://bitbucket.org/multicoreware/x265/downloads/x265_2.5.tar.gz
+X265_8.FETCH.url += https://download.videolan.org/pub/videolan/x265/x265_2.5.tar.gz
+X265_8.FETCH.sha256 = 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17
+
+X265_8.build_dir = 8bit
+X265_8.CONFIGURE.exe = cmake
+X265_8.CONFIGURE.args.prefix = -DCMAKE_INSTALL_PREFIX="$(X265_8.CONFIGURE.prefix)"
+X265_8.CONFIGURE.deps =
+X265_8.CONFIGURE.static =
+X265_8.CONFIGURE.shared = -DENABLE_SHARED=OFF
+X265_8.CONFIGURE.extra = -DENABLE_CLI=OFF -DHIGH_BIT_DEPTH=OFF -DENABLE_LIBNUMA=OFF -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON
+
+ifneq (none,$(X265_8.GCC.g))
+ X265_8.CONFIGURE.extra += -DCMAKE_BUILD_TYPE=Debug
+endif
+
+ifeq (1,$(BUILD.cross))
+ ifeq (mingw,$(BUILD.system))
+ X265_8.CONFIGURE.extra += -DWIN32=ON
+ endif
+ X265_8.CONFIGURE.args.host = -DCMAKE_SYSTEM_NAME="$(X265_8.CONFIGURE.host)"
+ X265_8.CONFIGURE.args.build = -DCMAKE_HOST_SYSTEM="$(X265_8.CONFIGURE.build)"
+else
+ X265_8.CONFIGURE.args.host = -DCMAKE_HOST_SYSTEM="$(X265_8.CONFIGURE.host)"
+ ifeq (1,$(FEATURE.local_yasm))
+ X265_8.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
+ X265_8.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
+ endif
+endif
+
+## find CMakeLists.txt
+X265_8.CONFIGURE.extra += "$(call fn.ABSOLUTE,$(X265_8.EXTRACT.dir/)source/)"
+
+X265_8.INSTALL.make = $(MV.exe)
+X265_8.INSTALL.args.dir = cd $(1);
+X265_8.INSTALL.extra = libx265.a libx265_main.a
+X265_8.INSTALL.args = @dir !make !extra
+
+# Override operations that are not needed
+X265.XCLEAN =
diff --git a/contrib/x265_8bit/module.rules b/contrib/x265_8bit/module.rules
new file mode 100644
index 000000000..0a43864c0
--- /dev/null
+++ b/contrib/x265_8bit/module.rules
@@ -0,0 +1,2 @@
+$(eval $(call import.MODULE.rules,X265_8))
+$(eval $(call import.CONTRIB.rules,X265_8))