cmake_minimum_required(VERSION 2.6)
PROJECT(freecwmp)
ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -Wmissing-declarations)

FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/build/modules")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
SET(SOURCES
	src/b64.c
	src/b64.h
	src/config.c
	src/config.h
	src/cwmp.c
	src/cwmp.h
	src/external.c
	src/external.h
	src/freecwmp.c
	src/freecwmp.h
	src/http.c
	src/http.h
	src/messages.h
	src/ubus.c
	src/ubus.h
	src/xml.c
	src/xml.h
)

ADD_EXECUTABLE(freecwmpd ${SOURCES})

SET(ACS "multi" CACHE STRING "specify which ACS is going to be used; there are some optimizations available for HDM and Fusion ACS (default -DACS:STRING=multi)")

IF(${ACS} STREQUAL "hdm")
	ADD_DEFINITIONS(-DACS_HDM)
ENDIF()

IF(${ACS} STREQUAL "fusion")
	ADD_DEFINITIONS(-DACS_FUSION)
ENDIF()

IF(${ACS} STREQUAL "multi")
	ADD_DEFINITIONS(-DACS_MULTI)
ENDIF()

OPTION(DEBUG "enable debugging messages" OFF)
OPTION(DEVEL "enable development messages" OFF)
OPTION(DUMMY_MODE "enable dummy mode" OFF)

IF(DEBUG)
    ADD_DEFINITIONS(-DDEBUG)
endif()

IF(DEVEL)
    ADD_DEFINITIONS(-DDEVEL)
endif()

IF(DUMMY_MODE)
    ADD_DEFINITIONS(-DDUMMY_MODE)
endif()

FIND_PACKAGE(UCI REQUIRED)
INCLUDE_DIRECTORIES(${UCI_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(freecwmpd ${UCI_LIBRARIES})

FIND_PACKAGE(LIBFREECWMP REQUIRED)
INCLUDE_DIRECTORIES(${LIBFREECWMP_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(freecwmpd ${LIBFREECWMP_LIBRARIES})

FIND_PACKAGE(LIBUBOX REQUIRED)
INCLUDE_DIRECTORIES(${LIBUBOX_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(freecwmpd ${LIBUBOX_LIBRARIES})

FIND_PACKAGE(LIBUBUS REQUIRED)
INCLUDE_DIRECTORIES(${LIBUBUS_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(freecwmpd ${LIBUBUS_LIBRARIES})

FIND_PACKAGE(MICROXML REQUIRED)
INCLUDE_DIRECTORIES(${MICROXML_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(freecwmpd ${MICROXML_LIBRARIES})

FIND_PACKAGE(CURL REQUIRED)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(freecwmpd ${CURL_LIBRARIES})

INSTALL(TARGETS freecwmpd RUNTIME DESTINATION bin)
