From 5c756a458c544058f3782f42ff679c3b9de2c6a3 Mon Sep 17 00:00:00 2001 From: Axel Isouard Date: Tue, 1 Nov 2016 14:44:21 +0100 Subject: [PATCH] CMake: Generate the static library instead of using merge_libs.py, fixes #14 --- Samples/PeerConnection/CMakeLists.txt | 2 +- Targets/Build/CMakeLists.txt | 39 ++++++++++++++++++++------- Targets/Install/CMakeLists.txt | 10 ------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/Samples/PeerConnection/CMakeLists.txt b/Samples/PeerConnection/CMakeLists.txt index 021e993..e44248f 100644 --- a/Samples/PeerConnection/CMakeLists.txt +++ b/Samples/PeerConnection/CMakeLists.txt @@ -46,7 +46,7 @@ add_executable(PeerConnection ${PEERCONNECTION_SOURCE_FILES} ${PEERCONNECTION_HEADER_FILES}) -set(PEERCONNECTION_LIBRARIES ${LIBWEBRTC_LIBRARY_PATH} Threads::Threads) +set(PEERCONNECTION_LIBRARIES webrtc Threads::Threads) if(WIN32) set(PEERCONNECTION_LIBRARIES ${PEERCONNECTION_LIBRARIES} msdmo.lib wmcodecdspuuid.lib dmoguids.lib ole32.lib secur32.lib) diff --git a/Targets/Build/CMakeLists.txt b/Targets/Build/CMakeLists.txt index 599a094..a6e71f0 100644 --- a/Targets/Build/CMakeLists.txt +++ b/Targets/Build/CMakeLists.txt @@ -51,14 +51,35 @@ add_libwebrtc_command(libwebrtc_build # Merge libraries into a single one # -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${LIBWEBRTC_INSTALL_LIB_DIR}) +if (WIN32) + set(LIBWEBRTC_OBJ_EXT *.obj) +elseif (UNIX AND NOT APPLE) + set(LIBWEBRTC_OBJ_EXT *.o) +elseif (APPLE) + set(LIBWEBRTC_OBJ_EXT *.a) +endif (WIN32) -set(MERGE_COMMAND - python ${CMAKE_SOURCE_DIR}/merge_libs_wrapper.py . ${LIBWEBRTC_LIBRARY_PATH}) +file(GLOB_RECURSE LIBWEBRTC_OBJ_FILES + ${CMAKE_BINARY_DIR}/src/out/Default/obj/${LIBWEBRTC_OBJ_EXT}) -add_libwebrtc_command(libwebrtc_merge - ${LIBWEBRTC_LIBRARY_PATH} - "${MERGE_COMMAND}" - ${CMAKE_BINARY_DIR}/src/out/Default/obj - "Merging libraries into ${LIBWEBRTC_LIBRARY_NAME}" - libwebrtc_build) +file(GLOB_RECURSE LIBWEBRTC_OBJ_EXCLUDED + ${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/yasm/gen*/${LIBWEBRTC_OBJ_EXT} + ${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/yasm/re2c/${LIBWEBRTC_OBJ_EXT} + ${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/yasm/yasm/${LIBWEBRTC_OBJ_EXT} + ${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/protobuf/protoc/${LIBWEBRTC_OBJ_EXT} + ${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/protobuf/protobuf_full/${LIBWEBRTC_OBJ_EXT}) + +list(REMOVE_ITEM LIBWEBRTC_OBJ_FILES ${LIBWEBRTC_OBJ_EXCLUDED}) + +add_library(webrtc STATIC ${LIBWEBRTC_OBJ_FILES}) + +set_source_files_properties(${LIBWEBRTC_OBJ_FILES} PROPERTIES + EXTERNAL_OBJECT true + GENERATED true) + +set_target_properties(webrtc PROPERTIES + LINKER_LANGUAGE C) + +install(TARGETS webrtc + DESTINATION ${LIBWEBRTC_INSTALL_LIB_DIR} + COMPONENT Libraries) \ No newline at end of file diff --git a/Targets/Install/CMakeLists.txt b/Targets/Install/CMakeLists.txt index 6bb28ee..b1511eb 100644 --- a/Targets/Install/CMakeLists.txt +++ b/Targets/Install/CMakeLists.txt @@ -1,13 +1,3 @@ -# -# Install library -# - -install( - FILES ${LIBWEBRTC_LIBRARY_PATH} - DESTINATION ${LIBWEBRTC_INSTALL_LIB_DIR} - COMPONENT Libraries -) - # # Install headers #