Fix DLL building

This commit is contained in:
2026-01-09 14:34:38 +01:00
parent f5a58278db
commit 6ae295bcb1
4 changed files with 20 additions and 6 deletions

View File

@@ -7,10 +7,12 @@ set(CMAKE_CXX_STANDARD_REQUIRED true)
option(CTRFF_DESKTOP OFF "Buid for Desktop Platform")
option(CTRFF_3DS OFF "Build lib for 3ds")
option(CTRFF_SHARED OFF)
if(${CTRFF_3DS})
set(CTRFF_DESKTOP OFF CACHE BOOL)
set(CTRFF_BUILD_GUI OFF CACHE BOOL)
set(CTRFF_SHARED OFF CACHE BOOL)
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
if(DEFINED ENV{DEVKITPRO})
set(CMAKE_TOOLCHAIN_FILE "$ENV{DEVKITPRO}/cmake/3DS.cmake" CACHE PATH "toolchain file")
@@ -21,7 +23,7 @@ if(${CTRFF_3DS})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-psabi -O3")
endif()
add_library(ctrff STATIC
set(CTRFF_SOURCE
source/3dsx.cpp
source/bclim.cpp
source/bcstm.cpp
@@ -32,6 +34,14 @@ add_library(ctrff STATIC
source/pica.cpp
source/smdh.cpp
)
if(${CTRFF_SHARED})
add_library(ctrff SHARED ${CTRFF_SOURCE})
target_compile_definitions(ctrff PUBLIC CTRFF_SHARED)
target_compile_definitions(ctrff PRIVATE CTRFF_BUILD_SHARED)
else()
add_library(ctrff STATIC ${CTRFF_SOURCE})
endif()
target_include_directories(ctrff PUBLIC include)
if(${CTRFF_DESKTOP})

View File

@@ -92,7 +92,7 @@ class CTRFF_API BCSTM {
ctrff::u32 Size;
};
struct StreamInfo {
struct CTRFF_API StreamInfo {
StreamInfo();
ctrff::u8 Encoding;
ctrff::u8 Loop;

View File

@@ -23,7 +23,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/*
#ifdef CTRFF_SHARED
#ifdef _WIN32 // Windows (MSVC Tested)
#ifdef CTRFF_BUILD_SHARED
#define CTRFF_API __declspec(dllexport)
@@ -45,9 +46,12 @@ SOFTWARE.
#elif defined(__3DS__) // 3ds Specific
// Only Static supported
#define CTRFF_API
#else*/
#else
#define CTRFF_API
//#endif
#endif
#else
#define CTRFF_API
#endif
#include <cstddef>
#include <format>

View File

@@ -150,7 +150,7 @@ CTRFF_API std::string ctrff::U16toU8(ctrff::u16 *in, size_t max) {
} else if (c < 0x800) {
result.push_back(static_cast<char>(0xC0 | (c >> 6)));
result.push_back(static_cast<char>(0x80 | (c & 0x3F)));
} else if (c < 0x10000) {
} else if (c < 0xffff) {
result.push_back(static_cast<char>(0xE0 | (c >> 12)));
result.push_back(static_cast<char>(0x80 | ((c >> 6) & 0x3F)));
result.push_back(static_cast<char>(0x80 | (c & 0x3F)));