Description: Prefer a cmake based build system Author: Mathieu Malaterre Forwarded: https://jxrlib.codeplex.com/discussions/440294 Index: jxrlib-1.1/CMakeLists.txt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ b/CMakeLists.txt 2014-03-26 17:05:04.429637801 +0100 @@ -0,0 +1,134 @@ +# Copyright Mathieu Malaterre +# BSD (Same as jxrlib) +cmake_minimum_required(VERSION 2.8) +project(jxrlib C) + +# Need shared libs for ABI +set(BUILD_SHARED_LIBS ON) + +# helper macro to preserve original Makefile convention +macro(JXR_MAKE_OBJ SET_NAME) + foreach(src ${SRC_${SET_NAME}}) + list(APPEND OBJ_${SET_NAME} ${DIR_${SET_NAME}}/${src}) + endforeach() +endmacro() + +include(TestBigEndian) +test_big_endian(ISBIGENDIAN) +if(ISBIGENDIAN) + set(DEF_ENDIAN _BIG__ENDIAN_) +endif() + +set(DIR_SYS image/sys) +set(DIR_DEC image/decode) +set(DIR_ENC image/encode) + +set(DIR_GLUE jxrgluelib) +set(DIR_TEST jxrtestlib) +set(DIR_EXEC jxrencoderdecoder) + +if(NOT JXRLIB_INSTALL_BIN_DIR) + set(JXRLIB_INSTALL_BIN_DIR "bin") +endif() + +if(NOT JXRLIB_INSTALL_LIB_DIR) + set(JXRLIB_INSTALL_LIB_DIR "lib") +endif() + +if(NOT JXRLIB_INSTALL_INCLUDE_DIR) + set(JXRLIB_INSTALL_INCLUDE_DIR "include/jxrlib") +endif() + +include_directories( + common/include + ${DIR_SYS} + ${DIR_GLUE} + ${DIR_TEST} +) + +# where is strlcpy ? +include(CheckSymbolExists) +check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY) +#set(CMAKE_REQUIRED_LIBRARIES bsd) +#CHECK_SYMBOL_EXISTS(strlcpy "string.h" HAVE_STRLCPY4) +# on linux, strlcpy is in -lbsd: +#if(NOT HAVE_STRLCPY) +# include(CheckLibraryExists) +# find_library(BSD_LIBRARY bsd) +# check_library_exists(bsd "strlcpy" ${BSD_LIBRARY} HAVE_STRLCPY_BSD) +#endif() + +# JPEG-XR +set(SRC_SYS adapthuff.c image.c strcodec.c strPredQuant.c strTransform.c perfTimerANSI.c) +JXR_MAKE_OBJ(SYS) +set(SRC_DEC decode.c postprocess.c segdec.c strdec.c strInvTransform.c strPredQuantDec.c JXRTranscode.c) +JXR_MAKE_OBJ(DEC) +set(SRC_ENC encode.c segenc.c strenc.c strFwdTransform.c strPredQuantEnc.c) +JXR_MAKE_OBJ(ENC) + +add_library(jpegxr ${OBJ_ENC} ${OBJ_DEC} ${OBJ_SYS}) +set_property(TARGET jpegxr + PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN} +) +set_property(TARGET jpegxr PROPERTY LINK_INTERFACE_LIBRARIES "") +set_property(TARGET jpegxr PROPERTY COMPILE_FLAGS -w) +# VERSION/SOVERSION +set_property(TARGET jpegxr PROPERTY VERSION 1.1) +set_property(TARGET jpegxr PROPERTY SOVERSION 0) +install(TARGETS jpegxr + EXPORT JXRLibTargets + RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications + LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries +) + +# JXR-GLUE +set(SRC_GLUE JXRGlue.c JXRMeta.c JXRGluePFC.c JXRGlueJxr.c) +JXR_MAKE_OBJ(GLUE) +set(SRC_TEST JXRTest.c JXRTestBmp.c JXRTestHdr.c JXRTestPnm.c JXRTestTif.c JXRTestYUV.c) +JXR_MAKE_OBJ(TEST) + +add_library(jxrglue ${OBJ_GLUE} ${OBJ_TEST}) +set_property(TARGET jxrglue + PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN} +) +set_property(TARGET jxrglue PROPERTY LINK_INTERFACE_LIBRARIES "") +set_property(TARGET jxrglue PROPERTY COMPILE_FLAGS -w) +# VERSION/SOVERSION +set_property(TARGET jxrglue PROPERTY VERSION 1.1) +set_property(TARGET jxrglue PROPERTY SOVERSION 0) +install(TARGETS jxrglue + EXPORT JXRLibTargets + RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications + LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries +) +#if(HAVE_STRLCPY_BSD) +# target_link_libraries(jxrglue ${BSD_LIBRARY}) +#endif() +target_link_libraries(jxrglue jpegxr m) +# Enc app files +set(ENCAPP JxrEncApp) +add_executable(${ENCAPP} ${DIR_EXEC}/${ENCAPP}.c) +set_property(TARGET ${ENCAPP} + PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN} +) +set_property(TARGET ${ENCAPP} PROPERTY COMPILE_FLAGS -w) +target_link_libraries(${ENCAPP} jxrglue) # jpegxr) +install(TARGETS ${ENCAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR}) +# Dec app files +set(DECAPP JxrDecApp) +add_executable(${DECAPP} ${DIR_EXEC}/${DECAPP}.c) +set_property(TARGET ${DECAPP} + PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN} +) +set_property(TARGET ${DECAPP} PROPERTY COMPILE_FLAGS -w) +target_link_libraries(${DECAPP} jxrglue) # jpegxr) +install(TARGETS ${DECAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR}) + +# install rules +install(FILES jxrgluelib/JXRGlue.h jxrgluelib/JXRMeta.h jxrtestlib/JXRTest.h + image/sys/windowsmediaphoto.h + DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} COMPONENT Headers +) +install(DIRECTORY common/include/ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} + FILES_MATCHING PATTERN "*.h" +)