@@ -83,34 +83,65 @@ function(CheckGitVersion)
8383
8484endfunction ()
8585
86- function (CheckGitSetup)
87-
88- add_custom_target (AlwaysCheckGit COMMAND ${CMAKE_COMMAND}
89- -DRUN_CHECK_GIT_VERSION=1
90- -Dpre_configure_dir=${pre_configure_dir}
91- -Dpost_configure_file=${post_configure_dir}
92- -DGIT_HASH_CACHE=${GIT_HASH_CACHE}
93- -P ${CURRENT_LIST_DIR} /CheckGit.cmake
94- BYPRODUCTS ${post_configure_file}
86+ function (CheckInGitRepo ret)
87+ execute_process (
88+ COMMAND git rev-parse
89+ WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
90+ RESULT_VARIABLE GIT_EXISTS_RESULT
9591 )
92+ if (GIT_EXISTS_RESULT EQUAL 0)
93+ set (${ret} true PARENT_SCOPE)
94+ else ()
95+ set (${ret} false PARENT_SCOPE)
96+ endif ()
97+ endfunction ()
9698
97- add_library (redev_git_version ${post_configure_file} )
98- target_include_directories (redev_git_version PUBLIC
99- "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR} /generated/>"
100- "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} />" )
101- add_dependencies (redev_git_version AlwaysCheckGit)
102-
103- set (tgt_name "redev_git_version" )
104- install (TARGETS ${tgt_name} EXPORT ${tgt_name} -target
105- RUNTIME DESTINATION bin
106- ARCHIVE DESTINATION lib
107- LIBRARY DESTINATION lib)
108- install (EXPORT ${tgt_name} -target NAMESPACE ${PROJECT_NAME} ::
109- DESTINATION lib/cmake/${PROJECT_NAME} )
110- set (${PROJECT_NAME} _EXPORTED_TARGETS
111- ${${PROJECT_NAME} _EXPORTED_TARGETS} ${tgt_name} PARENT_SCOPE)
112-
113- CheckGitVersion()
99+ function (CheckGitSetup)
100+ CheckInGitRepo(IN_GIT_REPO)
101+ if (NOT IN_GIT_REPO)
102+ message (STATUS "Not in Git Repo, version set to ${CMAKE_PROJECT_VERSION} " )
103+ set (GIT_HASH ${CMAKE_PROJECT_VERSION} )
104+ else ()
105+ add_custom_target (AlwaysCheckGit COMMAND ${CMAKE_COMMAND}
106+ -DRUN_CHECK_GIT_VERSION=1
107+ -Dpre_configure_dir=${pre_configure_dir}
108+ -Dpost_configure_file=${post_configure_dir}
109+ -DGIT_HASH_CACHE=${GIT_HASH_CACHE}
110+ -P ${CURRENT_LIST_DIR} /CheckGit.cmake
111+ BYPRODUCTS ${post_configure_file}
112+ )
113+ endif ()
114+
115+ add_library (redev_git_version ${post_configure_file} )
116+ target_include_directories (redev_git_version PUBLIC
117+ "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR} /generated/>"
118+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} />" )
119+
120+ if (IN_GIT_REPO)
121+ add_dependencies (redev_git_version AlwaysCheckGit)
122+ else ()
123+ if (NOT EXISTS ${post_configure_dir} )
124+ file (MAKE_DIRECTORY ${post_configure_dir} )
125+ endif ()
126+
127+ if (NOT EXISTS ${post_configure_dir} /redev_git_version.h)
128+ file (COPY ${pre_configure_dir} /redev_git_version.h DESTINATION ${post_configure_dir} )
129+ endif ()
130+ configure_file (${pre_configure_file} ${post_configure_file} @ONLY)
131+ endif ()
132+
133+ set (tgt_name "redev_git_version" )
134+ install (TARGETS ${tgt_name} EXPORT ${tgt_name} -target
135+ RUNTIME DESTINATION bin
136+ ARCHIVE DESTINATION lib
137+ LIBRARY DESTINATION lib)
138+ install (EXPORT ${tgt_name} -target NAMESPACE ${PROJECT_NAME} ::
139+ DESTINATION lib/cmake/${PROJECT_NAME} )
140+ set (${PROJECT_NAME} _EXPORTED_TARGETS
141+ ${${PROJECT_NAME} _EXPORTED_TARGETS} ${tgt_name} PARENT_SCOPE)
142+ if (IN_GIT_REPO)
143+ CheckGitVersion()
144+ endif ()
114145endfunction ()
115146
116147# This is used to run this function from an external cmake process.
0 commit comments