Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,17 @@ target_sources(scratchcpp

include(FetchContent)

# Compiler options
target_compile_options(scratchcpp PRIVATE
-fvisibility=hidden
-fvisibility-inlines-hidden
)

target_link_options(scratchcpp PRIVATE
-Wl,--exclude-libs,ALL
-Wl,-Bsymbolic
)

# zip
include(build/zip.cmake)
target_link_libraries(scratchcpp PRIVATE zip)
Expand Down Expand Up @@ -139,7 +150,11 @@ target_compile_definitions(scratchcpp PRIVATE LIBSCRATCHCPP_VERSION_MINOR=${PROJ
target_compile_definitions(scratchcpp PRIVATE LIBSCRATCHCPP_VERSION_PATCH=${PROJECT_VERSION_PATCH})

# Unit tests
target_link_libraries(scratchcpp PRIVATE scratchcpp-test-export)

if (LIBSCRATCHCPP_BUILD_UNIT_TESTS)
target_compile_definitions(scratchcpp-test-export INTERFACE LIBSCRATCHCPP_TEST)

enable_testing()
add_subdirectory(test)
endif()
40 changes: 38 additions & 2 deletions build/HunterPackages.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,47 @@ set(HUNTER_LLVM_VERSION 19.1.0)
set(HUNTER_LLVM_CMAKE_ARGS
LLVM_ENABLE_CRASH_OVERRIDES=OFF
LLVM_ENABLE_ZLIB=OFF
LLVM_ENABLE_ZSTD=OFF
LLVM_ENABLE_TERMINFO=OFF
LLVM_ENABLE_RTTI=ON
LLVM_BUILD_EXAMPLES=OFF
LLVM_BUILD_LLVM_DYLIB=OFF
LLVM_BUILD_RUNTIME=OFF
LLVM_BUILD_RUNTIMES=OFF
LLVM_BUILD_TESTS=OFF
LLVM_BUILD_TOOLS=OFF
LLVM_BUILD_LLVM_DYLIB=ON
LLVM_BUILD_UTILS=OFF
LLVM_INCLUDE_BENCHMARKS=OFF
LLVM_INCLUDE_DOCS=OFF
LLVM_INCLUDE_EXAMPLES=OFF
LLVM_INCLUDE_RUNTIMES=OFF
LLVM_INCLUDE_TESTS=OFF
LLVM_INCLUDE_TOOLS=FALSE
LLVM_INCLUDE_UTILS=OFF
LLVM_ENABLE_PLUGINS=OFF
LLVM_ENABLE_BINDINGS=OFF
LLVM_ENABLE_OCAMLDOC=OFF
LLVM_BUILD_LLJIT=OFF
LLVM_BUILD_ORC_JIT=OFF
LLVM_TOOL_LTO_BUILD=OFF
LLVM_TOOL_GOLD_BUILD=OFF
LLVM_TOOL_BUGPOINT_BUILD=OFF
LLVM_TOOL_CLANG_BUILD=OFF
LLVM_TOOL_LLDB_BUILD=OFF
LLVM_TOOL_LLI_BUILD=OFF
LLVM_TOOL_LLVM_AR_BUILD=OFF
LLVM_TOOL_LLVM_AS_BUILD=OFF
LLVM_TOOL_LLVM_BCANALYZER_BUILD=OFF
LLVM_TOOL_LLVM_CAT_BUILD=OFF
LLVM_TOOL_LLVM_CFI_VERIFY_BUILD=OFF
LLVM_TOOL_LLVM_CONFIG_BUILD=OFF
LLVM_TOOL_LLVM_COV_BUILD=OFF
LLVM_TOOL_LLVM_CVTRES_BUILD=OFF
LLVM_TOOL_LLVM_EXTRACT_BUILD=OFF
LLVM_TOOL_LLVM_LTO_BUILD=OFF
LLVM_TOOL_LLVM_LINK_BUILD=OFF
LLVM_TOOL_LLVM_SIZE_BUILD=OFF
LLVM_TOOL_LLVM_STRINGS_BUILD=OFF
LLVM_TOOL_LLVM_SYMBOLIZER_BUILD=OFF
LLVM_TARGETS_TO_BUILD=host
)

Expand Down
2 changes: 2 additions & 0 deletions include/scratchcpp/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include "enum_bitmask.h"
#include "spimpl.h"

#define BLOCK_EXPORT extern "C" LIBSCRATCHCPP_EXPORT

namespace libscratchcpp
{

Expand Down
98 changes: 49 additions & 49 deletions include/scratchcpp/value_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,55 +48,55 @@ inline constexpr Rgb rgba(int r, int g, int b, int a)

extern "C"
{
LIBSCRATCHCPP_EXPORT void value_free(ValueData *v);

LIBSCRATCHCPP_EXPORT void value_init(ValueData *v);

LIBSCRATCHCPP_EXPORT void value_assign_double(ValueData *v, double numberValue);
LIBSCRATCHCPP_EXPORT void value_assign_bool(ValueData *v, bool boolValue);
LIBSCRATCHCPP_EXPORT void value_assign_string(ValueData *v, const std::string &stringValue);
LIBSCRATCHCPP_EXPORT void value_assign_cstring(ValueData *v, const char *stringValue);
LIBSCRATCHCPP_EXPORT void value_assign_stringPtr(ValueData *v, const StringPtr *stringValue);
LIBSCRATCHCPP_EXPORT void value_assign_pointer(ValueData *v, const void *pointerValue);
LIBSCRATCHCPP_EXPORT void value_assign_copy(ValueData *v, const ValueData *another);

LIBSCRATCHCPP_EXPORT bool value_isInfinity(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isNegativeInfinity(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isNaN(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isNumber(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isValidNumber(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isInt(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isBool(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isString(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_isPointer(const ValueData *v);

LIBSCRATCHCPP_EXPORT long value_toLong(const ValueData *v);
LIBSCRATCHCPP_EXPORT int value_toInt(const ValueData *v);
LIBSCRATCHCPP_EXPORT double value_toDouble(const ValueData *v);
LIBSCRATCHCPP_EXPORT bool value_toBool(const ValueData *v);
LIBSCRATCHCPP_EXPORT void value_toString(const ValueData *v, std::string *dst);
LIBSCRATCHCPP_EXPORT void value_toStringPtr(const ValueData *v, StringPtr *dst);
LIBSCRATCHCPP_EXPORT void value_toUtf16(const ValueData *v, std::u16string *dst);
LIBSCRATCHCPP_EXPORT Rgb value_toRgba(const ValueData *v);
LIBSCRATCHCPP_EXPORT const void *value_toPointer(const ValueData *v);

LIBSCRATCHCPP_EXPORT bool value_doubleIsInt(double v);

LIBSCRATCHCPP_EXPORT void value_doubleToStringPtr(double v, StringPtr *dst);
LIBSCRATCHCPP_EXPORT const StringPtr *value_boolToStringPtr(bool v);
LIBSCRATCHCPP_EXPORT double value_stringToDouble(const StringPtr *s);
LIBSCRATCHCPP_EXPORT double value_stringToDoubleWithCheck(const StringPtr *s, bool *ok);
LIBSCRATCHCPP_EXPORT bool value_stringToBool(const StringPtr *s);

LIBSCRATCHCPP_EXPORT void value_add(const ValueData *v1, const ValueData *v2, ValueData *dst);
LIBSCRATCHCPP_EXPORT void value_subtract(const ValueData *v1, const ValueData *v2, ValueData *dst);
LIBSCRATCHCPP_EXPORT void value_multiply(const ValueData *v1, const ValueData *v2, ValueData *dst);
LIBSCRATCHCPP_EXPORT void value_divide(const ValueData *v1, const ValueData *v2, ValueData *dst);
LIBSCRATCHCPP_EXPORT void value_mod(const ValueData *v1, const ValueData *v2, ValueData *dst);

LIBSCRATCHCPP_EXPORT bool value_equals(const ValueData *v1, const ValueData *v2);
LIBSCRATCHCPP_EXPORT bool value_greater(const ValueData *v1, const ValueData *v2);
LIBSCRATCHCPP_EXPORT bool value_lower(const ValueData *v1, const ValueData *v2);
void value_free(ValueData *v);

void value_init(ValueData *v);

void value_assign_double(ValueData *v, double numberValue);
void value_assign_bool(ValueData *v, bool boolValue);
void value_assign_string(ValueData *v, const std::string &stringValue);
void value_assign_cstring(ValueData *v, const char *stringValue);
void value_assign_stringPtr(ValueData *v, const StringPtr *stringValue);
void value_assign_pointer(ValueData *v, const void *pointerValue);
void value_assign_copy(ValueData *v, const ValueData *another);

bool value_isInfinity(const ValueData *v);
bool value_isNegativeInfinity(const ValueData *v);
bool value_isNaN(const ValueData *v);
bool value_isNumber(const ValueData *v);
bool value_isValidNumber(const ValueData *v);
bool value_isInt(const ValueData *v);
bool value_isBool(const ValueData *v);
bool value_isString(const ValueData *v);
bool value_isPointer(const ValueData *v);

long value_toLong(const ValueData *v);
int value_toInt(const ValueData *v);
double value_toDouble(const ValueData *v);
bool value_toBool(const ValueData *v);
void value_toString(const ValueData *v, std::string *dst);
void value_toStringPtr(const ValueData *v, StringPtr *dst);
void value_toUtf16(const ValueData *v, std::u16string *dst);
Rgb value_toRgba(const ValueData *v);
const void *value_toPointer(const ValueData *v);

bool value_doubleIsInt(double v);

void value_doubleToStringPtr(double v, StringPtr *dst);
const StringPtr *value_boolToStringPtr(bool v);
double value_stringToDouble(const StringPtr *s);
double value_stringToDoubleWithCheck(const StringPtr *s, bool *ok);
bool value_stringToBool(const StringPtr *s);

void value_add(const ValueData *v1, const ValueData *v2, ValueData *dst);
void value_subtract(const ValueData *v1, const ValueData *v2, ValueData *dst);
void value_multiply(const ValueData *v1, const ValueData *v2, ValueData *dst);
void value_divide(const ValueData *v1, const ValueData *v2, ValueData *dst);
void value_mod(const ValueData *v1, const ValueData *v2, ValueData *dst);

bool value_equals(const ValueData *v1, const ValueData *v2);
bool value_greater(const ValueData *v1, const ValueData *v2);
bool value_lower(const ValueData *v1, const ValueData *v2);
}

} // namespace libscratchcpp
7 changes: 7 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ target_sources(scratchcpp
rect_p.h
)

add_library(scratchcpp-test-export
INTERFACE
test_export.h
)

target_include_directories(scratchcpp-test-export INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

add_subdirectory(blocks)
add_subdirectory(engine)
add_subdirectory(internal)
Expand Down
2 changes: 2 additions & 0 deletions src/audio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ if (LIBSCRATCHCPP_AUDIO_SUPPORT)
target_compile_definitions(scratchcpp-audio PUBLIC LIBSCRATCHCPP_AUDIO_SUPPORT)
endif()

target_link_libraries(scratchcpp-audio PRIVATE scratchcpp-test-export)

target_sources(scratchcpp-audio
PUBLIC
iaudioengine.h
Expand Down
5 changes: 2 additions & 3 deletions src/audio/audioinput.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

#pragma once

#include <memory>

#include "iaudioinput.h"
#include "test_export.h"

namespace libscratchcpp
{

class AudioInput : public IAudioInput
class LIBSCRATCHCPP_TEST_EXPORT AudioInput : public IAudioInput
{
public:
AudioInput();
Expand Down
3 changes: 2 additions & 1 deletion src/audio/audiooutput.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
#pragma once

#include "iaudiooutput.h"
#include "test_export.h"

namespace libscratchcpp
{

class AudioOutput : public IAudioOutput
class LIBSCRATCHCPP_TEST_EXPORT AudioOutput : public IAudioOutput
{
public:
AudioOutput();
Expand Down
4 changes: 2 additions & 2 deletions src/audio/iaudioengine.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

#pragma once

#include <memory>
#include "test_export.h"

namespace libscratchcpp
{

class IAudioEngine
class LIBSCRATCHCPP_TEST_EXPORT IAudioEngine
{
public:
virtual ~IAudioEngine() { }
Expand Down
4 changes: 1 addition & 3 deletions src/audio/internal/audioengine.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

#pragma once

#include <memory>

#include "../iaudioengine.h"

struct ma_engine;
Expand All @@ -12,7 +10,7 @@ namespace libscratchcpp
{

// This is a singleton which initializes and uninitializes the miniaudio engine
class AudioEngine : public IAudioEngine
class LIBSCRATCHCPP_TEST_EXPORT AudioEngine : public IAudioEngine
{
public:
AudioEngine();
Expand Down
3 changes: 2 additions & 1 deletion src/audio/internal/audioenginestub.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
#pragma once

#include "../iaudioengine.h"
#include "test_export.h"

namespace libscratchcpp
{

class AudioEngineStub : public IAudioEngine
class LIBSCRATCHCPP_TEST_EXPORT AudioEngineStub : public IAudioEngine
{
public:
friend class IAudioEngine;
Expand Down
3 changes: 2 additions & 1 deletion src/audio/internal/audioloudness.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
#pragma once

#include "../iaudioloudness.h"
#include "test_export.h"

struct ma_device;

namespace libscratchcpp
{

class AudioLoudness : public IAudioLoudness
class LIBSCRATCHCPP_TEST_EXPORT AudioLoudness : public IAudioLoudness
{
public:
AudioLoudness();
Expand Down
3 changes: 2 additions & 1 deletion src/audio/internal/audioloudnessstub.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
#pragma once

#include "../iaudioloudness.h"
#include "test_export.h"

namespace libscratchcpp
{

class AudioLoudnessStub : public IAudioLoudness
class LIBSCRATCHCPP_TEST_EXPORT AudioLoudnessStub : public IAudioLoudness
{
public:
AudioLoudnessStub();
Expand Down
3 changes: 2 additions & 1 deletion src/audio/internal/audioplayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
#pragma once

#include "../iaudioplayer.h"
#include "test_export.h"

struct ma_decoder;
struct ma_sound;

namespace libscratchcpp
{

class AudioPlayer : public IAudioPlayer
class LIBSCRATCHCPP_TEST_EXPORT AudioPlayer : public IAudioPlayer
{
public:
AudioPlayer();
Expand Down
3 changes: 2 additions & 1 deletion src/audio/internal/audioplayerstub.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
#pragma once

#include "../iaudioplayer.h"
#include "test_export.h"

namespace libscratchcpp
{

class AudioPlayerStub : public IAudioPlayer
class LIBSCRATCHCPP_TEST_EXPORT AudioPlayerStub : public IAudioPlayer
{
public:
AudioPlayerStub();
Expand Down
Loading