@@ -3,11 +3,12 @@ set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../CMakeModules" )
33include ( add_submodule )
44
55set ( CMAKE_CXX_STANDARD 17 )
6+ set ( UIC uic )
7+ set ( RCC rcc )
8+ set ( MOC moc )
69
710# Command line options
8- SET ( board "rpi" CACHE BOOL "board" )
911SET ( rawwifi "0" CACHE BOOL "rawwifi" )
10- option ( board "board" )
1112option ( rawwifi "rawwifi" )
1213
1314if ( NOT ${board} MATCHES OFF AND NOT ${board} MATCHES "generic" )
@@ -17,39 +18,15 @@ endif()
1718enable_language ( C CXX ASM )
1819project ( controller_rc )
1920
21+ add_definitions ( -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DSYSTEM_NAME_${CMAKE_SYSTEM_NAME} )
22+ add_definitions ( -DBOARD="${board} " -DBOARD_${board} -DVARIANT="${variant} " -DVARIANT_${variant} )
23+ add_definitions ( -DVERSION_STRING="bcflight_${board} _${VERSION_MAJOR} .${VERSION_MINOR} _${GIT_HASH} " )
24+ add_definitions ( -DTARGET_CPU_BITS=${TARGET_CPU_BITS} )
25+ add_submodule( boards )
26+
2027# Set compiler options
2128set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -ggdb3 -O0 -D_DEFAULT_SOURCE" )
22- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -ggdb3 -O0 -std=c++11 -DGE_LINUX -DGE_EGL -fpermissive -Wno-pmf-conversions" )
23-
24- # Check chosen board
25- macro ( DIRLIST result curdir removes )
26- file (GLOB children RELATIVE ${curdir} ${curdir} /*)
27- set (dirlist "" )
28- foreach (child ${children} )
29- if ( NOT "${child} " MATCHES ".md" )
30- string (REPLACE ".cpp" "" child ${child} )
31- string (REPLACE ".h" "" child ${child} )
32- list (APPEND dirlist ${child} )
33- endif ()
34- endforeach ()
35- if ( NOT ${removes} MATCHES OFF )
36- list (REMOVE_ITEM dirlist ${removes} )
37- endif ()
38- list (REMOVE_DUPLICATES dirlist)
39- set (${result} ${dirlist} )
40- endmacro ()
41- DIRLIST( BOARDS ${CMAKE_SOURCE_DIR} /boards "" )
42-
43- list ( FIND BOARDS ${board} board_found )
44- if ( ${board_found} LESS 0 )
45- message ( FATAL_ERROR "Board ${board} not supported.\n Available boards are :\n ${BOARDS} " )
46- endif ()
47-
48- include ( boards/${board} /board.cmake )
49- include_directories ( boards/${board} )
50- include_directories ( ${CMAKE_SOURCE_DIR} )
51- include_directories ( ${CMAKE_BINARY_DIR} )
52- add_definitions ( -DBOARD="${board} " -DBOARD_${board} )
29+ set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -ggdb3 -O0 -std=c++17 -DGE_LINUX -DGE_EGL -fpermissive -Wno-pmf-conversions -Wno-psabi" )
5330
5431include_directories ( ${CMAKE_SOURCE_DIR} /../lib/debug )
5532include_directories ( ${CMAKE_SOURCE_DIR} /../lib/controller )
@@ -60,13 +37,18 @@ if ( ${rawwifi} MATCHES "1" OR ${rawwifi} MATCHES "yes" OR ${rawwifi} MATCHES "t
6037 add_definitions ( -DBUILD_rawwifi )
6138endif ()
6239
40+ include_directories ( ${CMAKE_BINARY_DIR} )
41+ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} )
42+ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} /boards/${board} )
6343include_directories ( ${CMAKE_SOURCE_DIR} /../lib/luacore/src )
6444include_directories ( ${CMAKE_SOURCE_DIR} /../external/LuaJIT-2.0.4/src )
45+ include_directories ( ${CMAKE_SOURCE_DIR} /../lib/boards/${board} )
46+ include_directories ( ${CMAKE_SOURCE_DIR} /../lib/boards/common )
47+ include_directories ( ${CMAKE_SOURCE_DIR} /../lib/maths )
6548add_submodule( controller )
6649add_submodule( debug )
6750
6851
69- file ( GLOB_RECURSE BOARD_SOURCES boards/${board} /*.cpp boards/${board} /*.c )
7052file ( GLOB_RECURSE ADCS_SOURCES ADCs/*.cpp ADCs/*.c )
7153
7254file ( GLOB HEADERS
@@ -75,6 +57,9 @@ file( GLOB HEADERS
7557 ${CMAKE_SOURCE_DIR} /../lib/controller/*.h
7658 ${CMAKE_SOURCE_DIR} /../lib/links/*.h
7759)
60+ file ( GLOB BOARD_HEADERS ${CMAKE_SOURCE_DIR} /../lib/boards/common/*.h ${CMAKE_SOURCE_DIR} /../lib/boards/${board} /*.h )
61+ list ( APPEND HEADERS ${BOARD_HEADERS} )
62+ message ( WARNING ${HEADERS} )
7863
7964set_source_files_properties ( ${CMAKE_BINARY_DIR} /lua_init.cpp PROPERTIES GENERATED TRUE )
8065set_source_files_properties ( ${CMAKE_BINARY_DIR} /rc_data.cpp PROPERTIES GENERATED TRUE )
@@ -126,17 +111,39 @@ add_executable( controller_rc
126111 Config.cpp
127112 ui/GlobalUI.cpp
128113 ui/MainWindow.cpp
114+ boards/${board} /ControllerClient.cpp
129115 ${CMAKE_BINARY_DIR} /rc_data.cpp
130116 ${CMAKE_BINARY_DIR} /MainWindow.moc.cpp
131117 ${CMAKE_BINARY_DIR} /lua_init.cpp
132118 ${ADCS_SOURCES}
133- ${BOARD_SOURCES}
134119)
135120
136121add_dependencies ( controller_rc controller )
137122add_dependencies ( controller_rc ui_headers )
123+ if ( BOARD_DEPENDENCIES )
124+ add_dependencies ( controller_rc ${BOARD_DEPENDENCIES} )
125+ endif ()
138126
139127
140- target_link_libraries ( controller_rc -L./ controller debuglib -lrt -ldl ${RAWWIFI_LIBS} -lz pthread ${BOARD_LIBS} )
128+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--unresolved-symbols=ignore-in-shared-libs -L${CMAKE_BINARY_DIR} ${BOARD_LIBS_PATHS} " )
129+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--unresolved-symbols=ignore-in-shared-libs -L${CMAKE_BINARY_DIR} ${BOARD_LIBS_PATHS} " )
130+ set (CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -Wl,--unresolved-symbols=ignore-in-shared-libs -L${CMAKE_BINARY_DIR} ${BOARD_LIBS_PATHS} " )
131+ set (CMAKE_LINKER_FLAGS "${CMAKE_LD_FLAGS} -Wl,--unresolved-symbols=ignore-in-shared-libs -L${CMAKE_BINARY_DIR} ${BOARD_LIBS_PATHS} " )
132+ target_link_libraries (
133+ controller_rc
134+ -L./
135+ controller
136+ debuglib
137+ links
138+ boards
139+ ${RAWWIFI_LIBS}
140+ Qt5Widgets Qt5Gui Qt5PrintSupport Qt5Core
141+ -lrt
142+ -ldl
143+ -lz
144+ ${BOARD_LIBS}
145+ pthread
146+ )
147+ # set( CONTROLLER_BOARD_LIBS ${CONTROLLER_BOARD_LIBS} -lGLESv2 -lEGL )
141148
142149install ( TARGETS controller_rc RUNTIME DESTINATION bin )
0 commit comments