--- a/CMakeLists.txt Wed Mar 06 11:18:54 2013 +0100
+++ b/CMakeLists.txt Wed Mar 06 12:12:02 2013 +0100
@@ -22,7 +22,7 @@
#possible cmake configuration
option(NOSERVER "Disable gameServer build [default: auto]" OFF)
option(NOPNG "Disable screenshoot compression [default: auto]" OFF)
-option(NOVIDEOREC "Disable video recording [default: auto]" OFF)
+option(NOVIDEOREC "Disable video recording [default: off]" OFF)
#set this to ON when 2.1.0 becomes more widespread (and only for linux)
option(SYSTEM_PHYSFS "Use system physfs [default:off]" OFF)
@@ -194,11 +194,6 @@
list(APPEND pascal_flags "-Ff~/Library/Frameworks")
#set deployment target
list(APPEND pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}")
-
- #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3
- if(NOT NOVIDEOREC AND ${minimum_macosx_version} VERSION_LESS "10.6")
- set(${WARNING} "Video recording support before OS X 10.6 is experimental")
- endif()
endif(APPLE)
@@ -358,6 +353,15 @@
list(APPEND pascal_flags "-XLAphysfs=${physfs_output_name}" "-dPHYSFS_INTERNAL")
endif()
+if(NOT ${NOVIDEOREC})
+ find_package(FFMPEG)
+ if(NOT ${FFMPEG_FOUND})
+ message(FATAL_ERROR "Missing FFMPEG/Libav! Rerun cmake with -DNOVIDEOREC=on to disable video recording")
+ endif()
+else()
+ set(FFMPEG_FOUND false)
+endif()
+
#
add_subdirectory(misc/libphyslayer)
--- a/QTfrontend/CMakeLists.txt Wed Mar 06 11:18:54 2013 +0100
+++ b/QTfrontend/CMakeLists.txt Wed Mar 06 12:12:02 2013 +0100
@@ -15,12 +15,11 @@
find_package(SDL REQUIRED) #video in SDLInteraction
find_package(SDL_mixer REQUIRED) #audio in SDLInteraction
-find_package(SDL_net REQUIRED) #network frontlib
-if(NOT NOVIDEOREC)
- find_package(FFMPEG)
- if(${FFMPEG_FOUND})
- add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS)
- endif()
+
+if(${FFMPEG_FOUND})
+ add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS)
+ include_directories(${FFMPEG_INCLUDE_DIR})
+ list(APPEND HW_LINK_LIBS ${FFMPEG_LIBRARIES})
endif()
# server messages localization
@@ -56,7 +55,6 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/util/platform)
include_directories(${SDL_INCLUDE_DIR})
include_directories(${SDLMIXER_INCLUDE_DIR})
-include_directories(${FFMPEG_INCLUDE_DIR})
include_directories(${PHYSFS_INCLUDE_DIR})
include_directories(${PHYSLAYER_INCLUDE_DIR})
@@ -204,7 +202,6 @@
${QT_LIBRARIES}
${SDL_LIBRARY}
${SDLMIXER_LIBRARY}
- ${FFMPEG_LIBRARIES}
)
if(WIN32 AND NOT UNIX)
--- a/hedgewars/CMakeLists.txt Wed Mar 06 11:18:54 2013 +0100
+++ b/hedgewars/CMakeLists.txt Wed Mar 06 12:12:02 2013 +0100
@@ -189,30 +189,22 @@
endif()
-if(NOT NOVIDEOREC)
- find_package(FFMPEG)
- if(${FFMPEG_FOUND})
- # TODO: this check is only for SDL < 2
- # fpc will take care of linking but we need to have this library installed
- find_package(GLUT REQUIRED)
+if(${FFMPEG_FOUND})
+ # TODO: this check is only for SDL < 2
+ # fpc will take care of linking but we need to have this library installed
+ find_package(GLUT REQUIRED)
- #TODO: convert avwrapper to .pas unit so we can skip this step
- include_directories(${FFMPEG_INCLUDE_DIR})
- list(APPEND pascal_flags "-dUSE_VIDEO_RECORDING")
- IF (WIN32)
- # there are some problems with linking our avwrapper as static lib, so link it as shared
- add_library(avwrapper SHARED avwrapper.c)
- target_link_libraries(avwrapper ${FFMPEG_LIBRARIES})
- install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}avwrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION ${target_library_install_dir})
- ELSE()
- add_library(avwrapper STATIC avwrapper.c)
- list(APPEND pascal_flags "-k${FFMPEG_LIBAVCODEC}" "-k${FFMPEG_LIBAVFORMAT}" "-k${FFMPEG_LIBAVUTIL}")
- ENDIF()
+ #TODO: convert avwrapper to .pas unit so we can skip this step
+ include_directories(${FFMPEG_INCLUDE_DIR})
+ list(APPEND pascal_flags "-dUSE_VIDEO_RECORDING")
+ if(WIN32)
+ # there are some problems with linking our avwrapper as static lib, so link it as shared
+ add_library(avwrapper SHARED avwrapper.c)
+ target_link_libraries(avwrapper ${FFMPEG_LIBRARIES})
+ install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}avwrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION ${target_library_install_dir})
else()
- message(${WARNING} "Could NOT find FFMPEG/LibAV, video recording will be disabled")
+ add_library(avwrapper STATIC avwrapper.c)
endif()
-else()
- message(STATUS "Video recording disabled by user")
endif()
@@ -273,7 +265,7 @@
endif()
#this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6
-if((FREEPASCAL_VERSION VERSION_LESS "2.6") AND (NOVIDEOREC OR NOT ${FFMPEG_FOUND}))
+if((FREEPASCAL_VERSION VERSION_LESS "2.6") AND (NOT ${FFMPEG_FOUND}))
add_dependencies(hwengine ENGINECLEAN)
endif()
--- a/hedgewars/uVideoRec.pas Wed Mar 06 11:18:54 2013 +0100
+++ b/hedgewars/uVideoRec.pas Wed Mar 06 12:12:02 2013 +0100
@@ -28,7 +28,9 @@
{$ELSE}
{$IFNDEF WIN32}
- {$LINKLIB ../bin/libavwrapper.a}
+ {$linklib avcodec}
+ {$linklib avformat}
+ {$linklib avutil}
{$ENDIF}
interface
@@ -48,17 +50,17 @@
procedure freeModule;
implementation
-
uses uVariables, uUtils, GLunit, SDLh, SysUtils, uIO, uMisc, uTypes;
type TAddFileLogRaw = procedure (s: pchar); cdecl;
+const AvwrapperLibName = 'libavwrapper';
procedure AVWrapper_Init(
AddLog: TAddFileLogRaw;
filename, desc, soundFile, format, vcodec, acodec: PChar;
- width, height, framerateNum, framerateDen, vquality: LongInt); cdecl; external {$IFDEF WIN32}'libavwrapper.dll'{$ENDIF};
-procedure AVWrapper_Close; cdecl; external {$IFDEF WIN32}'libavwrapper.dll'{$ENDIF};
-procedure AVWrapper_WriteFrame( pY, pCb, pCr: PByte ); cdecl; external {$IFDEF WIN32}'libavwrapper.dll'{$ENDIF};
+ width, height, framerateNum, framerateDen, vquality: LongInt); cdecl; external AvwrapperLibName;
+procedure AVWrapper_Close; cdecl; external AvwrapperLibName;
+procedure AVWrapper_WriteFrame( pY, pCb, pCr: PByte ); cdecl; external AvwrapperLibName;
type TFrame = record
realTicks: LongWord;
--- a/share/CMakeLists.txt Wed Mar 06 11:18:54 2013 +0100
+++ b/share/CMakeLists.txt Wed Mar 06 12:12:02 2013 +0100
@@ -7,12 +7,9 @@
#CFBundleVersion is HEDGEWARS_REVISION
#CFBundleShortVersionString is HEDGEWARS_VERSION
- #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3
- if(NOT NOVIDEOREC)
- find_package(FFMPEG)
- if(${FFMPEG_FOUND} AND ${minimum_macosx_version} VERSION_EQUAL "10.6")
- set(minimum_macosx_version "10.6.3")
- endif()
+ #libav/ffmpeg always brings in VideoDecoderAcceleration, avaible only from 10.6.3
+ if(${FFMPEG_FOUND} AND ${minimum_macosx_version} VERSION_EQUAL "10.6")
+ set(minimum_macosx_version "10.6.3")
endif()
configure_file(${hedgewars_SOURCE_DIR}/share/Info.plist.in