microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
23.4k stars 6.47k forks source link

[tbb] Doesn't fail to build without make installed #7727

Closed cbezault closed 4 years ago

cbezault commented 5 years ago

Bug TBB "succeeds" to build without make installed.

Environment

To Reproduce Steps to reproduce the behavior:

  1. Get a machine without make installed
  2. ./vcpkg install tbb
  3. ./vcpkg install openvdb[core]

Openvdb will fail to build because tbb didn't actually build itself.

Expected behavior TBB should be marked as BUILD_FAILED.

JackBoosY commented 5 years ago

@cbezault The tool make should be installed by default in LINUX. How can we fix this issue?

cbezault commented 5 years ago

Make wasn't installed by default on the Ubuntu vm I was working on. Anyway it's not really that having make or not is the issue here. It's that we didn't correctly identify that the port wasn't correctly built.

JackBoosY commented 5 years ago

I cannot repro this issue on my linux vm. My gcc version is 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11).

work@work:~/work/vcpkg$ ll packages/tbb_x64-linux/lib/ total 5944 drwxrwxr-x 2 vzay vzay 4096 Aug 21 08:53 ./ drwxrwxr-x 6 vzay vzay 4096 Aug 21 08:53 ../ -rw-r--r-- 1 vzay vzay 4752884 Aug 21 08:53 libtbb.a -rw-r--r-- 1 vzay vzay 1320574 Aug 21 08:53 libtbbmalloc.a

cbezault commented 5 years ago

Do you have make installed?

JackBoosY commented 5 years ago

I found this: In _SOURCEPATH/cmake/TBBBuild.cmake line 150-164:

    set(make_tool_name make)
    if (CMAKE_SYSTEM_NAME MATCHES "Windows")
        set(make_tool_name gmake)
    elseif (CMAKE_SYSTEM_NAME MATCHES "Android")
        set(make_tool_name ndk-build)
    endif()

    find_program(TBB_MAKE_TOOL ${make_tool_name} DOC "Make-tool to build Intel TBB." REQUIRED)
    mark_as_advanced(TBB_MAKE_TOOL)

    if (NOT TBB_MAKE_TOOL)
        message(STATUS "Intel TBB can not be built: required make-tool (${make_tool_name}) was not found")
        set(${tbb_build_CONFIG_DIR} ${tbb_build_CONFIG_DIR}-NOTFOUND PARENT_SCOPE)
        return()
    endif()

If no build tool is found, the build process will exit without warning or error. So I think we should add keyword REQUIRED to find_program to solve this issue.

JackBoosY commented 4 years ago

Close this issue via #9188 merged.