summaryrefslogtreecommitdiff
path: root/stacks/crdop/cmake/CRDOPVendorArdopcf.cmake
blob: e82c605e144ec8ac2cec80fabc59c21ccb2b8408 (plain)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Legacy vendor/ardopcf build (opt-in only; not shipped in MAX25 v1).

include("${CRDOP_ROOT}/cmake/CRDOPCompiler.cmake")
include("${CRDOP_ROOT}/cmake/CRDOPPlatform.cmake")

option(CRDOP_BUILD_TESTS "Build upstream ardopcf cmocka unit tests" OFF)

set(CRDOP_VENDOR_COMMON
    lib/rawhid/rawhid.c
    lib/rockliff/rrs.c
    lib/ws_server/ws_server.c
    src/common/ARDOPC.c
    src/common/ARDOPCommon.c
    src/common/ardopSampleArrays.c
    src/common/ARQ.c
    src/common/BusyDetect.c
    src/common/FEC.c
    src/common/FFT.c
    src/common/HostInterface.c
    src/common/Locator.c
    src/common/log_file.c
    src/common/log.c
    src/common/Modulate.c
    src/common/Packed6.c
    src/common/RXO.c
    src/common/sdft.c
    src/common/SoundInput.c
    src/common/StationId.c
    src/common/TCPHostInterface.c
    src/common/txframe.c
    src/common/wav.c
    src/common/Webgui.c
    src/common/noise.c
    src/common/ardopcf.c
)

set(CRDOP_VENDOR_SRCS "")
foreach(rel IN LISTS CRDOP_VENDOR_COMMON CRDOP_PLATFORM_SOURCES)
    list(APPEND CRDOP_VENDOR_SRCS "${VENDOR_DIR}/${rel}")
endforeach()

set(TXT2C "${CMAKE_BINARY_DIR}/txt2c")
add_executable(txt2c "${VENDOR_DIR}/lib/txt2c/txt2c.c")
crdop_set_compile_options(txt2c)
set_target_properties(txt2c PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")

set(WEBGUI_HTML_C "${CMAKE_BINARY_DIR}/gen-webgui.html.c")
set(WEBGUI_JS_C "${CMAKE_BINARY_DIR}/gen-webgui.js.c")
add_custom_command(
    OUTPUT "${WEBGUI_HTML_C}"
    COMMAND txt2c "${VENDOR_DIR}/webgui/webgui.html" "${WEBGUI_HTML_C}" webgui_html
    DEPENDS txt2c "${VENDOR_DIR}/webgui/webgui.html"
    COMMENT "Embedding webgui.html"
)
add_custom_command(
    OUTPUT "${WEBGUI_JS_C}"
    COMMAND txt2c "${VENDOR_DIR}/webgui/webgui.js" "${WEBGUI_JS_C}" webgui_js
    DEPENDS txt2c "${VENDOR_DIR}/webgui/webgui.js"
    COMMENT "Embedding webgui.js"
)

add_library(ardopcf_vendor_objs OBJECT
    ${CRDOP_VENDOR_SRCS}
    "${WEBGUI_HTML_C}"
    "${WEBGUI_JS_C}"
)

target_include_directories(ardopcf_vendor_objs PRIVATE
    "${CRDOP_ROOT}/include"
    "${VENDOR_DIR}/src"
    "${VENDOR_DIR}/lib"
    ${CRDOP_PLATFORM_INCLUDES}
)

target_compile_definitions(ardopcf_vendor_objs PRIVATE CRDOP_BUILD=1)

if(WIN32)
    target_compile_definitions(ardopcf_vendor_objs PRIVATE WIN32 _CRT_SECURE_NO_DEPRECATE)
endif()

if(APPLE)
    target_compile_definitions(ardopcf_vendor_objs PRIVATE __APPLE__)
endif()

crdop_set_compile_options(ardopcf_vendor_objs)

add_executable(crdopc
    "${CRDOP_ROOT}/src/crdop_version.c"
    $<TARGET_OBJECTS:ardopcf_vendor_objs>
)

target_include_directories(crdopc PRIVATE
    "${CRDOP_ROOT}/include"
    "${VENDOR_DIR}/src"
    "${VENDOR_DIR}/lib"
    ${CRDOP_PLATFORM_INCLUDES}
)

target_compile_definitions(crdopc PRIVATE CRDOP_BUILD=1)

if(WIN32)
    target_compile_definitions(crdopc PRIVATE WIN32 _CRT_SECURE_NO_DEPRECATE)
endif()

if(APPLE)
    target_compile_definitions(crdopc PRIVATE __APPLE__)
endif()

crdop_set_compile_options(crdopc)
target_link_libraries(crdopc PRIVATE ${CRDOP_PLATFORM_LIBS})

add_library(ardopcf_vendor STATIC
    "${CRDOP_ROOT}/src/crdop_version.c"
    $<TARGET_OBJECTS:ardopcf_vendor_objs>
)
target_include_directories(ardopcf_vendor PUBLIC
    "${CRDOP_ROOT}/include"
    "${VENDOR_DIR}/src"
    "${VENDOR_DIR}/lib"
    ${CRDOP_PLATFORM_INCLUDES}
)
target_compile_definitions(ardopcf_vendor PUBLIC CRDOP_BUILD=1)
target_link_libraries(ardopcf_vendor PUBLIC ${CRDOP_PLATFORM_LIBS})

include("${CRDOP_ROOT}/cmake/CRDOPTests.cmake")

install(TARGETS crdopc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com