Skip to content

Commit

Permalink
Configuration: integrated new dependency build order functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
ppaulweber committed Oct 8, 2018
1 parent d2b0061 commit f7ad8e4
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 19 deletions.
68 changes: 57 additions & 11 deletions .cmake/LibPackage.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ function( package_git NAME )
)
set( GIT_NOTICE ${GIT_NOTICE} PARENT_SCOPE )

message( "-- ${NAME}: ${GIT_REVTAG} at ${GIT_COMMIT} of ${GIT_BRANCH}" )
message( "-- Found ${NAME} [${GIT_REVTAG}] @ ${GIT_BRANCH} # ${GIT_COMMIT}" )
endfunction()


Expand All @@ -400,9 +400,13 @@ include( ExternalProject )
function( package_git_submodule PREFIX VERSION MODE TMP ) # ${ARGN} search paths
string( TOUPPER ${PREFIX} PREFIX_NAME )
string( REPLACE "-" "_" PREFIX_NAME ${PREFIX_NAME} )

# message( "-- ${PREFIX} Module @ ${VERSION} ${MODE} '${TMP}' [${ARGN}] [${PREFIX_NAME}]" )


set( ${PROJECT}_DEPS
""
PARENT_SCOPE
)

set( PREFIX_LIBRARY ${PREFIX_NAME}_LIBRARY )
set( PREFIX_INCLUDE ${PREFIX_NAME}_INCLUDE_DIR )

Expand Down Expand Up @@ -445,6 +449,11 @@ function( package_git_submodule PREFIX VERSION MODE TMP ) # ${ARGN} search paths

message( "-- Found ${PREFIX} [${PREFIX_GIT_REVTAG}] @ '${${PREFIX}_REPO_DIR}'" )

set( ${PROJECT}_DEPS
${${PROJECT}_DEPS} ${PREFIX}
PARENT_SCOPE
)

if( EXISTS ${${PREFIX}_REPO_DIR}/.cmake )
set( CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
Expand Down Expand Up @@ -512,15 +521,15 @@ function( package_git_submodule PREFIX VERSION MODE TMP ) # ${ARGN} search paths
)

if( "${${PREFIX_LIBRARY}}" STREQUAL "${PREFIX_LIBRARY}-NOTFOUND" OR
"${${PREFIX_INCLUDE}}" STREQUAL "${PREFIX_INCLUDE}-NOTFOUND"
)
set( ${PREFIX_INCLUDE} ${PROJECT_SOURCE_DIR} )
set( ${PREFIX_INCLUDE} ${PROJECT_SOURCE_DIR} PARENT_SCOPE )
set( ${PREFIX_NAME}_FOUND FALSE )
set( ${PREFIX_NAME}_FOUND FALSE PARENT_SCOPE )
"${${PREFIX_INCLUDE}}" STREQUAL "${PREFIX_INCLUDE}-NOTFOUND"
)
set( ${PREFIX_INCLUDE} ${PROJECT_SOURCE_DIR} )
set( ${PREFIX_INCLUDE} ${PROJECT_SOURCE_DIR} PARENT_SCOPE )
set( ${PREFIX_NAME}_FOUND FALSE )
set( ${PREFIX_NAME}_FOUND FALSE PARENT_SCOPE )
else()
set( ${PREFIX_NAME}_FOUND TRUE )
set( ${PREFIX_NAME}_FOUND TRUE PARENT_SCOPE )
set( ${PREFIX_NAME}_FOUND TRUE )
set( ${PREFIX_NAME}_FOUND TRUE PARENT_SCOPE )
endif()

set( CMAKE_MODULE_PATH
Expand Down Expand Up @@ -551,3 +560,40 @@ function( package_git_submodule PREFIX VERSION MODE TMP ) # ${ARGN} search paths
PARENT_SCOPE
)
endfunction()

#
# package_git_deps
#

function( package_git_deps ) # ${ARGN} for build order
add_custom_target( ${PROJECT}-deps )

foreach( DEPENDENCY ${${PROJECT}_DEPS} )
add_dependencies( ${PROJECT}-deps ${DEPENDENCY} )
endforeach()

foreach( DEPENDENCY ${ARGN} )

string( REPLACE ">" ";" DEPS ${DEPENDENCY} )
list( LENGTH DEPS DEPS_LEN )

if( ${DEPS_LEN} EQUAL 2 )
list( GET DEPS 0 FROM )
list( GET DEPS 1 TO )
add_dependencies( ${TO} ${FROM} )
continue()
endif()

string( REPLACE "<" ";" DEPS ${DEPENDENCY} )
list( LENGTH DEPS DEPS_LEN )

if( ${DEPS_LEN} EQUAL 2 )
list( GET DEPS 1 FROM )
list( GET DEPS 0 TO )
add_dependencies( ${TO} ${FROM} )
continue()
endif()

message( FATAL_ERROR "unsupported dependency '${DEPENDENCY}' found" )
endforeach()
endfunction()
9 changes: 1 addition & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ package_git_submodule( libstdhl master REQUIRED obj ../stdhl lib/stdhl )
package_git_submodule( libpass master REQUIRED obj ../pass lib/pass )
package_git_submodule( libgtest master REQUIRED build ../gtest lib/gtest )
package_git_submodule( libhayai master REQUIRED build ../hayai lib/hayai )
package_git_deps( libstdhl>libpass )

find_package( Threads REQUIRED )

Expand All @@ -69,14 +70,6 @@ add_subdirectory( etc
EXCLUDE_FROM_ALL
)

add_custom_target( ${PROJECT}-deps
DEPENDS
libgtest
libhayai
libstdhl
libpass
)


#
# library
Expand Down

0 comments on commit f7ad8e4

Please sign in to comment.