Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 3.4) |
| 2 | project(pioasm CXX) |
| 3 | |
| 4 | set(CMAKE_CXX_STANDARD 11) |
| 5 | |
| 6 | if (PIOASM_GENERATE_PARSER) |
| 7 | find_package(BISON 3.4.2) |
| 8 | find_package(FLEX 2.5.13) # no idea about the version |
| 9 | |
| 10 | FLEX_TARGET(pioasm_lexer lexer.ll ${CMAKE_CURRENT_SOURCE_DIR}/gen/lexer.cpp) |
| 11 | BISON_TARGET(pioasm_parser parser.yy ${CMAKE_CURRENT_SOURCE_DIR}/gen/parser.cpp COMPILE_FLAGS "-Wcounterexamples") |
| 12 | ADD_FLEX_BISON_DEPENDENCY(pioasm_lexer pioasm_parser) |
| 13 | endif() |
| 14 | |
| 15 | add_executable(pioasm |
| 16 | main.cpp |
| 17 | pio_assembler.cpp |
| 18 | pio_disassembler.cpp |
| 19 | gen/lexer.cpp |
| 20 | gen/parser.cpp |
| 21 | ) |
| 22 | |
| 23 | target_sources(pioasm PRIVATE c_sdk_output.cpp) |
| 24 | target_sources(pioasm PRIVATE python_output.cpp) |
| 25 | target_sources(pioasm PRIVATE hex_output.cpp) |
| 26 | target_sources(pioasm PRIVATE ada_output.cpp) |
| 27 | target_sources(pioasm PRIVATE ${PIOASM_EXTRA_SOURCE_FILES}) |
| 28 | |
| 29 | if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND |
| 30 | (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "7") AND |
| 31 | (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9") AND |
| 32 | (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm.*$")) |
| 33 | # disable GCC ARM info notice about ABI change |
| 34 | target_compile_options(pioasm PRIVATE -Wno-psabi) |
| 35 | endif() |
| 36 | |
| 37 | target_include_directories(pioasm PRIVATE ${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/gen) |
| 38 | |
| 39 | if (MSVC) |
| 40 | target_compile_definitions(pioasm PRIVATE YY_NO_UNISTD_H) |
| 41 | target_compile_options(pioasm PRIVATE "/std:c++latest") |
| 42 | endif() |
| 43 | |