mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-01-10 15:21:03 +08:00
149 lines
5.2 KiB
CMake
149 lines
5.2 KiB
CMake
cmake_minimum_required(VERSION 3.8)
|
|
project(angle)
|
|
|
|
add_compile_options(/d2guard4 /Wv:18 /WX)
|
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /guard:cf")
|
|
|
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DANGLE_STANDALONE_BUILD -DANGLE_ENABLE_DEBUG_ANNOTATIONS)
|
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/include/id/commit.h" "#define ANGLE_COMMIT_HASH \"invalid-hash\"\n#define ANGLE_COMMIT_HASH_SIZE 12\n#define ANGLE_COMMIT_DATE \"invalid-date\"\n")
|
|
|
|
include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
|
|
|
|
##########
|
|
# anglebase
|
|
add_library(anglebase INTERFACE)
|
|
file(GLOB_RECURSE anglebase_SOURCES "src/common/third_party/base/*.h")
|
|
target_sources(anglebase INTERFACE ${anglebase_SOURCES})
|
|
target_include_directories(anglebase INTERFACE src/common/third_party/base)
|
|
|
|
##########
|
|
# angle_common
|
|
file(GLOB ANGLE_COMMON_SOURCES "src/common/*.h" "src/common/*.inl" "src/common/*.cpp")
|
|
list(FILTER ANGLE_COMMON_SOURCES EXCLUDE REGEX "_unittest|event_tracer|_linux|_mac")
|
|
add_library(angle_common STATIC ${ANGLE_COMMON_SOURCES})
|
|
target_link_libraries(angle_common PUBLIC anglebase)
|
|
|
|
##########
|
|
# angle_image_util
|
|
file(GLOB ANGLE_IMAGE_UTIL_SOURCES "src/image_util/*.h" "src/image_util/*.inl" "src/image_util/*.cpp")
|
|
add_library(angle_image_util STATIC ${ANGLE_IMAGE_UTIL_SOURCES})
|
|
target_link_libraries(angle_image_util PRIVATE angle_common)
|
|
|
|
##########
|
|
# translator
|
|
file(GLOB TRANSLATOR_SOURCES
|
|
"src/compiler/translator/glslang.l"
|
|
"src/compiler/translator/glslang.y"
|
|
"src/compiler/translator/*.h"
|
|
"src/compiler/translator/*.cpp"
|
|
"src/third_party/compiler/ArrayBoundsClamper.cpp"
|
|
)
|
|
add_library(translator STATIC ${TRANSLATOR_SOURCES})
|
|
target_compile_definitions(translator PUBLIC
|
|
-DANGLE_ENABLE_ESSL
|
|
-DANGLE_ENABLE_GLSL
|
|
-DANGLE_ENABLE_HLSL
|
|
)
|
|
target_link_libraries(translator PRIVATE angle_common)
|
|
|
|
##########
|
|
# preprocessor
|
|
file(GLOB PREPROCESSOR_SOURCES
|
|
"src/compiler/preprocessor/*.h"
|
|
"src/compiler/preprocessor/*.cpp"
|
|
)
|
|
add_library(preprocessor STATIC ${PREPROCESSOR_SOURCES})
|
|
target_link_libraries(preprocessor PRIVATE angle_common)
|
|
|
|
##########
|
|
# libANGLE
|
|
file(GLOB LIBANGLE_SOURCES
|
|
"src/third_party/systeminfo/SystemInfo.cpp"
|
|
"src/common/third_party/murmurhash/MurmurHash3.cpp"
|
|
"src/common/event_tracer.cpp"
|
|
|
|
"src/libANGLE/*.cpp"
|
|
"src/libANGLE/*.inl"
|
|
"src/libANGLE/*.h"
|
|
|
|
"src/libANGLE/renderer/*.cpp"
|
|
"src/libANGLE/renderer/*.inl"
|
|
"src/libANGLE/renderer/*.h"
|
|
|
|
"src/libANGLE/renderer/gl/*.cpp"
|
|
"src/libANGLE/renderer/gl/*.inl"
|
|
"src/libANGLE/renderer/gl/*.h"
|
|
|
|
"src/libANGLE/renderer/gl/wgl/*.cpp"
|
|
"src/libANGLE/renderer/gl/wgl/*.inl"
|
|
"src/libANGLE/renderer/gl/wgl/*.h"
|
|
|
|
# "src/libANGLE/renderer/vulkan/*.cpp"
|
|
# "src/libANGLE/renderer/vulkan/*.inl"
|
|
# "src/libANGLE/renderer/vulkan/*.h"
|
|
|
|
"src/libANGLE/renderer/null/*.cpp"
|
|
"src/libANGLE/renderer/null/*.inl"
|
|
"src/libANGLE/renderer/null/*.h"
|
|
)
|
|
file(GLOB_RECURSE LIBANGLE_D3D_SOURCES "src/libANGLE/renderer/d3d/*.h" "src/libANGLE/renderer/d3d/*.cpp" "src/libANGLE/renderer/d3d/*.inl")
|
|
list(FILTER LIBANGLE_SOURCES EXCLUDE REGEX "_unittest")
|
|
list(FILTER LIBANGLE_D3D_SOURCES EXCLUDE REGEX "_unittest|winrt")
|
|
add_library(libANGLE STATIC ${LIBANGLE_SOURCES} ${LIBANGLE_D3D_SOURCES})
|
|
find_library(D3D9_LIB NAMES d3d9)
|
|
find_library(DXGUID_LIB NAMES dxguid)
|
|
target_link_libraries(libANGLE PRIVATE angle_common angle_image_util translator ${D3D9_LIB} ${DXGUID_LIB} preprocessor)
|
|
target_include_directories(libANGLE PRIVATE "src/third_party/khronos")
|
|
target_compile_definitions(libANGLE PUBLIC
|
|
-DANGLE_ENABLE_D3D9
|
|
-DANGLE_ENABLE_D3D11
|
|
-DANGLE_ENABLE_OPENGL
|
|
# -DANGLE_ENABLE_VULKAN
|
|
-DANGLE_ENABLE_NULL
|
|
)
|
|
target_compile_definitions(libANGLE PRIVATE -DLIBANGLE_IMPLEMENTATION)
|
|
|
|
##########
|
|
# libGLESv2
|
|
file(GLOB LIBGLESV2_SOURCES "src/libGLESv2/*.h" "src/libGLESv2/*.cpp" "src/libGLESv2/libGLESv2.def")
|
|
add_library(libGLESv2 ${LIBGLESV2_SOURCES})
|
|
target_link_libraries(libGLESv2 PRIVATE angle_common libANGLE)
|
|
target_compile_definitions(libGLESv2 PRIVATE
|
|
-DLIBGLESV2_IMPLEMENTATION
|
|
-DLIBANGLE_IMPLEMENTATION
|
|
-DGL_GLEXT_PROTOTYPES
|
|
"-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
|
|
-DGL_APICALL=
|
|
-DEGLAPI=
|
|
)
|
|
|
|
##########
|
|
# libEGL
|
|
add_library(libEGL "src/libEGL/libEGL.def" "src/libEGL/libEGL.cpp" "src/libEGL/libEGL.rc" "src/libEGL/resource.h")
|
|
target_link_libraries(libEGL PRIVATE angle_common libANGLE libGLESv2)
|
|
target_compile_definitions(libEGL PRIVATE
|
|
-DLIBANGLE_IMPLEMENTATION
|
|
-DGL_GLEXT_PROTOTYPES
|
|
"-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
|
|
-DGL_APICALL=
|
|
-DEGLAPI=
|
|
)
|
|
|
|
|
|
install(TARGETS libEGL libGLESv2
|
|
RUNTIME DESTINATION bin
|
|
LIBRARY DESTINATION lib
|
|
ARCHIVE DESTINATION lib
|
|
)
|
|
|
|
if(NOT DISABLE_INSTALL_HEADERS)
|
|
install(
|
|
DIRECTORY include/
|
|
DESTINATION include
|
|
FILES_MATCHING PATTERN "*.h"
|
|
PATTERN "GLSLANG" EXCLUDE
|
|
PATTERN "export.h" EXCLUDE
|
|
)
|
|
endif()
|