cmake_minimum_required(VERSION 3.4.1)

project(expo-gl)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 20)

set(PACKAGE_NAME "expo-gl")
set(BUILD_DIR ${CMAKE_SOURCE_DIR}/build)
set(COMMON_DIR ${CMAKE_SOURCE_DIR}/../common)

add_library(
    ${PACKAGE_NAME} SHARED
    ${COMMON_DIR}/EXGLNativeApi.cpp
    ${COMMON_DIR}/EXGLNativeApi.h
    ${COMMON_DIR}/EXGLImageUtils.cpp
    ${COMMON_DIR}/EXGLImageUtils.h
    ${COMMON_DIR}/EXGLNativeContext.cpp
    ${COMMON_DIR}/EXGLNativeContext.h
    ${COMMON_DIR}/EXGLContextManager.cpp
    ${COMMON_DIR}/EXGLContextManager.h
    ${COMMON_DIR}/EXWebGLMethods.cpp
    ${COMMON_DIR}/EXWebGLMethodsTextures.cpp
    ${COMMON_DIR}/EXWebGLMethodsDraw.cpp
    ${COMMON_DIR}/EXWebGLMethods.h
    ${COMMON_DIR}/EXWebGLRenderer.cpp
    ${COMMON_DIR}/EXWebGLRenderer.h
    ${COMMON_DIR}/EXTypedArrayApi.cpp
    ${COMMON_DIR}/EXTypedArrayApi.h
    ./src/main/cpp/EXGLJniApi.cpp)

target_include_directories(
    ${PACKAGE_NAME} PRIVATE "${COMMON_DIR}")

find_package(ReactAndroid REQUIRED CONFIG)

find_library(LOG_LIB log)
find_library(GLES_LIB GLESv3)

target_compile_options(
    ${PACKAGE_NAME}
    PRIVATE -O2
            -fexceptions
            -frtti
            -Wall
            -Wextra
            -Wno-unused-parameter
            -Wshorten-64-to-32
            -Wstrict-prototypes)
target_precompile_headers(${PACKAGE_NAME} PRIVATE ${COMMON_DIR}/pch.h)
target_link_libraries(${PACKAGE_NAME} ReactAndroid::jsi ${LOG_LIB} ${GLES_LIB} android)
