compliant with giteapc

This commit is contained in:
Sylvain PILLOT 2022-05-09 18:30:57 +02:00
parent 167c60e518
commit 54554172a6
2 changed files with 128 additions and 0 deletions

79
CMakeLists.txt Normal file
View File

@ -0,0 +1,79 @@
cmake_minimum_required(VERSION 3.16)
project(Libcjpg VERSION 1.5.30 LANGUAGES C)
find_package(Gint 2.7.1 REQUIRED)
set(SOURCES
jcapimin.c
jcapistd.c
jdapimin.c
jdapistd.c
jcomapi.c
jcparam.c
jctrans.c
jdtrans.c
jcinit.c
jcmaster.c
jcmainct.c
jcprepct.c
jccoefct.c
jccolor.c
jcsample.c
jcdctmgr.c
jfdctint.c
jfdctfst.c
jfdctflt.c
jchuff.c
jcarith.c
jcmarker.c
jdatadst.c
jdmaster.c
jdinput.c
jdmainct.c
jdcoefct.c
jdpostct.c
jdmarker.c
jdhuff.c
jdarith.c
jddctmgr.c
jidctint.c
jidctfst.c
jidctflt.c
jdsample.c
jdcolor.c
jdmerge.c
jquant1.c
jquant2.c
jdatasrc.c
jaricom.c
jerror.c
jmemmgr.c
jutils.c
jmemname.c
)
include_directories(
"${PROJECT_SOURCE_DIR}"
"${PROJECT_BINARY_DIR}/include"
"${FXSDK_COMPILER_INSTALL}/include"
"${FXSDK_COMPILER_INSTALL}/include/openlibm")
add_compile_options(-Os -lm -m4-nofpu -mb -std=c11 -ffreestanding -nostdlib -Wa,--dsp)
# Target name is "cJPG", output file is "libcJPG.a" (by default)
add_library(cJPG STATIC ${SOURCES})
# After building, install the target (that is, libcJPG.a) in the compiler
install(TARGETS cPNG
DESTINATION "${FXSDK_COMPILER_INSTALL}")
# Install jpeglib.h from the build dir
install(FILES "${PROJECT_SOURCE_DIR}/jpeglib.h"
DESTINATION "${FXSDK_COMPILER_INSTALL}/include")
# Install jconfig.h from the build dir
install(FILES "${PROJECT_SOURCE_DIR}/jconfig.h"
DESTINATION "${FXSDK_COMPILER_INSTALL}/include")
# Install jmorecfg.h from the build dir
install(FILES "${PROJECT_SOURCE_DIR}/jmorecfg.h"
DESTINATION "${FXSDK_COMPILER_INSTALL}/include")
# Install jerror.h from the build dir
install(FILES "${PROJECT_SOURCE_DIR}/jerror.h"
DESTINATION "${FXSDK_COMPILER_INSTALL}/include")
# Install FindcPNG.cmake so that users can do find_package(LibcPNG)
install(FILES cmake/FindcJPG.cmake
DESTINATION "${FXSDK_CMAKE_MODULE_PATH}")

49
cmake/FindcJPG.cmake Normal file
View File

@ -0,0 +1,49 @@
find_package(Gint 2.7 REQUIRED)
# Find libexample.a; if we had platform-specific versions we could look for
# libexample-${FXSDK_PLATFORM}.a instead.
execute_process(
COMMAND ${CMAKE_C_COMPILER} -print-file-name=libcJPG.a
OUTPUT_VARIABLE EX_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
# EX_PATH is now the full path if libustl.a exists, "libustl.a" otherwise
if(NOT "${EX_PATH}" STREQUAL "libcPNG.a")
# Find the version.h header
execute_process(
COMMAND ${CMAKE_C_COMPILER} -print-file-name=include/jconfig.h
OUTPUT_VARIABLE EX_CONFIG OUTPUT_STRIP_TRAILING_WHITESPACE)
# Extract version information from the config.h header. This command prints
# the version on the line matching the regex and deletes every other line.
execute_process(
COMMAND sed -E "s/#define.*EX_VERSION\\s+\"(\\S+)\"$/\\1/p; d" ${EX_CONFIG}
OUTPUT_VARIABLE EX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
# The commands above seem common for gint libraries, so the fxSDK provides a
# helper function to get that directly. We simply provide the archive name,
# header file name, macro name, and names for output variables.
# include(FindSimpleLibrary)
# find_simple_library(libexample.a include/example/config.h "EX_VERSION"
# PATH_VAR EX_PATH VERSION_VAR EX_VERSION)
# This CMake utility will handle the version comparisons and other checks. We
# just specify:
# -> Some variables that are defined only if the library is found (so if
# they're undefined, CMake will conclude libexample was not found)
# -> The version, so CMake can compare with the user's requested one
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libcJPG
REQUIRED_VARS EX_CONFIG EX_VERSION
VERSION_VAR EX_VERSION)
# We now have a LibExample_FOUND variable, let's create the target that users
# can link against with target_link_libraries()
if(LibcJPG_FOUND)
# This is an imported target, we don't build it, we just claim it's here
add_library(libcJPG::libcJPG UNKNOWN IMPORTED)
# Here we declare the compiler and linker flags that every user of LibExample
# needs to use.
set_target_properties(libcJPG::libcJPG PROPERTIES
# If we specify where the library comes from, CMake will watch that file
# and relink any user application when the library is updated!
IMPORTED_LOCATION "${EX_PATH}"
# Linking options
INTERFACE_LINK_OPTIONS -lcJPG
# Dependencies (for order on the command-line)
IMPORTED_LINK_INTERFACE_LIBRARIES Gint::Gint)
endif()