Changeset 278726 in webkit


Ignore:
Timestamp:
Jun 10, 2021, 1:17:19 PM (4 years ago)
Author:
don.olmstead@sony.com
Message:

[CMake] Make ANGLE library types configurable
https://bugs.webkit.org/show_bug.cgi?id=226840

Reviewed by Kenneth Russell.

The type for ANGLE's libraries was being hard coded. Now the libraries can be set by
specifying the _LIBRARY_TYPE which defaults to STATIC. Windows platforms override this
and use SHARED libraries.

Additionally make compiling ANGLE's EGL library contingent on USE_ANGLE_EGL being enabled
since its not used otherwise.

  • CMakeLists.txt:
  • PlatformFTW.cmake:
  • PlatformWin.cmake:
Location:
trunk/Source/ThirdParty/ANGLE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/ThirdParty/ANGLE/CMakeLists.txt

    r278130 r278726  
    3434    EGL_EGLEXT_PROTOTYPES
    3535)
     36
     37# Default library types for ANGLE
     38# Override these in Platform*.cmake for your port as needed.
     39set(ANGLE_LIBRARY_TYPE STATIC)
     40set(GLESv2_LIBRARY_TYPE STATIC)
     41set(EGL_LIBRARY_TYPE STATIC)
    3642
    3743# ANGLE makes a number of small static libraries that are then joined into a
     
    119125
    120126if (USE_ANGLE_EGL OR USE_ANGLE_WEBGL)
    121     add_library(ANGLE STATIC
     127    add_library(ANGLE ${ANGLE_LIBRARY_TYPE}
    122128        ${ANGLE_SOURCES}
    123129        ${libangle_sources}
     
    138144    target_compile_definitions(ANGLEFramework INTERFACE ${gl_prototypes})
    139145
    140     add_library(GLESv2 SHARED
     146    add_library(GLESv2 ${GLESv2_LIBRARY_TYPE}
    141147        ${libglesv2_sources}
    142148    )
     
    147153    )
    148154    target_link_libraries(GLESv2 PRIVATE ${ANGLEGLESv2_LIBRARIES})
     155    if (WIN32)
     156        # Output library name according to the .def
     157        target_sources(GLESv2 PRIVATE src/libGLESv2/libGLESv2_autogen.def)
     158        set_target_properties(GLESv2 PROPERTIES OUTPUT_NAME libGLESv2)
     159    endif ()
    149160
    150161    add_library(GLESv2Framework INTERFACE)
    151162    target_link_libraries(GLESv2Framework INTERFACE GLESv2)
    152163    target_include_directories(GLESv2Framework INTERFACE ${ANGLE_FRAMEWORK_HEADERS_DIR})
     164    target_compile_definitions(GLESv2Framework INTERFACE USE_SYSTEM_EGL)
    153165    add_library(ANGLE::GLES ALIAS GLESv2Framework)
    154166
    155     add_library(EGL SHARED
    156         ${libegl_sources}
    157     )
    158     target_include_directories(EGL PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
    159     target_compile_definitions(EGL PRIVATE
    160         ${ANGLE_DEFINITIONS}
    161         ${gl_prototypes}
    162         EGLAPI=
    163     )
    164     target_link_libraries(EGL PRIVATE GLESv2)
    165     set_target_properties(EGL PROPERTIES LINKER_LANGUAGE CXX)
    166 
    167     add_library(EGLFramework INTERFACE)
    168     target_include_directories(EGLFramework INTERFACE ${ANGLE_FRAMEWORK_HEADERS_DIR}/)
    169     target_compile_definitions(EGLFramework INTERFACE ${gl_prototypes})
    170     target_link_libraries(EGLFramework INTERFACE EGL)
    171     add_library(ANGLE::EGL ALIAS EGLFramework)
    172 
    173     if (WIN32)
    174         target_sources(GLESv2 PRIVATE src/libGLESv2/libGLESv2_autogen.def)
    175         target_sources(EGL PRIVATE src/libEGL/libEGL.def)
    176 
    177         # Output library names according to the .def
    178         set_target_properties(GLESv2 PROPERTIES OUTPUT_NAME libGLESv2)
    179         set_target_properties(EGL PROPERTIES OUTPUT_NAME libEGL)
     167    if (USE_ANGLE_EGL)
     168        add_library(EGL ${EGL_LIBRARY_TYPE}
     169            ${libegl_sources}
     170        )
     171        target_include_directories(EGL PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
     172        target_compile_definitions(EGL PRIVATE
     173            ${ANGLE_DEFINITIONS}
     174            ${gl_prototypes}
     175            EGLAPI=
     176        )
     177        target_link_libraries(EGL PRIVATE GLESv2)
     178        set_target_properties(EGL PROPERTIES LINKER_LANGUAGE CXX)
     179        if (WIN32)
     180            # Output library names according to the .def
     181            target_sources(EGL PRIVATE src/libEGL/libEGL.def)
     182            set_target_properties(EGL PROPERTIES OUTPUT_NAME libEGL)
     183        endif ()
     184
     185        add_library(EGLFramework INTERFACE)
     186        target_include_directories(EGLFramework INTERFACE ${ANGLE_FRAMEWORK_HEADERS_DIR}/)
     187        target_compile_definitions(EGLFramework INTERFACE ${gl_prototypes})
     188        target_link_libraries(EGLFramework INTERFACE EGL)
     189        add_library(ANGLE::EGL ALIAS EGLFramework)
    180190    endif ()
    181191else ()
    182     add_library(ANGLE STATIC ${ANGLE_SOURCES})
     192    add_library(ANGLE ${ANGLE_LIBRARY_TYPE} ${ANGLE_SOURCES})
    183193    target_include_directories(ANGLE PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
    184194    target_link_libraries(ANGLE PRIVATE ${CMAKE_DL_LIBS})
  • trunk/Source/ThirdParty/ANGLE/ChangeLog

    r278362 r278726  
     12021-06-10  Don Olmstead  <don.olmstead@sony.com>
     2
     3        [CMake] Make ANGLE library types configurable
     4        https://bugs.webkit.org/show_bug.cgi?id=226840
     5
     6        Reviewed by Kenneth Russell.
     7
     8        The type for ANGLE's libraries was being hard coded. Now the libraries can be set by
     9        specifying the _LIBRARY_TYPE which defaults to STATIC. Windows platforms override this
     10        and use SHARED libraries.
     11
     12        Additionally make compiling ANGLE's EGL library contingent on USE_ANGLE_EGL being enabled
     13        since its not used otherwise.
     14
     15        * CMakeLists.txt:
     16        * PlatformFTW.cmake:
     17        * PlatformWin.cmake:
     18
    1192021-06-02  Kyle Piddington  <kpiddington@apple.com>
    220
  • trunk/Source/ThirdParty/ANGLE/PlatformFTW.cmake

    r278130 r278726  
    3030list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_D3D9)
    3131list(APPEND ANGLEGLESv2_LIBRARIES d3d9)
     32
     33# Use shared libraries
     34set(GLESv2_LIBRARY_TYPE SHARED)
     35set(EGL_LIBRARY_TYPE SHARED)
  • trunk/Source/ThirdParty/ANGLE/PlatformWin.cmake

    r278130 r278726  
    3030list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_D3D9)
    3131list(APPEND ANGLEGLESv2_LIBRARIES d3d9)
     32
     33# Use shared libraries
     34set(GLESv2_LIBRARY_TYPE SHARED)
     35set(EGL_LIBRARY_TYPE SHARED)
Note: See TracChangeset for help on using the changeset viewer.