[blfs-dev] x265 and ffmpeg

2015-10-24 Thread Tim Tassonis

Hi all

I just did compiled / installed x265 as in the book, and then ffmepg 
with --enable-libx265, so it would pick up the x265 stuff.


While this went ok, I noticed that ffmpeg will link to the static 
libx265 library instead of the shared one, as both are produced and 
installed. Moving libx265.a away from /usr/lib before the ffmpeg 
build/install fixed that.


I just wondered if there is a cleaner way to achieve that? I'm not 
really familiar with cmake, the autoconf usually lets you specify 
--disable-static on configure.



Kind regards
Tim
--
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page


Re: [blfs-dev] x265 and ffmpeg

2015-10-24 Thread Fernando de Oliveira
Em 24-10-2015 14:49, Tim Tassonis escreveu:
> Hi all
> 
> I just did compiled / installed x265 as in the book, and then ffmepg
> with --enable-libx265, so it would pick up the x265 stuff.
> 
> While this went ok, I noticed that ffmpeg will link to the static
> libx265 library instead of the shared one, as both are produced and
> installed. Moving libx265.a away from /usr/lib before the ffmpeg
> build/install fixed that.
> 
> I just wondered if there is a cleaner way to achieve that? I'm not
> really familiar with cmake, the autoconf usually lets you specify
> --disable-static on configure.

Thanks for the info.

To find the options with cmake, run:

cmake  -LH

Normally you are inside the source, where CMakeLists.txt is.

With mariadb:

$ cd mariadb-
$ cmake . -LH

I wrote that, because the case of x264 is a little peculiar: the source
with CMakeLists.txt is not under x264_1.8, but under "source", so that:

$ cd x264_1.8
$ cmake source -LH

Unfortunately there is no ENABLE_STATIC option, so we have to do either
what you have just done, or use a patch to create the option. I have
submitted that patch and modified the x264 page to use it should be in
svn tomorrow.

Attached is the patch, if you wish to try it before that.

Use

cmake -DCMAKE_INSTALL_PREFIX=/usr \
  -DENABLE_STATIC=OFF ../source

> 
> Kind regards
> Tim


-- 
[]s,
Fernando, aka Sísifo
Submitted By:Fernando de Oliveira 
Date:2015-10-24
Initial Package Version: 1.8
Upstream Status: not submitted
Origin:  https://bitbucket.org/TimothyGu/x265/commits/a9aacc5a16116f1c663d1fcb62ad9a0985043b94/raw/
 https://bitbucket.org/TimothyGu/x265/commits/578c5ef3dff46db38e7c36a8d3c6198a65c9746b/raw/
Description: Add ENABLE_STATIC:BOOL=ON, so that static lib
 can be disabled.



--- x265_11047/source/CMakeLists.txt.orig	2015-10-08 07:01:36.0 -0300
+++ x265_11047/source/CMakeLists.txt	2015-10-24 17:10:57.919861668 -0300
@@ -419,16 +419,21 @@
 endif()
 
 source_group(ASM FILES ${YASM_SRCS})
-add_library(x265-static STATIC $ $ ${YASM_OBJS} ${YASM_SRCS})
-if(NOT MSVC)
-set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
-endif()
-if(EXTRA_LIB)
-target_link_libraries(x265-static ${EXTRA_LIB})
-endif()
-install(TARGETS x265-static
-LIBRARY DESTINATION ${LIB_INSTALL_DIR}
-ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
+
+option(ENABLE_STATIC "Build static library" ON)
+if(ENABLE_STATIC)
+add_library(x265-static STATIC $ $ ${YASM_OBJS} ${YASM_SRCS})
+if(NOT MSVC)
+set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
+endif()
+if(EXTRA_LIB)
+target_link_libraries(x265-static ${EXTRA_LIB})
+endif()
+install(TARGETS x265-static
+LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
+endif(ENABLE_STATIC)
+
 install(FILES x265.h "${PROJECT_BINARY_DIR}/x265_config.h" DESTINATION include)
 
 if(CMAKE_RC_COMPILER)
@@ -490,6 +495,10 @@
 endif()
 endif()
 
+if(NOT ENABLE_STATIC AND NOT ENABLE_SHARED)
+message(FATAL_ERROR "Neither static nor shared libraries are enabled.")
+endif()
+
 if(X265_LATEST_TAG)
 # convert lists of link libraries into -lstdc++ -lm etc..
 foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
@@ -551,12 +560,14 @@
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT} ${X265_RC_FILE}
${ExportDefs} x265.cpp x265.h x265cli.h x265-extras.h x265-extras.cpp)
-if(WIN32 OR NOT ENABLE_SHARED OR INTEL_CXX)
-# The CLI cannot link to the shared library on Windows, it
-# requires internal APIs not exported from the DLL
-target_link_libraries(cli x265-static ${PLATFORM_LIBS})
-else()
+if(WIN32 AND NOT ENABLE_STATIC)
+message(FATAL_ERROR "The CLI cannot link to shared library on Windows as it requires internal APIs not exported from the DLL.")
+elseif(INTEL_CXX AND NOT ENABLE_STATIC)
+message(FATAL_ERROR "The CLI cannot link to shared library with Intel C++ Compiler as it requires internal APIs not exported from the shared library.")
+elseif(ENABLE_SHARED)
 target_link_libraries(cli x265-shared ${PLATFORM_LIBS})
+else()
+target_link_libraries(cli x265-static ${PLATFORM_LIBS})
 endif()
 endif()
 set_target_properties(cli PROPERTIES OUTPUT_NAME x265)
-- 
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page