GHS: Append ".gpj" to target name when generating build command

-- Add test demonstrating issue
-- In the case of executable targets the target name is usually the same as used in "-o filename"
   But for static libraries the target name is usually "-o libname.a"
   "gbuild.exe target" will build whatever target matches against even the output from the compiler or linker
   But the targets in "cmake --build . --target name" should be target names in CMakeLists.txt not the actual filenames
   So change the "name" to "name.gpj" so it matches the target name in CMakeLists.txt.

Fixes #15975
This commit is contained in:
Fred Baksik 2019-01-05 15:10:24 -05:00
parent 0c9e47d7cd
commit 1a66acdef2
4 changed files with 45 additions and 1 deletions

View File

@ -413,7 +413,11 @@ void cmGlobalGhsMultiGenerator::GenerateBuildCommand(
if (targetName == "clean") {
makeCommand.push_back("-clean");
} else {
makeCommand.push_back(targetName);
if (targetName.compare(targetName.size() - 4, 4, ".gpj") == 0) {
makeCommand.push_back(targetName);
} else {
makeCommand.push_back(targetName + ".gpj");
}
}
}
}

View File

@ -2316,6 +2316,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
"${CMAKE_CMAKE_COMMAND} -P ${CMake_SOURCE_DIR}/Tests/GhsMulti/GhsMultiMultipleProjects/verify.cmake")
add_test_GhsMulti(compiler_options_none GhsMultiCompilerOptions None "-DRUN_TEST=RELEASE_FLAGS -DRUN_TEST_BUILD_TYPE=\"\"" "")
add_test_GhsMulti(compiler_options_kernel GhsMultiCompilerOptions Kernel "-DRUN_TEST=KERNEL_FLAGS -DRUN_TEST_BUILD_TYPE=DEBUG" "")
add_test_GhsMulti(try_compile_copy GhsMultiCopyFile "" "" "")
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/GhsMulti/${ghs_config_name}")
#unset ghs config variables
unset(ghs_config_name)

View File

@ -0,0 +1,35 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
project(test C)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
try_compile(RESULT
${CMAKE_CURRENT_BINARY_DIR}/build
${CMAKE_CURRENT_SOURCE_DIR}/test.c
CMAKE_FLAGS -DGHS_BSP_NAME=${GHS_BSP_NAME}
-DGHS_OS_ROOT=${GHS_OS_ROOT}
-DGHS_OS_DIR=${GHS_OS_DIR}
-DGHS_TOOLSET_ROOT=${GHS_TOOLSET_ROOT}
-DGHS_TARGET_PLATFORM=${GHS_TARGET_PLATFORM}
OUTPUT_VARIABLE OUTPUT
COPY_FILE "${CMAKE_CURRENT_BINARY_DIR}/test_library"
)
message(STATUS "Output from build:\n${OUTPUT}")
if(NOT RESULT)
message(SEND_ERROR "try_compile() failed")
endif()
if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/test_library")
if (IS_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_library")
message(SEND_ERROR "library is folder !")
else()
message(STATUS "library seems okay")
endif()
else()
message(SEND_ERROR "library is not found !")
endif()

View File

@ -0,0 +1,4 @@
int lib(int x)
{
return -x;
}