From b33c5bb3218bb8e50bd0f513a67a9ebe253845e4 Mon Sep 17 00:00:00 2001 From: AndreasV Date: Wed, 15 Feb 2023 21:00:12 +0100 Subject: [PATCH 01/27] wip --- proto/CMakeLIsts.txt | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 proto/CMakeLIsts.txt diff --git a/proto/CMakeLIsts.txt b/proto/CMakeLIsts.txt new file mode 100644 index 0000000..541173c --- /dev/null +++ b/proto/CMakeLIsts.txt @@ -0,0 +1,53 @@ +cmake_minimum_required(VERSION 3.15) +project(libvideo-metadata-proto VERSION 1.0) + + + +add_library(video-metadata-proto-generated INTERFACE) +find_package(Protobuf REQUIRED) +list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIRS}) + +protobuf_generate( + TARGET video-metadata-proto-generated + PROTOS vmeta.proto + LANGUAGE c + GENERATE_EXTENSIONS .pb-c.c .pb-c.h + IMPORT_DIRS ${PROTO_IMPORT_DIRS} + PROTOC_OUT_DIR ${CMAKE_BINARY_DIR} +) + +add_library(video-metadata-proto ${CMAKE_BINARY_DIR}/vmeta.pb-c.c) +target_include_directories(video-metadata-proto PUBLIC "$") +target_link_libraries(video-metadata-proto PUBLIC video-metadata-proto-generated ${Protobuf_INCLUDE_DIRS}/../lib/protobuf-c.lib) + + +# # Proto files +# set(vmeta_protos +# vmeta.proto +# ) + +# # Generated sources +# set(vmeta_protos_srcs +# ${CMAKE_BINARY_DIR}/proto/test.pb.cc +# ) +# set(vmeta_protos_hdrs +# ${CMAKE_BINARY_DIR}/proto/test.pb.h +# ) + +# add_custom_command( +# OUTPUT ${my_protos_hdrs} +# COMMAND ${_PROTOBUF_PROTOC} +# ARGS --cpp_out ${CMAKE_BINARY_DIR}/proto +# -I ${CMAKE_SOURCE_DIR}/proto +# ${my_protos} +# DEPENDS ${my_protos} +# ) + +# add_library(protos +# ${my_protos_srcs} +# ${my_protos_hdrs} +# ) +# target_link_libraries(protos +# ${_PROTOBUF_LIBPROTOBUF} +# ${_GRPC_GRPCPP} +# ) \ No newline at end of file From ec4006e27fa6209b15d9096e64a54ce1268743e9 Mon Sep 17 00:00:00 2001 From: AndreasV Date: Wed, 15 Feb 2023 21:55:41 +0100 Subject: [PATCH 02/27] wip --- CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++++ proto/CMakeLIsts.txt | 3 ++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..7c65805 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.15) +project(libvideo-metadata VERSION 1.0) + +add_subdirectory(proto) + +set(LIB_SOURCES + src/vmeta_session.c + src/vmeta_frame.c + src/vmeta_json.c + src/vmeta_json_proto.c + src/vmeta_csv.c + src/vmeta_frame_proto.c + src/vmeta_frame_v1.c + src/vmeta_frame_v2.c + src/vmeta_frame_v3.c + src/vmeta_utils.c +) + +add_library(video-metadata ${LIB_SOURCES}) +add_library(video-metadata_compiler_flags INTERFACE) +target_compile_features(video-metadata_compiler_flags INTERFACE cxx_std_11) + +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) + +target_include_directories(video-metadata PUBLIC + $ + $ +) + +target_compile_definitions(video-metadata PRIVATE "VMETA_API_EXPORTS") +target_compile_options(video-metadata PRIVATE "-fvisibility=hidden") + +find_package(json-c CONFIG REQUIRED) +target_link_libraries(video-metadata json-c::json-c json-c::json-c-static) +target_link_libraries(video-metadata video-metadata-proto ulog futils video-metadata_compiler_flags) \ No newline at end of file diff --git a/proto/CMakeLIsts.txt b/proto/CMakeLIsts.txt index 541173c..3564443 100644 --- a/proto/CMakeLIsts.txt +++ b/proto/CMakeLIsts.txt @@ -18,7 +18,8 @@ protobuf_generate( add_library(video-metadata-proto ${CMAKE_BINARY_DIR}/vmeta.pb-c.c) target_include_directories(video-metadata-proto PUBLIC "$") -target_link_libraries(video-metadata-proto PUBLIC video-metadata-proto-generated ${Protobuf_INCLUDE_DIRS}/../lib/protobuf-c.lib) +target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../lib) +target_link_libraries(video-metadata-proto PUBLIC video-metadata-proto-generated protobuf-c) # # Proto files From 92d7758f57cd722d43f0b3a4c2c1386725da8497 Mon Sep 17 00:00:00 2001 From: Oscar Sjoberg Date: Fri, 17 Feb 2023 12:49:48 +0100 Subject: [PATCH 03/27] spellcheck --- proto/{CMakeLIsts.txt => CMakeLists.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename proto/{CMakeLIsts.txt => CMakeLists.txt} (100%) diff --git a/proto/CMakeLIsts.txt b/proto/CMakeLists.txt similarity index 100% rename from proto/CMakeLIsts.txt rename to proto/CMakeLists.txt From 3f43300744efb14e9d9f0f25030702c9ba4eecbc Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Fri, 17 Feb 2023 14:34:12 +0100 Subject: [PATCH 04/27] filename spelling --- proto/{CMakeLIsts.txt => CMakeLists.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename proto/{CMakeLIsts.txt => CMakeLists.txt} (100%) diff --git a/proto/CMakeLIsts.txt b/proto/CMakeLists.txt similarity index 100% rename from proto/CMakeLIsts.txt rename to proto/CMakeLists.txt From 17f8707444a2ee98cfa00259824ae5fdec14cbba Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Sun, 26 Feb 2023 12:48:17 +0100 Subject: [PATCH 05/27] wip --- CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c65805..5aac8f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,9 @@ add_library(video-metadata_compiler_flags INTERFACE) target_compile_features(video-metadata_compiler_flags INTERFACE cxx_std_11) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +set_target_properties(video-metadata PROPERTIES + POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS} +) target_include_directories(video-metadata PUBLIC $ @@ -31,5 +34,5 @@ target_compile_definitions(video-metadata PRIVATE "VMETA_API_EXPORTS") target_compile_options(video-metadata PRIVATE "-fvisibility=hidden") find_package(json-c CONFIG REQUIRED) -target_link_libraries(video-metadata json-c::json-c json-c::json-c-static) +target_link_libraries(video-metadata json-c::json-c) target_link_libraries(video-metadata video-metadata-proto ulog futils video-metadata_compiler_flags) \ No newline at end of file From 4414b95e70d924d898da004d28e9651b1f3c9cb2 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Mon, 27 Feb 2023 18:07:32 +0100 Subject: [PATCH 06/27] wip --- CMakeLists.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5aac8f7..a5e6390 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,8 +17,6 @@ set(LIB_SOURCES ) add_library(video-metadata ${LIB_SOURCES}) -add_library(video-metadata_compiler_flags INTERFACE) -target_compile_features(video-metadata_compiler_flags INTERFACE cxx_std_11) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) set_target_properties(video-metadata PROPERTIES @@ -32,7 +30,13 @@ target_include_directories(video-metadata PUBLIC target_compile_definitions(video-metadata PRIVATE "VMETA_API_EXPORTS") target_compile_options(video-metadata PRIVATE "-fvisibility=hidden") +target_compile_options(video-metadata PRIVATE "-std=gnu99") find_package(json-c CONFIG REQUIRED) -target_link_libraries(video-metadata json-c::json-c) -target_link_libraries(video-metadata video-metadata-proto ulog futils video-metadata_compiler_flags) \ No newline at end of file +target_link_libraries(video-metadata PUBLIC json-c::json-c) +target_link_libraries(video-metadata PUBLIC + video-metadata-proto + video-metadata-proto-generated + ulog + futils +) \ No newline at end of file From 288bf5e8985ca6fce0ccd637967136c9232ea96c Mon Sep 17 00:00:00 2001 From: Oscar Sjoberg Date: Tue, 28 Feb 2023 10:05:37 +0100 Subject: [PATCH 07/27] updating the local CMakeLists.txt file --- CMakeLists.txt | 31 ++++++++++----- proto/CMakeLists.txt | 91 ++++++++++++++++++++++++++------------------ 2 files changed, 74 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c65805..2ac332e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.15) -project(libvideo-metadata VERSION 1.0) +project(video-metadata VERSION 1.0) -add_subdirectory(proto) +add_subdirectory(proto) # video-metadata-proto set(LIB_SOURCES src/vmeta_session.c @@ -16,20 +16,31 @@ set(LIB_SOURCES src/vmeta_utils.c ) -add_library(video-metadata ${LIB_SOURCES}) -add_library(video-metadata_compiler_flags INTERFACE) -target_compile_features(video-metadata_compiler_flags INTERFACE cxx_std_11) +add_library(${PROJECT_NAME} ${LIB_SOURCES}) +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_11) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) -target_include_directories(video-metadata PUBLIC +target_include_directories(${PROJECT_NAME} PUBLIC $ $ ) -target_compile_definitions(video-metadata PRIVATE "VMETA_API_EXPORTS") -target_compile_options(video-metadata PRIVATE "-fvisibility=hidden") +target_compile_definitions(${PROJECT_NAME} PRIVATE "VMETA_API_EXPORTS") +target_compile_options(${PROJECT_NAME} PRIVATE "-fvisibility=hidden") find_package(json-c CONFIG REQUIRED) -target_link_libraries(video-metadata json-c::json-c json-c::json-c-static) -target_link_libraries(video-metadata video-metadata-proto ulog futils video-metadata_compiler_flags) \ No newline at end of file +target_link_libraries(${PROJECT_NAME} PUBLIC + json-c::json-c json-c::json-c-static + video-metadata-proto + ulog + futils + ) + +install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}-targets + PUBLIC_HEADER DESTINATION include + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin +) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 3564443..dd3fb68 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -1,54 +1,69 @@ -cmake_minimum_required(VERSION 3.15) -project(libvideo-metadata-proto VERSION 1.0) +cmake_minimum_required(VERSION 3.20) +project(video-metadata-proto VERSION 1.0) add_library(video-metadata-proto-generated INTERFACE) find_package(Protobuf REQUIRED) -list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIRS}) - -protobuf_generate( - TARGET video-metadata-proto-generated - PROTOS vmeta.proto - LANGUAGE c - GENERATE_EXTENSIONS .pb-c.c .pb-c.h - IMPORT_DIRS ${PROTO_IMPORT_DIRS} - PROTOC_OUT_DIR ${CMAKE_BINARY_DIR} + +list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobufc_INCLUDE_DIR}) + + + + + +set(_PROTOBUF_PROTOC "/se/work/oscsj/sw/protobuf-c/bin/protoc-c") + + +# Proto files +set(vmeta_protos + ${CMAKE_CURRENT_SOURCE_DIR}/vmeta.proto ) -add_library(video-metadata-proto ${CMAKE_BINARY_DIR}/vmeta.pb-c.c) -target_include_directories(video-metadata-proto PUBLIC "$") -target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../lib) -target_link_libraries(video-metadata-proto PUBLIC video-metadata-proto-generated protobuf-c) +# Generated sources +set(vmeta_protos_srcs + ${CMAKE_BINARY_DIR}/vmeta.pb-c.c +) +set(vmeta_protos_hdrs + ${CMAKE_BINARY_DIR}/vmeta.pb-c.h +) -# # Proto files -# set(vmeta_protos -# vmeta.proto -# ) +add_custom_command( + OUTPUT ${vmeta_protos_srcs} + COMMAND ${_PROTOBUF_PROTOC} + ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} + ${vmeta_protos} +) + + +add_custom_command( + OUTPUT ${vmeta_protos_hdrs} + COMMAND ${_PROTOBUF_PROTOC} + ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} + ${vmeta_protos} +) + + + +add_library(${PROJECT_NAME} ${vmeta_protos_srcs}) +target_include_directories(${PROJECT_NAME} PUBLIC + "$" + ) + +target_link_directories(${PROJECT_NAME} PUBLIC ${Protobufc_INCLUDE_DIR}/../lib) +target_link_libraries(${PROJECT_NAME} PUBLIC video-metadata-proto-generated protobuf-c) + + +install(TARGETS ${PROJECT_NAME} + # PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME} +) -# # Generated sources -# set(vmeta_protos_srcs -# ${CMAKE_BINARY_DIR}/proto/test.pb.cc -# ) -# set(vmeta_protos_hdrs -# ${CMAKE_BINARY_DIR}/proto/test.pb.h -# ) -# add_custom_command( -# OUTPUT ${my_protos_hdrs} -# COMMAND ${_PROTOBUF_PROTOC} -# ARGS --cpp_out ${CMAKE_BINARY_DIR}/proto -# -I ${CMAKE_SOURCE_DIR}/proto -# ${my_protos} -# DEPENDS ${my_protos} -# ) # add_library(protos # ${my_protos_srcs} # ${my_protos_hdrs} # ) -# target_link_libraries(protos -# ${_PROTOBUF_LIBPROTOBUF} -# ${_GRPC_GRPCPP} -# ) \ No newline at end of file From c0e5e678cfa4bf44e5bad96f1aaaecd45cf93b8c Mon Sep 17 00:00:00 2001 From: Oscar Sjoberg Date: Tue, 28 Feb 2023 10:58:30 +0100 Subject: [PATCH 08/27] forcing builder to set protoc binary to generate meta files --- proto/CMakeLists.txt | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index dd3fb68..3b5971d 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -8,12 +8,11 @@ find_package(Protobuf REQUIRED) list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobufc_INCLUDE_DIR}) +message(${PROTOBUF_PROTOCC}) - - - -set(_PROTOBUF_PROTOC "/se/work/oscsj/sw/protobuf-c/bin/protoc-c") - +if(NOT DEFINED PROTOBUF_PROTOCC) + message(FATAL_ERROR "Unable to locate protoc-c executable please set with -DPROTOBUF_PROTOCC!") +else() # Proto files set(vmeta_protos @@ -31,7 +30,7 @@ set(vmeta_protos_hdrs add_custom_command( OUTPUT ${vmeta_protos_srcs} - COMMAND ${_PROTOBUF_PROTOC} + COMMAND ${PROTOBUF_PROTOCC} ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} ${vmeta_protos} ) @@ -39,7 +38,7 @@ add_custom_command( add_custom_command( OUTPUT ${vmeta_protos_hdrs} - COMMAND ${_PROTOBUF_PROTOC} + COMMAND ${PROTOBUF_PROTOCC} ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} ${vmeta_protos} ) @@ -61,9 +60,4 @@ install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME} ) - - -# add_library(protos -# ${my_protos_srcs} -# ${my_protos_hdrs} -# ) +endif() From d04c5082db84d95b403d8cbe92575f97e647ccc6 Mon Sep 17 00:00:00 2001 From: Oscar Sjoberg Date: Wed, 1 Mar 2023 17:33:40 +0100 Subject: [PATCH 09/27] able to do correct install --- CMakeLists.txt | 14 ++++++-- proto/CMakeLists.txt | 77 ++++++++++++++++++++++++-------------------- 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ac332e..ab5410a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,13 @@ cmake_minimum_required(VERSION 3.15) project(video-metadata VERSION 1.0) +# checks if set up rpath exists for install +if(COMMAND set_up_rpath) + set_up_rpath() +else() + message("Set up rpath not defined!") +endif() + add_subdirectory(proto) # video-metadata-proto set(LIB_SOURCES @@ -30,9 +37,12 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE "VMETA_API_EXPORTS") target_compile_options(${PROJECT_NAME} PRIVATE "-fvisibility=hidden") find_package(json-c CONFIG REQUIRED) -target_link_libraries(${PROJECT_NAME} PUBLIC - json-c::json-c json-c::json-c-static + +target_link_libraries(${PROJECT_NAME} + PUBLIC video-metadata-proto + PRIVATE + json-c::json-c json-c::json-c-static ulog futils ) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 3b5971d..b79ad54 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -8,56 +8,63 @@ find_package(Protobuf REQUIRED) list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobufc_INCLUDE_DIR}) -message(${PROTOBUF_PROTOCC}) if(NOT DEFINED PROTOBUF_PROTOCC) message(FATAL_ERROR "Unable to locate protoc-c executable please set with -DPROTOBUF_PROTOCC!") else() -# Proto files -set(vmeta_protos - ${CMAKE_CURRENT_SOURCE_DIR}/vmeta.proto -) + message(STATUS + "Using the following binary \"${PROTOBUF_PROTOCC}\" to create vmeta" ) -# Generated sources -set(vmeta_protos_srcs - ${CMAKE_BINARY_DIR}/vmeta.pb-c.c -) -set(vmeta_protos_hdrs - ${CMAKE_BINARY_DIR}/vmeta.pb-c.h -) + # Proto files + set(vmeta_protos + ${CMAKE_CURRENT_SOURCE_DIR}/vmeta.proto + ) + # Generated sources + set(vmeta_protos_srcs + ${CMAKE_BINARY_DIR}/vmeta.pb-c.c + ) + set(vmeta_protos_hdrs + ${CMAKE_BINARY_DIR}/vmeta.pb-c.h + ) -add_custom_command( - OUTPUT ${vmeta_protos_srcs} - COMMAND ${PROTOBUF_PROTOCC} - ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} - ${vmeta_protos} -) + add_custom_command( + OUTPUT ${vmeta_protos_srcs} + COMMAND ${PROTOBUF_PROTOCC} + ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} + ${vmeta_protos} + ) -add_custom_command( - OUTPUT ${vmeta_protos_hdrs} - COMMAND ${PROTOBUF_PROTOCC} - ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} - ${vmeta_protos} -) + add_custom_command( + OUTPUT ${vmeta_protos_hdrs} + COMMAND ${PROTOBUF_PROTOCC} + ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} + ${vmeta_protos} + ) -add_library(${PROJECT_NAME} ${vmeta_protos_srcs}) -target_include_directories(${PROJECT_NAME} PUBLIC - "$" - ) -target_link_directories(${PROJECT_NAME} PUBLIC ${Protobufc_INCLUDE_DIR}/../lib) -target_link_libraries(${PROJECT_NAME} PUBLIC video-metadata-proto-generated protobuf-c) + add_library(${PROJECT_NAME} ${vmeta_protos_srcs}) + target_include_directories(${PROJECT_NAME} PUBLIC + "$" + ) + target_link_directories(${PROJECT_NAME} PRIVATE + ${Protobufc_INCLUDE_DIR}/../lib) -install(TARGETS ${PROJECT_NAME} - # PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME} - LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME} -) + target_link_libraries(${PROJECT_NAME} PRIVATE + video-metadata-proto-generated + protobuf-c) + + + install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}-targets + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin + ) endif() From 4ae6175d1b7a300c1017c4d6d3b80f02184c4829 Mon Sep 17 00:00:00 2001 From: Oscar Sjoberg Date: Wed, 1 Mar 2023 17:34:51 +0100 Subject: [PATCH 10/27] wip From cf090be41fc6effe39c1ec9545ecae51dd81573b Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Thu, 2 Mar 2023 08:14:02 +0100 Subject: [PATCH 11/27] wip --- CMakeLists.txt | 2 ++ proto/CMakeLists.txt | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5e6390..ed19634 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,10 +33,12 @@ target_compile_options(video-metadata PRIVATE "-fvisibility=hidden") target_compile_options(video-metadata PRIVATE "-std=gnu99") find_package(json-c CONFIG REQUIRED) +# TODO PRIVATE target_link_libraries(video-metadata PUBLIC json-c::json-c) target_link_libraries(video-metadata PUBLIC video-metadata-proto video-metadata-proto-generated ulog futils + protobuf-c ) \ No newline at end of file diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 3564443..ec6c378 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -4,9 +4,11 @@ project(libvideo-metadata-proto VERSION 1.0) add_library(video-metadata-proto-generated INTERFACE) -find_package(Protobuf REQUIRED) +find_package(Protobuf CONFIG REQUIRED) list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIRS}) +target_compile_definitions(video-metadata-proto-generated PRIVATE "PROTOBUF_C_USE_SHARED_LIB") + protobuf_generate( TARGET video-metadata-proto-generated PROTOS vmeta.proto @@ -17,9 +19,12 @@ protobuf_generate( ) add_library(video-metadata-proto ${CMAKE_BINARY_DIR}/vmeta.pb-c.c) -target_include_directories(video-metadata-proto PUBLIC "$") +target_include_directories(video-metadata-proto PUBLIC + "$" + $) target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../lib) -target_link_libraries(video-metadata-proto PUBLIC video-metadata-proto-generated protobuf-c) +target_link_libraries(video-metadata-proto PRIVATE video-metadata-proto-generated protobuf-c) +target_link_libraries(video-metadata-proto PRIVATE protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite) # # Proto files From 65d9f2d3f593cde53bbb1e8b89d4e42d4cb8d5ac Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Thu, 2 Mar 2023 08:22:49 +0100 Subject: [PATCH 12/27] wip --- proto/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index ec6c378..3424a06 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(video-metadata-proto-generated INTERFACE) find_package(Protobuf CONFIG REQUIRED) list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIRS}) -target_compile_definitions(video-metadata-proto-generated PRIVATE "PROTOBUF_C_USE_SHARED_LIB") +target_compile_definitions(video-metadata-proto-generated INTERFACE "PROTOBUF_C_USE_SHARED_LIB") protobuf_generate( TARGET video-metadata-proto-generated From a43e046cc84534f782d1820a5a0f549c450d0cdb Mon Sep 17 00:00:00 2001 From: Oscar Sjoberg Date: Thu, 2 Mar 2023 16:05:32 +0100 Subject: [PATCH 13/27] correcting cmake --- CMakeLists.txt | 14 ++++++++------ proto/CMakeLists.txt | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 599836c..b82fb66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,6 @@ cmake_minimum_required(VERSION 3.15) project(video-metadata VERSION 1.0) -# checks if set up rpath exists for install -if(COMMAND set_up_rpath) - set_up_rpath() -else() - message("Set up rpath not defined!") -endif() add_subdirectory(proto) # video-metadata-proto @@ -24,6 +18,14 @@ set(LIB_SOURCES ) add_library(${PROJECT_NAME} ${LIB_SOURCES}) + +# checks if set up rpath exists for install +if(COMMAND set_up_rpath) + set_up_rpath() +else() + message("Set up rpath not defined!") +endif() + target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_11) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index b79ad54..1086634 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.20) project(video-metadata-proto VERSION 1.0) - - add_library(video-metadata-proto-generated INTERFACE) find_package(Protobuf REQUIRED) From fe734be06ecd5ab459e561aea72fd218120e6a0d Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Thu, 2 Mar 2023 17:23:34 +0100 Subject: [PATCH 14/27] wip --- proto/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 3424a06..c6b6924 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -22,7 +22,7 @@ add_library(video-metadata-proto ${CMAKE_BINARY_DIR}/vmeta.pb-c.c) target_include_directories(video-metadata-proto PUBLIC "$" $) -target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../lib) +#target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../debug/lib) target_link_libraries(video-metadata-proto PRIVATE video-metadata-proto-generated protobuf-c) target_link_libraries(video-metadata-proto PRIVATE protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite) From 8d07673e9c394608bf2ef25850311cd74fd45107 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Thu, 2 Mar 2023 18:08:23 +0100 Subject: [PATCH 15/27] wip --- CMakeLists.txt | 2 ++ proto/CMakeLists.txt | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab5410a..81ac970 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,8 @@ target_link_libraries(${PROJECT_NAME} json-c::json-c json-c::json-c-static ulog futils + mp4 + protobuf-c ) install(TARGETS ${PROJECT_NAME} diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index b79ad54..9377be9 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -6,15 +6,15 @@ project(video-metadata-proto VERSION 1.0) add_library(video-metadata-proto-generated INTERFACE) find_package(Protobuf REQUIRED) -list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobufc_INCLUDE_DIR}) +list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIR}) -if(NOT DEFINED PROTOBUF_PROTOCC) +if(NOT DEFINED Protobuf_PROTOC_EXECUTABLE) message(FATAL_ERROR "Unable to locate protoc-c executable please set with -DPROTOBUF_PROTOCC!") else() message(STATUS - "Using the following binary \"${PROTOBUF_PROTOCC}\" to create vmeta" ) + "Using the following binary \"${Protobuf_PROTOC_EXECUTABLE}\" to create vmeta" ) # Proto files set(vmeta_protos @@ -32,7 +32,7 @@ else() add_custom_command( OUTPUT ${vmeta_protos_srcs} - COMMAND ${PROTOBUF_PROTOCC} + COMMAND ${Protobuf_PROTOC_EXECUTABLE} ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} ${vmeta_protos} ) @@ -40,7 +40,7 @@ else() add_custom_command( OUTPUT ${vmeta_protos_hdrs} - COMMAND ${PROTOBUF_PROTOCC} + COMMAND ${Protobuf_PROTOC_EXECUTABLE} ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} ${vmeta_protos} ) @@ -48,12 +48,13 @@ else() add_library(${PROJECT_NAME} ${vmeta_protos_srcs}) + target_link_directories(${PROJECT_NAME} PUBLIC ${Protobuf_INCLUDE_DIRS}/../debug/lib) target_include_directories(${PROJECT_NAME} PUBLIC "$" ) target_link_directories(${PROJECT_NAME} PRIVATE - ${Protobufc_INCLUDE_DIR}/../lib) + ${Protobuf_INCLUDE_DIR}/../lib) target_link_libraries(${PROJECT_NAME} PRIVATE video-metadata-proto-generated From ea51078ea6f6f38da1d6175ddb517a5d51898e2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Sj=C3=B6berg?= Date: Fri, 3 Mar 2023 11:22:42 +0100 Subject: [PATCH 16/27] pulling correct dll when installing windows --- proto/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 041731a..371b06b 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -59,6 +59,13 @@ else() protobuf-c) +if(WIN32) + message(${PROTOBUF_INCLUDE_DIR}) + file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../bin/*.dll") + message(${protobuf_dll}) + install(FILES ${protobuf_dll} DESTINATION bin) +endif() + install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets ARCHIVE DESTINATION lib From 7f14064cd57362e102f3b122a6fc7a3845e47bfe Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Fri, 3 Mar 2023 11:57:29 +0100 Subject: [PATCH 17/27] wip --- proto/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index c6b6924..82dc9c5 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -22,7 +22,7 @@ add_library(video-metadata-proto ${CMAKE_BINARY_DIR}/vmeta.pb-c.c) target_include_directories(video-metadata-proto PUBLIC "$" $) -#target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../debug/lib) +target_link_directories(video-metadata-proto PUBLIC ${Protobuf_INCLUDE_DIRS}/../debug/lib) target_link_libraries(video-metadata-proto PRIVATE video-metadata-proto-generated protobuf-c) target_link_libraries(video-metadata-proto PRIVATE protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite) From 52a0ee5db1786dd710cfa1e63f59334adb0c9d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Sj=C3=B6berg?= Date: Fri, 3 Mar 2023 11:59:54 +0100 Subject: [PATCH 18/27] pulling correct dll when installing windows --- proto/CMakeLists.txt | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 371b06b..8b8b976 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -60,10 +60,20 @@ else() if(WIN32) - message(${PROTOBUF_INCLUDE_DIR}) - file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../bin/*.dll") - message(${protobuf_dll}) - install(FILES ${protobuf_dll} DESTINATION bin) + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + message(${PROTOBUF_INCLUDE_DIR}) + file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.dll") + file(GLOB protobuf_pdb "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.pdb") + message(${protobuf_dll}) + message(${protobuf_pdb}) + install(FILES ${protobuf_dll} DESTINATION bin) + install(FILES ${protobuf_pdb} DESTINATION bin) + else() + message(${PROTOBUF_INCLUDE_DIR}) + file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.dll") + message(${protobuf_dll}) + install(FILES ${protobuf_dll} DESTINATION bin) + endif() endif() install(TARGETS ${PROJECT_NAME} From 69776cbe7c9462e3bbe47a868dfa6d044f0d03b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Sj=C3=B6berg?= Date: Fri, 3 Mar 2023 13:35:32 +0100 Subject: [PATCH 19/27] adapting to protoc mingw build --- proto/CMakeLists.txt | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 8b8b976..8827d23 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -50,9 +50,11 @@ else() target_include_directories(${PROJECT_NAME} PUBLIC "$" ) - - target_link_directories(${PROJECT_NAME} PRIVATE - ${Protobuf_INCLUDE_DIR}/../lib) + target_include_directories(${PROJECT_NAME} PUBLIC + ${Protobufc_INCLUDE_DIR} + ) + target_link_directories(${PROJECT_NAME} PUBLIC + ${Protobufc_INCLUDE_DIR}/../lib) target_link_libraries(${PROJECT_NAME} PRIVATE video-metadata-proto-generated @@ -61,18 +63,21 @@ else() if(WIN32) if(CMAKE_BUILD_TYPE STREQUAL "Debug") - message(${PROTOBUF_INCLUDE_DIR}) + + message("PROTOBUF INCLUDE DIR ${PROTOBUF_INCLUDE_DIR}") file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.dll") - file(GLOB protobuf_pdb "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.pdb") + file(GLOB protobufc_dll "${Protobufc_INCLUDE_DIR}/../debug/bin/*.dll") message(${protobuf_dll}) - message(${protobuf_pdb}) + message(${protobufc_dll}) + # message(${protobuf_pdb}) install(FILES ${protobuf_dll} DESTINATION bin) - install(FILES ${protobuf_pdb} DESTINATION bin) + install(FILES ${protobufc_dll} DESTINATION bin) else() - message(${PROTOBUF_INCLUDE_DIR}) - file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.dll") + file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../bin/*.dll") + file(GLOB protobufc_dll "${Protobufc_INCLUDE_DIR}/../bin/*.dll") message(${protobuf_dll}) install(FILES ${protobuf_dll} DESTINATION bin) + install(FILES ${protobufc_dll} DESTINATION bin) endif() endif() From a60e9bdf527e3d68fa7ac2f250d514ff1f5113d3 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Fri, 3 Mar 2023 15:34:22 +0100 Subject: [PATCH 20/27] fix message error --- proto/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 8827d23..1a9f1e2 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -67,8 +67,8 @@ if(WIN32) message("PROTOBUF INCLUDE DIR ${PROTOBUF_INCLUDE_DIR}") file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.dll") file(GLOB protobufc_dll "${Protobufc_INCLUDE_DIR}/../debug/bin/*.dll") - message(${protobuf_dll}) - message(${protobufc_dll}) + message(STATUS ${protobuf_dll}) + message(STATUS ${protobufc_dll}) # message(${protobuf_pdb}) install(FILES ${protobuf_dll} DESTINATION bin) install(FILES ${protobufc_dll} DESTINATION bin) From fd4e972bcb8810bb51126298eb570bfb7dd11a67 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Mon, 6 Mar 2023 21:03:55 +0100 Subject: [PATCH 21/27] linux fix --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 482588f..fe48172 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC video-metadata-proto PRIVATE - json-c::json-c json-c::json-c-static + json-c::json-c ulog futils mp4 From 4fc934004e31743de9b6a90b79d11009b7322fe8 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Thu, 9 Mar 2023 11:48:19 +0100 Subject: [PATCH 22/27] Find the protobuf-c automagically --- proto/CMakeLists.txt | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 1a9f1e2..44b854e 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -10,9 +10,15 @@ list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIR}) if(NOT DEFINED Protobuf_PROTOC_EXECUTABLE) message(FATAL_ERROR "Unable to locate protoc-c executable please set with -DPROTOBUF_PROTOCC!") else() + + get_filename_component(Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE} DIRECTORY) + get_filename_component(Protobuf_PROTOC_GEN_C_EXECUTABLE_EXT ${Protobuf_PROTOC_EXECUTABLE} EXT) + set(Protobuf_PROTOC_GEN_C_EXECUTABLE ${Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH}-c/protoc-gen-c${Protobuf_PROTOC_GEN_C_EXECUTABLE_EXT}) message(STATUS "Using the following binary \"${Protobuf_PROTOC_EXECUTABLE}\" to create vmeta" ) + message(STATUS + "Using the following protobuf-c plugin \"${Protobuf_PROTOC_GEN_C_EXECUTABLE}\"" ) # Proto files set(vmeta_protos @@ -29,22 +35,12 @@ else() add_custom_command( - OUTPUT ${vmeta_protos_srcs} + OUTPUT ${vmeta_protos_srcs} ${vmeta_protos_hdrs} COMMAND ${Protobuf_PROTOC_EXECUTABLE} - ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} + ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} --plugin "protoc-gen-c=${Protobuf_PROTOC_GEN_C_EXECUTABLE}" ${vmeta_protos} ) - - add_custom_command( - OUTPUT ${vmeta_protos_hdrs} - COMMAND ${Protobuf_PROTOC_EXECUTABLE} - ARGS --c_out ${CMAKE_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} - ${vmeta_protos} - ) - - - add_library(${PROJECT_NAME} ${vmeta_protos_srcs}) target_link_directories(${PROJECT_NAME} PUBLIC ${Protobuf_INCLUDE_DIRS}/../debug/lib) target_include_directories(${PROJECT_NAME} PUBLIC From 605407bb8a5d38889eef00e2c7158e1a73249a55 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Tue, 14 Mar 2023 09:25:54 +0100 Subject: [PATCH 23/27] use shared lib --- CMakeLists.txt | 34 +++++++++++++++- include/video-metadata/vmeta.h | 6 ++- proto/CMakeLists.txt | 74 ++++++++++++++++++++-------------- 3 files changed, 82 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe48172..1c292e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ set(LIB_SOURCES src/vmeta_utils.c ) -add_library(${PROJECT_NAME} ${LIB_SOURCES}) +add_library(${PROJECT_NAME} SHARED ${LIB_SOURCES}) # checks if set up rpath exists for install if(COMMAND set_up_rpath) @@ -54,6 +54,38 @@ target_link_libraries(${PROJECT_NAME} protobuf-c ) +# to get all header files correctly +set(${PROJECT_NAME}-headers + ${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/ +) +install( + DIRECTORY ${${PROJECT_NAME}-headers} DESTINATION include/${PROJECT_NAME} +) + +if(WIN32) + install(CODE "file(GLOB dll_files \"${CMAKE_CURRENT_BINARY_DIR}/*.dll\")") + install(CODE "file(INSTALL DESTINATION \"\$\{CMAKE_INSTALL_PREFIX\}/bin\" TYPE SHARED_LIBRARY FILES \$\{dll_files\})") +else() + install(CODE "set(DEPENDENCY_PATHS \"\$\\")") + install(CODE [[ + file(GET_RUNTIME_DEPENDENCIES + LIBRARIES $ + RESOLVED_DEPENDENCIES_VAR _r_deps + UNRESOLVED_DEPENDENCIES_VAR _u_deps + DIRECTORIES ${DEPENDENCY_PATHS} + ) + foreach(_file ${_r_deps}) + file(INSTALL + DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" + TYPE SHARED_LIBRARY + FOLLOW_SYMLINK_CHAIN + FILES "${_file}" + ) + endforeach() + list(LENGTH _u_deps _u_length) + ]]) +endif() + install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets PUBLIC_HEADER DESTINATION include diff --git a/include/video-metadata/vmeta.h b/include/video-metadata/vmeta.h index 8343269..712c64a 100644 --- a/include/video-metadata/vmeta.h +++ b/include/video-metadata/vmeta.h @@ -28,7 +28,11 @@ #define _VMETA_H_ #include -#include +#ifndef _MSC_VER +# include +#else /* !_MSC_VER */ +# include +#endif /* !_MSC_VER */ #ifdef __cplusplus extern "C" { diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 44b854e..19a4934 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -11,9 +11,18 @@ if(NOT DEFINED Protobuf_PROTOC_EXECUTABLE) message(FATAL_ERROR "Unable to locate protoc-c executable please set with -DPROTOBUF_PROTOCC!") else() - get_filename_component(Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE} DIRECTORY) - get_filename_component(Protobuf_PROTOC_GEN_C_EXECUTABLE_EXT ${Protobuf_PROTOC_EXECUTABLE} EXT) - set(Protobuf_PROTOC_GEN_C_EXECUTABLE ${Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH}-c/protoc-gen-c${Protobuf_PROTOC_GEN_C_EXECUTABLE_EXT}) + get_filename_component(Protobuf_PROTOC_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE} DIRECTORY) + get_filename_component(Protobuf_PROTOC_EXECUTABLE_EXT ${Protobuf_PROTOC_EXECUTABLE} EXT) + set(Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE_PATH}-c) + set(Protobuf_PROTOC_GEN_C_EXECUTABLE ${Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH}/protoc-gen-c${Protobuf_PROTOC_EXECUTABLE_EXT}) + if(CMAKE_BUILD_TYPE MATCHES DEBUG) + list(FIND Protobuf_LIBRARY debug lib_index) + else() + list(FIND Protobuf_LIBRARY optimized lib_index) + endif() + math(EXPR lib_index "${lib_index} + 1") + list(GET Protobuf_LIBRARY ${lib_index} Protobuf_LIBRARY_USE) + get_filename_component(Protobuf_LIBRARY_DIRECTORY ${Protobuf_LIBRARY_USE} DIRECTORY) message(STATUS "Using the following binary \"${Protobuf_PROTOC_EXECUTABLE}\" to create vmeta" ) @@ -41,41 +50,46 @@ else() ${vmeta_protos} ) - add_library(${PROJECT_NAME} ${vmeta_protos_srcs}) - target_link_directories(${PROJECT_NAME} PUBLIC ${Protobuf_INCLUDE_DIRS}/../debug/lib) + add_library(${PROJECT_NAME} SHARED ${vmeta_protos_srcs}) + set_target_properties(${PROJECT_NAME} PROPERTIES + POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS} + ) + target_link_directories(${PROJECT_NAME} PUBLIC ${Protobuf_LIBRARY_DIRECTORY}) target_include_directories(${PROJECT_NAME} PUBLIC "$" ) - target_include_directories(${PROJECT_NAME} PUBLIC - ${Protobufc_INCLUDE_DIR} - ) - target_link_directories(${PROJECT_NAME} PUBLIC - ${Protobufc_INCLUDE_DIR}/../lib) target_link_libraries(${PROJECT_NAME} PRIVATE video-metadata-proto-generated protobuf-c) - -if(WIN32) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - - message("PROTOBUF INCLUDE DIR ${PROTOBUF_INCLUDE_DIR}") - file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../debug/bin/*.dll") - file(GLOB protobufc_dll "${Protobufc_INCLUDE_DIR}/../debug/bin/*.dll") - message(STATUS ${protobuf_dll}) - message(STATUS ${protobufc_dll}) - # message(${protobuf_pdb}) - install(FILES ${protobuf_dll} DESTINATION bin) - install(FILES ${protobufc_dll} DESTINATION bin) - else() - file(GLOB protobuf_dll "${PROTOBUF_INCLUDE_DIR}/../bin/*.dll") - file(GLOB protobufc_dll "${Protobufc_INCLUDE_DIR}/../bin/*.dll") - message(${protobuf_dll}) - install(FILES ${protobuf_dll} DESTINATION bin) - install(FILES ${protobufc_dll} DESTINATION bin) - endif() -endif() + install(FILES ${vmeta_protos_hdrs} DESTINATION include) + file(GLOB protobuf_c_hdrs "${Protobuf_INCLUDE_DIR}/protobuf-c/*.h") + install(FILES ${protobuf_c_hdrs} DESTINATION include/protobuf-c) + + if(WIN32) + install(CODE "file(GLOB dll_files \"${CMAKE_CURRENT_BINARY_DIR}/*.dll\")") + install(CODE "file(INSTALL DESTINATION \"\$\{CMAKE_INSTALL_PREFIX\}/bin\" TYPE SHARED_LIBRARY FILES \$\{dll_files\})") + else() + install(CODE "set(DEPENDENCY_PATHS \"\$\\")") + install(CODE [[ + file(GET_RUNTIME_DEPENDENCIES + LIBRARIES $ + RESOLVED_DEPENDENCIES_VAR _r_deps + UNRESOLVED_DEPENDENCIES_VAR _u_deps + DIRECTORIES ${DEPENDENCY_PATHS} + ) + foreach(_file ${_r_deps}) + file(INSTALL + DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" + TYPE SHARED_LIBRARY + FOLLOW_SYMLINK_CHAIN + FILES "${_file}" + ) + endforeach() + list(LENGTH _u_deps _u_length) + ]]) + endif() install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets From e0b15de08d04254a730f21b4a599c11e93889600 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Tue, 14 Mar 2023 14:09:36 +0100 Subject: [PATCH 24/27] fix system lib exclusion --- CMakeLists.txt | 1 + proto/CMakeLists.txt | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c292e5..477d3f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,7 @@ else() RESOLVED_DEPENDENCIES_VAR _r_deps UNRESOLVED_DEPENDENCIES_VAR _u_deps DIRECTORIES ${DEPENDENCY_PATHS} + POST_EXCLUDE_REGEXES "^/lib" "^/usr/lib" ) foreach(_file ${_r_deps}) file(INSTALL diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 19a4934..ce6e220 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -10,11 +10,9 @@ list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIR}) if(NOT DEFINED Protobuf_PROTOC_EXECUTABLE) message(FATAL_ERROR "Unable to locate protoc-c executable please set with -DPROTOBUF_PROTOCC!") else() - - get_filename_component(Protobuf_PROTOC_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE} DIRECTORY) - get_filename_component(Protobuf_PROTOC_EXECUTABLE_EXT ${Protobuf_PROTOC_EXECUTABLE} EXT) - set(Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE_PATH}-c) - set(Protobuf_PROTOC_GEN_C_EXECUTABLE ${Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH}/protoc-gen-c${Protobuf_PROTOC_EXECUTABLE_EXT}) + get_filename_component(Protobuf_PROTOC_EXECUTABLE_PATH ${Protobuf_INCLUDE_DIR} DIRECTORY) + set(Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE_PATH}/tools/protobuf-c) + set(Protobuf_PROTOC_GEN_C_EXECUTABLE ${Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH}/protoc-gen-c${CMAKE_EXECUTABLE_SUFFIX}) if(CMAKE_BUILD_TYPE MATCHES DEBUG) list(FIND Protobuf_LIBRARY debug lib_index) else() @@ -71,13 +69,14 @@ else() install(CODE "file(GLOB dll_files \"${CMAKE_CURRENT_BINARY_DIR}/*.dll\")") install(CODE "file(INSTALL DESTINATION \"\$\{CMAKE_INSTALL_PREFIX\}/bin\" TYPE SHARED_LIBRARY FILES \$\{dll_files\})") else() - install(CODE "set(DEPENDENCY_PATHS \"\$\\")") + install(CODE "set(DEPENDENCY_PATHS \"${Protobuf_LIBRARY_DIRECTORY}\")") install(CODE [[ file(GET_RUNTIME_DEPENDENCIES LIBRARIES $ RESOLVED_DEPENDENCIES_VAR _r_deps UNRESOLVED_DEPENDENCIES_VAR _u_deps DIRECTORIES ${DEPENDENCY_PATHS} + POST_EXCLUDE_REGEXES "^/lib" "^/usr/lib" ) foreach(_file ${_r_deps}) file(INSTALL From 7ef8afe0657aa5077a3c4600968d61806b861df8 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Thu, 16 Mar 2023 15:41:56 +0100 Subject: [PATCH 25/27] fix debug dependency --- CMakeLists.txt | 2 -- proto/CMakeLists.txt | 14 +++++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 477d3f6..c3a6a02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,13 +66,11 @@ if(WIN32) install(CODE "file(GLOB dll_files \"${CMAKE_CURRENT_BINARY_DIR}/*.dll\")") install(CODE "file(INSTALL DESTINATION \"\$\{CMAKE_INSTALL_PREFIX\}/bin\" TYPE SHARED_LIBRARY FILES \$\{dll_files\})") else() - install(CODE "set(DEPENDENCY_PATHS \"\$\\")") install(CODE [[ file(GET_RUNTIME_DEPENDENCIES LIBRARIES $ RESOLVED_DEPENDENCIES_VAR _r_deps UNRESOLVED_DEPENDENCIES_VAR _u_deps - DIRECTORIES ${DEPENDENCY_PATHS} POST_EXCLUDE_REGEXES "^/lib" "^/usr/lib" ) foreach(_file ${_r_deps}) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index ce6e220..93fc1f0 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.20) project(video-metadata-proto VERSION 1.0) -add_library(video-metadata-proto-generated INTERFACE) +add_library(${PROJECT_NAME}-generated INTERFACE) find_package(Protobuf REQUIRED) list(APPEND INCLUDE_PATH ${CMAKE_BINARY_DIR} ${Protobuf_INCLUDE_DIR}) @@ -13,7 +13,7 @@ else() get_filename_component(Protobuf_PROTOC_EXECUTABLE_PATH ${Protobuf_INCLUDE_DIR} DIRECTORY) set(Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH ${Protobuf_PROTOC_EXECUTABLE_PATH}/tools/protobuf-c) set(Protobuf_PROTOC_GEN_C_EXECUTABLE ${Protobuf_PROTOC_GEN_C_EXECUTABLE_PATH}/protoc-gen-c${CMAKE_EXECUTABLE_SUFFIX}) - if(CMAKE_BUILD_TYPE MATCHES DEBUG) + if(CMAKE_BUILD_TYPE MATCHES "Debug") list(FIND Protobuf_LIBRARY debug lib_index) else() list(FIND Protobuf_LIBRARY optimized lib_index) @@ -23,9 +23,11 @@ else() get_filename_component(Protobuf_LIBRARY_DIRECTORY ${Protobuf_LIBRARY_USE} DIRECTORY) message(STATUS - "Using the following binary \"${Protobuf_PROTOC_EXECUTABLE}\" to create vmeta" ) + "Using the following binary \"${Protobuf_PROTOC_EXECUTABLE}\" to create vmeta") message(STATUS - "Using the following protobuf-c plugin \"${Protobuf_PROTOC_GEN_C_EXECUTABLE}\"" ) + "Using the following protobuf-c plugin \"${Protobuf_PROTOC_GEN_C_EXECUTABLE}\"") + message(STATUS + "Using the following protobuf-c library \"${Protobuf_LIBRARY_DIRECTORY}\"") # Proto files set(vmeta_protos @@ -58,7 +60,7 @@ else() ) target_link_libraries(${PROJECT_NAME} PRIVATE - video-metadata-proto-generated + ${PROJECT_NAME}-generated protobuf-c) install(FILES ${vmeta_protos_hdrs} DESTINATION include) @@ -69,13 +71,11 @@ else() install(CODE "file(GLOB dll_files \"${CMAKE_CURRENT_BINARY_DIR}/*.dll\")") install(CODE "file(INSTALL DESTINATION \"\$\{CMAKE_INSTALL_PREFIX\}/bin\" TYPE SHARED_LIBRARY FILES \$\{dll_files\})") else() - install(CODE "set(DEPENDENCY_PATHS \"${Protobuf_LIBRARY_DIRECTORY}\")") install(CODE [[ file(GET_RUNTIME_DEPENDENCIES LIBRARIES $ RESOLVED_DEPENDENCIES_VAR _r_deps UNRESOLVED_DEPENDENCIES_VAR _u_deps - DIRECTORIES ${DEPENDENCY_PATHS} POST_EXCLUDE_REGEXES "^/lib" "^/usr/lib" ) foreach(_file ${_r_deps}) From 3af9c5ca1325ee8a6065c30d2c936d9e593f9744 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Tue, 21 Mar 2023 13:05:58 +0100 Subject: [PATCH 26/27] dll fixes --- proto/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index 93fc1f0..dade7fd 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -86,7 +86,6 @@ else() FILES "${_file}" ) endforeach() - list(LENGTH _u_deps _u_length) ]]) endif() From ac7e8d3a687b60a08b61da881f35764495e25443 Mon Sep 17 00:00:00 2001 From: Andreas Viborg Date: Tue, 21 Mar 2023 13:12:27 +0100 Subject: [PATCH 27/27] dll fixes --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c3a6a02..e4d0b42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,6 @@ else() FILES "${_file}" ) endforeach() - list(LENGTH _u_deps _u_length) ]]) endif()