]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Make ragel-generated files independent of the parent directory
authorPeter Wu <peter@lekensteyn.nl>
Tue, 21 Jan 2020 02:53:24 +0000 (02:53 +0000)
committerPeter Wu <peter@lekensteyn.nl>
Tue, 21 Jan 2020 03:16:57 +0000 (03:16 +0000)
* Use relative paths for `#line` directives to allow reproducible builds
  independent of the absolute build directory. For /b/rspamd/src/x.rl
  and build dir /b/build, it could result in `../../build/src/x.rl`.
* The `-L` option for `Inhibit writing #line directives` is useless, it
  just comments out the line with `/* ... */`, but that means that the
  source file is still different.
* Note that ragel only accepts one input file, despite plural `INPUTS`.

cmake/FindRagel.cmake

index a058b7fb1936f433988aa9d834f213117a88968d..f17766ac6d61ebbc164a03cd6eda82e7b1097317 100644 (file)
@@ -72,9 +72,16 @@ ${RAGEL_version_error}")
   macro(RAGEL_TARGET Name)
     CMAKE_PARSE_ARGUMENTS(RAGEL "" "OUTPUT"
                "INPUTS;DEPENDS;COMPILE_FLAGS" ${ARGN})
+
+    file(RELATIVE_PATH RAGEL_OUTPUT_RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
+         "${RAGEL_OUTPUT}")
+    file(RELATIVE_PATH RAGEL_INPUTS_RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
+         "${RAGEL_INPUTS}")
+
     add_custom_command(OUTPUT ${RAGEL_OUTPUT}
       COMMAND ${RAGEL_EXECUTABLE}
-      ARGS    ${RAGEL_COMPILE_FLAGS} -o${RAGEL_OUTPUT} ${RAGEL_INPUTS}
+      ARGS    ${RAGEL_COMPILE_FLAGS}
+              -o${RAGEL_OUTPUT_RELATIVE} ${RAGEL_INPUTS_RELATIVE}
       DEPENDS ${RAGEL_INPUTS} ${RAGEL_DEPENDS}
       COMMENT
           "[RAGEL][${Name}] Compiling state machine with Ragel ${RAGEL_VERSION}"
@@ -93,4 +100,4 @@ endif()
 # use this include when module file is located in build tree
 include(FindPackageHandleStandardArgs)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(RAGEL REQUIRED_VARS  RAGEL_EXECUTABLE
-                                        VERSION_VAR    RAGEL_VERSION)
\ No newline at end of file
+                                        VERSION_VAR    RAGEL_VERSION)