PIP_NO_FILESYSTEM and PIP_NO_THREADS
This commit is contained in:
16
AGENTS.md
16
AGENTS.md
@@ -5,28 +5,28 @@
|
||||
### Basic Build
|
||||
```bash
|
||||
# Configure with CMake (release build)
|
||||
cmake -B build
|
||||
cmake -B build -j16
|
||||
|
||||
# Build the project
|
||||
cmake --build build
|
||||
cmake --build build -j16
|
||||
|
||||
# Install (default system location)
|
||||
cmake --build build --target install
|
||||
cmake --build build --target install -j16
|
||||
|
||||
# Local install (bin/lib/include in build directory)
|
||||
cmake -B build -DLOCAL=ON
|
||||
cmake -B build -DLOCAL=ON -j16
|
||||
```
|
||||
|
||||
### With Tests
|
||||
```bash
|
||||
cmake -B build -DTESTS=ON
|
||||
cmake --build build
|
||||
cmake -B build -DTESTS=ON -j16
|
||||
cmake --build build -j16
|
||||
cd build && ctest
|
||||
```
|
||||
|
||||
### Build Only
|
||||
```bash
|
||||
cmake --build build
|
||||
cmake --build build -j16
|
||||
```
|
||||
|
||||
### Run Single Test
|
||||
@@ -162,4 +162,4 @@ libs/
|
||||
- Project uses custom CMake macros from `cmake/` directory
|
||||
- Version format: `MAJOR.MINOR.REVISION` (e.g., 5.6.0)
|
||||
- All files have LGPL license header
|
||||
- Support for multiple platforms: Windows, Linux, QNX, Android, Apple
|
||||
- Support for multiple platforms: Windows, Linux, QNX, Android, Apple
|
||||
|
||||
@@ -69,6 +69,8 @@ option(STD_IOSTREAM "Building with std iostream operators support" OFF)
|
||||
option(INTROSPECTION "Build with introspection" OFF)
|
||||
option(TESTS "Build tests and perform their before install step" OFF)
|
||||
option(COVERAGE "Build project with coverage info" OFF)
|
||||
option(PIP_NO_FILESYSTEM "Disable filesystem support" OFF)
|
||||
option(PIP_NO_THREADS "Disable threading support" OFF)
|
||||
option(PIP_FFTW_F "Support fftw module for float" ON)
|
||||
option(PIP_FFTW_L "Support fftw module for long double" ON)
|
||||
option(PIP_FFTW_Q "Support fftw module for quad double" OFF)
|
||||
@@ -231,9 +233,17 @@ if(PIP_FREERTOS)
|
||||
endif()
|
||||
if(DEFINED PICO_BOARD)
|
||||
add_definitions(-DPICO_SDK)
|
||||
set(PIP_NO_FILESYSTEM ON CACHE BOOL "" FORCE)
|
||||
message(STATUS "Building PIP for Pi Pico SDK ${PICO_SDK_VERSION_STRING}")
|
||||
endif()
|
||||
|
||||
if(PIP_NO_FILESYSTEM)
|
||||
add_definitions(-DPIP_NO_FILESYSTEM)
|
||||
endif()
|
||||
if(PIP_NO_THREADS)
|
||||
add_definitions(-DPIP_NO_THREADS)
|
||||
endif()
|
||||
|
||||
# Check Bessel functions
|
||||
set(CMAKE_REQUIRED_INCLUDES math.h)
|
||||
set(CMAKE_REQUIRED_LIBRARIES m)
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
class PIFile;
|
||||
class PIStringList;
|
||||
class PIInit;
|
||||
|
||||
|
||||
class PIP_EXPORT __PIInit_Initializer__ {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef PIP_NO_FILESYSTEM
|
||||
#include "pidir.h"
|
||||
|
||||
#include "piincludes_p.h"
|
||||
@@ -610,3 +611,4 @@ void PIDir::CurrentDirOverrider::save(const PIFile::FileInfo & info) {
|
||||
else
|
||||
PIDir::setCurrent(PIDir::current().path() + PIDir::separator + p);
|
||||
}
|
||||
#endif // PIP_NO_FILESYSTEM
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "piregularexpression.h"
|
||||
|
||||
|
||||
#ifndef PIP_NO_FILESYSTEM
|
||||
//! \ingroup IO
|
||||
//! \~\brief
|
||||
//! \~english Local directory.
|
||||
@@ -217,8 +218,10 @@ private:
|
||||
|
||||
PIString path_, scan_;
|
||||
};
|
||||
#endif // PIP_NO_FILESYSTEM
|
||||
|
||||
|
||||
#ifndef PIP_NO_FILESYSTEM
|
||||
inline bool operator<(const PIFile::FileInfo & v0, const PIFile::FileInfo & v1) {
|
||||
return (v0.path < v1.path);
|
||||
}
|
||||
@@ -242,6 +245,7 @@ inline PICout operator<<(PICout s, const PIDir & v) {
|
||||
s.restoreControls();
|
||||
return s;
|
||||
}
|
||||
#endif // PIP_NO_FILESYSTEM
|
||||
|
||||
|
||||
#endif // PIDIR_H
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PIP_NO_FILESYSTEM
|
||||
#include "pifile.h"
|
||||
|
||||
#include "pidir.h"
|
||||
@@ -635,3 +636,4 @@ int PIFile::writeAll(const PIString & path, const PIByteArray & data) {
|
||||
f.clear();
|
||||
return f.write(data.data(), data.size_s());
|
||||
}
|
||||
#endif // PIP_NO_FILESYSTEM
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "pipropertystorage.h"
|
||||
|
||||
|
||||
#ifndef PIP_NO_FILESYSTEM
|
||||
//! \ingroup IO
|
||||
//! \~\brief
|
||||
//! \~english Local file.
|
||||
@@ -345,8 +346,10 @@ private:
|
||||
llong _size = -1;
|
||||
PIString prec_str;
|
||||
};
|
||||
#endif // PIP_NO_FILESYSTEM
|
||||
|
||||
|
||||
#ifndef PIP_NO_FILESYSTEM
|
||||
//! \relatesalso PICout
|
||||
//! \~english Output operator to \a PICout
|
||||
//! \~russian Оператор вывода в \a PICout
|
||||
@@ -377,5 +380,6 @@ BINARY_STREAM_READ(PIFile::FileInfo) {
|
||||
v.perm_group.raw >> v.perm_other.raw;
|
||||
return s;
|
||||
}
|
||||
#endif // PIP_NO_FILESYSTEM
|
||||
|
||||
#endif // PIFILE_H
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
# define PIP_NO_THREADS
|
||||
# endif
|
||||
# ifndef LWIP
|
||||
# define PIP_NO_SOCKET
|
||||
# define PIP_NO_SOCKET
|
||||
# endif
|
||||
# define PISERIAL_NO_PINS
|
||||
#endif
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
# define _WIN32_WINNT 0x0600
|
||||
#endif
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
#include "piconditionvar.h"
|
||||
#include "piincludes_p.h"
|
||||
#ifdef WINDOWS
|
||||
@@ -179,3 +180,4 @@ void PIConditionVariable::notifyAll() {
|
||||
pthread_cond_broadcast(&PRIVATE->nativeHandle);
|
||||
#endif
|
||||
}
|
||||
#endif // PIP_NO_THREADS
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "pisystemtime.h"
|
||||
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
/**
|
||||
* \brief A condition variable is an object able to block the calling thread until notified to resume.
|
||||
*
|
||||
@@ -121,5 +122,5 @@ private:
|
||||
PRIVATE_DECLARATION(PIP_EXPORT)
|
||||
};
|
||||
|
||||
|
||||
#endif // PIP_NO_THREADS
|
||||
#endif // PICONDITIONVAR_H
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
//! \}
|
||||
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
#include "pimutex.h"
|
||||
|
||||
#include "piincludes_p.h"
|
||||
@@ -228,3 +229,4 @@ void PIMutex::destroy() {
|
||||
pthread_mutex_destroy(&(PRIVATE->mutex));
|
||||
#endif
|
||||
}
|
||||
#endif // PIP_NO_THREADS
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "piinit.h"
|
||||
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
class PIP_EXPORT PIMutex {
|
||||
public:
|
||||
NO_COPY_CLASS(PIMutex);
|
||||
@@ -85,5 +86,5 @@ private:
|
||||
bool cond;
|
||||
};
|
||||
|
||||
|
||||
#endif // PIP_NO_THREADS
|
||||
#endif // PIMUTEX_H
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
#include "pithread.h"
|
||||
|
||||
#include "piincludes_p.h"
|
||||
@@ -1086,3 +1087,4 @@ bool PIThread::_waitForFinish(PISystemTime max_tm) {
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
#endif // PIP_NO_THREADS
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
class PIThread;
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
#ifndef MICRO_PIP
|
||||
class PIIntrospectionThreads;
|
||||
|
||||
@@ -304,5 +305,5 @@ private:
|
||||
void setThreadName();
|
||||
};
|
||||
|
||||
|
||||
#endif // PIP_NO_THREADS
|
||||
#endif // PITHREAD_H
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
#include "pitimer.h"
|
||||
|
||||
#include "piconditionvar.h"
|
||||
@@ -302,3 +303,4 @@ void PITimer::stop() {
|
||||
thread->stop();
|
||||
event.notifyAll();
|
||||
}
|
||||
#endif // PIP_NO_THREADS
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
class PIThread;
|
||||
|
||||
#ifndef PIP_NO_THREADS
|
||||
class PIP_EXPORT PITimer: public PIObject {
|
||||
PIOBJECT_SUBCLASS(PITimer, PIObject);
|
||||
|
||||
@@ -209,5 +210,5 @@ protected:
|
||||
PIConditionVariable event;
|
||||
};
|
||||
|
||||
|
||||
#endif // PIP_NO_THREADS
|
||||
#endif // PITIMER_H
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
# include "pisystemtests.h"
|
||||
#elif defined(ARDUINO)
|
||||
# include <Arduino.h>
|
||||
#elif defined(PICO_SDK)
|
||||
# include "hardware/time.h"
|
||||
#endif
|
||||
#ifdef MICRO_PIP
|
||||
# include <sys/time.h>
|
||||
@@ -48,28 +50,13 @@
|
||||
void piUSleep(int usecs) {
|
||||
if (usecs <= 0) return;
|
||||
#ifdef WINDOWS
|
||||
// printf("Sleep %d\n", usecs / 1000);
|
||||
if (usecs > 0) Sleep(usecs / 1000);
|
||||
// printf("Sleep end");
|
||||
#else
|
||||
# ifdef FREERTOS
|
||||
Sleep(usecs / 1000);
|
||||
#elif defined(FREERTOS)
|
||||
vTaskDelay(usecs / 1000 / portTICK_PERIOD_MS);
|
||||
# else
|
||||
# ifdef MICRO_PIP
|
||||
if (usecs > 0) {
|
||||
struct timeval start;
|
||||
gettimeofday(&start, nullptr);
|
||||
long long elapsed = 0;
|
||||
while (elapsed < usecs) {
|
||||
struct timeval now;
|
||||
gettimeofday(&now, nullptr);
|
||||
elapsed = (now.tv_sec - start.tv_sec) * 1000000LL + (now.tv_usec - start.tv_usec);
|
||||
}
|
||||
}
|
||||
# else
|
||||
#elif defined(PICO_SDK)
|
||||
sleep_us(usecs);
|
||||
#else
|
||||
usecs -= PISystemTests::usleep_offset_us;
|
||||
if (usecs > 0) usleep(usecs);
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user