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_DESKTOP OFF "Buid for Desktop Platform")
option(CTRFF_3DS OFF "Build lib for 3ds") option(CTRFF_3DS OFF "Build lib for 3ds")
option(CTRFF_SHARED OFF)
if(${CTRFF_3DS}) if(${CTRFF_3DS})
set(CTRFF_DESKTOP OFF CACHE BOOL) set(CTRFF_DESKTOP OFF CACHE BOOL)
set(CTRFF_BUILD_GUI OFF CACHE BOOL) set(CTRFF_BUILD_GUI OFF CACHE BOOL)
set(CTRFF_SHARED OFF CACHE BOOL)
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
if(DEFINED ENV{DEVKITPRO}) if(DEFINED ENV{DEVKITPRO})
set(CMAKE_TOOLCHAIN_FILE "$ENV{DEVKITPRO}/cmake/3DS.cmake" CACHE PATH "toolchain file") 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") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-psabi -O3")
endif() endif()
add_library(ctrff STATIC set(CTRFF_SOURCE
source/3dsx.cpp source/3dsx.cpp
source/bclim.cpp source/bclim.cpp
source/bcstm.cpp source/bcstm.cpp
@@ -32,6 +34,14 @@ add_library(ctrff STATIC
source/pica.cpp source/pica.cpp
source/smdh.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) target_include_directories(ctrff PUBLIC include)
if(${CTRFF_DESKTOP}) if(${CTRFF_DESKTOP})

View File

@@ -92,7 +92,7 @@ class CTRFF_API BCSTM {
ctrff::u32 Size; ctrff::u32 Size;
}; };
struct StreamInfo { struct CTRFF_API StreamInfo {
StreamInfo(); StreamInfo();
ctrff::u8 Encoding; ctrff::u8 Encoding;
ctrff::u8 Loop; 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 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
/*
#ifdef CTRFF_SHARED
#ifdef _WIN32 // Windows (MSVC Tested) #ifdef _WIN32 // Windows (MSVC Tested)
#ifdef CTRFF_BUILD_SHARED #ifdef CTRFF_BUILD_SHARED
#define CTRFF_API __declspec(dllexport) #define CTRFF_API __declspec(dllexport)
@@ -45,9 +46,12 @@ SOFTWARE.
#elif defined(__3DS__) // 3ds Specific #elif defined(__3DS__) // 3ds Specific
// Only Static supported // Only Static supported
#define CTRFF_API #define CTRFF_API
#else*/ #else
#define CTRFF_API #define CTRFF_API
//#endif #endif
#else
#define CTRFF_API
#endif
#include <cstddef> #include <cstddef>
#include <format> #include <format>

View File

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