project(libMultiMC)

set(CMAKE_AUTOMOC ON)

# Find Qt
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)

# Include Qt headers.
include_directories(${Qt5Base_INCLUDE_DIRS})
include_directories(${Qt5Network_INCLUDE_DIRS})

# Include utility library.
include_directories(${CMAKE_SOURCE_DIR}/libutil/include)

# Include settings library.
include_directories(${CMAKE_SOURCE_DIR}/libsettings/include)

SET(LIBINST_HEADERS
include/libmmc_config.h


# Instance Stuff
include/instance.h
include/instancelist.h
include/instanceloader.h

include/instversion.h
include/instversionlist.h


# Plugin Stuff
include/pluginmanager.h
include/instancetypeinterface.h


# Tasks
include/task.h
include/logintask.h
include/gameupdatetask.h


# Login Data
include/userinfo.h
include/loginresponse.h


# Misc Data
include/version.h
include/appsettings.h
include/minecraftprocess.h
)

SET(LIBINST_SOURCES
# Instance Stuff
src/instance.cpp
src/instancelist.cpp
src/instanceloader.cpp

src/instversion.cpp
src/instversionlist.cpp


# Plugin Stuff
src/pluginmanager.cpp


# Tasks
src/task.cpp
src/logintask.cpp
src/gameupdatetask.cpp


# Login Data
src/userinfo.cpp
src/loginresponse.cpp


# Misc Data
src/version.cpp
src/appsettings.cpp
src/minecraftprocess.cpp
)

# Set the include dir path.
SET(LIBMULTIMC_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)

# Include self.
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_BINARY_DIR}/include)

add_definitions(-DLIBMULTIMC_LIBRARY)

add_library(libMultiMC SHARED ${LIBINST_SOURCES} ${LIBINST_HEADERS})
qt5_use_modules(libMultiMC Core Network)
target_link_libraries(libMultiMC libUtil libSettings)