1 # FIXME: Remove when landing https://bugs.webkit.org/show_bug.cgi?id=197174
2 function(WEBKIT_COPY_FILES target_name)
4 set(oneValueArgs DESTINATION)
5 set(multiValueArgs FILES)
6 cmake_parse_arguments(opt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
7 set(files ${opt_FILES})
9 foreach (file IN LISTS files)
10 if (IS_ABSOLUTE ${file})
13 set(src_file ${CMAKE_CURRENT_SOURCE_DIR}/${file})
16 get_filename_component(filename ${file} NAME)
17 set(dst_file ${opt_DESTINATION}/${filename})
19 get_filename_component(file_dir ${file} DIRECTORY)
20 file(MAKE_DIRECTORY ${opt_DESTINATION}/${file_dir})
21 set(dst_file ${opt_DESTINATION}/${file})
23 add_custom_command(OUTPUT ${dst_file}
24 COMMAND ${CMAKE_COMMAND} -E copy ${src_file} ${dst_file}
25 MAIN_DEPENDENCY ${file}
28 list(APPEND dst_files ${dst_file})
30 add_custom_target(${target_name} DEPENDS ${dst_files})
33 include(Compiler.cmake)
37 # FIXME: DX11 support will not compile if this preprocessor definition is set
38 # DirectX Documentation is setting that version to 0x700 but there is no
39 # corresponding value in sdkddkver.h
40 remove_definitions(-D_WIN32_WINNT=0x601 -DWINVER=0x601)
55 # ANGLE makes a number of small static libraries that are then joined into a
56 # bigger library that is built shared. Rather than making the small libraries
57 # there will be a ANGLE whose sources are dependent on whether the library
58 # is being used as a compiler or as a GLES implementation.
60 # The corresponding gn targets are described below
62 # ANGLE (Compiler only)
68 # + ANGLE (Compiler only)
71 # + angle_system_utils (OS specific)
72 # + angle_(renderer) (Backend and OS specific)
74 set(ANGLE_PRIVATE_INCLUDE_DIRECTORIES
75 "${CMAKE_CURRENT_SOURCE_DIR}/include"
76 "${CMAKE_CURRENT_SOURCE_DIR}/src"
77 "${CMAKE_CURRENT_SOURCE_DIR}/src/common/third_party/base"
85 ${libangle_common_sources}
86 ${angle_preprocessor_sources}
87 ${angle_translator_essl_sources}
88 ${angle_translator_glsl_sources}
89 ${angle_translator_sources}
92 set(ANGLEGLESv2_LIBRARIES
96 WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
98 add_subdirectory(include)
100 add_library(ANGLEFramework INTERFACE)
101 add_dependencies(ANGLEFramework GLSLANGHeaders ANGLEHeaders)
104 add_library(ANGLE STATIC
107 ${libangle_image_util_sources}
110 target_include_directories(ANGLE PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
111 target_compile_definitions(ANGLE PRIVATE
113 LIBANGLE_IMPLEMENTATION
115 target_compile_definitions(ANGLE PUBLIC ${ANGLE_DEFINITIONS})
117 add_library(GLESv2 SHARED ${libglesv2_sources})
118 target_include_directories(GLESv2 PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
119 target_compile_definitions(GLESv2 PRIVATE LIBGLESV2_IMPLEMENTATION)
120 target_link_libraries(GLESv2 ${ANGLEGLESv2_LIBRARIES})
122 add_library(EGL SHARED ${libegl_sources})
123 target_include_directories(EGL PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
124 target_compile_definitions(EGL PRIVATE
128 target_link_libraries(EGL GLESv2)
131 target_sources(GLESv2 PRIVATE src/libGLESv2/libGLESv2_autogen.def)
132 target_sources(EGL PRIVATE src/libEGL/libEGL.def)
134 # Output library names according to the .def
135 set_target_properties(GLESv2 PROPERTIES OUTPUT_NAME libGLESv2)
136 set_target_properties(EGL PROPERTIES OUTPUT_NAME libEGL)
139 target_link_libraries(ANGLEFramework INTERFACE EGL GLESv2)
140 target_compile_definitions(ANGLEFramework INTERFACE ${gl_prototypes})
142 add_library(ANGLE STATIC ${ANGLE_SOURCES})
143 target_include_directories(ANGLE PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
144 target_compile_definitions(ANGLE PRIVATE
147 LIBANGLE_IMPLEMENTATION
151 if (COMPILER_IS_GCC_OR_CLANG)
152 WEBKIT_ADD_TARGET_CXX_FLAGS(ANGLE -Wno-cast-align
153 -Wno-suggest-attribute=format
156 -Wno-unused-parameter)
159 target_link_libraries(ANGLEFramework INTERFACE ANGLE)
160 target_include_directories(ANGLEFramework INTERFACE ${ANGLE_FRAMEWORK_HEADERS_DIR})
162 set_property(DIRECTORY . PROPERTY FOLDER "ANGLE")