cmake_minimum_required(VERSION 3.10)

if (WIN32)
    include( helpers/CMakeExtras.txt OPTIONAL )
    
    if(NOT DEFINED CMAKE_TOOLCHAIN_FILE AND DEFINED ENV{CMAKE_TOOLCHAIN_FILE})
        set(CMAKE_TOOLCHAIN_FILE $ENV{CMAKE_TOOLCHAIN_FILE})
    endif()
    message("Using CMAKE_TOOLCHAIN_FILE ${ENV} ${CMAKE_TOOLCHAIN_FILE}")

    # Uncomment this to dump env vars:
    # get_cmake_property(_variableNames VARIABLES)
    # list (SORT _variableNames)
    # foreach (_variableName ${_variableNames})
    #     message(STATUS "${_variableName}=${${_variableName}}")
    # endforeach()

    if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
        message(FATAL_ERROR "Cmake toolchain file was not found. Set it as an system enviornment variable and restart")
    endif()

endif()

set(CMAKE_POSITION_INDEPENDENT_CODE ON)
project( node-leveldb )
add_subdirectory( leveldb-mcpe )

if (UNIX)
    add_definitions(-DLEVELDB_PLATFORM_POSIX "-DDLLX=")
    if(APPLE)
        add_definitions(-DOS_MACOSX)
    endif()
elseif (WIN32)
    add_definitions(-DLEVELDB_PLATFORM_WINDOWS "-DDLLX=__declspec(dllexport)")
endif()

include_directories("leveldb-mcpe/include"})

include_directories(${CMAKE_JS_INC})
file(GLOB SOURCE_FILES "src/*.cpp" "src/*.h")
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})

# Include N-API wrappers
include_directories(
    ${CMAKE_SOURCE_DIR}/node_modules/node-addon-api 
    ${CMAKE_SOURCE_DIR}/node_modules/node-addon-api/src
    ${CMAKE_JS_INC}
)

message(STATUS "Include dirs")
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
  message(STATUS "dir='${dir}'")
endforeach()


# define NPI_VERSION
add_definitions(-DNAPI_VERSION=3)

target_link_libraries( node-leveldb leveldb )
