project(WFR-lib C CXX)
cmake_minimum_required(VERSION 2.8)


# cmake options
OPTION(BUILD_WFR_SHARED "Build libwfr as shared library" ON)


# Compiler flags
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -DNDEBUG -Wall")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -DNDEBUG -Wall")
#set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall")
#set(CMAKE_C_FLAGS_RELEASE "-O3 -Wall")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_RELEASE}")


# Initialize variables
set(WFR_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(WFR_LIBRARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(wfr_add_include_dirs "")
set(wfr_cpp_files "")


# Check whether we are called by another script
get_directory_property(hasParent PARENT_DIRECTORY)


# Override default libs install directory
if (NOT hasParent)
	if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
		set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/dist")
	endif()
endif()


# Include third-party stuff
include(third-party/cmake.inc)

# Include wfr source code
include(src/cmake.inc)


# Set include dir and compiler command line options for compiling
include_directories(${WFR_INCLUDE_DIR} ${Libodb_common_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${Libodb_sqlite_INCLUDE_DIR} ${Rapidjson_INCLUDE_DIR} ${wfr_add_include_dirs})
ADD_DEFINITIONS(
    -std=c++11
    -Wno-unknown-pragmas
)


# Add wfr library
if (BUILD_WFR_SHARED)
	add_library(wfr_lib SHARED ${wfr_cpp_files})
	set(WFR_LIBRARY_EXTENSION ".so")
else()
	add_library(wfr_lib STATIC ${wfr_cpp_files})
	set(WFR_LIBRARY_EXTENSION ".a")
endif()
add_dependencies(wfr_lib libodb sqlite3 Boost)
set_target_properties(wfr_lib PROPERTIES OUTPUT_NAME wfr)
	

# Set variables
set(WFR_LIBRARIES 
	wfr_lib
	"${Boost_LIBRARIES}"
	"${Libodb_sqlite_LIBRARIES}"
	"${Libodb_common_LIBRARIES}"
	"${Sqlite3_LIBRARIES}"
	pthread
	dl
) 

message("WFR_LIBRARIES: ${WFR_LIBRARIES}")
message("Boost_LIBRARIES: ${Boost_LIBRARIES}")
message("Libodb_sqlite_LIBRARIES: ${Libodb_sqlite_LIBRARIES}")
message("Libodb_common_LIBRARIES: ${Libodb_common_LIBRARIES}")
message("Sqlite3_LIBRARIES: ${Sqlite3_LIBRARIES}")

# Where to install the wfr stuff
install(DIRECTORY ${WFR_INCLUDE_DIR} DESTINATION ${CMAKE_INSTALL_PREFIX})
install(TARGETS wfr_lib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/wfr-config.cmake DESTINATION ${CMAKE_INSTALL_PREFIX})


# Provide some variables to parent script
if(hasParent)
	set(WFR_FOUND "TRUE" PARENT_SCOPE)
	set(WFR_DIR "${WFR_DIR}" PARENT_SCOPE)
	set(WFR_INCLUDE_DIR "${WFR_INCLUDE_DIR}" PARENT_SCOPE)
	set(WFR_LIBRARY_DIR "${WFR_LIBRARY_DIR}" PARENT_SCOPE)
	set(WFR_LIBRARIES ${WFR_LIBRARIES} PARENT_SCOPE)
endif()

