91 lines
2.8 KiB
CMake
91 lines
2.8 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
cmake_policy(SET CMP0091 NEW)
|
|
cmake_policy(SET CMP0042 NEW)
|
|
if(POLICY CMP0135)
|
|
cmake_policy(SET CMP0135 NEW) # DOWNLOAD_EXTRACT_TIMESTAMP
|
|
endif()
|
|
include(ExternalProject)
|
|
|
|
project (jpeg-turbo)
|
|
|
|
# define NPI_VERSION
|
|
add_definitions(-DNAPI_VERSION=10)
|
|
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
include_directories(${CMAKE_JS_INC})
|
|
|
|
set(SOURCE_FILES
|
|
"src/buffersize.cc"
|
|
"src/buffersize.h"
|
|
"src/compress.cc"
|
|
"src/compress.h"
|
|
"src/decompress.cc"
|
|
"src/decompress.h"
|
|
"src/enums.cc"
|
|
"src/enums.h"
|
|
"src/util.cc"
|
|
"src/util.h"
|
|
"src/exports.cc"
|
|
"src/consts.h"
|
|
)
|
|
|
|
set(libjpeg-turbo_version "3.1.3")
|
|
set(libjpeg-turbo_url "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/${libjpeg-turbo_version}/libjpeg-turbo-${libjpeg-turbo_version}.tar.gz")
|
|
set(libjpeg-turbo_sha256 "075920b826834ac4ddf97661cc73491047855859affd671d52079c6867c1c6c0")
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
# build shared on linux, to avoid conflicts with libjpeg built into electron
|
|
set(ENABLE_SHARED 1)
|
|
set(ENABLE_STATIC 0)
|
|
|
|
else()
|
|
# build static elsewhere
|
|
set(ENABLE_SHARED 0)
|
|
set(ENABLE_STATIC 1)
|
|
endif()
|
|
|
|
# Download and build libjpeg-turbo
|
|
ExternalProject_Add(libjpeg-turbo
|
|
URL ${libjpeg-turbo_url}
|
|
URL_HASH SHA256=${libjpeg-turbo_sha256}
|
|
CMAKE_ARGS -DENABLE_SHARED=${ENABLE_SHARED} -DENABLE_STATIC=${ENABLE_STATIC} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} -DREQUIRE_SIMD=ON ${LIBJPEG_TURBO_OPTIONS}
|
|
INSTALL_COMMAND ""
|
|
)
|
|
ExternalProject_Get_Property(libjpeg-turbo SOURCE_DIR)
|
|
set(JPEG_INCLUDE_DIR ${SOURCE_DIR}/src)
|
|
ExternalProject_Get_Property(libjpeg-turbo BINARY_DIR)
|
|
set(JPEG_LIB_DIR ${BINARY_DIR})
|
|
set(JPEG_LIB turbojpeg)
|
|
|
|
if (MSVC)
|
|
# Windows uses a different path for some reason
|
|
set(JPEG_LIB_DIR ${JPEG_LIB_DIR}/Release)
|
|
set(JPEG_LIB turbojpeg-static)
|
|
endif()
|
|
|
|
|
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
set(CMAKE_INSTALL_RPATH "$ORIGIN")
|
|
|
|
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${JPEG_INCLUDE_DIR})
|
|
target_link_directories(${PROJECT_NAME} PRIVATE ${JPEG_LIB_DIR})
|
|
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB} ${JPEG_LIB})
|
|
add_dependencies(${PROJECT_NAME} libjpeg-turbo)
|
|
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
|
|
|
|
if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)
|
|
# Generate node.lib
|
|
execute_process(COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS})
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
# copy built lib into build dir
|
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${JPEG_LIB_DIR}/libturbojpeg.so.0 ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}
|
|
)
|
|
endif()
|