From: Tim Kientzle Date: Fri, 20 Feb 2009 07:09:03 +0000 (-0500) Subject: If we don't have yacc or bison, just warn and continue. X-Git-Tag: v2.7.0~240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e5bc8159e481d9389bd075c536aa94d1b372e67;p=thirdparty%2Flibarchive.git If we don't have yacc or bison, just warn and continue. In particular, most Windows folks don't have it; that's why we include pre-built getdate.c/getdate.h in the shipped packages. SVN-Revision: 677 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ff1d30e5..72094b83a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,25 +57,26 @@ INCLUDE(CheckTypeSize) # # For yacc file, generate *.c from *.y # -MACRO (YACC_FILE _yaccfile) +MACRO (YACC_FILE _yaccfile _cfile) IF (WIN32) FIND_PROGRAM(YACC NAMES bison yacc) ELSE (WIN32) FIND_PROGRAM(YACC NAMES yacc bison) ENDIF (WIN32) IF ("YACC" MATCHES "^YACC-NOTFOUND$") - MESSAGE(FATAL_ERROR "You need a parser geerator such as yacc.") + MESSAGE(STATUS "yacc/bison not found; you will not be able to regenerate " ${_cfile} " from " ${_yaccfile}) + ELSE ("YACC" MATCHES "^YACC-NOTFOUND$") + GET_FILENAME_COMPONENT(_path ${_yaccfile} PATH) + GET_FILENAME_COMPONENT(_name ${_yaccfile} NAME_WE) + SET(_basename "${_path}/${_name}") + FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${_path}") + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h + COMMAND ${YACC} -o ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c ${CMAKE_CURRENT_SOURCE_DIR}/${_yaccfile} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_yaccfile} + COMMENT "Generating ${_basename}.c from ${_yaccfile}" + ) ENDIF ("YACC" MATCHES "^YACC-NOTFOUND$") - GET_FILENAME_COMPONENT(_path ${_yaccfile} PATH) - GET_FILENAME_COMPONENT(_name ${_yaccfile} NAME_WE) - SET(_basename "${_path}/${_name}") - FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${_path}") - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h - COMMAND ${YACC} -o ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c ${CMAKE_CURRENT_SOURCE_DIR}/${_yaccfile} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_yaccfile} - COMMENT "Generating ${_basename}.c from ${_yaccfile}" - ) ENDMACRO (YACC_FILE) # # Generate list.h @@ -749,7 +750,7 @@ ENDIF(ENABLE_TEST) # ############################################ IF (ENABLE_TAR) - YACC_FILE(tar/getdate.y) + YACC_FILE(tar/getdate.y tar/getdate.c) SET(bsdtar_SOURCES tar/bsdtar.c tar/bsdtar.h