You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.8 KiB
113 lines
3.8 KiB
6 years ago
|
#################################################
|
||
|
#####
|
||
|
##### from_hex( HEX DEC )
|
||
|
#####
|
||
|
|
||
|
function( from_hex HEX DEC )
|
||
|
string(SUBSTRING "${HEX}" 2 -1 HEX)
|
||
|
string(TOUPPER "${HEX}" HEX)
|
||
|
set(_res 0)
|
||
|
string(LENGTH "${HEX}" _strlen)
|
||
|
|
||
|
while(_strlen GREATER 0)
|
||
|
math(EXPR _res "${_res} * 16")
|
||
|
string(SUBSTRING "${HEX}" 0 1 NIBBLE)
|
||
|
string(SUBSTRING "${HEX}" 1 -1 HEX)
|
||
|
if(NIBBLE STREQUAL "A")
|
||
|
math(EXPR _res "${_res} + 10")
|
||
|
elseif(NIBBLE STREQUAL "B")
|
||
|
math(EXPR _res "${_res} + 11")
|
||
|
elseif(NIBBLE STREQUAL "C")
|
||
|
math(EXPR _res "${_res} + 12")
|
||
|
elseif(NIBBLE STREQUAL "D")
|
||
|
math(EXPR _res "${_res} + 13")
|
||
|
elseif(NIBBLE STREQUAL "E")
|
||
|
math(EXPR _res "${_res} + 14")
|
||
|
elseif(NIBBLE STREQUAL "F")
|
||
|
math(EXPR _res "${_res} + 15")
|
||
|
else()
|
||
|
math(EXPR _res "${_res} + ${NIBBLE}")
|
||
|
endif()
|
||
|
|
||
|
string(LENGTH "${HEX}" _strlen)
|
||
|
endwhile()
|
||
|
|
||
|
set(${DEC} ${_res} PARENT_SCOPE)
|
||
|
endfunction()
|
||
|
|
||
|
|
||
|
##### prepare strings from data files ###########
|
||
|
|
||
|
file( GLOB_RECURSE _chalk_data_files
|
||
|
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/data/*.ggr
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/data/*.gpl
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/data/*.gih
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/data/*.gbr
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/data/*.pat
|
||
|
)
|
||
|
list( SORT _chalk_data_files )
|
||
|
unset( _chalk_data_l10n )
|
||
|
foreach( _chalk_file ${_chalk_data_files} )
|
||
|
|
||
|
if( "${_chalk_file}" MATCHES "\\.(ggr|gpl)" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_data )
|
||
|
string( REGEX REPLACE "(^|\n)Name: ([^\n]+).*" "\\1i18n(\"\\2\");\\n" _file_l10n "${_file_data}" )
|
||
|
file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n "${_file_l10n}" )
|
||
|
endif( )
|
||
|
|
||
|
if( "${_chalk_file}" MATCHES "\\.gih" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_data )
|
||
|
string( REGEX REPLACE "^([^\n]+).*" "i18n(\"\\1\");\\n" _file_l10n "${_file_data}" )
|
||
|
file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n "${_file_l10n}" )
|
||
|
endif( )
|
||
|
|
||
|
if( "${_chalk_file}" MATCHES "\\.gbr" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}
|
||
|
_file_head LIMIT 4 HEX )
|
||
|
from_hex( "0x${_file_head}" _file_head_size )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}
|
||
|
_file_head LIMIT 4 OFFSET 4 HEX )
|
||
|
from_hex( "0x${_file_head}" _file_head_version )
|
||
|
if( "${_file_head_version}" EQUAL "1" )
|
||
|
math( EXPR _file_head_len "${_file_head_size} - 21" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}
|
||
|
_file_head LIMIT ${_file_head_len} OFFSET 20 )
|
||
|
else( )
|
||
|
math( EXPR _file_head_len "${_file_head_size} - 29" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}
|
||
|
_file_head LIMIT ${_file_head_len} OFFSET 28 )
|
||
|
endif( )
|
||
|
string( STRIP "${_file_head}" _file_head )
|
||
|
file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n
|
||
|
"i18n(\"${_file_head}\");\n" )
|
||
|
endif( )
|
||
|
|
||
|
if( "${_chalk_file}" MATCHES "\\.pat" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}
|
||
|
_file_head LIMIT 4 HEX )
|
||
|
from_hex( "0x${_file_head}" _file_head_size )
|
||
|
math( EXPR _file_head_len "${_file_head_size} - 25" )
|
||
|
file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}
|
||
|
_file_head LIMIT ${_file_head_len} OFFSET 24 )
|
||
|
string( STRIP "${_file_head}" _file_head )
|
||
|
file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n
|
||
|
"i18n(\"${_file_head}\");\n" )
|
||
|
endif( )
|
||
|
|
||
|
list( APPEND _chalk_data_l10n "${_chalk_file}.tde_l10n" )
|
||
|
|
||
|
endforeach( )
|
||
|
|
||
|
|
||
|
##### create translation templates ##############
|
||
|
|
||
|
tde_l10n_create_template(
|
||
|
CATALOG "chalk"
|
||
|
SOURCES
|
||
|
${_chalk_data_l10n}
|
||
|
"."
|
||
|
)
|
||
|
|
||
|
tde_l10n_auto_add_subdirectories( )
|