[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52106] trunk/blender: Replacing gettext i18n backend by boost::locale one.

Bastien Montagne montagne29 at wanadoo.fr
Sun Nov 11 17:54:26 CET 2012


Revision: 52106
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52106
Author:   mont29
Date:     2012-11-11 16:54:26 +0000 (Sun, 11 Nov 2012)
Log Message:
-----------
Replacing gettext i18n backend by boost::locale one.

This commit adds a small and simplistic C wrapper around boost's locale library as intern/locale, and heavily simplifies/reduces Blender's own i18n code (under blenfont/ dir). And it adds back UI translation on windows' official builds (with msvc)!

Note to platform maintainers: iconv and gettext (libintl) can now be removed from precompiled libs (not gettext binaries, under windows, of course ;) ).

Note to MinGW32/64 users: boost_locale lib has not yet been uploaded for those build env, please disable WITH_INTERNATIONAL for now (hopefully will be fixed very soon, have contacted psy-fy).

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/build_files/cmake/macros.cmake
    trunk/blender/build_files/scons/config/darwin-config.py
    trunk/blender/build_files/scons/config/linux-config.py
    trunk/blender/build_files/scons/config/win32-mingw-config.py
    trunk/blender/build_files/scons/config/win32-vc-config.py
    trunk/blender/build_files/scons/config/win64-mingw-config.py
    trunk/blender/build_files/scons/config/win64-vc-config.py
    trunk/blender/intern/CMakeLists.txt
    trunk/blender/intern/SConscript
    trunk/blender/source/blender/blenfont/BLF_translation.h
    trunk/blender/source/blender/blenfont/CMakeLists.txt
    trunk/blender/source/blender/blenfont/SConscript
    trunk/blender/source/blender/blenfont/intern/blf_lang.c
    trunk/blender/source/blender/blenfont/intern/blf_translation.c
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blenderplayer/CMakeLists.txt
    trunk/blender/source/creator/CMakeLists.txt
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp

Added Paths:
-----------
    trunk/blender/intern/locale/
    trunk/blender/intern/locale/CMakeLists.txt
    trunk/blender/intern/locale/SConscript
    trunk/blender/intern/locale/boost_locale_wrapper.cpp
    trunk/blender/intern/locale/boost_locale_wrapper.h

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2012-11-11 16:21:43 UTC (rev 52105)
+++ trunk/blender/CMakeLists.txt	2012-11-11 16:54:26 UTC (rev 52106)
@@ -296,11 +296,11 @@
 
 	if(${CMAKE_GENERATOR} MATCHES "Xcode")
 	
-		##### cmake incompatibility with xcode  4.3 and higher #####
+		##### workaround for actual official cmake incompatibility with xcode 4.3 #####
 		if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
-			message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
+			message("Official cmake does not yet support Xcode 4.3, get a patched version here: http://www.jensverwiebe.de/Blender/CMake%202.8-7patched.zip")
 		endif()
-		### end cmake incompatibility with xcode 4.3 and higher ###
+		### end workaround for actual official cmake incompatibility with xcode 4.3 ###
 		
 		if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
 			# Xcode 4 defaults to the Apple LLVM Compiler.
@@ -376,8 +376,8 @@
 	set(WITH_OPENIMAGEIO ON)
 endif()
 
-# auto enable boost for cycles, booleans or audaspace
-if(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE)
+# auto enable boost for cycles, booleans, audaspace or i18n
+if(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
 	set(WITH_BOOST ON)
 endif()
 
@@ -593,28 +593,6 @@
 		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
 	endif()
 
-	if(WITH_INTERNATIONAL)
-		find_library(INTL_LIBRARY
-			NAMES intl
-			PATHS
-			/sw/lib
-		)
-
-		find_library(ICONV_LIBRARY
-			NAMES iconv
-			PATHS
-			/sw/lib
-		)
-		mark_as_advanced(
-			ICONV_LIBRARY
-			INTL_LIBRARY
-		)
-
-		if(INTL_LIBRARY AND ICONV_LIBRARY)
-			set(GETTEXT_LIBRARIES ${INTL_LIBRARY} ${ICONV_LIBRARY})
-		endif()
-	endif()
-
 	if(WITH_FFTW3)
 		find_package(Fftw3)
 		if(NOT FFTW3_FOUND)
@@ -662,7 +640,11 @@
 			else()
 				set(Boost_USE_MULTITHREADED ON)
 			endif()
-			find_package(Boost 1.34 COMPONENTS filesystem regex system thread)
+			set(__boost_packages filesystem regex system thread)
+			if (WITH_INTERNATIONAL)
+				list(APPEND __boost_packages locale)
+			endif()
+			find_package(Boost 1.34 COMPONENTS ${__boost_packages})
 			mark_as_advanced(Boost_DIR)  # why doesnt boost do this?
 		endif()
 
@@ -879,13 +861,6 @@
 		
 	add_definitions(-DWIN32)
 
-	if(WITH_INTERNATIONAL)
-		set(ICONV ${LIBDIR}/iconv)
-		set(ICONV_INCLUDE_DIRS ${ICONV}/include)
-		set(ICONV_LIBRARIES iconv)
-		set(ICONV_LIBPATH ${ICONV}/lib)
-	endif()
-
 	set(JPEG "${LIBDIR}/jpeg")
 	set(JPEG_INCLUDE_DIR "${JPEG}/include")
 	set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
@@ -978,13 +953,6 @@
 		set(CXX_WARNINGS "${_WARNINGS}")
 		unset(_WARNINGS)
 
-		if(WITH_INTERNATIONAL)
-			set(GETTEXT ${LIBDIR}/gettext)
-			set(GETTEXT_INCLUDE_DIRS ${GETTEXT}/include)
-			set(GETTEXT_LIBPATH ${GETTEXT}/lib)
-			set(GETTEXT_LIBRARIES gnu_gettext)
-		endif()
-		
 		if(WITH_MOD_CLOTH_ELTOPO)
 			set(LAPACK ${LIBDIR}/lapack)
 			# set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
@@ -1137,6 +1105,11 @@
 				debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
 				debug libboost_regex-${BOOST_DEBUG_POSTFIX}
 				debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
+			if(WITH_INTERNATIONAL)
+				set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
+					optimized libboost_locale-${BOOST_POSTFIX}
+					debug libboost_locale-${BOOST_DEBUG_POSTFIX})
+			endif(WITH_INTERNATIONAL)
 			set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
 		endif()
 			
@@ -1190,16 +1163,8 @@
 
 		add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
 
-
 		add_definitions(-DFREE_WINDOWS)
 
-		if(WITH_INTERNATIONAL)
-			set(GETTEXT ${LIBDIR}/gettext)
-			set(GETTEXT_INCLUDE_DIRS ${GETTEXT}/include)
-			set(GETTEXT_LIBPATH ${GETTEXT}/lib)
-			set(GETTEXT_LIBRARIES intl)
-		endif()
-		
 		set(PNG "${LIBDIR}/png")
 		set(PNG_INCLUDE_DIR "${PNG}/include")
 		set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
@@ -1317,6 +1282,11 @@
 				debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
 				boost_regex-${BOOST_DEBUG_POSTFIX}
 				boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
+			if(WITH_INTERNATIONAL)
+				set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
+					optimized libboost_locale-${BOOST_POSTFIX}
+					debug libboost_locale-${BOOST_DEBUG_POSTFIX}) 
+			endif(WITH_CYCLES_OSL)
 			set(BOOST_LIBPATH ${BOOST}/lib)
 			set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
 		endif()
@@ -1383,13 +1353,10 @@
 	endif()
 
 	if(WITH_JACK)
-		find_library(JACK_FRAMEWORK
-			NAMES jackmp
-		)
-		set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
-		if(NOT JACK_FRAMEWORK)
-			set(WITH_JACK OFF)
-		endif()
+		set(JACK /usr/local)
+		set(JACK_INCLUDE_DIRS ${JACK}/include/jack)
+		set(JACK_LIBRARIES jack)
+		set(JACK_LIBPATH ${JACK}/lib)
 	endif()
 
 	if(WITH_CODEC_SNDFILE)
@@ -1427,13 +1394,6 @@
 		set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 	endif()
 
-	if(WITH_INTERNATIONAL)
-		set(GETTEXT ${LIBDIR}/gettext)
-		set(GETTEXT_INCLUDE_DIRS "${GETTEXT}/include")
-		set(GETTEXT_LIBRARIES intl iconv)
-		set(GETTEXT_LIBPATH ${GETTEXT}/lib)
-	endif()
-
 	if(WITH_FFTW3)
 		set(FFTW3 ${LIBDIR}/fftw3)
 		set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
@@ -1500,10 +1460,10 @@
 		if(WITH_INPUT_NDOF)
 			# This thread it *should* work and check the framework - campbell
 			# http://www.cmake.org/pipermail/cmake/2005-December/007740.html
-			find_library(3DCONNEXION_CLIENT_FRAMEWORK
+			find_library(3D_CONNEXION_CLIENT_LIBRARY
 				NAMES 3DconnexionClient
 			)
-			if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
+			if(NOT 3D_CONNEXION_CLIENT_LIBRARY)
 				set(WITH_INPUT_NDOF OFF)
 			endif()
 
@@ -1511,11 +1471,7 @@
 				set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework 3DconnexionClient")
 			endif()
 		endif()
-		
-	if(WITH_JACK)
-		set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework jackmp")
-	endif()
-	
+
 	else()
 		set(PLATFORM_CFLAGS "-pipe -funsigned-char")
 		set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
@@ -1579,6 +1535,9 @@
 		set(BOOST ${LIBDIR}/boost)
 		set(BOOST_INCLUDE_DIR ${BOOST}/include)
 		set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt)
+		if (WITH_INTERNATIONAL)
+			list(APPEND BOOST_LIBRARIES boost_locale-mt)
+		endif()
 		set(BOOST_LIBPATH ${BOOST}/lib)
 		set(BOOST_DEFINITIONS)
 	endif()
@@ -1704,6 +1663,11 @@
 	endif()
 endif()
 
+if(WITH_INTERNATIONAL)
+	if(NOT WITH_BOOST)
+		message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
+	endif()
+endif()
 
 # See TEST_SSE_SUPPORT() for how this is defined.
 

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake	2012-11-11 16:21:43 UTC (rev 52105)
+++ trunk/blender/build_files/cmake/macros.cmake	2012-11-11 16:54:26 UTC (rev 52106)
@@ -196,10 +196,6 @@
 	if(WITH_PYTHON)  #  AND NOT WITH_PYTHON_MODULE  # WIN32 needs
 		link_directories(${PYTHON_LIBPATH})
 	endif()
-	if(WITH_INTERNATIONAL)
-		link_directories(${ICONV_LIBPATH})
-		link_directories(${GETTEXT_LIBPATH})
-	endif()
 	if(WITH_SDL)
 		link_directories(${SDL_LIBPATH})
 	endif()
@@ -287,14 +283,6 @@
 		target_link_libraries(${target} ${GLEW_LIBRARY})
 	endif()
 
-	if(WITH_INTERNATIONAL)
-		target_link_libraries(${target} ${GETTEXT_LIBRARIES})
-
-		if(WIN32 AND NOT UNIX)
-			target_link_libraries(${target} ${ICONV_LIBRARIES})
-		endif()
-	endif()
-
 	if(WITH_OPENAL)
 		target_link_libraries(${target} ${OPENAL_LIBRARY})
 	endif()

Modified: trunk/blender/build_files/scons/config/darwin-config.py
===================================================================
--- trunk/blender/build_files/scons/config/darwin-config.py	2012-11-11 16:21:43 UTC (rev 52105)
+++ trunk/blender/build_files/scons/config/darwin-config.py	2012-11-11 16:54:26 UTC (rev 52106)
@@ -297,6 +297,8 @@
 BF_BOOST = LIBDIR + '/boost'
 BF_BOOST_INC = BF_BOOST + '/include'
 BF_BOOST_LIB = 'boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt'
+if WITH_BF_INTERNATIONAL:
+    BF_BOOST_LIB += ' boost_locale-mt'
 BF_BOOST_LIBPATH = BF_BOOST + '/lib'
 
 WITH_BF_CYCLES_CUDA_BINARIES = False

Modified: trunk/blender/build_files/scons/config/linux-config.py
===================================================================
--- trunk/blender/build_files/scons/config/linux-config.py	2012-11-11 16:21:43 UTC (rev 52105)
+++ trunk/blender/build_files/scons/config/linux-config.py	2012-11-11 16:54:26 UTC (rev 52106)
@@ -233,6 +233,8 @@
     BF_BOOST = '/usr'
 BF_BOOST_INC = BF_BOOST + '/include'
 BF_BOOST_LIB = 'boost_date_time boost_filesystem boost_regex boost_system boost_thread'
+if WITH_BF_INTERNATIONAL:
+    BF_BOOST_LIB += ' boost_locale'
 BF_BOOST_LIBPATH = BF_BOOST + '/lib'
 
 WITH_BF_CYCLES = WITH_BF_OIIO and WITH_BF_BOOST

Modified: trunk/blender/build_files/scons/config/win32-mingw-config.py
===================================================================
--- trunk/blender/build_files/scons/config/win32-mingw-config.py	2012-11-11 16:21:43 UTC (rev 52105)
+++ trunk/blender/build_files/scons/config/win32-mingw-config.py	2012-11-11 16:54:26 UTC (rev 52106)
@@ -169,6 +169,8 @@
 BF_BOOST = LIBDIR + '/boost'
 BF_BOOST_INC = BF_BOOST + '/include'
 BF_BOOST_LIB = 'boost_date_time-mgw46-mt-s-1_49 boost_filesystem-mgw46-mt-s-1_49 boost_regex-mgw46-mt-s-1_49 boost_system-mgw46-mt-s-1_49 boost_thread-mgw46-mt-s-1_49'
+if WITH_BF_INTERNATIONAL:
+    BF_BOOST_LIB += ' boost_locale-mgw46-mt-s-1_49'
 BF_BOOST_LIBPATH = BF_BOOST + '/lib'
 
 #Ray trace optimization

Modified: trunk/blender/build_files/scons/config/win32-vc-config.py
===================================================================
--- trunk/blender/build_files/scons/config/win32-vc-config.py	2012-11-11 16:21:43 UTC (rev 52105)
+++ trunk/blender/build_files/scons/config/win32-vc-config.py	2012-11-11 16:54:26 UTC (rev 52106)
@@ -171,6 +171,8 @@
 BF_BOOST = '${LIBDIR}/boost'

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list