You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2018/07/03 20:45:58 UTC

[6/6] celix git commit: CELIX-451: Adds celix_bundle_dir for copying files. Also remove mongoose example and adds a new civetweb example.

CELIX-451: Adds celix_bundle_dir for copying files. Also remove mongoose example and adds a new civetweb example.

- The celix_bundle_dir also copy files again if they are updated
- The mongoose example was removed, because the updated version of mongoose is now GPL
- The civetweb example also uses a websocket


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/c4de9077
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/c4de9077
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/c4de9077

Branch: refs/heads/develop
Commit: c4de9077dce47e13f4a084aa493f3e05a94b8408
Parents: 3f24edf
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Tue Jul 3 22:43:27 2018 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Tue Jul 3 22:43:27 2018 +0200

----------------------------------------------------------------------
 cmake/cmake_celix/BundlePackaging.cmake         |    67 +-
 examples/celix-examples/CMakeLists.txt          |     2 +-
 examples/celix-examples/civetweb/CMakeLists.txt |    37 +
 .../celix-examples/civetweb/civetweb/civetweb.c | 19792 +++++++++++++++++
 .../celix-examples/civetweb/civetweb/civetweb.h |  1498 ++
 .../civetweb/civetweb/handle_form.inl           |   981 +
 .../celix-examples/civetweb/civetweb/md5.inl    |   471 +
 .../celix-examples/civetweb/civetweb/sha1.inl   |   323 +
 .../celix-examples/civetweb/civetweb/timer.inl  |   246 +
 .../civetweb/resources/index.html               |    34 +
 .../celix-examples/civetweb/resources/script.js |    43 +
 .../civetweb/src/bundle_activator.c             |   108 +
 examples/celix-examples/mongoose/CMakeLists.txt |    42 -
 .../mongoose/private/include/mongoose.h         |   218 -
 .../mongoose/private/src/activator.c            |    79 -
 .../mongoose/private/src/mongoose.c             |  4076 ----
 .../celix-examples/mongoose/root/index.html     |    23 -
 17 files changed, 23595 insertions(+), 4445 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/c4de9077/cmake/cmake_celix/BundlePackaging.cmake
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/BundlePackaging.cmake b/cmake/cmake_celix/BundlePackaging.cmake
index 6666d20..35f5c0a 100644
--- a/cmake/cmake_celix/BundlePackaging.cmake
+++ b/cmake/cmake_celix/BundlePackaging.cmake
@@ -340,15 +340,26 @@ function(celix_bundle_libs)
             endif()
             list(APPEND DEPS ${OUT}) 
         elseif (TARGET ${LIB})
+            get_target_property(TARGET_TYPE ${LIB} TYPE)
             #Assuming target
             #NOTE add_custom_command does not support generator expression in OUTPUT value (e.g. $<TARGET_FILE:${LIB}>)
             #Using a two step approach to be able to use add_custom_command instead of add_custom_target
             set(OUT "${BUNDLE_GEN_DIR}/lib-${LIBID}-copy-timestamp")
-            add_custom_command(OUTPUT ${OUT}
-                COMMAND ${CMAKE_COMMAND} -E touch ${OUT}
-                COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${LIB}>" "${BUNDLE_DIR}/$<TARGET_SONAME_FILE_NAME:${LIB}>"
-                DEPENDS ${LIB}
-            )
+            if ("${TARGET_TYPE}" STREQUAL "STATIC_LIBRARY")
+                add_custom_command(OUTPUT ${OUT}
+                    COMMAND ${CMAKE_COMMAND} -E touch ${OUT}
+                    COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${LIB}>" "${BUNDLE_DIR}/$<TARGET_FILE_NAME:${LIB}>"
+                    DEPENDS ${LIB}
+                )
+            elseif ("${TARGET_TYPE}" STREQUAL "SHARED_LIBRARY")
+                add_custom_command(OUTPUT ${OUT}
+                    COMMAND ${CMAKE_COMMAND} -E touch ${OUT}
+                    COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${LIB}>" "${BUNDLE_DIR}/$<TARGET_SONAME_FILE_NAME:${LIB}>"
+                    DEPENDS ${LIB}
+                    )
+            else()
+                message(FATAL_ERROR "Unexptected target type (${TARGET_TYPE}) for target ${LIB}. Not a library")
+            endif()
             if (ADD_TO_MANIFEST)
                 list(APPEND LIBS "$<TARGET_SONAME_FILE_NAME:${LIB}>")
             endif()
@@ -404,9 +415,9 @@ function(bundle_files)
     message(DEPRECATION "bundle_files is deprecated, use celix_bundle_files instead.")
     celix_bundle_files(${ARGN})
 endfunction()
+#Note with celix_bundle_files, files are copied cmake generation time. Updates are not copied !!
 function(celix_bundle_files)
     #0 is bundle TARGET
-    #1..n is header name / header value
     list(GET ARGN 0 BUNDLE)
     list(REMOVE_AT ARGN 0)
 
@@ -427,6 +438,50 @@ function(celix_bundle_files)
     file(COPY ${FILES_UNPARSED_ARGUMENTS} DESTINATION ${DESTINATION})
 endfunction()
 
+#Note celix_bundle_dir copies the dir and can track changes.
+function(celix_bundle_dir)
+    #0 is bundle TARGET
+    list(GET ARGN 0 BUNDLE)
+    list(REMOVE_AT ARGN 0)
+
+    #1 is the input dir
+    list(GET ARGN 0 INPUT_DIR)
+    list(REMOVE_AT ARGN 0)
+
+    if (NOT BUNDLE OR NOT INPUT_DIR)
+        message(FATAL_ERROR "celix_bundle_dir must have atleast two arguments: BUNDLE_TARGET and INPUT_DIR!")
+    endif()
+
+    set(OPTIONS )
+    set(ONE_VAL_ARGS DESTINATION)
+    set(MULTI_VAL_ARGS )
+    cmake_parse_arguments(COPY "${OPTIONS}" "${ONE_VAL_ARGS}" "${MULTI_VAL_ARGS}" ${ARGN})
+
+    get_target_property(BUNDLE_DIR ${BUNDLE} "BUNDLE_CONTENT_DIR")
+    if (NOT COPY_DESTINATION)
+        set(DESTINATION "${BUNDLE_DIR}/${FILES_DESTINATION}")
+    else()
+        set(DESTINATION "${BUNDLE_DIR}")
+    endif()
+
+    set(COPY_CMAKE_SCRIPT "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-${INPUT_DIR}.cmake")
+    file(WRITE ${COPY_CMAKE_SCRIPT}
+            "file(COPY ${CMAKE_CURRENT_LIST_DIR}/${INPUT_DIR} DESTINATION ${DESTINATION})")
+
+    set(TIMESTAMP "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-${INPUT_DIR}.timestamp")
+    file(GLOB DIR_FILES ${INPUT_DIR})
+    add_custom_command(OUTPUT ${TIMESTAMP}
+            COMMAND ${CMAKE_COMMAND} -E touch ${TIMESTAMP}
+            COMMAND ${CMAKE_COMMAND} -P ${COPY_CMAKE_SCRIPT}
+            DEPENDS ${DIR_FILES}
+            COMMENT "Copying dir ${INPUT_DIR} to ${DESTINATION}"
+    )
+
+    get_target_property(DEPS ${BUNDLE} "BUNDLE_DEPEND_TARGETS")
+    list(APPEND DEPS "${TIMESTAMP}")
+    set_target_properties(${BUNDLE} PROPERTIES "BUNDLE_DEPEND_TARGETS" "${DEPS}")
+endfunction()
+
 function(bundle_headers)
     message(DEPRECATION "bundle_headers is deprecated, use celix_bundle_headers instead.")
     celix_bundle_headers(${ARGN})

http://git-wip-us.apache.org/repos/asf/celix/blob/c4de9077/examples/celix-examples/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/celix-examples/CMakeLists.txt b/examples/celix-examples/CMakeLists.txt
index f11979f..86ed757 100644
--- a/examples/celix-examples/CMakeLists.txt
+++ b/examples/celix-examples/CMakeLists.txt
@@ -35,7 +35,7 @@ if (EXAMPLES)
     add_subdirectory(dm_example_cxx)
 
     if (NOT ANDROID)
-    	add_subdirectory(mongoose)
+        add_subdirectory(civetweb)
     endif()
     add_subdirectory(embedding)
     add_subdirectory(service_hook_example)

http://git-wip-us.apache.org/repos/asf/celix/blob/c4de9077/examples/celix-examples/civetweb/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/celix-examples/civetweb/CMakeLists.txt b/examples/celix-examples/civetweb/CMakeLists.txt
new file mode 100644
index 0000000..99926f9
--- /dev/null
+++ b/examples/celix-examples/civetweb/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+add_library(civetweb_static STATIC
+        civetweb/civetweb.c
+)
+target_include_directories(civetweb_static PUBLIC SYSTEM civetweb)
+target_compile_options(civetweb_static PRIVATE -Wno-format -Wno-implicit-function-declaration -DUSE_WEBSOCKET)
+
+add_celix_bundle(embedded_civetweb
+    VERSION 1.0.0
+    SOURCES src/bundle_activator.c
+)
+target_link_libraries(embedded_civetweb PRIVATE Celix::shell_api)
+celix_bundle_private_libs(embedded_civetweb civetweb_static)
+celix_bundle_dir(embedded_civetweb resources)
+
+add_celix_container(civetweb_example
+    BUNDLES
+        Celix::shell
+        Celix::shell_tui
+        embedded_civetweb
+)
\ No newline at end of file