blob: 01bf27f15ccedef1fcc25aacc3b3d001abc8fd75 (
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
cmake_minimum_required(VERSION 3.18)
set(CMAKE_CXX_STANDARD 23)
include_guard(GLOBAL)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC OFF)
# set(TARGET_SYSROOT /home/nikita/rpi/rpi-sysroot)
set(TARGET_SYSROOT /home/nikita/rpi/rpi_zero-sysroot)
set(CMAKE_SYSROOT ${TARGET_SYSROOT})
message("CMAKE_SYSROOT: ${CMAKE_SYSROOT}")
set(CMAKE_LIBRARY_PATH ${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu)
# arch:
set(ENV{PKG_CONFIG_PATH} $PKG_CONFIG_PATH:/usr/lib/aarch64-linux-gnu/pkgconfig)
# gentoo:
# set(ENV{PKG_CONFIG_PATH} $PKG_CONFIG_PATH:/usr/lib/aarch64-rpi5-linux-gnu/pkgconfig)
set(ENV{PKG_CONFIG_LIBDIR} /usr/lib/pkgconfig:/usr/share/pkgconfig/:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig:${TARGET_SYSROOT}/usr/lib/pkgconfig)
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/include")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
# NOTE: on your rpi you'll need to install
# libcamera-dev, libcamera-ipa (TODO: check if ipa is needed)
# libqt6gui6
# libqt6httpserver6
# libqt6serialport6 (if you want to control your 3d printer from rpi)
# libtbb-dev (or just comment out source code related to execution policies)
# libpistache-dev - TODO: remove this dep, orpheus uses qt http server
# don't forget to rsync local copy of rpi fs with real rpi fs
# NOTE: to be able to run orpheus remotely from QtCreator, run this on your RPI:
# $ sudo chown -R user:adm /usr/local/bin/
# NOTE: to use rotary encoder you'll need WiringPi which is not in rpi repos, so
# $ git clone https://github.com/WiringPi/WiringPi.git
# check README.md for installation instructions. You may get this while installing
# .deb package, but it's ok:
# N: Download is performed unsandboxed as root as file
# '/home/user/git/third_party/WiringPi/wiringpi_3.12_arm64.deb' couldn't be
# accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
# NOTE: I've added ld symlink on host to be able to run moc
# arch:
# sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
# gentoo:
# sudo ln -s /usr/aarch64-rpi5-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
#
# TODO: check how to add this env var to cmake, it's needed to run moc,
# otherwise you'll get the following error
#
# ...../rpi-sysroot/usr/lib/qt6/libexec/moc: error while loading shared libraries:
# libpcre2-16.so.0: cannot open shared object file: No such file or directory
#
# export this path for qtcreator:
# LD_LIBRARY_PATH=/home/nikita/rpi/rpi-sysroot/usr/lib/aarch64-linux-gnu/:$LD_LIBRARY_PATH
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT})
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBCAMERA REQUIRED IMPORTED_TARGET libcamera)
find_library(LIBCAMERA_LIBRARY libcamera.so REQUIRED)
find_library(LIBCAMERA_BASE_LIBRARY libcamera-base.so REQUIRED)
message(STATUS ${CAMERA_INCLUDE_DIRS})
message(STATUS ${LIBCAMERA_LIBRARY})
message(STATUS ${LIBCAMERA_BASE_LIBRARY})
pkg_check_modules(CAMERA REQUIRED libcamera)
set(LIBCAMERA_LIBRARIES "${LIBCAMERA_LIBRARY}" "${LIBCAMERA_BASE_LIBRARY}")
project(orpheus LANGUAGES CXX)
find_package(OpenMP)
if (OPENMP_FOUND)
message("found openmp")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
find_package(Qt6 6.4 REQUIRED COMPONENTS Gui Quick HttpServer SerialPort)
find_package(TBB REQUIRED)
qt_standard_project_setup(REQUIRES 6.4)
include_directories(. "${CAMERA_INCLUDE_DIRS}" src)
# libpistache
pkg_check_modules(Pistache REQUIRED IMPORTED_TARGET libpistache)
# add_executable(${PROJECT_NAME}
qt_add_executable(apporpheus
httpservice.h
httpservice.cpp
imagealgos.h
imagealgos.cpp
macro.h
main.cpp
LibCamera.h
LibCamera.cpp
genetic_algos.h
genetic_algos.cpp
rotaryencoder.h
rotaryencoder.cpp
printerclient.h
printerclient.cpp
fuck_intel.h
src/pixels.h src/pixels.cpp
src/constants.h
src/typedefs.h
src/dumps.h src/dumps.cpp
src/calibration.h src/calibration.cpp
profile.h profile.cpp
src/camera/ov9281.h src/camera/ov9281.cpp
src/image.h src/image.cpp
src/laser.h src/laser.cpp
src/camera/innomakerov9281.h src/camera/innomakerov9281.cpp
src/camera/icamera.h
)
target_link_libraries(app${PROJECT_NAME}
PRIVATE
"${LIBCAMERA_LIBRARIES}"
PkgConfig::Pistache
Qt6::Gui
Qt6::HttpServer
Qt6::SerialPort
wiringPi
TBB::tbb
)
include(GNUInstallDirs)
install(TARGETS app${PROJECT_NAME}
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if ("${CMAKE_BUILD_TYPE}" MATCHES "Release")
# message("it's Debug")
else()
#message("it's not Debug")
endif()
# add_compile_options(-Wall -Wextra -Wpedantic)
add_compile_options(-Ofast -fno-unroll-loops -Wall)
|