diff --git a/tools/src/CMakeLists.txt b/tools/src/CMakeLists.txt index eacaa7ff..2b3043d4 100644 --- a/tools/src/CMakeLists.txt +++ b/tools/src/CMakeLists.txt @@ -1,3 +1,6 @@ +# libraries +add_subdirectory(util) +# binaries add_subdirectory(agb2mid) add_subdirectory(aif2pcm) add_subdirectory(asset_processor) diff --git a/tools/src/util/CMakeLists.txt b/tools/src/util/CMakeLists.txt new file mode 100644 index 00000000..eb28af93 --- /dev/null +++ b/tools/src/util/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(util INTERFACE) +target_include_directories(util INTERFACE .) + +# dummy target to make sure headers compile +add_executable(util_dummy dummy.cpp) diff --git a/tools/src/util/dummy.cpp b/tools/src/util/dummy.cpp new file mode 100644 index 00000000..e64e616c --- /dev/null +++ b/tools/src/util/dummy.cpp @@ -0,0 +1,4 @@ +#include "util/file.h" + +int main() { +} diff --git a/tools/src/util/util/file.h b/tools/src/util/util/file.h new file mode 100644 index 00000000..e7054826 --- /dev/null +++ b/tools/src/util/util/file.h @@ -0,0 +1,18 @@ +#ifndef TOOLS_FILE_H +#define TOOLS_FILE_H + +#include +#include +#include +namespace util { +namespace { +auto file_ptr_deleter = [](std::FILE* file) { std::fclose(file); }; +} + +using file_ptr_t = std::unique_ptr; + +file_ptr_t open_file(std::string_view filename, std::string_view mode) { + return { std::fopen(filename.data(), mode.data()), file_ptr_deleter }; +} +} // namespace util +#endif // TOOLS_FILE_H