diff --git a/CMakeLists.txt b/CMakeLists.txt index 242b7d0..7513617 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}) diff --git a/include/ctrff/bcstm.hpp b/include/ctrff/bcstm.hpp index 93a41ca..66f3402 100644 --- a/include/ctrff/bcstm.hpp +++ b/include/ctrff/bcstm.hpp @@ -92,7 +92,7 @@ class CTRFF_API BCSTM { ctrff::u32 Size; }; - struct StreamInfo { + struct CTRFF_API StreamInfo { StreamInfo(); ctrff::u8 Encoding; ctrff::u8 Loop; diff --git a/include/ctrff/types.hpp b/include/ctrff/types.hpp index 29ee1d4..a2131a8 100644 --- a/include/ctrff/types.hpp +++ b/include/ctrff/types.hpp @@ -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 #include diff --git a/source/helper.cpp b/source/helper.cpp index dbdd816..ef073fd 100644 --- a/source/helper.cpp +++ b/source/helper.cpp @@ -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(0xC0 | (c >> 6))); result.push_back(static_cast(0x80 | (c & 0x3F))); - } else if (c < 0x10000) { + } else if (c < 0xffff) { result.push_back(static_cast(0xE0 | (c >> 12))); result.push_back(static_cast(0x80 | ((c >> 6) & 0x3F))); result.push_back(static_cast(0x80 | (c & 0x3F)));