]> granicus.if.org Git - esp-idf/commitdiff
cmake: set variables set by project call
authorRenz Christian Bagaporo <renz@espressif.com>
Wed, 10 Jul 2019 03:51:17 +0000 (11:51 +0800)
committerRenz Christian Bagaporo <renz@espressif.com>
Wed, 10 Jul 2019 03:51:17 +0000 (11:51 +0800)
ESP-IDF overrides project() definition for user convenience. This
redefinition lacks setting the variables documented at
the project command documentation
https://cmake.org/cmake/help/v3.5/command/project.html in the parent
scope.

This commit sets those variables.

Closes https://github.com/espressif/esp-idf/issues/3611.

tools/cmake/project.cmake

index 1bf088c3f864bea2cf1cd06b5133a522131999f6..13478facc8529bd8831bb666a07548cfcadfaa50 100644 (file)
@@ -142,6 +142,31 @@ macro(project name)
     function(project)
         set(project_ARGV ARGV)
         __project(${${project_ARGV}})
+
+        # Set the variables that project() normally sets, documented in the
+        # command's docs.
+        #
+        # https://cmake.org/cmake/help/v3.5/command/project.html
+        #
+        # There is some nuance when it comes to setting version variables in terms of whether
+        # CMP0048 is set to OLD or NEW. However, the proper behavior should have bee already handled by the original
+        # project call, and we're just echoing the values those variables were set to.
+        set(PROJECT_NAME "${PROJECT_NAME}" PARENT_SCOPE)
+        set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}" PARENT_SCOPE)
+        set(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" PARENT_SCOPE)
+        set(PROJECT_VERSION "${PROJECT_VERSION}" PARENT_SCOPE)
+        set(PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" PARENT_SCOPE)
+        set(PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR}" PARENT_SCOPE)
+        set(PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}" PARENT_SCOPE)
+        set(PROJECT_VERSION_TWEAK "${PROJECT_VERSION_TWEAK}" PARENT_SCOPE)
+
+        set(${PROJECT_NAME}_BINARY_DIR "${${PROJECT_NAME}_BINARY_DIR}" PARENT_SCOPE)
+        set(${PROJECT_NAME}_SOURCE_DIR "${${PROJECT_NAME}_SOURCE_DIR}" PARENT_SCOPE)
+        set(${PROJECT_NAME}_VERSION "${${PROJECT_NAME}_VERSION}" PARENT_SCOPE)
+        set(${PROJECT_NAME}_VERSION_MAJOR "${${PROJECT_NAME}_VERSION_MAJOR}" PARENT_SCOPE)
+        set(${PROJECT_NAME}_VERSION_MINOR "${${PROJECT_NAME}_VERSION_MINOR}" PARENT_SCOPE)
+        set(${PROJECT_NAME}_VERSION_PATCH "${${PROJECT_NAME}_VERSION_PATCH}" PARENT_SCOPE)
+        set(${PROJECT_NAME}_VERSION_TWEAK "${${PROJECT_NAME}_VERSION_TWEAK}" PARENT_SCOPE)
     endfunction()
 
     # Finally, add the rest of the components to the build.