Adopted to OpenWrt target. Most likely these changes go elsewhere when done right.
--- a/service/CMakeLists.txt
+++ b/service/CMakeLists.txt
@@ -98,7 +98,7 @@ IF (UNIX AND NOT APPLE)
 	IF (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
 		SET(DEFAULT_STATE_INSTALL_DIR "/var/spool")
 	ELSE ()
-		SET(DEFAULT_STATE_INSTALL_DIR "/var/state")
+		SET(DEFAULT_STATE_INSTALL_DIR "/tmp/state") # OpenWrt has var as symlink to tmp
 	ENDIF ()
 	SET(STATE_INSTALL_DIR "${DEFAULT_STATE_INSTALL_DIR}" CACHE PATH "The directory to store state information of the devices")
 
--- a/tdadmin/CMakeLists.txt
+++ b/tdadmin/CMakeLists.txt
@@ -38,8 +38,11 @@ ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeB
 		${ARGP_LIBRARY}
 	)
 ELSE (WIN32)
+	# Linux, in this case openwrt that requires argp-standalone
+	FIND_LIBRARY(ARGP_LIBRARY argp)
 	TARGET_LINK_LIBRARIES(tdadmin
 		${CMAKE_BINARY_DIR}/client/libtelldus-core.so
+		${ARGP_LIBRARY}
 	)
 ENDIF (WIN32)
 
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -66,12 +66,16 @@ ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeB
 	)
 ELSE (APPLE)
 	#### Linux ####
+	#FIND_LIBRARY(ICONV_LIBRARY iconv) Does not work
 	ADD_DEFINITIONS( -D_LINUX )
 	LIST(APPEND  telldus-common_SRCS
 		Event_unix.cpp
 		EventHandler_unix.cpp
 		Socket_unix.cpp
 	)
+	LIST(APPEND telldus-common_LIBRARIES
+		${ICONV_LIBRARY}
+	)
 ENDIF (APPLE)