mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	- fix for #1189 (h3 text parsing fix)
- fix for #1188 (replaced ffmpeg detection with module from KDE)
This commit is contained in:
		| @@ -42,7 +42,8 @@ find_package(SDL_ttf REQUIRED) | ||||
| find_package(ZLIB REQUIRED) | ||||
|  | ||||
| if(NOT WIN32) | ||||
| 	find_package(FFMPEG_swscale REQUIRED) | ||||
| 	set(FFmpeg_FIND_COMPONENTS AVFORMAT SWSCALE) | ||||
| 	find_package(FFmpeg REQUIRED) | ||||
|  | ||||
| 	INCLUDE(CheckLibraryExists) | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.6) | ||||
|  | ||||
| include_directories(${CMAKE_HOME_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_HOME_DIRECTORY}/lib) | ||||
| include_directories(${SDL_INCLUDE_DIR} ${SDLIMAGE_INCLUDE_DIR} ${SDLMIXER_INCLUDE_DIR} ${SDLTTF_INCLUDE_DIR}) | ||||
| include_directories(${Boost_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIR}) | ||||
| include_directories(${Boost_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS}) | ||||
|  | ||||
| set(client_SRCS | ||||
|         ../CCallback.cpp | ||||
|   | ||||
							
								
								
									
										27
									
								
								cmake_modules/COPYING-CMAKE-SCRIPTS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								cmake_modules/COPYING-CMAKE-SCRIPTS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| The following files are derived from the Thermite project | ||||
| (http://www.thermite3d.org) and are covered under the license below. | ||||
|  | ||||
| FindMYGUI.cmake, FindOGRE.cmake, FindOIS.cmake, FindBullet.cmake | ||||
|  | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, are permitted provided that the following conditions | ||||
| are met: | ||||
|  | ||||
| 1. Redistributions of source code must retain the copyright | ||||
|    notice, this list of conditions and the following disclaimer. | ||||
| 2. Redistributions in binary form must reproduce the copyright | ||||
|    notice, this list of conditions and the following disclaimer in the | ||||
|    documentation and/or other materials provided with the distribution. | ||||
| 3. The name of the author may not be used to endorse or promote products  | ||||
|    derived from this software without specific prior written permission. | ||||
|  | ||||
| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||||
| IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||||
| OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||||
| IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||||
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||||
| NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
| THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| @@ -1,76 +0,0 @@ | ||||
| # Find the FFmpeg library | ||||
| # | ||||
| # Sets | ||||
| #   FFMPEG_INCLUDE_DIR | ||||
| #   FFMPEG_LIBRARIES | ||||
|  | ||||
| FIND_PATH( FFMPEG_INCLUDE_DIR NAMES libavcodec/avcodec.h ffmpeg/avcodec.h | ||||
|   PATHS /usr/include /usr/local/include /usr/include/ffmpeg | ||||
| ) | ||||
|  | ||||
| IF( FFMPEG_INCLUDE_DIR ) | ||||
|  | ||||
| FIND_PROGRAM( FFMPEG_CONFIG ffmpeg-config | ||||
|   /usr/bin | ||||
|   /usr/local/bin | ||||
|   ${HOME}/bin | ||||
| ) | ||||
|  | ||||
| IF( FFMPEG_CONFIG ) | ||||
|   EXEC_PROGRAM( ${FFMPEG_CONFIG} ARGS "--libs avformat" OUTPUT_VARIABLE FFMPEG_LIBS ) | ||||
|   SET( FFMPEG_LIBRARIES "${FFMPEG_LIBS}" ) | ||||
|    | ||||
| ELSE( FFMPEG_CONFIG ) | ||||
|  | ||||
|   FIND_LIBRARY( FFMPEG_avcodec_LIBRARY avcodec | ||||
|     /usr/lib | ||||
|     /usr/local/lib | ||||
|     /usr/lib64 | ||||
|     /usr/local/lib64 | ||||
|   ) | ||||
|  | ||||
|   FIND_LIBRARY( FFMPEG_avformat_LIBRARY avformat | ||||
|     /usr/lib | ||||
|     /usr/local/lib | ||||
|     /usr/lib64 | ||||
|     /usr/local/lib64 | ||||
|   ) | ||||
|    | ||||
|   FIND_LIBRARY( FFMPEG_avutil_LIBRARY avutil | ||||
|     /usr/lib | ||||
|     /usr/local/lib | ||||
|     /usr/lib64 | ||||
|     /usr/local/lib64 | ||||
|   ) | ||||
|    | ||||
|   FIND_LIBRARY( FFMPEG_swscale_LIBRARY swscale | ||||
|     /usr/lib | ||||
|     /usr/local/lib | ||||
|     /usr/lib64 | ||||
|     /usr/local/lib64 | ||||
|   ) | ||||
|  | ||||
|   IF( FFMPEG_avcodec_LIBRARY ) | ||||
|   IF( FFMPEG_avformat_LIBRARY ) | ||||
|  | ||||
|     SET( FFMPEG_LIBRARIES ${FFMPEG_avformat_LIBRARY} ${FFMPEG_avcodec_LIBRARY} ) | ||||
|     IF( FFMPEG_avutil_LIBRARY ) | ||||
|        SET( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${FFMPEG_avutil_LIBRARY} ) | ||||
|     ENDIF( FFMPEG_avutil_LIBRARY ) | ||||
|     IF( FFMPEG_swscale_LIBRARY ) | ||||
|        SET( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${FFMPEG_swscale_LIBRARY} ) | ||||
|     ENDIF( FFMPEG_swscale_LIBRARY ) | ||||
|  | ||||
|   ENDIF( FFMPEG_avformat_LIBRARY ) | ||||
|   ENDIF( FFMPEG_avcodec_LIBRARY ) | ||||
|  | ||||
| ENDIF( FFMPEG_CONFIG ) | ||||
|  | ||||
| ENDIF( FFMPEG_INCLUDE_DIR ) | ||||
|  | ||||
| IF (APPLE) | ||||
|     SET(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} "-framework VideoDecodeAcceleration -framework CoreVideo -lbz2") | ||||
| ENDIF() | ||||
|  | ||||
| INCLUDE (FindPackageHandleStandardArgs) | ||||
| FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFMPEG DEFAULT_MESSAGE FFMPEG_INCLUDE_DIR FFMPEG_LIBRARIES) | ||||
							
								
								
									
										148
									
								
								cmake_modules/FindFFmpeg.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								cmake_modules/FindFFmpeg.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,148 @@ | ||||
| # vim: ts=2 sw=2 | ||||
| # - Try to find the required ffmpeg components(default: AVFORMAT, AVUTIL, AVCODEC) | ||||
| # | ||||
| # Once done this will define | ||||
| #  FFMPEG_FOUND         - System has the all required components. | ||||
| #  FFMPEG_INCLUDE_DIRS  - Include directory necessary for using the required components headers. | ||||
| #  FFMPEG_LIBRARIES     - Link these to use the required ffmpeg components. | ||||
| #  FFMPEG_DEFINITIONS   - Compiler switches required for using the required ffmpeg components. | ||||
| # | ||||
| # For each of the components it will additionaly set. | ||||
| #   - AVCODEC | ||||
| #   - AVDEVICE | ||||
| #   - AVFORMAT | ||||
| #   - AVUTIL | ||||
| #   - POSTPROCESS | ||||
| #   - SWSCALE | ||||
| # the following variables will be defined | ||||
| #  <component>_FOUND        - System has <component> | ||||
| #  <component>_INCLUDE_DIRS - Include directory necessary for using the <component> headers | ||||
| #  <component>_LIBRARIES    - Link these to use <component> | ||||
| #  <component>_DEFINITIONS  - Compiler switches required for using <component> | ||||
| #  <component>_VERSION      - The components version | ||||
| # | ||||
| # Copyright (c) 2006, Matthias Kretz, <kretz@kde.org> | ||||
| # Copyright (c) 2008, Alexander Neundorf, <neundorf@kde.org> | ||||
| # Copyright (c) 2011, Michael Jansen, <kde@michael-jansen.biz> | ||||
| # | ||||
| # Redistribution and use is allowed according to the terms of the BSD license. | ||||
| # For details see the accompanying COPYING-CMAKE-SCRIPTS file. | ||||
|  | ||||
| include(FindPackageHandleStandardArgs) | ||||
|  | ||||
| # The default components were taken from a survey over other FindFFMPEG.cmake files | ||||
| if (NOT FFmpeg_FIND_COMPONENTS) | ||||
|   set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE) | ||||
| endif () | ||||
|  | ||||
| # | ||||
| ### Macro: set_component_found | ||||
| # | ||||
| # Marks the given component as found if both *_LIBRARIES AND *_INCLUDE_DIRS is present. | ||||
| # | ||||
| macro(set_component_found _component ) | ||||
|   if (${_component}_LIBRARIES AND ${_component}_INCLUDE_DIRS) | ||||
|     # message(STATUS "  - ${_component} found.") | ||||
|     set(${_component}_FOUND TRUE) | ||||
|   else () | ||||
|     # message(STATUS "  - ${_component} not found.") | ||||
|   endif () | ||||
| endmacro() | ||||
|  | ||||
| # | ||||
| ### Macro: find_component | ||||
| # | ||||
| # Checks for the given component by invoking pkgconfig and then looking up the libraries and | ||||
| # include directories. | ||||
| # | ||||
| macro(find_component _component _pkgconfig _library _header) | ||||
|  | ||||
|   if (NOT WIN32) | ||||
|      # use pkg-config to get the directories and then use these values | ||||
|      # in the FIND_PATH() and FIND_LIBRARY() calls | ||||
|      find_package(PkgConfig) | ||||
|      if (PKG_CONFIG_FOUND) | ||||
|        pkg_check_modules(PC_${_component} ${_pkgconfig}) | ||||
|      endif () | ||||
|   endif (NOT WIN32) | ||||
|  | ||||
|   find_path(${_component}_INCLUDE_DIRS ${_header} | ||||
|     HINTS | ||||
|       ${PC_LIB${_component}_INCLUDEDIR} | ||||
|       ${PC_LIB${_component}_INCLUDE_DIRS} | ||||
|     PATH_SUFFIXES | ||||
|       ffmpeg | ||||
|   ) | ||||
|  | ||||
|   find_library(${_component}_LIBRARIES NAMES ${_library} | ||||
|       HINTS | ||||
|       ${PC_LIB${_component}_LIBDIR} | ||||
|       ${PC_LIB${_component}_LIBRARY_DIRS} | ||||
|   ) | ||||
|  | ||||
|   set(${_component}_DEFINITIONS  ${PC_${_component}_CFLAGS_OTHER} CACHE STRING "The ${_component} CFLAGS.") | ||||
|   set(${_component}_VERSION      ${PC_${_component}_VERSION}      CACHE STRING "The ${_component} version number.") | ||||
|  | ||||
|   set_component_found(${_component}) | ||||
|  | ||||
|   mark_as_advanced( | ||||
|     ${_component}_INCLUDE_DIRS | ||||
|     ${_component}_LIBRARIES | ||||
|     ${_component}_DEFINITIONS | ||||
|     ${_component}_VERSION) | ||||
|  | ||||
| endmacro() | ||||
|  | ||||
|  | ||||
| # Check for cached results. If there are skip the costly part. | ||||
| if (NOT FFMPEG_LIBRARIES) | ||||
|  | ||||
|   # Check for all possible component. | ||||
|   find_component(AVCODEC  libavcodec  avcodec  libavcodec/avcodec.h) | ||||
|   find_component(AVFORMAT libavformat avformat libavformat/avformat.h) | ||||
|   find_component(AVDEVICE libavdevice avdevice libavdevice/avdevice.h) | ||||
|   find_component(AVUTIL   libavutil   avutil   libavutil/avutil.h) | ||||
|   find_component(SWSCALE  libswscale  swscale  libswscale/swscale.h) | ||||
|   find_component(POSTPROC libpostproc postproc libpostproc/postprocess.h) | ||||
|  | ||||
|   # Check if the required components were found and add their stuff to the FFMPEG_* vars. | ||||
|   foreach (_component ${FFmpeg_FIND_COMPONENTS}) | ||||
|     if (${_component}_FOUND) | ||||
|       # message(STATUS "Required component ${_component} present.") | ||||
|       set(FFMPEG_LIBRARIES   ${FFMPEG_LIBRARIES}   ${${_component}_LIBRARIES}) | ||||
|       set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} ${${_component}_DEFINITIONS}) | ||||
|       list(APPEND FFMPEG_INCLUDE_DIRS ${${_component}_INCLUDE_DIRS}) | ||||
|     else () | ||||
|       # message(STATUS "Required component ${_component} missing.") | ||||
|     endif () | ||||
|   endforeach () | ||||
|  | ||||
|   # Build the include path with duplicates removed. | ||||
|   if (FFMPEG_INCLUDE_DIRS) | ||||
|     list(REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS) | ||||
|   endif () | ||||
|  | ||||
|   # cache the vars. | ||||
|   set(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS} CACHE STRING "The FFmpeg include directories." FORCE) | ||||
|   set(FFMPEG_LIBRARIES    ${FFMPEG_LIBRARIES}    CACHE STRING "The FFmpeg libraries." FORCE) | ||||
|   set(FFMPEG_DEFINITIONS  ${FFMPEG_DEFINITIONS}  CACHE STRING "The FFmpeg cflags." FORCE) | ||||
|  | ||||
|   mark_as_advanced(FFMPEG_INCLUDE_DIRS | ||||
|                    FFMPEG_LIBRARIES | ||||
|                    FFMPEG_DEFINITIONS) | ||||
|  | ||||
| endif () | ||||
|  | ||||
| # Now set the noncached _FOUND vars for the components. | ||||
| foreach (_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWSCALE) | ||||
|   set_component_found(${_component}) | ||||
| endforeach () | ||||
|  | ||||
| # Compile the list of required vars | ||||
| set(_FFmpeg_REQUIRED_VARS FFMPEG_LIBRARIES FFMPEG_INCLUDE_DIRS) | ||||
| foreach (_component ${FFmpeg_FIND_COMPONENTS}) | ||||
|   list(APPEND _FFmpeg_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS) | ||||
| endforeach () | ||||
|  | ||||
| # Give a nice error message if some of the required vars are missing. | ||||
| find_package_handle_standard_args(FFmpeg DEFAULT_MSG ${_FFmpeg_REQUIRED_VARS}) | ||||
| @@ -53,7 +53,7 @@ std::string CLegacyConfigParser::extractQuotedPart() | ||||
| 	curr++; // skip quote | ||||
| 	char * begin = curr; | ||||
|  | ||||
| 	while (curr != end && *curr != '\"') | ||||
| 	while (curr != end && *curr != '\"' && *curr != '\t') | ||||
| 		curr++; | ||||
|  | ||||
| 	return std::string(begin, curr++); //increment curr to close quote | ||||
| @@ -68,8 +68,12 @@ std::string CLegacyConfigParser::extractQuotedString() | ||||
| 	{ | ||||
| 		ret += extractQuotedPart(); | ||||
|  | ||||
| 		if (curr < end && *curr == '\"') //double quote - add it to string and continue | ||||
| 		// double quote - add it to string and continue unless | ||||
| 		// line terminated using tabulation | ||||
| 		if (curr < end && *curr == '\"' && *curr != '\t') | ||||
| 		{ | ||||
| 			ret += '\"'; | ||||
| 		} | ||||
| 		else // end of string | ||||
| 			return ret; | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user