blob: 33fac095b7fa4c9e5898e2348d6b5a5e7f958e8d [file] [log] [blame]
include_directories(../libjpeg_api .)
###############################################################################
# TARGETS
###############################################################################
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
foreach(file ${JPEG_SOURCES})
set(JPEG_SOURCES_TJ ${JPEG_SOURCES_TJ} ../libjpeg_api/${file})
endforeach()
if(ENABLE_SHARED)
set(TURBOJPEG_SOURCES ${JPEG_SOURCES_TJ} $<TARGET_OBJECTS:simd> ${SIMD_OBJS}
turbojpeg.c ../libjpeg_api/transupp.c jdatadst-tj.c jdatasrc-tj.c
../libjpeg_api/rdbmp.c ../libjpeg_api/rdppm.c ../libjpeg_api/wrbmp.c
../libjpeg_api/wrppm.c)
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile)
if(WITH_JAVA)
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile.jni)
endif()
add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(WIN32)
set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
endif()
if(MINGW)
set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
endif()
if(APPLE)
if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
endif()
set_target_properties(turbojpeg PROPERTIES MACOSX_RPATH 1)
endif()
set_target_properties(turbojpeg PROPERTIES
SOVERSION ${TURBOJPEG_SO_MAJOR_VERSION} VERSION ${TURBOJPEG_SO_VERSION})
if(TJMAPFLAG)
set_target_properties(turbojpeg PROPERTIES
LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}")
endif()
add_executable(tjunittest tjunittest.c tjutil.c ../md5/md5.c ../md5/md5hl.c)
target_link_libraries(tjunittest turbojpeg)
add_executable(tjbench tjbench.c tjutil.c)
target_link_libraries(tjbench turbojpeg)
if(UNIX)
target_link_libraries(tjbench m)
endif()
add_executable(tjexample tjexample.c)
target_link_libraries(tjexample turbojpeg)
endif()
if(ENABLE_STATIC)
add_library(turbojpeg-static STATIC ${JPEG_SOURCES_TJ} $<TARGET_OBJECTS:simd>
${SIMD_OBJS} turbojpeg.c ../libjpeg_api/transupp.c jdatadst-tj.c
jdatasrc-tj.c ../libjpeg_api/rdbmp.c ../libjpeg_api/rdppm.c
../libjpeg_api/wrbmp.c ../libjpeg_api/wrppm.c)
set_property(TARGET turbojpeg-static PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(NOT MSVC)
set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
endif()
add_executable(tjunittest-static tjunittest.c tjutil.c ../md5/md5.c
../md5/md5hl.c)
target_link_libraries(tjunittest-static turbojpeg-static)
add_executable(tjbench-static tjbench.c tjutil.c)
target_link_libraries(tjbench-static turbojpeg-static)
if(UNIX)
target_link_libraries(tjbench-static m)
endif()
endif()
###############################################################################
# TESTS
###############################################################################
configure_file(tjbenchtest.in ${CMAKE_BINARY_DIR}/tjbenchtest @ONLY)
configure_file(tjexampletest.in ${CMAKE_BINARY_DIR}/tjexampletest @ONLY)
if(WIN32)
set(BASH bash)
endif()
if(WITH_JAVA)
configure_file(tjbenchtest.java.in ${CMAKE_BINARY_DIR}/tjbenchtest.java
@ONLY)
configure_file(tjexampletest.java.in ${CMAKE_BINARY_DIR}/tjexampletest.java
@ONLY)
add_custom_target(tjtest
COMMAND echo tjbenchtest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
COMMAND echo tjbenchtest -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc
COMMAND echo tjbenchtest -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv
COMMAND echo tjbenchtest -yuv -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc
COMMAND echo tjbenchtest -progressive
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive
COMMAND echo tjexampletest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest
COMMAND echo tjbenchtest.java
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java
COMMAND echo tjbenchtest.java -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -yuv
COMMAND echo tjbenchtest.java -progressive
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -progressive
COMMAND echo tjexampletest.java
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest.java
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java
${CMAKE_CURRENT_BINARY_DIR}/tjexampletest)
else()
add_custom_target(tjtest
COMMAND echo tjbenchtest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
COMMAND echo tjbenchtest -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc
COMMAND echo tjbenchtest -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv
COMMAND echo tjbenchtest -yuv -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc
COMMAND echo tjexampletest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest)
endif()
###############################################################################
# INSTALLATION
###############################################################################
if(WIN32)
set(EXE ".exe")
endif()
if(ENABLE_SHARED)
install(TARGETS turbojpeg tjbench
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
if(ENABLE_STATIC)
install(TARGETS turbojpeg-static ARCHIVE
DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(NOT ENABLE_SHARED)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/tjbench-static${EXE}
DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME tjbench${EXE})
endif()
endif()
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tjexample.c
DESTINATION ${CMAKE_INSTALL_DOCDIR})
if(UNIX OR MINGW)
install(FILES ${CMAKE_BINARY_DIR}/pkgscripts/libturbojpeg.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()