Revision: 69974 http://sourceforge.net/p/brlcad/code/69974 Author: starseeker Date: 2017-07-20 01:55:33 +0000 (Thu, 20 Jul 2017) Log Message: ----------- holy smoke, what a pain. this (finally) seems to both report the correct info and results in a successful libcursor build.
Modified Paths: -------------- brlcad/trunk/misc/CMake/FindTERMLIB.cmake Modified: brlcad/trunk/misc/CMake/FindTERMLIB.cmake =================================================================== --- brlcad/trunk/misc/CMake/FindTERMLIB.cmake 2017-07-19 21:29:09 UTC (rev 69973) +++ brlcad/trunk/misc/CMake/FindTERMLIB.cmake 2017-07-20 01:55:33 UTC (rev 69974) @@ -79,7 +79,17 @@ } ") -macro(TERMLIB_CHECK_LIBRARY lname func headers) +include(CheckCCompilerFlag) +check_c_compiler_flag(-Wall WALL_FLAG) +if(WALL_FLAG) + set(WALL_DEF "-Wall") +endif(WALL_FLAG) +check_c_compiler_flag(-Werror WERROR_FLAG) +if(WERROR_FLAG) + set(WERROR_DEF "-Werror") +endif(WERROR_FLAG) + +function(TERMLIB_CHECK_LIBRARY lname func headers) if(NOT TERMLIB_LIBRARY OR "${TERMLIB_LIBRARY}" MATCHES "NOTFOUND") CHECK_LIBRARY_EXISTS(${lname} ${func} "" HAVE_TERMLIB_${lname}) if(HAVE_TERMLIB_${lname}) @@ -86,7 +96,6 @@ # Got lib, now sort through headers foreach(hdr ${headers}) if(NOT TERMLIB_INCLUDE_DIR OR "${TERMLIB_INCLUDE_DIR}" MATCHES "NOTFOUND") - message("${lname}: ${hdr}") string(TOUPPER "${hdr}" HDR) string(REGEX REPLACE "[^A-Z0-9]" "_" HDR "${HDR}") CHECK_INCLUDE_FILES(${hdr} HAVE_${HDR}) @@ -96,23 +105,32 @@ set(TERMLIB_LIBRARY "${lname}") file(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/termlib.c" "${termlib_src}") if(LIBTERM_RESULT) + set(CMAKE_C_FLAGS "") # We need -Wall and -Werror, without -w try_run(LIBTERM_RESULT LIBTERM_COMPILE "${CMAKE_BINARY_DIR}/CMakeTmp" "${CMAKE_BINARY_DIR}/CMakeTmp/termlib.c" - COMPILE_DEFINITIONS "-DHAVE_${HDR}" + COMPILE_DEFINITIONS -DHAVE_${HDR} ${WALL_DEF} ${WERROR_DEF} LINK_LIBRARIES "${lname}" COMPILE_OUTPUT_VARIABLE CTERM_OUT RUN_OUTPUT_VARIABLE RTERM_OUT) - message("CTERM: ${CTERM_OUT}") - message("RTERM: ${RTERM_OUT}") - message("LIBTERM_RESULT: ${LIBTERM_RESULT}") + #message("CTERM: ${CTERM_OUT}") + #message("RTERM: ${RTERM_OUT}") + #message("LIBTERM_RESULT: ${LIBTERM_RESULT}") endif(LIBTERM_RESULT) - #file(REMOVE "${CMAKE_BINARY_DIR}/CMakeTmp/termlib.c") + file(REMOVE "${CMAKE_BINARY_DIR}/CMakeTmp/termlib.c") if(LIBTERM_RESULT) set(TERMLIB_LIBRARY "NOTFOUND" CACHE STRING "TERMLIB" FORCE) set(TERMLIB_INCLUDE_DIR "NOTFOUND" CACHE STRING "TERMLIB" FORCE) + unset(HAVE_${HDR} CACHE) else(LIBTERM_RESULT) + # Have a winning combination. Set lib and include dir set(TERMLIB_LIBRARY ${lname} CACHE STRING "TERMLIB" FORCE) + set(TERMLIB_LIBRARY ${lname} PARENT_SCOPE) set(TERMLIB_INCLUDE_DIR "${TERMLIB_INCLUDE_DIR}" CACHE STRING "TERMLIB" FORCE) + set(TERMLIB_INCLUDE_DIR "${TERMLIB_INCLUDE_DIR}" PARENT_SCOPE) + # We also want this header's test (and only this header) to be + # reported as successful in the parent + set(HAVE_${HDR} 1 CACHE BOOL "TERMLIB" FORCE PARENT_SCOPE) + return() endif(LIBTERM_RESULT) endif(NOT "${TERMLIB_INCLUDE_DIR}" MATCHES "NOTFOUND") endif(NOT TERMLIB_INCLUDE_DIR OR "${TERMLIB_INCLUDE_DIR}" MATCHES "NOTFOUND") @@ -119,7 +137,7 @@ endforeach(hdr ${headers}) endif(HAVE_TERMLIB_${lname}) endif(NOT TERMLIB_LIBRARY OR "${TERMLIB_LIBRARY}" MATCHES "NOTFOUND") -endmacro(TERMLIB_CHECK_LIBRARY lname func) +endfunction(TERMLIB_CHECK_LIBRARY lname func) TERMLIB_CHECK_LIBRARY(termlib tputs "termlib.h") TERMLIB_CHECK_LIBRARY(ncurses tputs "ncurses.h;curses.h;termcap.h;term.h") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits