Skip to content

Commit

Permalink
build system: use cmake folder props to group targets for vstudio
Browse files Browse the repository at this point in the history
  • Loading branch information
cyrush committed Dec 26, 2019
1 parent ca178a6 commit 5755c0f
Show file tree
Hide file tree
Showing 28 changed files with 211 additions and 77 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

## Unreleased

### Added

#### General
- Use FOLDER target property to group targets for Visual Studio

### Changed

#### General
- Changed Python linking strategy to defer linking for our compiler modules

## [0.5.0] - Released 2019-10-25

### Added
Expand Down
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ endif()

project(conduit VERSION "0.5.0")

################################
################################
# Build Options
################################
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
Expand Down
7 changes: 6 additions & 1 deletion src/cmake/CMakeBasics.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ endif()
###############################################################################
macro(add_compiled_library)
set(options OBJECT)
set(singleValuedArgs NAME EXPORT HEADERS_DEST_DIR LIB_DEST_DIR )
set(singleValuedArgs NAME EXPORT HEADERS_DEST_DIR LIB_DEST_DIR FOLDER)
set(multiValuedArgs HEADERS SOURCES DEPENDS_ON)

## parse the arguments to the macro
Expand Down Expand Up @@ -246,6 +246,11 @@ macro(add_compiled_library)
endif()
endif()

# set folder if passed
if(DEFINED args_FOLDER)
blt_set_target_folder(TARGET ${args_NAME} FOLDER ${args_FOLDER})
endif()

endmacro()


Expand Down
20 changes: 20 additions & 0 deletions src/cmake/SetupBLT.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,27 @@ if(NOT BLT_CXX_STD)
set(BLT_CXX_STD "c++11" CACHE STRING "")
endif()

################################################################
# if not set, prefer folder grouped targets
################################################################
if(NOT ENABLE_FOLDERS)
set(ENABLE_FOLDERS TRUE CACHE STRING "")
endif()

################################################################
# init blt using BLT_SOURCE_DIR
################################################################
include(${BLT_SOURCE_DIR}/SetupBLT.cmake)


################################################################
# apply folders to a few ungrouped blt targets
################################################################

# group main blt docs targets into docs folder
blt_set_target_folder( TARGET docs FOLDER docs)
blt_set_target_folder( TARGET sphinx_docs FOLDER docs)

# group top level blt health checks into blt folder
blt_set_target_folder( TARGET check FOLDER blt)
blt_set_target_folder( TARGET style FOLDER blt)
77 changes: 53 additions & 24 deletions src/cmake/SetupTests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -52,26 +52,31 @@ set(UNIT_TEST_BASE_LIBS gtest_main gtest)
function(add_cpp_test)

set(options)
set(singleValueArgs TEST)
set(singleValueArgs TEST FOLDER)
set(multiValueArgs DEPENDS_ON SOURCES)

# parse our arguments
cmake_parse_arguments(arg
cmake_parse_arguments(args
"${options}"
"${singleValueArgs}"
"${multiValueArgs}" ${ARGN} )

message(STATUS " [*] Adding Unit Test: ${arg_TEST} ")
message(STATUS " [*] Adding Unit Test: ${args_TEST} ")

# note: OUTPUT_DIR is ignored on windows
blt_add_executable( NAME ${arg_TEST}
SOURCES ${arg_TEST}.cpp ${arg_SOURCES}
blt_add_executable( NAME ${args_TEST}
SOURCES ${args_TEST}.cpp ${args_SOURCES}
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS_ON "${arg_DEPENDS_ON}" gtest)
DEPENDS_ON "${args_DEPENDS_ON}" gtest)


blt_add_test( NAME ${arg_TEST}
COMMAND ${arg_TEST})
blt_add_test( NAME ${args_TEST}
COMMAND ${args_TEST})

# set folder if passed
if( DEFINED args_FOLDER )
blt_set_target_folder(TARGET ${args_TEST} FOLDER ${args_FOLDER})
endif()

endfunction()

Expand All @@ -84,26 +89,31 @@ endfunction()
function(add_cpp_mpi_test)

set(options)
set(singleValueArgs TEST NUM_MPI_TASKS)
set(singleValueArgs TEST NUM_MPI_TASKS FOLDER)
set(multiValueArgs DEPENDS_ON SOURCES)

# parse our arguments
cmake_parse_arguments(arg
cmake_parse_arguments(args
"${options}"
"${singleValueArgs}"
"${multiValueArgs}" ${ARGN} )

message(STATUS " [*] Adding Unit Test: ${arg_TEST}")
message(STATUS " [*] Adding Unit Test: ${args_TEST}")

# note: OUTPUT_DIR is ignored on windows
blt_add_executable( NAME ${arg_TEST}
SOURCES ${arg_TEST}.cpp ${arg_SOURCES}
blt_add_executable( NAME ${args_TEST}
SOURCES ${args_TEST}.cpp ${args_SOURCES}
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS_ON "${arg_DEPENDS_ON}" gtest mpi)
DEPENDS_ON "${args_DEPENDS_ON}" gtest mpi)

blt_add_test( NAME ${arg_TEST}
COMMAND ${arg_TEST}
NUM_MPI_TASKS ${arg_NUM_MPI_TASKS})
blt_add_test( NAME ${args_TEST}
COMMAND ${args_TEST}
NUM_MPI_TASKS ${args_NUM_MPI_TASKS})

# set folder if passed
if( DEFINED args_FOLDER )
blt_set_target_folder(TARGET ${args_TEST} FOLDER ${args_FOLDER})
endif()

endfunction()

Expand All @@ -113,10 +123,20 @@ endfunction()
##
## add_python_test( TEST test)
##------------------------------------------------------------------------------
function(add_python_test TEST)
message(STATUS " [*] Adding Python-based Unit Test: ${TEST}")
add_test(NAME ${TEST} COMMAND
${PYTHON_EXECUTABLE} -B -m unittest -v ${TEST})
function(add_python_test )
set(options)
set(singleValueArgs TEST )
set(multiValueArgs )

# parse our arguments
cmake_parse_arguments(args
"${options}"
"${singleValueArgs}"
"${multiValueArgs}" ${ARGN} )

message(STATUS " [*] Adding Python-based Unit Test: ${args_TEST}")
add_test(NAME ${args_TEST} COMMAND
${PYTHON_EXECUTABLE} -B -m unittest -v ${args_TEST})

# use proper env var path sep for current platform
if(WIN32)
Expand All @@ -141,6 +161,10 @@ function(add_python_test TEST)
ENVIRONMENT "PATH=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/${ENV_PATH_SEP}$ENV{PATH}")
endif()

# set folder if passed
if( DEFINED args_FOLDER )
blt_set_target_folder(TARGET ${args_TEST} FOLDER ${args_FOLDER})
endif()

endfunction(add_python_test)

Expand All @@ -152,8 +176,8 @@ endfunction(add_python_test)
##------------------------------------------------------------------------------
macro(add_fortran_test)
set(options)
set(singleValueArgs TEST)
set(multiValueArgs DEPENDS_ON SOURCES)
set(singleValueArgs TEST FOLDER )
set(multiValueArgs DEPENDS_ON SOURCES )

# parse our arguments
cmake_parse_arguments(arg
Expand All @@ -173,4 +197,9 @@ macro(add_fortran_test)
blt_add_test( NAME ${arg_TEST}
COMMAND ${arg_TEST})

# set folder if passed
if( DEFINED args_FOLDER )
blt_set_target_folder(TARGET ${args_TEST} FOLDER ${args_FOLDER})
endif()

endmacro(add_fortran_test)
1 change: 1 addition & 0 deletions src/docs/doxygen/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,6 @@
# add a target to generate API documentation with Doxygen

blt_add_doxygen_target( conduit_doxygen )
blt_set_target_folder( TARGET conduit_doxygen FOLDER docs)


4 changes: 2 additions & 2 deletions src/docs/sphinx/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@
################################

# add a target to generate documentation with Sphinx

blt_add_sphinx_target( conduit_sphinx )
blt_set_target_folder( TARGET conduit_sphinx FOLDER docs)

if(DOXYGEN_FOUND)
add_dependencies(conduit_sphinx conduit_doxygen)
add_dependencies(conduit_sphinx conduit_doxygen)
endif()


3 changes: 2 additions & 1 deletion src/examples/staging/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ if(MPI_FOUND AND ENABLE_EXAMPLES)
NAME conduit_staging
SOURCES conduit_staging.cpp
DEPENDS_ON conduit conduit_relay_mpi_io
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
FOLDER utils)

# Copy some helper files into the build directory.
file(COPY ${conduit_staging_support_files}
Expand Down
6 changes: 4 additions & 2 deletions src/libs/blueprint/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ add_compiled_library(NAME conduit_blueprint
HEADERS ${blueprint_headers} ${blueprint_c_headers}
SOURCES ${blueprint_sources} ${blueprint_c_sources} ${blueprint_fortran_sources}
DEPENDS_ON conduit
HEADERS_DEST_DIR include/conduit)
HEADERS_DEST_DIR include/conduit
FOLDER libs)


if(FORTRAN_FOUND)
Expand Down Expand Up @@ -152,7 +153,8 @@ if(ENABLE_UTILS)
NAME conduit_blueprint_verify
SOURCES conduit_blueprint_verify_exe.cpp
DEPENDS_ON conduit conduit_relay conduit_blueprint
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
FOLDER utils)

# add install target
install(TARGETS conduit_blueprint_verify
Expand Down
3 changes: 2 additions & 1 deletion src/libs/conduit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ add_compiled_library(NAME conduit
SOURCES ${conduit_sources} ${conduit_c_sources} ${conduit_fortran_sources}
$<TARGET_OBJECTS:conduit_b64>
$<TARGET_OBJECTS:conduit_libyaml>
HEADERS_DEST_DIR include/conduit)
HEADERS_DEST_DIR include/conduit
FOLDER libs)


#################################
Expand Down
18 changes: 12 additions & 6 deletions src/libs/relay/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,8 @@ add_compiled_library(NAME conduit_relay
${conduit_relay_fortran_sources}
$<TARGET_OBJECTS:conduit_civetweb>
DEPENDS_ON ${conduit_relay_deps}
HEADERS_DEST_DIR include/conduit)
HEADERS_DEST_DIR include/conduit
FOLDER libs)

if(ENABLE_UTILS)
###################################
Expand All @@ -230,7 +231,8 @@ if(ENABLE_UTILS)
NAME conduit_relay_node_viewer
SOURCES conduit_relay_web_node_viewer_exe.cpp
DEPENDS_ON conduit_relay
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
FOLDER utils)

# add install target for conduit_relay_node_viewer
install(TARGETS conduit_relay_node_viewer
Expand All @@ -243,7 +245,8 @@ if(ENABLE_UTILS)
NAME conduit_relay_io_ls
SOURCES conduit_relay_io_ls_exe.cpp
DEPENDS_ON conduit_relay
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
FOLDER utils)


# add install target
Expand All @@ -258,7 +261,8 @@ if(ENABLE_UTILS)
NAME conduit_relay_io_convert
SOURCES conduit_relay_io_convert_exe.cpp
DEPENDS_ON conduit_relay
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
FOLDER utils)

# add install target for conduit_relay_io_convert
install(TARGETS conduit_relay_io_convert
Expand Down Expand Up @@ -332,7 +336,8 @@ add_compiled_library(NAME conduit_relay_mpi
HEADERS ${conduit_relay_mpi_headers}
SOURCES ${conduit_relay_mpi_sources}
DEPENDS_ON ${conduit_relay_mpi_deps}
HEADERS_DEST_DIR include/conduit)
HEADERS_DEST_DIR include/conduit
FOLDER libs)


################################################################
Expand Down Expand Up @@ -395,7 +400,8 @@ add_compiled_library(NAME conduit_relay_mpi_io
HEADERS ${conduit_relay_mpi_io_headers} ${conduit_relay_mpi_io_c_headers}
SOURCES ${conduit_relay_mpi_io_sources} ${conduit_relay_mpi_io_c_sources}
DEPENDS_ON ${conduit_relay_mpi_io_deps}
HEADERS_DEST_DIR include/conduit)
HEADERS_DEST_DIR include/conduit
FOLDER libs)

blt_add_target_compile_flags(TO conduit_relay_mpi_io FLAGS "-DCONDUIT_RELAY_IO_MPI_ENABLED")

Expand Down
8 changes: 6 additions & 2 deletions src/tests/blueprint/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,9 @@ set(BLUEPRINT_TESTS t_blueprint_smoke

message(STATUS "Adding blueprint lib unit tests")
foreach(TEST ${BLUEPRINT_TESTS})
add_cpp_test(TEST ${TEST} DEPENDS_ON conduit conduit_blueprint conduit_relay)
add_cpp_test(TEST ${TEST}
DEPENDS_ON conduit conduit_blueprint conduit_relay
FOLDER tests/blueprint)
endforeach()

################################
Expand All @@ -89,5 +91,7 @@ else()
endif()

message(STATUS "Adding blueprint lib Zfp unit tests")
add_cpp_test(TEST t_blueprint_zfp DEPENDS_ON conduit conduit_blueprint)
add_cpp_test(TEST t_blueprint_zfp
DEPENDS_ON conduit conduit_blueprint
FOLDER tests/blueprint)

4 changes: 3 additions & 1 deletion src/tests/blueprint/c/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ set(BASIC_C_TESTS
################################
message(STATUS "Adding conduit blueprint lib c interface unit tests")
foreach(TEST ${BASIC_C_TESTS})
add_cpp_test(TEST ${TEST} DEPENDS_ON conduit conduit_blueprint)
add_cpp_test(TEST ${TEST}
DEPENDS_ON conduit conduit_blueprint
FOLDER tests/blueprint/c)
endforeach()


5 changes: 3 additions & 2 deletions src/tests/blueprint/fortran/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,9 @@ set(FORTRAN_TESTS
################################
message(STATUS "Adding conduit blueprint lib fortran interface unit tests")
foreach(TEST ${FORTRAN_TESTS})
add_fortran_test(TEST ${TEST} DEPENDS_ON conduit
conduit_blueprint)
add_fortran_test(TEST ${TEST}
DEPENDS_ON conduit conduit_blueprint
FOLDER tests/blueprint/fortran)
endforeach()


Expand Down
2 changes: 1 addition & 1 deletion src/tests/blueprint/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@ set(PYTHON_MODULE_TESTS t_python_blueprint_smoke


foreach(TEST ${PYTHON_MODULE_TESTS})
add_python_test(${TEST})
add_python_test(TEST ${TEST} FOLDER tests/blueprint/python)
endforeach()

4 changes: 3 additions & 1 deletion src/tests/conduit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ set(BASIC_TESTS t_conduit_smoke
################################
message(STATUS "Adding conduit lib unit tests")
foreach(TEST ${BASIC_TESTS})
add_cpp_test(TEST ${TEST} DEPENDS_ON conduit)
add_cpp_test(TEST ${TEST}
DEPENDS_ON conduit
FOLDER tests/conduit)
endforeach()

################################
Expand Down
Loading

0 comments on commit 5755c0f

Please sign in to comment.