11cmake_minimum_required (VERSION 3.4)
2-
3- project (cppparser)
4-
52enable_testing ()
63
7- include ( "../common/cmake/conf.cmake" )
4+ project (cppparser )
85
96set (CMAKE_CXX_STANDARD 17)
7+ set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
108
119if (MSVC )
1210 SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd\" 4996\" " )
1311 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd\" 4996\" " )
1412endif ()
1513
16- add_subdirectory (third_party/btyacc_tp)
17-
18- add_definitions (-DBOOST_AUTO_LINK_NOMANGLE)
19-
20- add_subdirectory (../common/third_party/boost_tp/cmake ${CMAKE_BINARY_DIR} /boost)
21-
22- include_directories (../common/third_party)
23-
24- #############################################
25- ## CppParser
26-
27- find_program (
28- FLEX
29- "flex"
30- # Assuming for Linux and OSX flex is already available
31- # Only for Windows the flex will be used from the repository
32- PATHS ENV PATH "third_party/flex_tp"
33- )
34- if (${FLEX} MATCHES "FLEX-NOTFOUND" )
35- message (FATAL_ERROR "'flex' not found" )
36- else ()
37- message (STATUS "Found 'flex' as ${FLEX} " )
38- endif ()
39-
40- set_source_files_properties (src/parser.tab.cpp GENERATED )
41- set_source_files_properties (src/parser.lex.cpp GENERATED )
42- set_source_files_properties (src/parser.tab.h GENERATED )
43-
44- add_custom_command (
45- OUTPUT ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.tab.cpp ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.tab.h
46- COMMAND $<TARGET_FILE:btyacc> -v -b parser -d ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.y
47- # COMMAND ${CMAKE_COMMAND} -E copy y_tab.c ${CMAKE_CURRENT_SOURCE_DIR}/parser.tab.cpp
48- # COMMAND ${CMAKE_COMMAND} -E copy y_tab.h ${CMAKE_CURRENT_SOURCE_DIR}/parser.tab.h
49- COMMAND ${CMAKE_COMMAND} -E copy parser.tab.c ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.tab.cpp
50- COMMAND ${CMAKE_COMMAND} -E copy parser.tab.h ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.tab.h
51- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.y
52- )
53-
54- add_custom_command (
55- OUTPUT ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.lex.cpp
56- COMMAND ${FLEX} -o${CMAKE_CURRENT_SOURCE_DIR} /src/parser.lex.cpp ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.l
57- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.l ${CMAKE_CURRENT_SOURCE_DIR} /src/parser.tab.h
58- )
59-
60- set (CPPPARSER_SOURCES
61- src/cppparser.cpp
62- src/cppast.cpp
63- src/cppprog.cpp
64- src/cppwriter.cpp
65- src/cppobjfactory.cpp
66- src/lexer-helper.cpp
67- src/parser.l
68- src/parser.y
69- src/parser.lex.cpp
70- src/parser.tab.cpp
71- src/utils.cpp
72- )
73-
74- add_library (cppparser STATIC ${CPPPARSER_SOURCES} )
75- add_dependencies (cppparser btyacc boost_filesystem boost_program_options)
76- target_link_libraries (cppparser
77- PUBLIC
78- boost_filesystem
79- boost_program_options
80- boost_system
81- )
82- target_include_directories (
83- cppparser
84- PUBLIC
85- pub
86- ../common/third_party/boost_tp
87- PRIVATE
88- hack
89- )
90- target_compile_definitions (
91- cppparser
92- PRIVATE
93- YY_NO_UNPUT
94- )
95-
96- #############################################
97- ## CppParserTest
98-
99- add_executable (cppparsertest
100- test /app/cppparsertest.cpp
101- )
102-
103- target_link_libraries (cppparsertest
104- PRIVATE
105- cppparser
106- boost_filesystem
107- boost_program_options
108- boost_system
109- )
110-
111- set (E2E_TEST_DIR ${CMAKE_CURRENT_LIST_DIR} /test /e2e)
112- set (CTEST_OUTPUT_ON_FAILURE 1)
113- add_test (
114- NAME ParserTest
115- COMMAND cppparsertest --input -folder =${E2E_TEST_DIR} /test_input
116- --output -folder =${E2E_TEST_DIR} /test_output
117- --master-files -folder =${E2E_TEST_DIR} /test_master
118- )
119-
120- #############################################
121- ## Unit Test
122-
123- set (TEST_SNIPPET_EMBEDDED_TESTS
124- ${CMAKE_CURRENT_LIST_DIR} /test /unit/attribute-specifier-sequence.cpp
125- ${CMAKE_CURRENT_LIST_DIR} /test /unit/disabled-code-test .cpp
126- ${CMAKE_CURRENT_LIST_DIR} /test /unit/error-handler-test .cpp
127- ${CMAKE_CURRENT_LIST_DIR} /test /unit/expr -test .cpp
128- ${CMAKE_CURRENT_LIST_DIR} /test /unit/namespace-test .cpp
129- ${CMAKE_CURRENT_LIST_DIR} /test /unit/template-test .cpp
130- ${CMAKE_CURRENT_LIST_DIR} /test /unit/uniform-init-test .cpp
131- ${CMAKE_CURRENT_LIST_DIR} /test /unit/vardecl-test .cpp
132- )
133-
134- add_executable (cppparserunittest
135- ${CMAKE_CURRENT_LIST_DIR} /test /unit/main.cpp
136- ${CMAKE_CURRENT_LIST_DIR} /test /unit/test -hello-world.cpp
137-
138- ${TEST_SNIPPET_EMBEDDED_TESTS}
139- )
140- target_include_directories (cppparserunittest
141- PRIVATE
142- ${CMAKE_CURRENT_LIST_DIR} /src
143- )
144-
145- target_link_libraries (cppparserunittest
146- PRIVATE
147- cppparser
148- boost_filesystem
149- boost_program_options
150- boost_system
151- )
152- set (UNIT_TEST_DIR ${CMAKE_CURRENT_LIST_DIR} /test /unit)
153- add_test (
154- NAME ParserUnitTest
155- COMMAND cppparserunittest
156- )
157-
158- # cppparserembeddedsnippetvalidity is just to ensure that the embedded
159- # code snippets used in unit tests are valid C/C++ code.
160- # So, the goal is to test if the embedded test snippets compile without error.
161- add_executable (cppparserembeddedsnippetvalidity
162- ${CMAKE_CURRENT_LIST_DIR} /test /unit/main.cpp
163-
164- ${TEST_SNIPPET_EMBEDDED_TESTS}
165- )
166- target_include_directories (cppparserembeddedsnippetvalidity
167- PRIVATE
168- ${CMAKE_CURRENT_LIST_DIR} /src
169- )
170- target_compile_definitions (cppparserembeddedsnippetvalidity
171- PRIVATE
172- "TEST_CASE_SNIPPET_STARTS_FROM_NEXT_LINE=1"
173- "CPPPARSER_TEST_DEFINED_MACRO=1"
174- )
175- target_link_libraries (cppparserembeddedsnippetvalidity
176- PRIVATE
177- cppparser
178- boost_filesystem
179- boost_program_options
180- boost_system
181- )
182-
183- if (NOT MSVC )
184- target_compile_options (cppparserembeddedsnippetvalidity
185- PRIVATE
186- -Wno-unused-variable
187- -Wno-attributes
188- -Wno-unused-value
189- -Wno-uninitialized
190- -Wno-unused-but-set-variable
191- )
192- endif ()
14+ add_subdirectory (cppast)
15+ add_subdirectory (cppparser)
16+ add_subdirectory (cppwriter)
19317
19418find_program (
19519 MARKDOWN_PP
@@ -200,8 +24,8 @@ find_program(
20024if (NOT ${MARKDOWN_PP} MATCHES "MARKDOWN_PP-NOTFOUND" )
20125 add_custom_command (
20226 OUTPUT ${CMAKE_CURRENT_SOURCE_DIR} /README.md
203- COMMAND ${MARKDOWN_PP} ${CMAKE_CURRENT_SOURCE_DIR} /src/README.mdpp -o ${CMAKE_CURRENT_SOURCE_DIR} /README.md
204- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /src/README.mdpp ${RESPATHS} ${EXAMPLE_HEADERS}
27+ COMMAND ${MARKDOWN_PP} ${CMAKE_CURRENT_SOURCE_DIR} /cppparser/ src/README.mdpp -o ${CMAKE_CURRENT_SOURCE_DIR} /README.md
28+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /cppparser/ src/README.mdpp ${RESPATHS} ${EXAMPLE_HEADERS}
20529 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
20630 )
20731 add_custom_target (
0 commit comments