Skip to content

Commit

Permalink
Merge pull request #597 from schuhschuh/fix-config-generator-expressi…
Browse files Browse the repository at this point in the history
…on-in-script-paths-and-tests

fix: "$<CONFIG>" generator expression in script paths and tests
  • Loading branch information
schuhschuh committed May 4, 2016
2 parents 0d2d0aa + c1a6904 commit cd2ea03
Show file tree
Hide file tree
Showing 10 changed files with 40 additions and 21 deletions.
9 changes: 6 additions & 3 deletions src/cmake/modules/CommonTools.cmake
Expand Up @@ -3128,7 +3128,7 @@ function (basis_configure_script INPUT OUTPUT)
message (FATAL_ERROR "Build tree script DIRECTORY must be an absolute path")
endif ()
set (__DIR__ "${ARGN_DIRECTORY}")
string (REPLACE "$<CONFIGURATION>" "${ARGN_CONFIGURATION}" __DIR__ "${__DIR__}")
string (REPLACE "$<${BASIS_GE_CONFIG}>" "${ARGN_CONFIGURATION}" __DIR__ "${__DIR__}")
else ()
get_filename_component (__DIR__ "${_OUTPUT_FILE}" PATH)
endif ()
Expand All @@ -3137,6 +3137,9 @@ function (basis_configure_script INPUT OUTPUT)
set (__FILE__ "${__DIR__}/${__NAME__}")
set (__CONFIG__ "${ARGN_CONFIGURATION}")
# --------------------------------------------------------------------------
# replace $<CONFIG> (deprecated $<CONFIGURATION>) in paths of link dependencies
string (REPLACE "$<${BASIS_GE_CONFIG}>" "${ARGN_CONFIGURATION}" ARGN_LINK_DEPENDS "${ARGN_LINK_DEPENDS}")
# --------------------------------------------------------------------------
# include script configuration files
foreach (_F IN LISTS ARGN_CONFIG_FILE)
get_filename_component (_F "${_F}" ABSOLUTE)
Expand Down Expand Up @@ -3464,7 +3467,7 @@ function (basis_get_target_location VAR TARGET_NAME PART)
else ()
get_target_property (DIRECTORY ${TARGET_UID} OUTPUT_DIRECTORY)
if (DIRECTORY AND CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
set (DIRECTORY "${DIRECTORY}/$<CONFIGURATION>")
set (DIRECTORY "${DIRECTORY}/$<${BASIS_GE_CONFIG}>")
endif ()
endif ()
get_target_property (FNAME ${TARGET_UID} OUTPUT_NAME)
Expand All @@ -3475,7 +3478,7 @@ function (basis_get_target_location VAR TARGET_NAME PART)
get_target_property (COMPILE ${TARGET_UID} COMPILE)
get_target_property (DIRECTORY ${TARGET_UID} OUTPUT_DIRECTORY)
if (DIRECTORY AND (COMPILE OR CMAKE_GENERATOR MATCHES "Visual Studio|Xcode"))
set (DIRECTORY "${DIRECTORY}/$<CONFIGURATION>")
set (DIRECTORY "${DIRECTORY}/$<${BASIS_GE_CONFIG}>")
endif ()
endif ()
get_target_property (FNAME ${TARGET_UID} OUTPUT_NAME)
Expand Down
11 changes: 11 additions & 0 deletions src/cmake/modules/DocTools.cmake
Expand Up @@ -608,6 +608,7 @@ function (basis_add_doxygen_doc TARGET_NAME)
list (APPEND DOXYGEN_INPUT "${BUILD_DIR}.dir/install")
foreach (S IN LISTS SOURCES)
list (APPEND DOXYGEN_EXCLUDE_PATTERNS "${S}")
list (APPEND DOXYGEN_EXCLUDE_PATTERNS "${BUILD_DIR}.dir/build")
endforeach ()
endif ()
endif ()
Expand Down Expand Up @@ -854,6 +855,16 @@ function (basis_add_doxygen_doc TARGET_NAME)
# configure Doxygen configuration file
set (DOXYFILE "${DOXYGEN_OUTPUT_DIRECTORY}/Doxyfile.${TARGET_NAME_L}")
configure_file ("${DOXYGEN_DOXYFILE}" "${DOXYFILE}" @ONLY)
if (CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
file (READ "${DOXYFILE}" DOXYFILE_CONTENT)
foreach (CONFIG IN LISTS CMAKE_CONFIGURATION_TYPES)
string (REPLACE "$<${BASIS_GE_CONFIG}>" "${CONFIG}" DOXYFILE_CONTENT_CONFIG "${DOXYFILE_CONTENT}")
file (WRITE "${DOXYFILE}.${CONFIG}" "${DOXYFILE_CONTENT_CONFIG}")
endforeach ()
unset (DOXYFILE_CONTENT)
unset (DOXYFILE_CONTENT_CONFIG)
set (DOXYFILE "${DOXYFILE}.$<${BASIS_GE_CONFIG}>")
endif ()
# add build target
set (OPTALL)
if (BUILD_DOCUMENTATION AND BASIS_ALL_DOC)
Expand Down
6 changes: 3 additions & 3 deletions src/cmake/modules/TargetTools.cmake
Expand Up @@ -2776,7 +2776,7 @@ function (basis_build_script TARGET_UID)
endif ()
if (CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
set (OUTPUT_FILE "${BUILD_DIR}/build/${OUTPUT_NAME}")
set (OUTPUT_DIR "${OUTPUT_DIRECTORY}/$<CONFIGURATION>")
set (OUTPUT_DIR "${OUTPUT_DIRECTORY}/$<${BASIS_GE_CONFIG}>")
elseif (MODULE AND COMPILE)
set (OUTPUT_FILE "${BUILD_DIR}/build/${OUTPUT_NAME}")
set (OUTPUT_DIR "${OUTPUT_DIRECTORY}")
Expand Down Expand Up @@ -2941,7 +2941,7 @@ function (basis_build_script TARGET_UID)
endif ()
add_custom_command (
OUTPUT ${OUTPUT_FILES}
COMMAND "${CMAKE_COMMAND}" -D "CONFIGURATION:STRING=$<CONFIGURATION>" -P "${BUILD_SCRIPT}"
COMMAND "${CMAKE_COMMAND}" -D "CONFIGURATION:STRING=$<${BASIS_GE_CONFIG}>" -P "${BUILD_SCRIPT}"
MAIN_DEPENDENCY "${SOURCE_FILE}"
DEPENDS "${BUILD_SCRIPT}" "${BASIS_MODULE_PATH}/CommonTools.cmake" # basis_configure_script() definition
COMMENT "${COMMENT}"
Expand Down Expand Up @@ -3227,7 +3227,7 @@ function (basis_build_script_library TARGET_UID)
set (COMMENT "Building ${LANGUAGE} module ${REL}...")
add_custom_command (
OUTPUT ${_OUTPUT_FILES}
COMMAND "${CMAKE_COMMAND}" -D "CONFIGURATION=$<CONFIGURATION>" -P "${BUILD_SCRIPT}"
COMMAND "${CMAKE_COMMAND}" -D "CONFIGURATION=$<${BASIS_GE_CONFIG}>" -P "${BUILD_SCRIPT}"
MAIN_DEPENDENCY "${SOURCE_FILE}"
DEPENDS "${BUILD_SCRIPT}" "${BASIS_MODULE_PATH}/CommonTools.cmake" # basis_configure_script() definition
COMMENT "${COMMENT}"
Expand Down
2 changes: 1 addition & 1 deletion test/CMakeLists.txt
Expand Up @@ -17,7 +17,7 @@
# ============================================================================

## @brief Directory of BASIS used by tests to build test projects.
set (TESTING_BASIS_DIR "${PROJECT_BINARY_DIR}")
set (TESTING_BASIS_DIR "${BINARY_LIBCONF_DIR}")

## @brief Build type used to build test projects.
set (TESTING_BUILD_TYPE "${CMAKE_BUILD_TYPE}")
Expand Down
21 changes: 15 additions & 6 deletions test/build/basis.sh
Expand Up @@ -27,6 +27,12 @@ else
with_itk=on
fi

cmake_generator_opt=
if [[ $TRAVIS_OS_NAME == osx ]]; then
# Use Xcode generator to test handling of IDE $<CONFIG> subdirectories
cmake_generator_opt="-GXcode"
fi

cmake_python_opt=
if [[ $TRAVIS_OS_NAME == linux ]]; then
if [[ $python == 3 ]]; then
Expand Down Expand Up @@ -54,7 +60,8 @@ else
enable_doc=no
fi
mkdir build && cd build
cmake -DBUILD_TESTING=$tests \
cmake $cmake_generator_opt \
-DBUILD_TESTING=$tests \
-DBUILD_DOCUMENTATION=$enable_doc \
-DBUILD_SOFTWAREMANUAL=$manual \
-DBUILD_APPLICATIONS=$tools \
Expand All @@ -74,14 +81,16 @@ cmake -DBUILD_TESTING=$tests \
$cmake_python_opt \
..

# Build and install
make -j8
# Build
cmake --build . --config Release
if [[ $manual == yes ]]; then
make softwaremanual # manual + site
cmake --build . --config Release --target softwaremanual # manual + site
elif [[ $doc == yes ]]; then
make apidoc
cmake --build . --config Release --target apidoc # Doxygen
fi
make -j8 install

# Run tests
[[ $tests == no ]] || ctest -C Release -V

# Install
cmake --build . --config Release --target install
2 changes: 1 addition & 1 deletion test/cmake/CMakeLists.txt
Expand Up @@ -11,7 +11,7 @@
# common CMake test command arguments
set (
BASIS_COMMON_CMAKE_TEST_ARGS
"-DBASIS_DIR=${BASIS_BINARY_DIR}"
"-DBASIS_DIR=${TESTING_BASIS_DIR}"
"-DMODULE_PATH=${BASIS_MODULE_PATH}"
"-DINPUT_DIR=${PROJECT_TESTING_DIR}/ressources"
"-DOUTPUT_DIR=${TESTING_OUTPUT_DIR}"
Expand Down
3 changes: 0 additions & 3 deletions test/cmake/test_matlabtools.py.in
Expand Up @@ -10,9 +10,6 @@
# of this test project.
##############################################################################

import sys
sys.path.insert(0, '@BINARY_PYTHON_LIBRARY_DIR@')
sys.path.insert(0, '@TESTING_PYTHON_LIBRARY_DIR@')
from testaux import *

# ============================================================================
Expand Down
Expand Up @@ -68,7 +68,7 @@ like (Basis::exedir (),
"directory of this executable");
# directory of executable built by some target
like (Basis::exedir ('basis.basisproject'),
qr/^([A-Z]:)?[\/\\].*[\/\\]bin([\/\\]basis)?$/,
qr/^([A-Z]:)?[\/\\].*[\/\\]bin([\/\\](Release|Debug|RelWithDebInfo|MinSizeRel))?([\/\\]basis)?$/,
"directory of basis.basisproject executable");

# ----------------------------------------------------------------------------
Expand Down
Expand Up @@ -61,13 +61,12 @@ class TestExecutableTargetInfo(unittest.TestCase):
# ------------------------------------------------------------------------
def test_exedir(self):
# directory of this executable
print("Executable directory: " + basis.exedir())
self.assertTrue (re.search (
r"[/\\]Testing[/\\]Temporary[/\\]test_utilities[/\\]build[/\\]Testing[/\\]bin",
basis.exedir ()))
# directory of executable built by some target
self.assertTrue (re.match (
r"([a-zA-Z]:)?[/\\].*[/\\]bin([/\\]basis)?",
r"([a-zA-Z]:)?[/\\].*[/\\]bin([/\\](Release|Debug|RelWithDebInfo|MinSizeRel))?([/\\]basis)?$",
basis.exedir ('basis.basisproject')))

# ------------------------------------------------------------------------
Expand Down
Expand Up @@ -98,7 +98,7 @@ like "${dir}" '/Testing/Temporary/test_utilities/build/Testing/bin' 'directory o
# directory of executable built by other target
exedir dir 'basis.basisproject'
is $? 0 'return value is 0'
like "${dir}" '^/.*/bin(/basis)?$' 'directory of other executable'
like "${dir}" '^/.*/bin(/(Release|Debug|RelWithDebInfo|MinSizeRel))?(/basis)?$' 'directory of other executable'

# ----------------------------------------------------------------------------
# test exepath()
Expand Down

0 comments on commit cd2ea03

Please sign in to comment.