Revision: 69950 http://sourceforge.net/p/brlcad/code/69950 Author: starseeker Date: 2017-07-15 22:45:15 +0000 (Sat, 15 Jul 2017) Log Message: ----------- Looks like this never worked properly (was compiling sys_wait_test.c??) - make a stab at getting it to run as it should.
Modified Paths: -------------- brlcad/trunk/misc/CMake/FindLEX.cmake Modified: brlcad/trunk/misc/CMake/FindLEX.cmake =================================================================== --- brlcad/trunk/misc/CMake/FindLEX.cmake 2017-07-15 21:29:08 UTC (rev 69949) +++ brlcad/trunk/misc/CMake/FindLEX.cmake 2017-07-15 22:45:15 UTC (rev 69950) @@ -66,6 +66,53 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= +#Need to run a test lex file to determine if YYTEXT_POINTER needs +#to be defined +function(yytext_pointer_test) + set(LEX_TEST_SRCS " +%% +a { ECHO; } +b { REJECT; } +c { yymore (); } +d { yyless (1); } +e { yyless (input () != 0); } +f { unput (yytext[0]); } +. { BEGIN INITIAL; } +%option noyywrap +%% +#ifdef YYTEXT_POINTER +extern char *yytext; +#endif +int +main (void) +{ + return ! yylex () + ! yywrap (); +} + +") + if(NOT DEFINED YYTEXT_POINTER) + file(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/lex_test.l" "${LEX_TEST_SRCS}") + execute_process(COMMAND ${LEX_EXECUTABLE} -o "${CMAKE_BINARY_DIR}/CMakeTmp/lex_test.c" "${CMAKE_BINARY_DIR}/CMakeTmp/lex_test.l" RESULT_VARIABLE _retval OUTPUT_VARIABLE _lexOut) + file(REMOVE "${CMAKE_BINARY_DIR}/CMakeTmp/lex_test.l") + + try_run(YYTEXT_POINTER_RAN YYTEXT_POINTER_COMPILED + "${CMAKE_BINARY_DIR}" + "${CMAKE_BINARY_DIR}/CMakeTmp/lex_test.c" + COMPILE_DEFINITIONS "-DYYTEXT_POINTER=1" + COMPILE_OUTPUT_VARIABLE COUTPUT + RUN_OUTPUT_VARIABLE ROUTPUT) + + if(YYTEXT_POINTER_COMPILED AND NOT YYTEXT_POINTER_RAN) + set(YYTEXT_POINTER 1 PARENT_SCOPE) + if(CONFIG_H_FILE) + CONFIG_H_APPEND(${CMAKE_CURRENT_PROJECT} "#cmakedefine YYTEXT_POINTER 1\n") + endif(CONFIG_H_FILE) + endif(YYTEXT_POINTER_COMPILED AND NOT YYTEXT_POINTER_RAN) + + file(REMOVE "${CMAKE_SOURCE_DIR}/CMakeTmp/lex_test.c") + endif(NOT DEFINED YYTEXT_POINTER) +endfunction(yytext_pointer_test) + find_program(LEX_EXECUTABLE flex DOC "path to the lex executable") if(NOT LEX_EXECUTABLE) find_program(LEX_EXECUTABLE lex DOC "path to the lex executable") @@ -72,8 +119,7 @@ endif(NOT LEX_EXECUTABLE) mark_as_advanced(LEX_EXECUTABLE) -find_library(FL_LIBRARY NAMES fl - DOC "path to the fl library") +find_library(FL_LIBRARY NAMES fl DOC "path to the fl library") mark_as_advanced(FL_LIBRARY) set(LEX_LIBRARIES ${FL_LIBRARY}) @@ -112,20 +158,9 @@ endmacro(LEX_TARGET) #============================================================ - #Need to run a test lex file to determine if YYTEXT_POINTER needs - #to be defined - EXEC_PROGRAM(${LEX_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/misc/CMake/test_srcs/lex_test.l" -o "${CMAKE_BINARY_DIR}/CMakeTmp/lex_test.c" RETURN_VALUE _retval OUTPUT_VARIABLE _lexOut) - INCLUDE (CheckCSourceRuns) - set(FILE_RUN_DEFINITIONS "-DYYTEXT_POINTER=1") - if(NOT DEFINED YYTEXT_POINTER) - CHECK_C_SOURCE_RUNS("${CMAKE_SOURCE_DIR}/misc/CMake/test_srcs/sys_wait_test.c" YYTEXT_POINTER) - endif(NOT DEFINED YYTEXT_POINTER) - set(FILE_RUN_DEFINITIONS) - if(CONFIG_H_FILE) - CONFIG_H_APPEND(${CMAKE_CURRENT_PROJECT} "#cmakedefine YYTEXT_POINTER 1\n") - endif(CONFIG_H_FILE) + # Execute the YYTEXT pointer test defined above + yytext_pointer_test() - endif(LEX_EXECUTABLE) include(FindPackageHandleStandardArgs) 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