Files @ r24860:fb2788d47d86
Branch filter:

Location: cpp/openttd-patchpack/source/src/lang/CMakeLists.txt - annotation

Michael Lutz
Codechange: [OSX] Only keep a total dirty rect for drawing.

When drawing an 8bpp screen buffer, palette resolving was done for each
dirty rectangle. In areas with high activity, this would mean a pixel might
have been resolved multiple times. Also, if too many individual updates
were queued, the whole screen would be refreshed, even if unnecessary.

All other drivers only keep one overall dirty rect, so do it here as well.
r24721:02600e02de7c
r24721:02600e02de7c
r24721:02600e02de7c
r24721:02600e02de7c
r24244:556df3f1e087
r24721:02600e02de7c
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24402:18218e3ed070
r24402:18218e3ed070
r24402:18218e3ed070
r24402:18218e3ed070
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24721:02600e02de7c
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24349:3fa910f6f5ee
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24721:02600e02de7c
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
r24244:556df3f1e087
set(MASTER_LANG_FILE
        ${CMAKE_CURRENT_SOURCE_DIR}/english.txt
)

set(LANG_SOURCE_FILES
        ${MASTER_LANG_FILE}
        ${CMAKE_CURRENT_SOURCE_DIR}/afrikaans.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/arabic_egypt.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/basque.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/belarusian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/brazilian_portuguese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/bulgarian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/catalan.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/croatian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/czech.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/danish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/dutch.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/english_AU.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/english_US.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/esperanto.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/estonian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/faroese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/finnish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/french.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/gaelic.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/galician.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/german.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/greek.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/hebrew.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/hungarian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/icelandic.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/indonesian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/irish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/italian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/japanese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/korean.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/latin.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/latvian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/lithuanian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/luxembourgish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/malay.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/norwegian_bokmal.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/norwegian_nynorsk.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/polish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/portuguese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/romanian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/russian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/serbian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/simplified_chinese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/slovak.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/slovenian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/spanish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/spanish_MX.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/swedish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/tamil.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/thai.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/traditional_chinese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/turkish.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/ukrainian.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/vietnamese.txt
        ${CMAKE_CURRENT_SOURCE_DIR}/welsh.txt
)

set(LANG_BINARY_DIR ${CMAKE_BINARY_DIR}/lang)

if (HOST_BINARY_DIR)
    include(${HOST_BINARY_DIR}/strgen.cmake)
endif()

# Walk over all the (finished) language files, and generate a command to compile them
foreach(LANG_SOURCE_FILE IN LISTS LANG_SOURCE_FILES)
    get_filename_component(LANG_SOURCE_FILE_NAME_WE ${LANG_SOURCE_FILE} NAME_WE)

    set(LANG_BINARY_FILE ${LANG_BINARY_DIR}/${LANG_SOURCE_FILE_NAME_WE}.lng)

    add_custom_command(OUTPUT ${LANG_BINARY_FILE}
            COMMAND ${CMAKE_COMMAND} -E make_directory ${LANG_BINARY_DIR}
            COMMAND strgen
                    -s ${CMAKE_CURRENT_SOURCE_DIR}
                    -d ${LANG_BINARY_DIR}
                    ${LANG_SOURCE_FILE}
            DEPENDS strgen ${MASTER_LANG_FILE}
            MAIN_DEPENDENCY ${LANG_SOURCE_FILE}
            WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
            COMMENT "Compiling language ${LANG_SOURCE_FILE_NAME_WE}"
    )

    list(APPEND LANG_BINARY_FILES ${LANG_BINARY_FILE})
endforeach()

# Create a new target which compiles all language files
add_custom_target(language_files
        DEPENDS
        ${LANG_BINARY_FILES}
)
set_target_properties(language_files
        PROPERTIES LANG_SOURCE_FILES "${LANG_SOURCE_FILES}"
)


set(GENERATED_BINARY_DIR ${CMAKE_BINARY_DIR}/generated)
set(TABLE_BINARY_DIR ${GENERATED_BINARY_DIR}/table)

# Generate a command and target to create the strings table
add_custom_command_timestamp(OUTPUT ${TABLE_BINARY_DIR}/strings.h
        COMMAND ${CMAKE_COMMAND} -E make_directory ${TABLE_BINARY_DIR}
        COMMAND strgen
                -s ${CMAKE_CURRENT_SOURCE_DIR}
                -d ${TABLE_BINARY_DIR}
        DEPENDS strgen ${MASTER_LANG_FILE}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        COMMENT "Generating table/strings.h"
)
add_custom_target_timestamp(table_strings
        DEPENDS
        ${TABLE_BINARY_DIR}/strings.h
)

add_library(languages
        INTERFACE
)
target_include_directories(languages
        INTERFACE
        ${GENERATED_BINARY_DIR}
)
add_dependencies(languages
        language_files
        table_strings
)
add_library(openttd::languages ALIAS languages)