113 lines
3.8 KiB
CMake
113 lines
3.8 KiB
CMake
#[[**************************************************************************
|
|
* libragephoto RAGE Photo Parser
|
|
* Copyright (C) 2021 Syping
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* This software is provided as-is, no warranties are given to you, we are not
|
|
* responsible for anything with use of the software, you are self responsible.
|
|
****************************************************************************]]
|
|
|
|
cmake_minimum_required(VERSION 3.7)
|
|
project(ragephoto VERSION 0.1 LANGUAGES CXX)
|
|
include(GNUInstallDirs)
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
message("-- Testing codecvt")
|
|
try_run(CODECVT_RUN CODECVT_COMPILE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/CodecvtTest.cpp)
|
|
if (CODECVT_COMPILE AND CODECVT_RUN EQUAL 0)
|
|
list(APPEND LIBRAGEPHOTO_DEFINES
|
|
CODECVT_COMPATIBLE
|
|
)
|
|
message("-- Testing codecvt - yes")
|
|
else()
|
|
message("-- Testing codecvt - no")
|
|
endif()
|
|
|
|
message("-- Testing iconv")
|
|
try_run(ICONV_RUN ICONV_COMPILE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/IconvTest.cpp)
|
|
if (ICONV_COMPILE AND ICONV_RUN EQUAL 0)
|
|
list(APPEND LIBRAGEPHOTO_DEFINES
|
|
ICONV_COMPATIBLE
|
|
)
|
|
message("-- Testing iconv - yes")
|
|
else()
|
|
message("-- Testing iconv - no")
|
|
endif()
|
|
|
|
set(RAGEPHOTO_HEADERS
|
|
src/libragephoto_global.h
|
|
src/RagePhoto.h
|
|
)
|
|
set(RAGEPHOTO_SOURCES
|
|
src/RagePhoto.cpp
|
|
)
|
|
|
|
option(BUILD_SHARED "Build libragephoto as shared library" ON)
|
|
if (BUILD_SHARED)
|
|
add_library(ragephoto SHARED ${RAGEPHOTO_HEADERS} ${RAGEPHOTO_SOURCES})
|
|
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
|
|
set(LIBRAGEPHOTO_LIBTYPE -DLIBRAGEPHOTO_SHARED)
|
|
else()
|
|
add_library(ragephoto STATIC ${RAGEPHOTO_HEADERS} ${RAGEPHOTO_SOURCES})
|
|
set(LIBRAGEPHOTO_LIBTYPE -DLIBRAGEPHOTO_STATIC)
|
|
endif()
|
|
configure_file(src/ragephoto.pc.in pkgconfig/ragephoto.pc @ONLY)
|
|
|
|
option(WITH_BENCHMARK "Build with libragephoto benchmark" OFF)
|
|
if (WITH_BENCHMARK)
|
|
list(APPEND LIBRAGEPHOTO_DEFINES
|
|
RAGEPHOTO_BENCHMARK
|
|
)
|
|
endif()
|
|
|
|
target_compile_definitions(ragephoto PRIVATE
|
|
LIBRAGEPHOTO_LIBRARY
|
|
${LIBRAGEPHOTO_DEFINES}
|
|
)
|
|
target_compile_definitions(ragephoto PUBLIC
|
|
${LIBRAGEPHOTO_LIBTYPE}
|
|
)
|
|
install(TARGETS ragephoto DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
install(FILES ${RAGEPHOTO_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/ragephoto.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
|
|
|
option(WITH_DOCUMENTATION "Build libragephoto with documentation" OFF)
|
|
if (WITH_DOCUMENTATION)
|
|
add_subdirectory(doc)
|
|
endif()
|
|
|
|
option(WITH_GTK_EXAMPLE "Build libragephoto with GTK Photo Viewer" OFF)
|
|
if (WITH_GTK_EXAMPLE)
|
|
add_subdirectory(examples/ragephoto-gtkviewer)
|
|
endif()
|
|
|
|
option(WITH_QT_EXAMPLE "Build libragephoto with Qt Photo Viewer" OFF)
|
|
if (WITH_QT_EXAMPLE)
|
|
add_subdirectory(examples/ragephoto-qtviewer)
|
|
endif()
|
|
|
|
if (${CMAKE_PROJECT_NAME} STREQUAL "ragephoto")
|
|
option(WITH_EXTRACT "Build libragephoto with ragephoto-extract" ON)
|
|
else()
|
|
option(WITH_EXTRACT "Build libragephoto with ragephoto-extract" OFF)
|
|
endif()
|
|
if (WITH_EXTRACT)
|
|
set(EXTRACT_SOURCES
|
|
src/RagePhoto-Extract.cpp
|
|
)
|
|
add_executable(ragephoto-extract ${RAGEPHOTO_HEADERS} ${EXTRACT_SOURCES})
|
|
target_link_libraries(ragephoto-extract PRIVATE ragephoto)
|
|
install(TARGETS ragephoto-extract DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
endif()
|