project(QJson)

# Automatically generate code for Qt moc, uic and rcc files
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

add_library(qjson
    sources/src/parser.cpp
    sources/src/qobjecthelper.cpp
    sources/src/json_scanner.cpp
    sources/src/json_parser.cc
    sources/src/parserrunnable.cpp
    sources/src/serializer.cpp
    sources/src/serializerrunnable.cpp)

target_link_libraries(qjson PUBLIC Qt5::Core)
target_include_directories(qjson PUBLIC sources/src)
target_compile_definitions(qjson PUBLIC QJSON_STATIC)

if (COMPILER_CLANG OR COMPILER_GCC)
    # Project uses autogenerated code that have "register" variables
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-register -Wno-register")
elseif(COMPILER_MSVC)
    # Suppress "warning C5033: 'register' is no longer a supported storage class" from third-party\qjson
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4065 /wd5033")
endif()