diff --git a/cmake/Modules/CMakeMacroLibtoolFile.cmake b/cmake/Modules/CMakeMacroLibtoolFile.cmake
new file mode 100644
index 0000000..514793e
--- /dev/null
+++ b/cmake/Modules/CMakeMacroLibtoolFile.cmake
@@ -0,0 +1,92 @@
+macro(libtool_create_control_file _target)
+  # Get target properties to fill into control file
+  get_target_property(_target_location ${_target} LOCATION)
+  get_target_property(_target_type ${_target} TYPE)
+
+  message("-- Creating static libtool control file for target ${_target}")
+  # No support for shared libraries as tigervnc only needs libtool config files
+  # for static libraries
+  if("${_target_type}" MATCHES "^[^STATIC_LIBRARY]$")
+    message(ERROR " -  trying to use libtool_create_control_file on non static library target.")
+  endif()
+
+  #
+  # Parse the target_LIB_DEPENDS of libraries to put into libtool control file
+  # as library dependencies and handle a few corners...
+  #
+  foreach(library ${${_target}_LIB_DEPENDS})
+    # Assume all entries as shared if not platform specific static library
+    # extension is matched
+    if("${library}" MATCHES "[^.+\\${CMAKE_STATIC_LIBRARY_SUFFIX}]$")
+      # Check if we have shared extenstion or not
+      if("${library}" MATCHES ".+\\${CMAKE_SHARED_LIBRARY_SUFFIX}$")
+        # We got an shared library lets cut it down to path and library name then
+	# add to libtool dependency libs, we always assume this is a absoult path
+	# because this is how cmake does..
+	get_filename_component(_shared_lib ${library} NAME_WE)
+	get_filename_component(_shared_lib_path ${library} PATH)
+	string(REPLACE "lib" "" _shared_lib ${_shared_lib})
+        set(_target_dependency_libs "${_target_dependency_libs} -L${_shared_lib_path} -l${_shared_lib}")
+      else()
+	# No shared library suffix found, might also be a cmake target.
+	# Dont continue if we have a target name as lib	due to we
+	# assume static linkage against out targets
+	get_target_property(_ltp ${library} TYPE)
+	if(${_ltp})
+	  # No cmake target soo let's use find_library to see if we found any useful to use
+  	  find_library(FL ${library})
+	  if(FL)
+	    # Found library, lets cut it down to make libtool happy
+    	    get_filename_component(_shared_lib ${FL} NAME_WE)
+	    get_filename_component(_shared_lib_path ${FL} PATH)
+	    string(REPLACE "lib" "" _shared_lib ${_shared_lib})
+            set(_target_dependency_libs "${_target_dependency_libs} -L${_share_lib_path} -l${_shared_lib}")
+	  else()
+	    # Nothing found, lets ignore it
+	  endif()
+	else()
+	  # taget detected lets ignore it
+	endif()
+      endif()
+    else()
+      # Detected a static library, we want the absolute path so lets check if we have that
+      # if not try use find_library to get one
+      get_filename_component(_name ${library} NAME)
+      string(REPLACE "${_name}" "" _path ${library})
+      if(NOT "${_path}" MATCHES "")
+      	# We got a full path to static library lets add as is to libtool library dependencies
+        set(_target_dependency_libs "${_target_dependency_libs} ${library}")
+      else()
+        # there no path for the static library lets use find_library to find one
+	find_library(FL ${library})
+	if(FL)
+	  # got the library lets add it..
+	  set(_target_dependency_libs "${_target_dependency_libs} ${FL}")
+	else()
+	  # Nothing found, let's ignore it
+	endif()
+      endif()
+    endif()
+  endforeach()
+
+  # Write the libtool control file for static library
+  get_filename_component(_lname ${_target_location} NAME_WE)
+  set(_laname ${CMAKE_CURRENT_BINARY_DIR}/${_lname}.la)
+ 
+  file(WRITE ${_laname} "# ${_lname}.la - a libtool library file\n# Generated by ltmain.sh (GNU libtool) 2.2.6b\n")
+  file(APPEND ${_laname} "dlname=''\n\n")
+  file(APPEND ${_laname} "library_names=''\n\n")
+  file(APPEND ${_laname} "old_library='${_lname}.a'\n\n")
+  file(APPEND ${_laname} "inherited_linker_flags=''\n\n")
+  file(APPEND ${_laname} "dependency_libs=' ${_target_dependency_libs}'\n\n")
+  file(APPEND ${_laname} "weak_library_names=''\n\n")
+  file(APPEND ${_laname} "current=\n")
+  file(APPEND ${_laname} "age=\n")
+  file(APPEND ${_laname} "revision=\n\n")
+  file(APPEND ${_laname} "installed=no\n\n")
+  file(APPEND ${_laname} "shouldnotlink=no\n\n")
+  file(APPEND ${_laname} "dlopen=''\n")
+  file(APPEND ${_laname} "dlpreopen=''\n\n")
+  file(APPEND ${_laname} "libdir=''\n\n")
+
+endmacro()
\ No newline at end of file
