mirror of
https://github.com/audacity/linuxdeploy.git
synced 2026-04-30 04:59:35 -05:00
Add support for fully static builds
This commit is contained in:
@@ -1,8 +1,31 @@
|
||||
# required for PNG imported target
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
cmake_minimum_required(VERSION 3.6)
|
||||
|
||||
find_package(PNG REQUIRED)
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(libpng REQUIRED IMPORTED_TARGET libpng)
|
||||
|
||||
# build custom static version of libjpeg for static builds
|
||||
if(STATIC_BUILD)
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(libjpeg_static_extproj
|
||||
URL https://www.ijg.org/files/jpegsrc.v9d.tar.gz
|
||||
URL_HASH SHA256=99cb50e48a4556bc571dadd27931955ff458aae32f68c4d9c39d624693f69c32
|
||||
BUILD_IN_SOURCE ON
|
||||
EXCLUDE_FROM_ALL ON
|
||||
CONFIGURE_COMMAND ./configure --prefix=/usr
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
ExternalProject_Get_property(libjpeg_static_extproj SOURCE_DIR)
|
||||
add_library(libjpeg_static INTERFACE IMPORTED)
|
||||
set_property(TARGET libjpeg_static PROPERTY INTERFACE_LINK_LIBRARIES ${SOURCE_DIR}/.libs/libjpeg.a)
|
||||
add_dependencies(libjpeg_static libjpeg_static_extproj)
|
||||
|
||||
set(JPEG_LIBRARIES libjpeg_static)
|
||||
else()
|
||||
find_package(JPEG REQUIRED)
|
||||
endif()
|
||||
|
||||
if(NOT USE_SYSTEM_CIMG)
|
||||
message(STATUS "Using bundled CImg library")
|
||||
@@ -22,7 +45,16 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(PNG_INCLUDE_DIR ${libpng_INCLUDE_DIRS})
|
||||
if(NOT STATIC_BUILD)
|
||||
set(PNG_LIBRARY ${libpng_LIBRARIES})
|
||||
else()
|
||||
set(PNG_LIBRARY ${libpng_STATIC_LIBRARIES})
|
||||
endif()
|
||||
|
||||
#message(FATAL_ERROR "${PNG_LIBRARY}")
|
||||
|
||||
add_library(CImg INTERFACE)
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CIMG_H_DIR};${JPEG_INCLUDE_DIR}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_LINK_LIBRARIES "PNG::PNG;${JPEG_LIBRARIES}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CIMG_H_DIR};${PNG_INCLUDE_DIR};${JPEG_INCLUDE_DIR}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_LINK_LIBRARIES "${PNG_LIBRARY};${JPEG_LIBRARIES}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_COMPILE_DEFINITIONS "cimg_display=0;cimg_use_png=1;cimg_use_jpeg=1")
|
||||
|
||||
@@ -54,6 +54,14 @@ target_compile_definitions(linuxdeploy PRIVATE -DLD_VERSION="${VERSION}")
|
||||
target_compile_definitions(linuxdeploy PRIVATE -DLD_BUILD_NUMBER="${BUILD_NUMBER}")
|
||||
target_compile_definitions(linuxdeploy PRIVATE -DLD_BUILD_DATE="${DATE}")
|
||||
|
||||
if(STATIC_BUILD)
|
||||
message(WARNING "static builds enabled")
|
||||
|
||||
# target_link_options is only supported by CMake 3.13+
|
||||
set_property(TARGET linuxdeploy PROPERTY LINK_OPTIONS -static -static-libgcc -static-libstdc++)
|
||||
endif()
|
||||
|
||||
|
||||
add_executable(plugin_test plugin_test_main.cpp)
|
||||
target_link_libraries(plugin_test linuxdeploy_plugin)
|
||||
set_target_properties(plugin_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
|
||||
|
||||
Reference in New Issue
Block a user