[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [solid] /: Always update the Predicate parser from y/l sources
From:       Pino Toscano <toscano.pino () tiscali ! it>
Date:       2016-07-10 5:18:07
Message-ID: E1bM783-00047J-BB () code ! kde ! org
[Download RAW message or body]

Git commit 31daba692c020943453150a626ed3cf19562676b by Pino Toscano.
Committed on 10/07/2016 at 05:08.
Pushed by pino into branch 'master'.

Always update the Predicate parser from y/l sources

Turn Flex and Bison into required build dependencies, and use them to
always regenerate at build time the Predicate parser. This ensures that
the parser does not rot, and there is no more need to rely on
autogenerated sources added statically among the others.

REVIEW: 127972

M  +16   -0    CMakeLists.txt
M  +0    -35   src/solid/CMakeLists.txt
M  +14   -3    src/solid/devices/CMakeLists.txt

http://commits.kde.org/solid/31daba692c020943453150a626ed3cf19562676b

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a61e39f..ffb0384 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,22 @@ include(ECMSetupVersion)
 include(ECMGenerateHeaders)
 include(ECMMarkNonGuiExecutable)
 =

+find_package(FLEX REQUIRED)
+set_package_properties(FLEX PROPERTIES
+    URL "http://flex.sourceforge.net"
+    DESCRIPTION "Fast Lexical Analyzer"
+    TYPE REQUIRED
+    PURPOSE "Required for the Predicate parser"
+)
+
+find_package(BISON REQUIRED)
+set_package_properties(BISON PROPERTIES
+    URL "http://www.gnu.org/software/bison"
+    DESCRIPTION "general-purpose parser generator"
+    TYPE REQUIRED
+    PURPOSE "Required for the Predicate parser"
+)
+
 if (CMAKE_SYSTEM_NAME MATCHES Linux)
     find_package( UDev )
 =

diff --git a/src/solid/CMakeLists.txt b/src/solid/CMakeLists.txt
index f2b43b2..83bfba5 100644
--- a/src/solid/CMakeLists.txt
+++ b/src/solid/CMakeLists.txt
@@ -101,41 +101,6 @@ install(FILES
   DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/Solid/solid COMPONENT Devel
 )
 =

-########### parser build ###############
-
-set(lexer_FILE predicate_lexer)
-set(parser_FILE predicate_parser)
-
-find_package(FLEX)
-set_package_properties(FLEX PROPERTIES DESCRIPTION "Allows the Solid predi=
cate parser to be updated"
-                       URL "http://flex.sourceforge.net"
-                       TYPE OPTIONAL
-                       PURPOSE "Required by the UpdateSolidPredicateParser=
 target (mainly useful for developers)"
-                      )
-
-find_package(BISON)
-set_package_properties(BISON PROPERTIES
-    URL "http://www.gnu.org/software/bison"
-    DESCRIPTION "Allows the Solid predicate parser to be updated"
-    TYPE OPTIONAL
-    PURPOSE "Required by the UpdateSolidPredicateParser target (mainly use=
ful for developers)"
-  )
-
-if (FLEX_FOUND AND BISON_FOUND)
-
-   add_custom_target(UpdateSolidPredicateParser
-                     COMMAND ${FLEX_EXECUTABLE} -P Solid -o${lexer_FILE}.c=
 ${lexer_FILE}.l
-                     COMMAND ${BISON_EXECUTABLE} -p Solid -d -b ${parser_F=
ILE} ${parser_FILE}.y
-                     COMMAND ${CMAKE_COMMAND} -E copy ${parser_FILE}.tab.c=
 ${CMAKE_CURRENT_SOURCE_DIR}/${parser_FILE}.c
-                     COMMAND ${CMAKE_COMMAND} -E copy ${parser_FILE}.tab.h=
 ${CMAKE_CURRENT_SOURCE_DIR}/${parser_FILE}.h
-                     COMMAND ${CMAKE_COMMAND} -E remove ${parser_FILE}.tab=
.c ${parser_FILE}.tab.h
-                     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-
-else ()
-   add_custom_target(UpdateSolidPredicateParser
-                     COMMAND echo "flex and/or bison not found, so target =
UpdateSolidPredicateParser inactive")
-endif ()
-
 include(ECMGeneratePriFile)
 ecm_generate_pri_file(BASE_NAME Solid LIB_NAME KF5Solid DEPS "core" FILENA=
ME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/Solid)
 install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})
diff --git a/src/solid/devices/CMakeLists.txt b/src/solid/devices/CMakeList=
s.txt
index 9271ae1..e1f3f6e 100644
--- a/src/solid/devices/CMakeLists.txt
+++ b/src/solid/devices/CMakeLists.txt
@@ -40,8 +40,6 @@ set(solid_LIB_SRCS
     devices/managerbase.cpp
     devices/solidnamespace.cpp
     devices/predicateparse.cpp
-    devices/predicate_lexer.c
-    devices/predicate_parser.c
 =

     devices/frontend/device.cpp
     devices/frontend/devicemanager.cpp
@@ -80,6 +78,19 @@ set(solid_LIB_SRCS
     devices/backends/shared/cpufeatures.cpp
 )
 =

+bison_target(SolidParser
+             devices/predicate_parser.y
+             ${CMAKE_CURRENT_BINARY_DIR}/predicate_parser.c
+             COMPILE_FLAGS "-p Solid -d -b predicate_parser"
+)
+flex_target(SolidLexer
+            devices/predicate_lexer.l
+            ${CMAKE_CURRENT_BINARY_DIR}/predicate_lexer.c
+            COMPILE_FLAGS "-P Solid"
+)
+add_flex_bison_dependency(SolidLexer SolidParser)
+list(APPEND solid_LIB_SRCS ${BISON_SolidParser_OUTPUTS} ${FLEX_SolidLexer_=
OUTPUTS})
+
 include(devices/backends/fakehw/CMakeLists.txt)
 =

 if(NOT WIN32 AND NOT APPLE)
@@ -158,4 +169,4 @@ endif()
 =

 if ( UDEV_FOUND )
    set(solid_OPTIONAL_LIBS ${solid_OPTIONAL_LIBS} ${UDEV_LIBS})
-endif ()
\ No newline at end of file
+endif ()

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic