blob: df805301ea21a792ad0859f0376f8fafb46531ee [file] [log] [blame]
Austin Schuh208337d2022-01-01 14:29:11 -08001cmake_minimum_required(VERSION 3.4)
2project(pioasm CXX)
3
4set(CMAKE_CXX_STANDARD 11)
5
6if (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)
13endif()
14
15add_executable(pioasm
16 main.cpp
17 pio_assembler.cpp
18 pio_disassembler.cpp
19 gen/lexer.cpp
20 gen/parser.cpp
21)
22
23target_sources(pioasm PRIVATE c_sdk_output.cpp)
24target_sources(pioasm PRIVATE python_output.cpp)
25target_sources(pioasm PRIVATE hex_output.cpp)
26target_sources(pioasm PRIVATE ada_output.cpp)
27target_sources(pioasm PRIVATE ${PIOASM_EXTRA_SOURCE_FILES})
28
29if ((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)
35endif()
36
37target_include_directories(pioasm PRIVATE ${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/gen)
38
39if (MSVC)
40 target_compile_definitions(pioasm PRIVATE YY_NO_UNISTD_H)
41 target_compile_options(pioasm PRIVATE "/std:c++latest")
42endif()
43