diff --git a/.gitignore b/.gitignore index 880eeb6..fc78ed6 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ _deps .idea .cmake logs/ +.cache +/build diff --git a/CMakeLists.txt b/CMakeLists.txt index 13d8327..c7c88aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,55 @@ CMAKE_MINIMUM_REQUIRED(VERSION 4.0.0) -PROJECT(lambdah C) +PROJECT(lambda LANGUAGES C) -SET(CMAKE_C_STANDARD 99) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +SET(CMAKE_C_STANDARD 11) SET(CMAKE_POSITION_INDEPENDENT_CODE ON) -SET(CMAKE_C_FLAGS "-O0 -g -DDEBUG=1") +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_C_FLAGS "-O0 -g3 -DDEBUG=1") +elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") + set(CMAKE_C_FLAGS "-Os") +elseif(CMAKE_BUILD_TYPE STREQUAL "RelDebInfo") + set(CMAKE_C_FLAGS "-O2 -g3") +else() # Release + set(CMAKE_C_FLAGS "-O2") +endif() -FIND_PACKAGE(JNI REQUIRED) -INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS}) +find_package(JNI REQUIRED) +add_subdirectory(src) -MESSAGE(STATUS "JNI include dirs: ${JNI_INCLUDE_DIRS}") +target_include_directories(lambda PRIVATE ${JNI_INCLUDE_DIRS}) -ADD_LIBRARY(lambdah SHARED lambda.c lambda.h) +message(STATUS "JNI include dirs: ${JNI_INCLUDE_DIRS}") + +target_include_directories( + lambda + INTERFACE + $ + $ +) + +install( + EXPORT LibLambda + FILE LibLambda.cmake + DESTINATION lib/cmake/liblambda +) + +include(CMakePackageConfigHelpers) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/LibLambdaConfig.cmake" + INSTALL_DESTINATION "lib/cmake/liblambda" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/LibLambdaConfigVersion.cmake" + VERSION "${Tutorial_VERSION_MAJOR}.${Tutorial_VERSION_MINOR}" + COMPATIBILITY AnyNewerVersion +) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/LibLambdaConfig.cmake + DESTINATION lib/cmake/liblambda +) diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 0000000..e2f3e7f --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include ( "${CMAKE_CURRENT_LIST_DIR}/LibLambda.cmake" ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..97ba9d5 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,8 @@ + +ADD_LIBRARY(lambda SHARED lambda.c lambda.h) + +set(installable_libs lambda) +install(TARGETS ${installable_libs} + DESTINATION lib + EXPORT LibLambda) +install(FILES lambda.h DESTINATION include) diff --git a/lambda.c b/src/lambda.c similarity index 95% rename from lambda.c rename to src/lambda.c index d1b59e4..cc162d1 100644 --- a/lambda.c +++ b/src/lambda.c @@ -1,6 +1,9 @@ #include "lambda.h" +#include "jni.h" +#include "jni_md.h" +#include -jboolean loaded = 0; +jboolean loaded = false; static void @@ -65,4 +68,4 @@ JNICALL JVMTI_EVENT_CLASS_PREPARE, NULL); return JNI_OK; -} \ No newline at end of file +} diff --git a/lambda.h b/src/lambda.h similarity index 99% rename from lambda.h rename to src/lambda.h index ba950c8..b9bb8c9 100644 --- a/lambda.h +++ b/src/lambda.h @@ -277,7 +277,7 @@ jboolean /* * === FUNCTION ====================================================================== * Name: lambdah_init - +* Description: Initializes various components for the interface. + * Description: Initializes various components for the interface. * ===================================================================================== */ void