summaryrefslogtreecommitdiffstats
path: root/project/cmake/scripts/darwin/macros.cmake
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2016-11-24 21:27:41 +0100
committermanuel <manuel@mausz.at>2016-11-24 21:27:41 +0100
commit8cdf8dec703d882b46ca50a769fabb95ffc48e2c (patch)
treef7fe8233508f79d3dc94f8f445ce6342e7dfbdbb /project/cmake/scripts/darwin/macros.cmake
parent5823b05feb29a59510c32a9c28ca18b50b9b6399 (diff)
downloadkodi-pvr-build-8cdf8dec703d882b46ca50a769fabb95ffc48e2c.tar.gz
kodi-pvr-build-8cdf8dec703d882b46ca50a769fabb95ffc48e2c.tar.bz2
kodi-pvr-build-8cdf8dec703d882b46ca50a769fabb95ffc48e2c.zip
sync with upstream
Diffstat (limited to 'project/cmake/scripts/darwin/macros.cmake')
-rw-r--r--project/cmake/scripts/darwin/macros.cmake108
1 files changed, 0 insertions, 108 deletions
diff --git a/project/cmake/scripts/darwin/macros.cmake b/project/cmake/scripts/darwin/macros.cmake
deleted file mode 100644
index 4ee17c2..0000000
--- a/project/cmake/scripts/darwin/macros.cmake
+++ /dev/null
@@ -1,108 +0,0 @@
1function(core_link_library lib wraplib)
2 if(CMAKE_GENERATOR MATCHES "Unix Makefiles")
3 set(wrapper_obj cores/dll-loader/exports/CMakeFiles/wrapper.dir/wrapper.c.o)
4 elseif(CMAKE_GENERATOR MATCHES "Xcode")
5 set(wrapper_obj cores/dll-loader/exports/kodi.build/$(CONFIGURATION)/wrapper.build/Objects-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/wrapper.o)
6 else()
7 message(FATAL_ERROR "Unsupported generator in core_link_library")
8 endif()
9
10 set(export -bundle -undefined dynamic_lookup -read_only_relocs suppress
11 -Wl,-alias_list,${CORE_BUILD_DIR}/cores/dll-loader/exports/wrapper.def
12 ${CORE_BUILD_DIR}/${wrapper_obj})
13 set(check_arg "")
14 if(TARGET ${lib})
15 set(target ${lib})
16 set(link_lib $<TARGET_FILE:${lib}>)
17 set(check_arg ${ARGV2})
18 set(data_arg ${ARGV3})
19 else()
20 set(target ${ARGV2})
21 set(link_lib ${lib})
22 set(check_arg ${ARGV3})
23 set(data_arg ${ARGV4})
24 endif()
25 if(check_arg STREQUAL export)
26 set(export ${export}
27 -Wl,--version-script=${ARGV3})
28 elseif(check_arg STREQUAL nowrap)
29 set(export ${data_arg})
30 elseif(check_arg STREQUAL extras)
31 foreach(arg ${data_arg})
32 list(APPEND export ${arg})
33 endforeach()
34 endif()
35 get_filename_component(dir ${wraplib} PATH)
36
37 # We can't simply pass the linker flags to the args section of the custom command
38 # because cmake will add quotes around it (and the linker will fail due to those).
39 # We need to do this handstand first ...
40 separate_arguments(CUSTOM_COMMAND_ARGS_LDFLAGS UNIX_COMMAND "${CMAKE_SHARED_LINKER_FLAGS}")
41
42 add_custom_command(OUTPUT ${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
43 COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
44 COMMAND ${CMAKE_C_COMPILER}
45 ARGS ${CUSTOM_COMMAND_ARGS_LDFLAGS} ${export} -Wl,-force_load ${link_lib}
46 -o ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
47 DEPENDS ${target} wrapper.def wrapper
48 VERBATIM)
49
50 # Uncomment to create wrap_<lib> targets for debugging
51 #get_filename_component(libname ${wraplib} NAME_WE)
52 #add_custom_target(wrap_${libname} ALL DEPENDS ${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX})
53
54 list(APPEND WRAP_FILES ${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX})
55 set(WRAP_FILES ${WRAP_FILES} PARENT_SCOPE)
56endfunction()
57
58function(find_soname lib)
59 cmake_parse_arguments(arg "REQUIRED" "" "" ${ARGN})
60
61 string(TOLOWER ${lib} liblow)
62 if(${lib}_LDFLAGS)
63 set(link_lib "${${lib}_LDFLAGS}")
64 else()
65 set(link_lib "${${lib}_LIBRARIES}")
66 endif()
67
68 execute_process(COMMAND ${CMAKE_C_COMPILER} -print-search-dirs
69 COMMAND fgrep libraries:
70 COMMAND sed "s/[^=]*=\\(.*\\)/\\1/"
71 COMMAND sed "s/:/ /g"
72 ERROR_QUIET
73 OUTPUT_VARIABLE cc_lib_path
74 OUTPUT_STRIP_TRAILING_WHITESPACE)
75 execute_process(COMMAND echo ${link_lib}
76 COMMAND sed "s/-L[ ]*//g"
77 COMMAND sed "s/-l[^ ]*//g"
78 ERROR_QUIET
79 OUTPUT_VARIABLE env_lib_path
80 OUTPUT_STRIP_TRAILING_WHITESPACE)
81
82 foreach(path ${cc_lib_path} ${env_lib_path})
83 if(IS_DIRECTORY ${path})
84 execute_process(COMMAND ls -- ${path}/lib${liblow}.dylib
85 ERROR_QUIET
86 OUTPUT_VARIABLE lib_file
87 OUTPUT_STRIP_TRAILING_WHITESPACE)
88 else()
89 set(lib_file ${path})
90 endif()
91 if(lib_file)
92 # we want the path/name that is embedded in the dylib
93 execute_process(COMMAND otool -L ${lib_file}
94 COMMAND grep -v lib${liblow}.dylib
95 COMMAND grep ${liblow}
96 COMMAND awk "{V=1; print $V}"
97 ERROR_QUIET
98 OUTPUT_VARIABLE filename
99 OUTPUT_STRIP_TRAILING_WHITESPACE)
100 get_filename_component(${lib}_SONAME "${filename}" NAME)
101 message(STATUS "${lib} soname: ${${lib}_SONAME}")
102 endif()
103 endforeach()
104 if(arg_REQUIRED AND NOT ${lib}_SONAME)
105 message(FATAL_ERROR "Could not find dynamically loadable library ${lib}")
106 endif()
107 set(${lib}_SONAME ${${lib}_SONAME} PARENT_SCOPE)
108endfunction()