mirror of
https://github.com/usatiuk/dhfs.git
synced 2025-10-29 04:57:48 +01:00
a little cmake cleanup
This commit is contained in:
9
libdhfs_support/.idea/editor.xml
generated
9
libdhfs_support/.idea/editor.xml
generated
@@ -84,10 +84,15 @@
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="8" type="long" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Aexecinfo_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E4_002Esdk_003Fusr_003Finclude_003Fexecinfo_002Eh/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Amap_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E4_002Esdk_003Fusr_003Finclude_003Fc_002B_002B_003Fv1_003Fmap/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A_005F_005Ftree_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E4_002Esdk_003Fusr_003Finclude_003Fc_002B_002B_003Fv1_003F_005F_005Ftree/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Apair_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E4_002Esdk_003Fusr_003Finclude_003Fc_002B_002B_003Fv1_003F_005F_005Futility_003Fpair_002Eh/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Aarray_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E4_002Esdk_003Fusr_003Finclude_003Fc_002B_002B_003Fv1_003Farray/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Aperm_005Foptions_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E4_002Esdk_003Fusr_003Finclude_003Fc_002B_002B_003Fv1_003F_005F_005Ffilesystem_003Fperm_005Foptions_002Eh/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/Environment/Hierarchy/GeneratedFilesCacheKey/Timestamp/@EntryValue" value="12" type="long" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Ajni_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FJava_003FJavaVirtualMachines_003Fzulu_002D21_002Ejdk_003FContents_003FHome_003Finclude_003Fjni_002Eh/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A_005Fmalloc_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E5_002Esdk_003Fusr_003Finclude_003Fmalloc_003F_005Fmalloc_002Eh/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A_005Fmalloc_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FApplications_003FXcode_002Eapp_003FContents_003FDeveloper_003FPlatforms_003FMacOSX_002Eplatform_003FDeveloper_003FSDKs_003FMacOSX14_002E5_002Esdk_003Fusr_003Finclude_003Fmalloc_003F_005Fmalloc_002Eh/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Ajni_005Fmd_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FJava_003FJavaVirtualMachines_003Fzulu_002D21_002Ejdk_003FContents_003FHome_003Finclude_003Fdarwin_003Fjni_005Fmd_002Eh/@EntryIndexedValue" value="ExplicitlyExcluded" type="string" />
|
||||
<option name="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003Ajni_005Fmd_002Eh_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FJava_003FJavaVirtualMachines_003Fzulu_002D21_002Ejdk_003FContents_003FHome_003Finclude_003Fdarwin_003Fjni_005Fmd_002Eh/@EntryIndexRemoved" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,8 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.24)
|
||||
project(libdhfs_support CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
if (NOT SANITIZE)
|
||||
set(SANITIZE YES)
|
||||
@@ -12,7 +10,7 @@ endif ()
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
if (SANITIZE STREQUAL "YES")
|
||||
message(WARNING "Enabling sanitizers!")
|
||||
message(STATUS "Enabling sanitizers!")
|
||||
add_compile_options(-Werror -Wall -Wextra -pedantic -Wshadow -Wformat=2 -Wfloat-equal -D_GLIBCXX_DEBUG -Wconversion)
|
||||
check_cxx_compiler_flag(-fsanitize-trap=all CAN_TRAP)
|
||||
if (CAN_TRAP)
|
||||
@@ -33,19 +31,7 @@ if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
add_link_options(-O3)
|
||||
endif ()
|
||||
|
||||
add_compile_options(-Wno-unused-parameter)
|
||||
|
||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||
|
||||
find_package(JNI REQUIRED COMPONENTS JVM)
|
||||
find_package(Java REQUIRED)
|
||||
include(UseJava)
|
||||
|
||||
add_jar(DhfsSupportNative
|
||||
"${PROJECT_SOURCE_DIR}/../dhfs-parent/supportlib/src/main/java/com/usatiuk/dhfs/supportlib/DhfsSupportNative.java"
|
||||
"${PROJECT_SOURCE_DIR}/LibPathDummy.java"
|
||||
GENERATE_NATIVE_HEADERS DhfsSupportNative-native)
|
||||
|
||||
add_library(dhfs_support SHARED DhfsSupportNative.cpp)
|
||||
target_link_libraries(dhfs_support PRIVATE DhfsSupportNative-native)
|
||||
install(TARGETS dhfs_support LIBRARY DESTINATION "${DHFS_LIB_INSTALL}/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
add_subdirectory(helpers)
|
||||
add_subdirectory(DhfsSupportNative)
|
||||
26
libdhfs_support/DhfsSupportNative/CMakeLists.txt
Normal file
26
libdhfs_support/DhfsSupportNative/CMakeLists.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
find_package(JNI REQUIRED COMPONENTS JVM)
|
||||
find_package(Java REQUIRED)
|
||||
include(UseJava)
|
||||
|
||||
add_jar(DhfsSupportNative
|
||||
"${PROJECT_SOURCE_DIR}/../dhfs-parent/supportlib/src/main/java/com/usatiuk/dhfs/supportlib/DhfsSupportNative.java"
|
||||
"LibPathDummy.java"
|
||||
GENERATE_NATIVE_HEADERS DhfsSupportNative-native
|
||||
)
|
||||
|
||||
add_library(dhfs_support SHARED
|
||||
src/DhfsSupportNative.cpp
|
||||
)
|
||||
|
||||
target_compile_options(dhfs_support PRIVATE
|
||||
-Wno-unused-parameter
|
||||
)
|
||||
|
||||
target_link_libraries(dhfs_support PRIVATE
|
||||
helpers
|
||||
DhfsSupportNative-native
|
||||
)
|
||||
|
||||
install(TARGETS dhfs_support LIBRARY DESTINATION "${DHFS_LIB_INSTALL}/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
@@ -3,45 +3,10 @@
|
||||
#include <cstdint>
|
||||
#include <cassert>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include "com_usatiuk_dhfs_supportlib_DhfsSupportNative.h"
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
||||
#pragma GCC diagnostic ignored "-Wsign-compare"
|
||||
|
||||
template<typename To, typename From>
|
||||
constexpr To checked_cast(const From& f) {
|
||||
To result = static_cast<To>(f);
|
||||
assert(f == result);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
unsigned int get_page_size() {
|
||||
static const auto PAGE_SIZE = checked_cast<unsigned int>(sysconf(_SC_PAGESIZE));
|
||||
return PAGE_SIZE;
|
||||
}
|
||||
|
||||
template<typename T, typename A>
|
||||
T align_up(T what, A alignment) {
|
||||
assert(__builtin_popcount(alignment) == 1);
|
||||
|
||||
const T mask = checked_cast<T>(alignment - 1);
|
||||
|
||||
T ret;
|
||||
|
||||
if (what & mask)
|
||||
ret = (what + mask) & ~mask;
|
||||
else
|
||||
ret = what;
|
||||
|
||||
assert((ret & mask) == 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#include "Utils.h"
|
||||
#include "MemoryHelpers.h"
|
||||
|
||||
extern "C" {
|
||||
JNIEXPORT void JNICALL Java_com_usatiuk_dhfs_supportlib_DhfsSupportNative_hello(JNIEnv* env, jclass klass) {
|
||||
@@ -58,10 +23,10 @@ JNIEXPORT jlong JNICALL Java_com_usatiuk_dhfs_supportlib_DhfsSupportNative_alloc
|
||||
size_t checked_size = checked_cast<size_t>(size);
|
||||
|
||||
void* buf;
|
||||
if (checked_size < get_page_size())
|
||||
if (checked_size < MemoryHelpers::get_page_size())
|
||||
buf = malloc(checked_size);
|
||||
else
|
||||
buf = std::aligned_alloc(get_page_size(), align_up(checked_size, get_page_size()));
|
||||
buf = std::aligned_alloc(MemoryHelpers::get_page_size(), align_up(checked_size, MemoryHelpers::get_page_size()));
|
||||
|
||||
if (buf == nullptr) {
|
||||
env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), "Buffer memory allocation failed");
|
||||
@@ -88,6 +53,6 @@ JNIEXPORT void JNICALL Java_com_usatiuk_dhfs_supportlib_DhfsSupportNative_dropBy
|
||||
|
||||
JNIEXPORT jint JNICALL Java_com_usatiuk_dhfs_supportlib_DhfsSupportNative_getPageSizeInternal
|
||||
(JNIEnv*, jclass) {
|
||||
return checked_cast<jint>(get_page_size());
|
||||
return checked_cast<jint>(MemoryHelpers::get_page_size());
|
||||
}
|
||||
}
|
||||
9
libdhfs_support/helpers/CMakeLists.txt
Normal file
9
libdhfs_support/helpers/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
add_library(helpers
|
||||
include/MemoryHelpers.h
|
||||
src/MemoryHelpers.cpp
|
||||
include/Utils.h
|
||||
)
|
||||
|
||||
target_include_directories(helpers PUBLIC include)
|
||||
12
libdhfs_support/helpers/include/MemoryHelpers.h
Normal file
12
libdhfs_support/helpers/include/MemoryHelpers.h
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// Created by stepus53 on 24.8.24.
|
||||
//
|
||||
|
||||
#ifndef MEMORYHELPERS_H
|
||||
#define MEMORYHELPERS_H
|
||||
|
||||
namespace MemoryHelpers {
|
||||
unsigned int get_page_size();
|
||||
}
|
||||
|
||||
#endif //MEMORYHELPERS_H
|
||||
41
libdhfs_support/helpers/include/Utils.h
Normal file
41
libdhfs_support/helpers/include/Utils.h
Normal file
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// Created by stepus53 on 24.8.24.
|
||||
//
|
||||
|
||||
#ifndef UTILS_H
|
||||
#define UTILS_H
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
||||
#pragma GCC diagnostic ignored "-Wsign-compare"
|
||||
|
||||
template<typename To, typename From>
|
||||
constexpr To checked_cast(const From& f) {
|
||||
To result = static_cast<To>(f);
|
||||
assert(f == result);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
template<typename T, typename A>
|
||||
T align_up(T what, A alignment) {
|
||||
assert(__builtin_popcount(alignment) == 1);
|
||||
|
||||
const T mask = checked_cast<T>(alignment - 1);
|
||||
|
||||
T ret;
|
||||
|
||||
if (what & mask)
|
||||
ret = (what + mask) & ~mask;
|
||||
else
|
||||
ret = what;
|
||||
|
||||
assert((ret & mask) == 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif //UTILS_H
|
||||
16
libdhfs_support/helpers/src/MemoryHelpers.cpp
Normal file
16
libdhfs_support/helpers/src/MemoryHelpers.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// Created by stepus53 on 24.8.24.
|
||||
//
|
||||
|
||||
#include "MemoryHelpers.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include "Utils.h"
|
||||
|
||||
using namespace MemoryHelpers;
|
||||
|
||||
unsigned int get_page_size() {
|
||||
static const auto PAGE_SIZE = checked_cast<unsigned int>(sysconf(_SC_PAGESIZE));
|
||||
return PAGE_SIZE;
|
||||
}
|
||||
Reference in New Issue
Block a user