CMake: split out all src/OpenGL targets into their own CMakeLists
Added CMakeLists.txt to the following folders that produce the
following targets:
src/OpenGL/common -> libGLESCommon (new)
src/OpenGL/compiler -> GLCompiler
src/OpenGL/libEGL -> libEGL
src/OpenGL/libGLESv2 ->libGLESv2
src/OpenGL/libGLES_CM -> libGLES_CM
Change-Id: I8217918b13b6963d18d1e6f89b4fa9e806bb36db
Bug: b/145758253
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43588
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ace7a7..05d9c5d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -647,51 +647,6 @@
# File Lists
###########################################################
-file(GLOB_RECURSE EGL_LIST
- ${OPENGL_DIR}/libEGL/*.cpp
- ${OPENGL_DIR}/libEGL/*.h
- ${OPENGL_DIR}/libEGL/*.hpp
- ${OPENGL_DIR}/common/Object.cpp
- ${OPENGL_DIR}/common/Object.hpp
- ${OPENGL_DIR}/common/debug.cpp
- ${OPENGL_DIR}/common/debug.h
- ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
-)
-
-file(GLOB_RECURSE GLES2_LIST
- ${OPENGL_DIR}/libGLESv2/*.cpp
- ${OPENGL_DIR}/libGLESv2/*.h
- ${OPENGL_DIR}/libGLESv2/*.hpp
- ${OPENGL_DIR}/common/*.cpp
- ${OPENGL_DIR}/common/*.h
- ${OPENGL_DIR}/common/*.hpp
- ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
- ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES2/*.h
- ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES3/*.h
-)
-
-file(GLOB_RECURSE GLES_CM_LIST
- ${OPENGL_DIR}/libGLES_CM/*.cpp
- ${OPENGL_DIR}/libGLES_CM/*.h
- ${OPENGL_DIR}/libGLES_CM/*.hpp
- ${OPENGL_DIR}/common/*.cpp
- ${OPENGL_DIR}/common/*.h
- ${OPENGL_DIR}/common/*.hpp
- ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
- ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES/*.h
-)
-
-file(GLOB_RECURSE OPENGL_COMPILER_LIST
- ${OPENGL_COMPILER_DIR}/*.cpp
- ${OPENGL_COMPILER_DIR}/*.h
- ${OPENGL_COMPILER_DIR}/*.hpp
-)
-file(GLOB_RECURSE OPENGL_COMPILER_OS_SPECIFIC_LIST
- ${OPENGL_COMPILER_DIR}/ossource*.cpp
- ${OPENGL_COMPILER_DIR}/ossource*.h
- ${OPENGL_COMPILER_DIR}/ossource*.hpp
-)
-list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
file(GLOB VULKAN_LIST
${VULKAN_DIR}/*.cpp
@@ -749,20 +704,12 @@
###########################################################
if(WIN32)
- list(APPEND OPENGL_COMPILER_LIST ${OPENGL_COMPILER_DIR}/ossource_win.cpp)
- list(APPEND EGL_LIST ${OPENGL_DIR}/libEGL/libEGL.rc)
- list(APPEND GLES2_LIST ${OPENGL_DIR}/libGLESv2/libGLESv2.rc)
- list(APPEND GLES_CM_LIST ${OPENGL_DIR}/libGLES_CM/libGLES_CM.rc)
list(APPEND VULKAN_LIST
${VULKAN_DIR}/Vulkan.rc
${SOURCE_DIR}/WSI/Win32SurfaceKHR.cpp
${SOURCE_DIR}/WSI/Win32SurfaceKHR.hpp
)
elseif(LINUX)
- list(APPEND OPENGL_COMPILER_LIST
- ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
- )
-
if(X11)
list(APPEND VULKAN_LIST
${SOURCE_DIR}/WSI/XlibSurfaceKHR.cpp
@@ -780,22 +727,10 @@
endif()
elseif(APPLE)
- list(APPEND EGL_LIST
- ${OPENGL_DIR}/libEGL/OSXUtils.mm
- ${OPENGL_DIR}/libEGL/OSXUtils.hpp
- )
- list(APPEND OPENGL_COMPILER_LIST
- ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
- )
-
list(APPEND VULKAN_LIST
${SOURCE_DIR}/WSI/MetalSurface.mm
${SOURCE_DIR}/WSI/MetalSurface.h
)
-elseif(ANDROID)
- list(APPEND OPENGL_COMPILER_LIST
- ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
- )
endif()
if(WIN32)
@@ -825,7 +760,6 @@
message(FATAL_ERROR "REACTOR_BACKEND must be 'LLVM' or 'Subzero'")
endif()
-
add_subdirectory(src/Common) # Add gl_common target
add_subdirectory(src/Main) # Add gl_main target
add_subdirectory(src/Shader) # Add gl_shader target
@@ -840,98 +774,19 @@
gl_renderer
)
-add_library(GLCompiler STATIC EXCLUDE_FROM_ALL ${OPENGL_COMPILER_LIST})
-set_target_properties(GLCompiler PROPERTIES
- INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
- POSITION_INDEPENDENT_CODE 1
- FOLDER "OpenGL"
- COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
-)
-target_link_libraries(GLCompiler ${OS_LIBS} ${SWIFTSHADER_LIBS})
-
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(LIB_PREFIX "lib64")
-else()
- set(LIB_PREFIX "lib")
-endif()
+add_subdirectory(src/OpenGL/common EXCLUDE_FROM_ALL) # Add libGLESCommon target
+add_subdirectory(src/OpenGL/compiler EXCLUDE_FROM_ALL) # Add GLCompiler target
if(SWIFTSHADER_BUILD_EGL)
- add_library(libEGL SHARED ${EGL_LIST})
- set_target_properties(libEGL PROPERTIES
- INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
- FOLDER "OpenGL"
- COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
- COMPILE_DEFINITIONS "EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
- PREFIX ""
- )
- if(LINUX)
- if(X11)
- set_property(TARGET libEGL APPEND PROPERTY COMPILE_DEFINITIONS "USE_X11=1")
- endif()
- endif()
- if (ANDROID)
- set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
- endif ()
- set_shared_library_export_map(libEGL ${SOURCE_DIR}/OpenGL/libEGL)
- target_link_libraries(libEGL gl_swiftshader_core ${OS_LIBS} ${SWIFTSHADER_LIBS})
- add_custom_command(
- TARGET libEGL
- POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
- )
+ add_subdirectory(src/OpenGL/libEGL) # Add libEGL target
endif()
if(SWIFTSHADER_BUILD_GLESv2)
- add_library(libGLESv2 SHARED ${GLES2_LIST})
- set_target_properties(libGLESv2 PROPERTIES
- INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
- FOLDER "OpenGL"
- COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
- COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
- PREFIX ""
- )
- if (ANDROID)
- set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
- endif ()
- set_shared_library_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
- target_link_libraries(libGLESv2 gl_swiftshader_core ${Reactor} GLCompiler ${OS_LIBS} ${SWIFTSHADER_LIBS})
- add_custom_command(
- TARGET libGLESv2
- POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
- )
+ add_subdirectory(src/OpenGL/libGLESv2) # Add libGLESv2 target
endif()
if(SWIFTSHADER_BUILD_GLES_CM)
- add_library(libGLES_CM SHARED ${GLES_CM_LIST})
- set_target_properties(libGLES_CM PROPERTIES
- INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
- FOLDER "OpenGL"
- COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
- COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
- PREFIX ""
- )
- if (ANDROID)
- set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
- endif ()
- set_shared_library_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
- target_link_libraries(libGLES_CM gl_swiftshader_core ${Reactor} GLCompiler ${OS_LIBS} ${SWIFTSHADER_LIBS})
- add_custom_command(
- TARGET libGLES_CM
- POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLES_CM>/translator
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLES_CM> $<TARGET_FILE_DIR:libGLES_CM>/translator/${LIB_PREFIX}GLES_CM_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- )
+ add_subdirectory(src/OpenGL/libGLES_CM) # Add libGLES_CM target
endif(SWIFTSHADER_BUILD_GLES_CM)
if(SWIFTSHADER_BUILD_VULKAN)
diff --git a/src/OpenGL/common/CMakeLists.txt b/src/OpenGL/common/CMakeLists.txt
new file mode 100644
index 0000000..af00c37
--- /dev/null
+++ b/src/OpenGL/common/CMakeLists.txt
@@ -0,0 +1,68 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set(ROOT_PROJECT_COMPILE_OPTIONS
+ ${SWIFTSHADER_COMPILE_OPTIONS}
+ ${WARNINGS_AS_ERRORS}
+)
+
+set(ROOT_PROJECT_LINK_LIBRARIES
+ ${OS_LIBS}
+ ${SWIFTSHADER_LIBS}
+)
+
+set(LIBGL_COMMON_SRC_FILES
+ debug.cpp
+ debug.h
+ Image.cpp
+ Image.hpp
+ MatrixStack.cpp
+ MatrixStack.hpp
+ NameSpace.hpp
+ Object.cpp
+ Object.hpp
+ Surface.hpp
+)
+
+add_library(libGLESCommon
+ ${LIBGL_COMMON_SRC_FILES}
+)
+
+set_target_properties(libGLESCommon PROPERTIES
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "OpenGL"
+ LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
+ PREFIX ""
+)
+
+target_include_directories(libGLESCommon
+ PUBLIC
+ ".."
+ "${CMAKE_SOURCE_DIR}/include"
+ "${CMAKE_SOURCE_DIR}/src"
+)
+
+target_compile_definitions(libGLESCommon
+ PRIVATE
+)
+
+target_compile_options(libGLESCommon
+ PUBLIC
+ ${ROOT_PROJECT_COMPILE_OPTIONS}
+)
+
+target_link_libraries(libGLESCommon
+ PUBLIC
+ ${ROOT_PROJECT_LINK_LIBRARIES}
+)
diff --git a/src/OpenGL/compiler/CMakeLists.txt b/src/OpenGL/compiler/CMakeLists.txt
new file mode 100644
index 0000000..d636c53
--- /dev/null
+++ b/src/OpenGL/compiler/CMakeLists.txt
@@ -0,0 +1,152 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set(ROOT_PROJECT_COMPILE_OPTIONS
+ ${SWIFTSHADER_COMPILE_OPTIONS}
+ ${WARNINGS_AS_ERRORS}
+)
+
+set(ROOT_PROJECT_LINK_LIBRARIES
+ ${OS_LIBS}
+ ${SWIFTSHADER_LIBS}
+)
+
+set(OPENGL_COMPILER_SRC_FILES
+ AnalyzeCallDepth.cpp
+ AnalyzeCallDepth.h
+ BaseTypes.h
+ Common.h
+ Compiler.cpp
+ Compiler.h
+ ConstantUnion.h
+ debug.cpp
+ debug.h
+ Diagnostics.cpp
+ Diagnostics.h
+ DirectiveHandler.cpp
+ DirectiveHandler.h
+ ExtensionBehavior.h
+ glslang_lex.cpp
+ glslang_tab.cpp
+ glslang_tab.h
+ glslang.h
+ InfoSink.cpp
+ InfoSink.h
+ Initialize.cpp
+ Initialize.h
+ InitializeGlobals.h
+ InitializeParseContext.cpp
+ InitializeParseContext.h
+ Intermediate.cpp
+ intermediate.h
+ intermOut.cpp
+ IntermTraverse.cpp
+ localintermediate.h
+ MMap.h
+ osinclude.h
+ OutputASM.cpp
+ OutputASM.h
+ parseConst.cpp
+ ParseHelper.cpp
+ ParseHelper.h
+ PoolAlloc.cpp
+ PoolAlloc.h
+ Pragma.h
+ preprocessor/DiagnosticsBase.cpp
+ preprocessor/DiagnosticsBase.h
+ preprocessor/DirectiveHandlerBase.cpp
+ preprocessor/DirectiveHandlerBase.h
+ preprocessor/DirectiveParser.cpp
+ preprocessor/DirectiveParser.h
+ preprocessor/ExpressionParser.cpp
+ preprocessor/ExpressionParser.h
+ preprocessor/Input.cpp
+ preprocessor/Input.h
+ preprocessor/length_limits.h
+ preprocessor/Lexer.cpp
+ preprocessor/Lexer.h
+ preprocessor/Macro.cpp
+ preprocessor/Macro.h
+ preprocessor/MacroExpander.cpp
+ preprocessor/MacroExpander.h
+ preprocessor/numeric_lex.h
+ preprocessor/pp_utils.h
+ preprocessor/Preprocessor.cpp
+ preprocessor/Preprocessor.h
+ preprocessor/SourceLocation.h
+ preprocessor/Token.cpp
+ preprocessor/Token.h
+ preprocessor/Tokenizer.cpp
+ preprocessor/Tokenizer.h
+ SymbolTable.cpp
+ SymbolTable.h
+ TranslatorASM.cpp
+ TranslatorASM.h
+ Types.h
+ util.cpp
+ util.h
+ ValidateLimitations.cpp
+ ValidateLimitations.h
+ ValidateSwitch.cpp
+ ValidateSwitch.h
+)
+
+if(WIN32)
+ list(APPEND OPENGL_COMPILER_SRC_FILES
+ ossource_win.cpp
+ )
+elseif(LINUX)
+ list(APPEND OPENGL_COMPILER_SRC_FILES
+ ossource_posix.cpp
+ )
+elseif(APPLE)
+ list(APPEND OPENGL_COMPILER_SRC_FILES
+ ossource_posix.cpp
+ )
+elseif(ANDROID)
+ list(APPEND OPENGL_COMPILER_SRC_FILES
+ ossource_posix.cpp
+ )
+endif()
+
+add_library(GLCompiler
+ ${OPENGL_COMPILER_SRC_FILES}
+)
+
+set_target_properties(GLCompiler PROPERTIES
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "OpenGL"
+ LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
+)
+
+target_include_directories(GLCompiler
+ PRIVATE
+ ".."
+ "${CMAKE_SOURCE_DIR}/include"
+ "${CMAKE_SOURCE_DIR}/src"
+)
+
+target_compile_definitions(GLCompiler
+ PRIVATE
+)
+
+target_compile_options(GLCompiler
+ PRIVATE
+ ${ROOT_PROJECT_COMPILE_OPTIONS}
+)
+
+target_link_libraries(GLCompiler
+ PRIVATE
+ ${ROOT_PROJECT_LINK_LIBRARIES}
+)
diff --git a/src/OpenGL/libEGL/CMakeLists.txt b/src/OpenGL/libEGL/CMakeLists.txt
new file mode 100644
index 0000000..50e0983
--- /dev/null
+++ b/src/OpenGL/libEGL/CMakeLists.txt
@@ -0,0 +1,118 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set(ROOT_PROJECT_COMPILE_OPTIONS
+ ${SWIFTSHADER_COMPILE_OPTIONS}
+ ${WARNINGS_AS_ERRORS}
+)
+
+set(ROOT_PROJECT_LINK_LIBRARIES
+ ${OS_LIBS}
+ ${SWIFTSHADER_LIBS}
+)
+
+set(LIBEGL_SRC_FILES
+ Config.cpp
+ Config.h
+ Context.hpp
+ Display.cpp
+ Display.h
+ libEGL.cpp
+ libEGL.hpp
+ main.cpp
+ main.h
+ OSXUtils.hpp
+ resource.h
+ Surface.cpp
+ Surface.hpp
+ Sync.hpp
+ Texture.hpp
+)
+
+if(WIN32)
+ list(APPEND LIBEGL_SRC_FILES
+ libEGL.rc
+ )
+elseif(APPLE)
+ list(APPEND LIBEGL_SRC_FILES
+ OSXUtils.mm
+ OSXUtils.hpp
+ )
+endif()
+
+add_library(libEGL SHARED
+ ${LIBEGL_SRC_FILES}
+)
+
+set_target_properties(libEGL PROPERTIES
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "OpenGL"
+ PREFIX ""
+ LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+)
+
+target_include_directories(libEGL
+ PRIVATE
+ ".."
+ "../.."
+)
+
+target_compile_definitions(libEGL
+ PRIVATE
+ "EGL_EGLEXT_PROTOTYPES"
+ "EGLAPI="
+ "NO_SANITIZE_FUNCTION="
+ $<$<CONFIG:Debug>:"DEBUGGER_WAIT_DIALOG">
+)
+
+target_compile_options(libEGL
+ PRIVATE
+ ${ROOT_PROJECT_COMPILE_OPTIONS}
+)
+
+target_link_libraries(libEGL
+ PRIVATE
+ libGLESCommon
+ gl_swiftshader_core
+ ${ROOT_PROJECT_LINK_LIBRARIES}
+)
+
+if(LINUX)
+ if(X11)
+ set_property(TARGET libEGL APPEND PROPERTY COMPILE_DEFINITIONS "USE_X11=1")
+ endif()
+endif()
+
+if (ANDROID)
+ set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
+endif ()
+
+set_shared_library_export_map(libEGL ${CMAKE_CURRENT_SOURCE_DIR})
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(LIB_PREFIX "lib64")
+else()
+ set(LIB_PREFIX "lib")
+endif()
+
+add_custom_command(
+ TARGET libEGL
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+)
diff --git a/src/OpenGL/libGLES_CM/CMakeLists.txt b/src/OpenGL/libGLES_CM/CMakeLists.txt
new file mode 100644
index 0000000..29c81f5
--- /dev/null
+++ b/src/OpenGL/libGLES_CM/CMakeLists.txt
@@ -0,0 +1,117 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set(ROOT_PROJECT_COMPILE_OPTIONS
+ ${SWIFTSHADER_COMPILE_OPTIONS}
+ ${WARNINGS_AS_ERRORS}
+)
+
+set(ROOT_PROJECT_LINK_LIBRARIES
+ ${OS_LIBS}
+ ${SWIFTSHADER_LIBS}
+)
+
+set(LIBGLES_CM_SRC_FILES
+ Buffer.cpp
+ Buffer.h
+ Context.cpp
+ Context.h
+ Device.cpp
+ Device.hpp
+ Framebuffer.cpp
+ Framebuffer.h
+ IndexDataManager.cpp
+ IndexDataManager.h
+ libGLES_CM.cpp
+ libGLES_CM.hpp
+ main.cpp
+ main.h
+ mathutil.h
+ Renderbuffer.cpp
+ Renderbuffer.h
+ resource.h
+ ResourceManager.cpp
+ ResourceManager.h
+ Texture.cpp
+ Texture.h
+ utilities.cpp
+ utilities.h
+ VertexDataManager.cpp
+ VertexDataManager.h
+)
+
+if(WIN32)
+ list(APPEND LIBGLES_CM_SRC_FILES
+ libGLES_CM.rc
+ )
+endif()
+
+add_library(libGLES_CM SHARED
+ ${LIBGLES_CM_SRC_FILES}
+)
+
+set_target_properties(libGLES_CM PROPERTIES
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "OpenGL"
+ PREFIX ""
+ LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+)
+
+target_include_directories(libGLES_CM
+ PRIVATE
+ ".."
+ "../.."
+)
+
+target_compile_definitions(libGLES_CM
+ PRIVATE
+ "GL_GLEXT_PROTOTYPES"
+ "EGLAPI="
+ "GL_API="
+ "GL_APICALL="
+ "GLAPI="
+)
+
+target_compile_options(libGLES_CM
+ PRIVATE
+ ${ROOT_PROJECT_COMPILE_OPTIONS}
+)
+
+target_link_libraries(libGLES_CM
+ PRIVATE
+ libGLESCommon
+ gl_swiftshader_core
+ ${ROOT_PROJECT_LINK_LIBRARIES}
+)
+
+if (ANDROID)
+ set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
+endif ()
+
+set_shared_library_export_map(libGLES_CM ${CMAKE_CURRENT_SOURCE_DIR})
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(LIB_PREFIX "lib64")
+else()
+ set(LIB_PREFIX "lib")
+endif()
+
+add_custom_command(
+ TARGET libGLES_CM
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLES_CM>/translator
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLES_CM> $<TARGET_FILE_DIR:libGLES_CM>/translator/${LIB_PREFIX}GLES_CM_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
+)
diff --git a/src/OpenGL/libGLESv2/CMakeLists.txt b/src/OpenGL/libGLESv2/CMakeLists.txt
new file mode 100644
index 0000000..de05ec2
--- /dev/null
+++ b/src/OpenGL/libGLESv2/CMakeLists.txt
@@ -0,0 +1,136 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set(ROOT_PROJECT_COMPILE_OPTIONS
+ ${SWIFTSHADER_COMPILE_OPTIONS}
+ ${WARNINGS_AS_ERRORS}
+)
+
+set(ROOT_PROJECT_LINK_LIBRARIES
+ ${OS_LIBS}
+ ${SWIFTSHADER_LIBS}
+)
+
+set(LIBGLESV2_SRC_FILES
+ Buffer.cpp
+ Buffer.h
+ Context.cpp
+ Context.h
+ Device.cpp
+ Device.hpp
+ entry_points.cpp
+ entry_points.h
+ Fence.cpp
+ Fence.h
+ Framebuffer.cpp
+ Framebuffer.h
+ IndexDataManager.cpp
+ IndexDataManager.h
+ libGLESv2.cpp
+ libGLESv2.hpp
+ libGLESv3.cpp
+ main.cpp
+ main.h
+ mathutil.h
+ Program.cpp
+ Program.h
+ Query.cpp
+ Query.h
+ Renderbuffer.cpp
+ Renderbuffer.h
+ resource.h
+ ResourceManager.cpp
+ ResourceManager.h
+ Sampler.h
+ Shader.cpp
+ Shader.h
+ Texture.cpp
+ Texture.h
+ TransformFeedback.cpp
+ TransformFeedback.h
+ utilities.cpp
+ utilities.h
+ VertexArray.cpp
+ VertexArray.h
+ VertexDataManager.cpp
+ VertexDataManager.h
+)
+
+if(WIN32)
+ list(APPEND LIBGLESV2_SRC_FILES
+ libGLESv2.rc
+ )
+endif()
+
+add_library(libGLESv2 SHARED
+ ${LIBGLESV2_SRC_FILES}
+)
+
+set_target_properties(libGLESv2 PROPERTIES
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "OpenGL"
+ PREFIX ""
+ LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+)
+
+target_include_directories(libGLESv2
+ PRIVATE
+ ".."
+ "../.."
+)
+
+target_compile_definitions(libGLESv2
+ PRIVATE
+ "GL_GLEXT_PROTOTYPES"
+ "GL_API="
+ "GL_APICALL="
+ "GLAPI="
+ "NO_SANITIZE_FUNCTION="
+)
+
+target_compile_options(libGLESv2
+ PRIVATE
+ ${ROOT_PROJECT_COMPILE_OPTIONS}
+)
+
+target_link_libraries(libGLESv2
+ PRIVATE
+ libGLESCommon
+ gl_swiftshader_core
+ GLCompiler
+ ${ROOT_PROJECT_LINK_LIBRARIES}
+)
+
+if (ANDROID)
+ set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
+endif ()
+
+set_shared_library_export_map(libGLESv2 ${CMAKE_CURRENT_SOURCE_DIR})
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(LIB_PREFIX "lib64")
+else()
+ set(LIB_PREFIX "lib")
+endif()
+
+add_custom_command(
+ TARGET libGLESv2
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+)