diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8cf2c35..388f045 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,8 +7,12 @@
 
 project(libyang C)
 
+# include custom Modules
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/")
+
 include(GNUInstallDirs)
 include(CheckSymbolExists)
+include(UseCompat)
 
 set(LIBYANG_DESCRIPTION "libyang is YANG data modelling language parser and toolkit written (and providing API) in C.")
 
@@ -106,20 +110,12 @@
 set(CMAKE_C_FLAGS_PACKAGE "-g -O2 -DNDEBUG")
 set(CMAKE_C_FLAGS_DEBUG   "-g -O0")
 
-list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
-check_symbol_exists(get_current_dir_name unistd.h HAVE_GET_CURRENT_DIR_NAME)
-check_symbol_exists(vdprintf stdio.h HAVE_VDPRINTF)
-check_symbol_exists(strnstr string.h HAVE_STRNSTR)
-
 include_directories(${PROJECT_BINARY_DIR}/src ${PROJECT_SOURCE_DIR}/src)
 configure_file(${PROJECT_SOURCE_DIR}/src/config.h.in ${PROJECT_BINARY_DIR}/src/config.h @ONLY)
 
 #set(EXTENSIONS_PLUGINS_DIR_MACRO "${PLUGINS_DIR}/extensions")
 #set(USER_TYPES_PLUGINS_DIR_MACRO "${PLUGINS_DIR}/user_types")
 
-# include custom Modules
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/")
-
 # setup bindings
 #set(GEN_LANGUAGE_BINDINGS 0 CACHE BOOL "Enable language bindings generation.")
 #set(GEN_CPP_BINDINGS 1 CACHE BOOL "Enable C++ bindings.")
@@ -128,69 +124,6 @@
 #set(GEN_PYTHON_VERSION "3" CACHE STRING "Python version")
 #set(GEN_JAVASCRIPT_BINDINGS 0 CACHE BOOL "Enable JavaScript bindings.")
 
-#find_program(DEB_BUILDER NAMES debuild)
-#find_program(RPM_BUILDER NAMES rpmbuild)
-
-#if (NOT DEFINED ENV{TRAVIS_BRANCH})
-#    execute_process(COMMAND "git" "rev-parse" "--abbrev-ref" "HEAD"
-#                    OUTPUT_VARIABLE GIT_BRANCH
-#                    OUTPUT_STRIP_TRAILING_WHITESPACE
-#                    ERROR_QUIET
-#                )
-#    if (NOT GIT_BRANCH)
-#        set(ENV{TRAVIS_BRANCH} "master")
-#    else()
-#        if (GIT_BRANCH MATCHES "master|devel")
-#            set(ENV{TRAVIS_BRANCH} ${GIT_BRANCH})
-#        else()
-#            set(ENV{TRAVIS_BRANCH} "master")
-#        endif()
-#    endif()
-#    set(GIT_BRANCH $ENV{TRAVIS_BRANCH})
-#endif()
-#
-#if ($ENV{TRAVIS_BRANCH} STREQUAL "master")
-#    set(PACKAGE_NAME "libyang")
-#    set(PACKAGE_PART_NAME "")
-#    set(BRANCH "master")
-#    set(BUILD_TYPE "Package")
-#    set(CONFLICT_PACKAGE_NAME "libyang-experimental")
-#else ()
-#    set(PACKAGE_NAME "libyang-experimental")
-#    set(PACKAGE_PART_NAME "-experimental")
-#    set(BRANCH "devel")
-#    set(BUILD_TYPE "debug")
-#    set(CONFLICT_PACKAGE_NAME "libyang")
-#endif()
-# change version in config files
-#configure_file(${PROJECT_SOURCE_DIR}/packages/libyang.spec.in ${PROJECT_BINARY_DIR}/build-packages/libyang.spec)
-#configure_file(${PROJECT_SOURCE_DIR}/packages/libyang.dsc.in ${PROJECT_BINARY_DIR}/build-packages/libyang.dsc)
-#configure_file(${PROJECT_SOURCE_DIR}/packages/debian.control.in ${PROJECT_BINARY_DIR}/build-packages/debian.control @ONLY)
-#configure_file(${PROJECT_SOURCE_DIR}/packages/debian.rules.in ${PROJECT_BINARY_DIR}/build-packages/debian.rules)
-
-#if (NOT DEB_BUILDER)
-#    message(WARNING "Missing tools (devscripts, debhelper package) for building deb package.\nYou won't be able to generate deb package from source code.\nCompiling libyang should still works fine.")
-#else ()
-#    # target for local build deb package
-#    add_custom_target(build-deb
-#                      WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
-#                      COMMAND build-packages/local-deb.sh
-#    )
-#    configure_file(${PROJECT_SOURCE_DIR}/packages/local-deb.sh.in ${PROJECT_BINARY_DIR}/build-packages/local-deb.sh @ONLY)
-#endif()
-
-#if (NOT RPM_BUILDER)
-#    message(WARNING "Missing tools (rpm package) for building rpm package. \nYou won't be able to generate rpm package from source code.\nCompiling libyang should still works fine.")
-#else ()
-#    # target for local build rpm package
-#    string(REPLACE ${PROJECT_SOURCE_DIR} "." EXCLUDE_BUILD_DIR ${PROJECT_BINARY_DIR})
-#    add_custom_target(build-rpm
-#                      WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
-#                      COMMAND build-packages/local-rpm.sh
-#    )
-#    configure_file(${PROJECT_SOURCE_DIR}/packages/local-rpm.sh.in ${PROJECT_BINARY_DIR}/build-packages/local-rpm.sh @ONLY)
-#endif()
-
 # by default build shared library
 # static build requires static libpcre2 library
 option(ENABLE_STATIC "Build static (.a) library" OFF)
@@ -202,7 +135,6 @@
 
 set(libsrc
     src/common.c
-    src/compat.c
     src/log.c
     src/hash_table.c
     src/set.c
@@ -264,6 +196,9 @@
     src/tree_data.h
     src/tree_schema.h)
 
+# link compat
+use_compat()
+
 # create static libyang library
 if(ENABLE_STATIC)
     add_definitions(-DSTATIC)
@@ -271,17 +206,17 @@
     set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
     set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)       # remove -Wl,-Bdynamic
     set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
-    add_library(yang STATIC ${libsrc})
+    add_library(yang STATIC ${libsrc} $<TARGET_OBJECTS:compat>)
 else()
     set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
     add_library(yangobj OBJECT ${libsrc})
-    add_library(yang SHARED $<TARGET_OBJECTS:yangobj>)
+    add_library(yang SHARED $<TARGET_OBJECTS:yangobj> $<TARGET_OBJECTS:compat>)
 
     #link dl
     target_link_libraries(yang ${CMAKE_DL_LIBS})
 
     set_target_properties(yangobj PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
-endif(ENABLE_STATIC)
+endif()
 
 set_target_properties(yang PROPERTIES VERSION ${LIBYANG_SOVERSION_FULL} SOVERSION ${LIBYANG_SOVERSION})
 
@@ -295,7 +230,7 @@
     target_link_libraries(yang -Wl,--whole-archive ${CMAKE_THREAD_LIBS_INIT} -Wl,--no-whole-archive)
 else()
     target_link_libraries(yang ${CMAKE_THREAD_LIBS_INIT})
-endif(ENABLE_STATIC)
+endif()
 
 # find PCRE2 library
 unset(PCRE2_LIBRARY CACHE)
@@ -398,14 +333,14 @@
 configure_file(${PROJECT_SOURCE_DIR}/tools/config.h.in ${PROJECT_BINARY_DIR}/tools/config.h @ONLY)
 
 # yanglint
-add_executable(yanglint ${lintsrc})
+add_executable(yanglint ${lintsrc} $<TARGET_OBJECTS:compat>)
 target_link_libraries(yanglint yang)
 install(TARGETS yanglint DESTINATION ${CMAKE_INSTALL_BINDIR})
 install(FILES ${PROJECT_SOURCE_DIR}/tools/lint/yanglint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
 target_include_directories(yanglint BEFORE PRIVATE ${PROJECT_BINARY_DIR})
 
 # yangre
-add_executable(yangre ${resrc})
+add_executable(yangre ${resrc} $<TARGET_OBJECTS:compat>)
 target_link_libraries(yangre yang)
 install(TARGETS yangre DESTINATION ${CMAKE_INSTALL_BINDIR})
 target_include_directories(yangre BEFORE PRIVATE ${PROJECT_BINARY_DIR})
@@ -418,22 +353,22 @@
     if(CMOCKA_FOUND)
         enable_testing()
         add_subdirectory(tests)
-    else(CMOCKA_FOUND)
+    else()
         message(STATUS "Disabling tests because of missing CMocka")
         set(ENABLE_BUILD_TESTS NO)
-    endif(CMOCKA_FOUND)
-endif(ENABLE_BUILD_TESTS)
+    endif()
+endif()
 
 if(ENABLE_FUZZ_TARGETS)
-	set(FUZZER "AFL" CACHE STRING "fuzzer type")
-	if(FUZZER STREQUAL "LibFuzzer")
-		if (NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
-			message(FATAL_ERROR "LibFuzzer works only with clang")
-		endif()
-		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer")
-	endif()
-	add_subdirectory(tests/fuzz)
-endif(ENABLE_FUZZ_TARGETS)
+    set(FUZZER "AFL" CACHE STRING "fuzzer type")
+    if(FUZZER STREQUAL "LibFuzzer")
+        if (NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
+            message(FATAL_ERROR "LibFuzzer works only with clang")
+        endif()
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer")
+    endif()
+    add_subdirectory(tests/fuzz)
+endif()
 
 #if(GEN_LANGUAGE_BINDINGS AND GEN_CPP_BINDINGS)
 #    add_subdirectory(swig)
