Fix: OS detection
[apps/app-templates.git] / cmake / common.cmake
index eb123f1..2f3bcdc 100644 (file)
 #--------------------------------------------------------------------------
 #  WARNING:
 #     Do not change this cmake template
-#     Customise your preferences in "./etc/config.cmake"
+#     Customise your preferences in "./conf.d/cmake/config.cmake"
 #--------------------------------------------------------------------------
 
+# Include ExternalProject CMake module by default
+include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
+
+if(DEFINED ENV{SDKTARGETSYSROOT})
+file(STRINGS $ENV{SDKTARGETSYSROOT}/usr/include/linux/version.h LINUX_VERSION_CODE_LINE REGEX "LINUX_VERSION_CODE")
+set(BUILD_ENV_SYSROOT $ENV{SDKTARGETSYSROOT})
+elseif(DEFINED ENV{PKG_CONFIG_SYSROOT_DIR})
+file(STRINGS $ENV{PKG_CONFIG_SYSROOT_DIR}/usr/include/linux/version.h LINUX_VERSION_CODE_LINE REGEX "LINUX_VERSION_CODE")
+set(BUILD_ENV_SYSROOT $ENV{PKG_CONFIG_SYSROOT_DIR})
+else()
+file(STRINGS /usr/include/linux/version.h LINUX_VERSION_CODE_LINE REGEX "LINUX_VERSION_CODE")
+set(BUILD_ENV_SYSROOT "")
+endif()
+
+# Get the os type
+# Used to package .deb
+set(OS_RELEASE_PATH "${BUILD_ENV_SYSROOT}/etc/os-release")
+if(EXISTS ${OS_RELEASE_PATH})
+       execute_process(COMMAND bash "-c" "grep -E '^ID(_LIKE)?=' /etc/os-release | tail -n 1 | sed -r 's:.*=\"(.*)\":\\1:' | awk '{print $1}'"
+               OUTPUT_VARIABLE TMP_OSRELEASE
+       )
+
+       if (NOT TMP_OSRELEASE STREQUAL "")
+               string(REGEX REPLACE ".*=\"?([0-9a-z\._-]*)\"?\n" "\\1" OSRELEASE ${TMP_OSRELEASE})
+       else()
+               set(OSRELEASE "NOT COMPATIBLE !")
+       endif()
+
+else()
+       set(OSRELEASE "NOT COMPATIBLE ! Missing ${OS_RELEASE_PATH} file.")
+endif()
+message(STATUS "Distribution used ${OSRELEASE}")
+
 file(GLOB project_cmakefiles ${PROJECT_APP_TEMPLATES_DIR}/cmake/cmake.d/[0-9][0-9]-*.cmake)
+file(GLOB distro_cmakefiles ${PROJECT_APP_TEMPLATES_DIR}/../cmake/[0-9][0-9]-${OSRELEASE}*.cmake ${PROJECT_APP_TEMPLATES_DIR}/../cmake/[0-9][0-9]-common*.cmake)
+list(SORT distro_cmakefiles)
+if(NOT distro_cmakefiles)
+       file(GLOB distro_cmakefiles ${PROJECT_APP_TEMPLATES_DIR}/../cmake/[0-9][0-9]-default*.cmake)
+endif()
+
+list(APPEND project_cmakefiles "${distro_cmakefiles}")
 list(SORT project_cmakefiles)
-file(GLOB home_cmakefiles $ENV{HOME}/.config/cmake.d/[0-9][0-9]-*.cmake)
+
+file(GLOB home_cmakefiles $ENV{HOME}/.config/app-templates/cmake.d/[0-9][0-9]-common*.cmake $ENV{HOME}/.config/app-templates/cmake.d/[0-9][0-9]-${PROJECT_NAME}*.cmake)
 list(SORT home_cmakefiles)
-file(GLOB system_cmakefiles /etc/cmake.d/[0-9][0-9]-*.cmake)
+file(GLOB system_cmakefiles /etc/app-templates/cmake.d/[0-9][0-9]-common*.cmake /etc/app-templates/cmake.d/[0-9][0-9]-${PROJECT_NAME}*.cmake)
 list(SORT system_cmakefiles)
 
-foreach(file ${project_cmakefiles} ${home_cmakefiles} ${system_cmakefiles})
+foreach(file ${system_cmakefiles} ${home_cmakefiles} ${project_cmakefiles})
        message(STATUS "Include: ${file}")
        include(${file})
 endforeach()
 
-macro(project_build)
-       set (ARGSLIST ${ARGN})
-       list(LENGTH ARGSLIST ARGSNUM)
-       if(${ARGSNUM} GREATER 0)
-               set(pattern "${ARGV0}")
-       else()
-               set(pattern "*")
-       endif()
+if(DEFINED PROJECT_SRC_DIR_PATTERN)
+       project_subdirs_add(${PROJECT_SRC_DIR_PATTERN})
+else()
+       project_subdirs_add()
+endif(DEFINED PROJECT_SRC_DIR_PATTERN)
+
+configure_files_in_dir(${PROJECT_APP_TEMPLATES_DIR}/${ENTRY_POINT}/template.d)
+configure_files_in_dir($ENV{HOME}/.config/app-templates/scripts)
+configure_files_in_dir(/etc/app-templates/scripts)
 
-       project_subdirs_add(${pattern})
-       project_targets_populate()
-       project_package_build()
-       project_closing_msg()
-endmacro(project_build)
\ No newline at end of file
+check_version()
+project_targets_populate()
+remote_targets_populate()
+project_package_build()
+project_closing_msg()