mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
[svn-r27910] Rework flex-bison generated files to eliminate dual depends when building both shared and static
This commit is contained in:
parent
ea70d11227
commit
e8073c0d80
@ -1,6 +1,6 @@
|
||||
# post process flex/bison files
|
||||
|
||||
message (STATUS "File: ${FILE_PARSE} ${FILE_ANALYZE}")
|
||||
message (STATUS "File: ${GEN_DIR} ${FILE_PARSE} ${FILE_ANALYZE}")
|
||||
|
||||
if (FILE_PARSE)
|
||||
# fix H5LTparse.c to declare H5LTyyparse return type as an hid_t
|
||||
@ -11,19 +11,19 @@ if (FILE_PARSE)
|
||||
# I propose to not use flex to generate this function, but for now I am
|
||||
# adding a perl command to find and replace this function declaration in
|
||||
# H5LTparse.c.
|
||||
file (READ ${FILE_PARSE} TEST_STREAM)
|
||||
file (READ ${GEN_DIR}/${FILE_PARSE}.c TEST_STREAM)
|
||||
string (REGEX REPLACE "int yyparse" "hid_t yyparse" TEST_STREAM "${TEST_STREAM}")
|
||||
string (REGEX REPLACE "int\nyyparse" "hid_t\nyyparse" TEST_STREAM "${TEST_STREAM}")
|
||||
string (REGEX REPLACE "int H5LTyyparse" "hid_t H5LTyyparse" TEST_STREAM "${TEST_STREAM}")
|
||||
file (WRITE ${FILE_PARSE} "${TEST_STREAM}")
|
||||
file (WRITE ${FILE_PARSE}.c "${TEST_STREAM}")
|
||||
message (STATUS "replacing signature in H5LTparse.c")
|
||||
|
||||
# Add code that disables warnings in the flex/bison-generated code.
|
||||
#
|
||||
# Note that the GCC pragmas did not exist until gcc 4.2. Earlier versions
|
||||
# will simply ignore them, but we want to avoid those warnings.
|
||||
file (READ ${FILE_PARSE} TEST_STREAM)
|
||||
file (WRITE ${FILE_PARSE} "
|
||||
file (READ ${FILE_PARSE}.c TEST_STREAM)
|
||||
file (WRITE ${FILE_PARSE}.c "
|
||||
#if __GNUC__ >= 4 && __GNUC_MINOR__ >=2\n
|
||||
#pragma GCC diagnostic ignored \"-Wconversion\"\n
|
||||
#pragma GCC diagnostic ignored \"-Wimplicit-function-declaration\"\n
|
||||
@ -45,12 +45,10 @@ if (FILE_PARSE)
|
||||
#pragma warning(push, 1)\n
|
||||
#endif\n
|
||||
")
|
||||
file (APPEND ${FILE_PARSE} "${TEST_STREAM}")
|
||||
message (STATUS "processing pragma in ${FILE_PARSE}")
|
||||
execute_process (
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${FILE_PARSE}.timestamp
|
||||
DEPENDS "${FILE_PARSE}"
|
||||
)
|
||||
file (APPEND ${FILE_PARSE}.c "${TEST_STREAM}")
|
||||
message (STATUS "processed pragma in ${FILE_PARSE}")
|
||||
file (READ ${GEN_DIR}/${FILE_PARSE}.h TEST_STREAM)
|
||||
file (WRITE ${FILE_PARSE}.h "${TEST_STREAM}")
|
||||
endif (FILE_PARSE)
|
||||
|
||||
if (FILE_ANALYZE)
|
||||
@ -58,7 +56,7 @@ if (FILE_ANALYZE)
|
||||
#
|
||||
# Note that the GCC pragmas did not exist until gcc 4.2. Earlier versions
|
||||
# will simply ignore them, but we want to avoid those warnings.
|
||||
file (READ ${FILE_ANALYZE} TEST_STREAM)
|
||||
file (READ ${GEN_DIR}/${FILE_ANALYZE} TEST_STREAM)
|
||||
file (WRITE ${FILE_ANALYZE} "
|
||||
#if __GNUC__ >= 4 && __GNUC_MINOR__ >=2\n
|
||||
#pragma GCC diagnostic ignored \"-Wconversion\"\n
|
||||
@ -82,9 +80,5 @@ if (FILE_ANALYZE)
|
||||
#endif\n
|
||||
")
|
||||
file (APPEND ${FILE_ANALYZE} "${TEST_STREAM}")
|
||||
message (STATUS "processing pragma in ${FILE_ANALYZE}")
|
||||
execute_process (
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${FILE_ANALYZE}.timestamp
|
||||
DEPENDS "${FILE_ANALYZE}"
|
||||
)
|
||||
message (STATUS "processed pragma in ${FILE_ANALYZE}")
|
||||
endif (FILE_ANALYZE)
|
||||
|
@ -6,16 +6,40 @@ if (HDF5_GENERATE_HEADERS)
|
||||
if (BISON_FOUND)
|
||||
find_package (FLEX)
|
||||
if (FLEX_FOUND)
|
||||
BISON_TARGET (H5LT_PARSER H5LTparse.y ${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c COMPILE_FLAGS "-d -pH5LTyy")
|
||||
BISON_TARGET (H5LT_PARSER H5LTparse.y ${CMAKE_CURRENT_BINARY_DIR}/genLT/H5LTparse.c COMPILE_FLAGS "-d -pH5LTyy")
|
||||
if (WIN32)
|
||||
FLEX_TARGET (H5LT_SCANNER H5LTanalyze.l ${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c COMPILE_FLAGS "--wincompat --nounistd -PH5LTyy")
|
||||
FLEX_TARGET (H5LT_SCANNER H5LTanalyze.l ${CMAKE_CURRENT_BINARY_DIR}/genLT/H5LTanalyze.c COMPILE_FLAGS "--wincompat --nounistd -PH5LTyy")
|
||||
else (WIN32)
|
||||
FLEX_TARGET (H5LT_SCANNER H5LTanalyze.l ${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c COMPILE_FLAGS "--nounistd -PH5LTyy")
|
||||
FLEX_TARGET (H5LT_SCANNER H5LTanalyze.l ${CMAKE_CURRENT_BINARY_DIR}/genLT/H5LTanalyze.c COMPILE_FLAGS "--nounistd -PH5LTyy")
|
||||
endif (WIN32)
|
||||
ADD_FLEX_BISON_DEPENDENCY(H5LT_SCANNER H5LT_PARSER)
|
||||
|
||||
if (BISON_H5LT_PARSER_DEFINED AND FLEX_H5LT_SCANNER_DEFINED)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_custom_command (
|
||||
OUTPUT H5LTparse.c H5LTparse.h
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-D "GEN_DIR=genLT"
|
||||
-D "FILE_PARSE=H5LTparse"
|
||||
-P "${HDF_RESOURCES_DIR}/HDF5_Process_Flex_Files.cmake"
|
||||
DEPENDS "genLT/H5LTparse.c"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
add_custom_command (
|
||||
OUTPUT H5LTanalyze.c
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-D "GEN_DIR=genLT"
|
||||
-D "FILE_ANALYZE=H5LTanalyze.c"
|
||||
-P "${HDF_RESOURCES_DIR}/HDF5_Process_Flex_Files.cmake"
|
||||
DEPENDS "genLT/H5LTanalyze.c"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
add_custom_target (process_gen_H5LT
|
||||
DEPENDS H5LTparse.c H5LTanalyze.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
set (HL_SRCS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c
|
||||
${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c
|
||||
@ -23,36 +47,6 @@ if (HDF5_GENERATE_HEADERS)
|
||||
set (HL_HEADERS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.h
|
||||
)
|
||||
set_source_files_properties (${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c GENERATED)
|
||||
set_source_files_properties (${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c GENERATED)
|
||||
set_source_files_properties (${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.h GENERATED)
|
||||
|
||||
add_custom_command (
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c.timestamp
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-D "FILE_PARSE=H5LTparse.c"
|
||||
-P "${HDF_RESOURCES_DIR}/HDF5_Process_Flex_Files.cmake"
|
||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
add_custom_command (
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c.timestamp
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-D "FILE_ANALYZE=H5LTanalyze.c"
|
||||
-P "${HDF_RESOURCES_DIR}/HDF5_Process_Flex_Files.cmake"
|
||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
add_custom_target (process_gen_H5LT DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c.timestamp ${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c.timestamp)
|
||||
|
||||
# add_custom_target (process_gen_H5LT
|
||||
# COMMAND "${CMAKE_COMMAND}"
|
||||
# -D "FILE_PARSE=${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c"
|
||||
# -D "FILE_ANALYSE=${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c"
|
||||
# -P "${HDF5_RESOURCE_DIR}/HDF5_Process_Flex_Files.cmake"
|
||||
# DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/H5LTparse.c ${CMAKE_CURRENT_BINARY_DIR}/H5LTanalyze.c"
|
||||
# COMMENT "Prepending pragma statements"
|
||||
# )
|
||||
else (BISON_H5LT_PARSER_DEFINED AND FLEX_H5LT_SCANNER_DEFINED)
|
||||
message (STATUS "Error during generate of files")
|
||||
endif (BISON_H5LT_PARSER_DEFINED AND FLEX_H5LT_SCANNER_DEFINED)
|
||||
|
Loading…
Reference in New Issue
Block a user