|
|
@@ -1,4 +1,20 @@ |
|
|
|
macro(libtool_create_control_file _target) |
|
|
|
# FIXME: Since we cannot require CMake 3.17, we cannot used deferred |
|
|
|
# functions, and hence we have to do something similar manually |
|
|
|
|
|
|
|
set_property(GLOBAL PROPERTY LIBTOOL_TARGETS "") |
|
|
|
|
|
|
|
function(libtool_create_control_file target) |
|
|
|
set_property(GLOBAL APPEND PROPERTY LIBTOOL_TARGETS ${target}) |
|
|
|
endfunction() |
|
|
|
|
|
|
|
function(libtool_generate_control_files) |
|
|
|
get_property(LIBTOOL_TARGETS GLOBAL PROPERTY LIBTOOL_TARGETS) |
|
|
|
foreach(target ${LIBTOOL_TARGETS}) |
|
|
|
libtool_generate_control_file(${target}) |
|
|
|
endforeach() |
|
|
|
endfunction() |
|
|
|
|
|
|
|
function(libtool_generate_control_file _target) |
|
|
|
get_target_property(_target_type ${_target} TYPE) |
|
|
|
|
|
|
|
message("-- Creating static libtool control file for target ${_target}") |
|
|
@@ -141,9 +157,11 @@ macro(libtool_create_control_file _target) |
|
|
|
endif() |
|
|
|
endforeach() |
|
|
|
|
|
|
|
get_target_property(_binary_dir ${_target} BINARY_DIR) |
|
|
|
|
|
|
|
# Write the libtool control file for the static library |
|
|
|
set(_lname ${CMAKE_STATIC_LIBRARY_PREFIX}${_target}) |
|
|
|
set(_laname ${CMAKE_CURRENT_BINARY_DIR}/${_lname}.la) |
|
|
|
set(_laname ${_binary_dir}/${_lname}.la) |
|
|
|
|
|
|
|
file(WRITE ${_laname} "# ${_lname}.la - a libtool library file\n# Generated by ltmain.sh (GNU libtool) 2.2.6b\n") |
|
|
|
file(APPEND ${_laname} "dlname=''\n\n") |
|
|
@@ -162,15 +180,18 @@ macro(libtool_create_control_file _target) |
|
|
|
file(APPEND ${_laname} "libdir='/usr/lib'\n\n") |
|
|
|
|
|
|
|
# Make sure the timestamp is updated to trigger other make invocations |
|
|
|
add_custom_command(TARGET ${_target} POST_BUILD COMMAND |
|
|
|
"${CMAKE_COMMAND}" -E touch "${_laname}") |
|
|
|
|
|
|
|
add_custom_command(OUTPUT "${_laname}" DEPENDS ${_target} |
|
|
|
COMMENT "Updating timestamp on ${_lname}.la" |
|
|
|
COMMAND "${CMAKE_COMMAND}" -E touch "${_laname}") |
|
|
|
|
|
|
|
# Add custom command to symlink the static library so that autotools finds |
|
|
|
# the library in .libs. These are executed after the specified target build. |
|
|
|
add_custom_command(TARGET ${_target} POST_BUILD COMMAND |
|
|
|
"${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/.libs") |
|
|
|
add_custom_command(TARGET ${_target} POST_BUILD COMMAND |
|
|
|
"${CMAKE_COMMAND}" -E create_symlink ../${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX} "${CMAKE_CURRENT_BINARY_DIR}/.libs/${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX}") |
|
|
|
|
|
|
|
endmacro() |
|
|
|
set(_libname ${_binary_dir}/.libs/${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX}) |
|
|
|
add_custom_command(OUTPUT "${_libname}" DEPENDS ${_target} |
|
|
|
COMMENT "Creating symlink .libs/${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
|
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${_binary_dir}/.libs" |
|
|
|
COMMAND "${CMAKE_COMMAND}" -E create_symlink ../${_lname}${CMAKE_STATIC_LIBRARY_SUFFIX} "${_libname}") |
|
|
|
|
|
|
|
add_custom_target(${_target}.la ALL |
|
|
|
DEPENDS "${_laname}" "${_libname}") |
|
|
|
endfunction() |