diff --git a/CMakeLists.txt b/CMakeLists.txt index fcd3408..4befbc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,11 +2,9 @@ cmake_minimum_required(VERSION 3.18) project(libimg VERSION 2.2.1 LANGUAGES C) - find_package(Gint 2.2.1 REQUIRED) -add_compile_options(-Wall -Wextra -std=c11 -Os) -include_directories("${CMAKE_CURRENT_SOURCE_DIR}") +configure_file(libimg.h libimg.h) set(SOURCES src/alloc.c @@ -20,8 +18,15 @@ set(SOURCES ) set(NAME "img-${FXSDK_PLATFORM}") -add_library("${NAME}" STATIC ${SOURCES}) -target_link_libraries("${NAME}" Gint::Gint) +add_library(${NAME} STATIC ${SOURCES}) -install(TARGETS "${NAME}" DESTINATION "${FXSDK_COMPILER_INSTALL}") -install(FILES libimg.h DESTINATION "${FXSDK_COMPILER_INSTALL}/include") +target_compile_options(${NAME} PUBLIC -Wall -Wextra -std=c11 -Os) +target_include_directories(${NAME} PUBLIC "${CMAKE_CURRENT_BINARY_DIR}") +target_link_libraries(${NAME} Gint::Gint) + +install(TARGETS ${NAME} + DESTINATION "${FXSDK_COMPILER_INSTALL}") +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libimg.h" + DESTINATION "${FXSDK_COMPILER_INSTALL}/include") +install(FILES cmake/FindLibImg.cmake + DESTINATION "${FXSDK_CMAKE_MODULE_PATH}") diff --git a/cmake/FindLibImg.cmake b/cmake/FindLibImg.cmake new file mode 100644 index 0000000..ddd074c --- /dev/null +++ b/cmake/FindLibImg.cmake @@ -0,0 +1,16 @@ +include(FindSimpleLibrary) +include(FindPackageHandleStandardArgs) + +find_simple_library("libimg-${FXSDK_PLATFORM}.a" include/libimg.h + "IMG_VERSION" PATH_VAR IMG_PATH VERSION_VAR IMG_VERSION) + +find_package_handle_standard_args(LibImg + REQUIRED_VARS IMG_PATH IMG_VERSION + VERSION_VAR IMG_VERSION) + +if(LibImg_FOUND) + add_library(LibImg::LibImg UNKNOWN IMPORTED) + set_target_properties(LibImg::LibImg PROPERTIES + IMPORTED_LOCATION "${IMG_PATH}" + INTERFACE_LINK_OPTIONS -limg-${FXSDK_PLATFORM}) +endif() diff --git a/libimg.h b/libimg.h index 59ca852..4172e88 100644 --- a/libimg.h +++ b/libimg.h @@ -4,6 +4,9 @@ #include #include +/* This is substituted by CMake at compile-time */ +#define IMG_VERSION "@libimg_VERSION@" + #ifdef FX9860G /* On fx-9860G, the format is 8-bit per color. Although there are much less than 256 colors (you could find 9 at best including partially-transparent