File: Findpioasm.cmake

package info (click to toggle)
pico-sdk 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,960 kB
  • sloc: ansic: 150,165; asm: 13,474; python: 2,885; cpp: 2,192; yacc: 381; lex: 270; makefile: 33; sh: 15; javascript: 13
file content (53 lines) | stat: -rw-r--r-- 2,171 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Finds (or builds) the pioasm executable
#
# This will define the following imported targets
#
#     pioasm
#

if (NOT TARGET pioasm)
    # todo we would like to use pckgconfig to look for it first
    # see https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/

    include(ExternalProject)

    set(PIOASM_SOURCE_DIR ${PICO_SDK_PATH}/tools/pioasm)
    set(PIOASM_BINARY_DIR ${CMAKE_BINARY_DIR}/pioasm)
    set(PIOASM_INSTALL_DIR ${CMAKE_BINARY_DIR}/pioasm-install CACHE PATH "Directory where pioasm has been installed" FORCE)

    set(pioasmBuild_TARGET pioasmBuild)
    set(pioasm_TARGET pioasm)

    if (NOT TARGET ${pioasmBuild_TARGET})
        pico_message_debug("PIOASM will need to be built")
#        message("Adding external project ${pioasmBuild_Target} in ${CMAKE_CURRENT_LIST_DIR}}")
        ExternalProject_Add(${pioasmBuild_TARGET}
                PREFIX pioasm
                SOURCE_DIR ${PIOASM_SOURCE_DIR}
                BINARY_DIR ${PIOASM_BINARY_DIR}
                INSTALL_DIR ${PIOASM_INSTALL_DIR}
                CMAKE_ARGS
                    "--no-warn-unused-cli"
                    "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}"
                    "-DPIOASM_FLAT_INSTALL=1"
                    "-DCMAKE_INSTALL_PREFIX=${PIOASM_INSTALL_DIR}"
                    "-DCMAKE_RULE_MESSAGES=OFF" # quieten the build
                    "-DCMAKE_INSTALL_MESSAGE=NEVER" # quieten the install
                CMAKE_CACHE_ARGS "-DPIOASM_EXTRA_SOURCE_FILES:STRING=${PIOASM_EXTRA_SOURCE_FILES}"
                                 "-DPIOASM_VERSION_STRING:STRING=${PICO_SDK_VERSION_STRING}"
                BUILD_ALWAYS 1 # force dependency checking
                EXCLUDE_FROM_ALL TRUE
                )
    endif()

    if (CMAKE_HOST_WIN32)
        set(pioasm_EXECUTABLE ${PIOASM_INSTALL_DIR}/pioasm/pioasm.exe)
    else()
        set(pioasm_EXECUTABLE ${PIOASM_INSTALL_DIR}/pioasm/pioasm)
    endif()
    add_executable(${pioasm_TARGET} IMPORTED GLOBAL)
    set_property(TARGET ${pioasm_TARGET} PROPERTY IMPORTED_LOCATION
            ${pioasm_EXECUTABLE})

    add_dependencies(${pioasm_TARGET} ${pioasmBuild_TARGET})
endif()