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 2017/11/15 20:24:30 UTC

celix git commit: CELIX-414: Adds back support for specifing a executable as launcher for the celix_add_container/add_deploy CMake command

Repository: celix
Updated Branches:
  refs/heads/develop 361abd711 -> f9dcf5567


CELIX-414: Adds back support for specifing a executable as launcher for the celix_add_container/add_deploy CMake command


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

Branch: refs/heads/develop
Commit: f9dcf5567deae388bcdbc03b03b6ff733fa6160e
Parents: 361abd7
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Wed Nov 15 21:32:19 2017 +0100
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Wed Nov 15 21:32:19 2017 +0100

----------------------------------------------------------------------
 cmake/cmake_celix/DeployPackaging.cmake | 84 +++++++++++++++++-----------
 cmake/cmake_celix/main.c.in             | 24 --------
 2 files changed, 50 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/f9dcf556/cmake/cmake_celix/DeployPackaging.cmake
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/DeployPackaging.cmake b/cmake/cmake_celix/DeployPackaging.cmake
index d4cd8d3..3ed6ebe 100644
--- a/cmake/cmake_celix/DeployPackaging.cmake
+++ b/cmake/cmake_celix/DeployPackaging.cmake
@@ -24,6 +24,23 @@ set_target_properties(containers PROPERTIES "CONTAINER_DEPLOYMENTS" "") #initial
 get_directory_property(CLEANFILES ADDITIONAL_MAKE_CLEAN_FILES)
 list(APPEND CLEANFILES "${CMAKE_BINARY_DIR}/deploy")
 set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
+
+set(CELIX_MAIN_CONTENT "
+#include \"celix_launcher.h\"
+
+int main(int argc, char *argv[]) {
+    return celixLauncher_launchWithArgs(argc, argv);
+}
+")
+file(GENERATE
+    OUTPUT "${PROJECT_BINARY_DIR}/celix/gen/main.c"
+    CONTENT "${CELIX_MAIN_CONTENT}"
+)
+file(GENERATE
+        OUTPUT "${PROJECT_BINARY_DIR}/celix/gen/main.cc"
+        CONTENT "${CELIX_MAIN_CONTENT}"
+)
+unset(CELIX_MAIN_CONTENT)
 #####
 
 function(add_deploy)
@@ -35,7 +52,7 @@ function(add_celix_container)
     list(REMOVE_AT ARGN 0)
 
     set(OPTIONS COPY CXX)
-    set(ONE_VAL_ARGS GROUP NAME LAUNCHER DIR)
+    set(ONE_VAL_ARGS GROUP NAME LAUNCHER LAUNCHER_SRC DIR)
     set(MULTI_VAL_ARGS BUNDLES PROPERTIES)
     cmake_parse_arguments(CONTAINER "${OPTIONS}" "${ONE_VAL_ARGS}" "${MULTI_VAL_ARGS}" ${ARGN})
 
@@ -66,25 +83,39 @@ function(add_celix_container)
     set(CONTAINER_PROPS "${CONTAINER_LOC}/config.properties")
     set(CONTAINER_ECLIPSE_LAUNCHER "${CONTAINER_LOC}/${CONTAINER_NAME}.launch")
 
-    if (CONTAINER_CXX)
-	    set(LAUNCHER_SRC "${CMAKE_CURRENT_BINARY_DIR}/${CONTAINER_TARGET}.launcher.cc")
+    if (CONTAINER_LAUNCHER_SRC)
+        set(LAUNCHER_SRC ${CONTAINER_LAUNCHER_SRC})
+    elseif (CONTAINER_CXX)
+	    set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/main.cc")
     else()
-	    set(LAUNCHER_SRC "${CMAKE_CURRENT_BINARY_DIR}/${CONTAINER_TARGET}.launcher.c")
+	    set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/main.c")
     endif()
 
-    add_custom_command(OUTPUT ${LAUNCHER_SRC}
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CELIX_CMAKE_DIRECTORY}/cmake_celix/main.c.in ${LAUNCHER_SRC}
+    set(TIMESTAMP_HEADER ${CMAKE_BINARY_DIR}/celix/timestamps/${CONTAINER_TARGET}-timestamp-header.h)
+    add_custom_command(OUTPUT ${TIMESTAMP_HEADER}
+        COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/celix/timestamps
+        COMMAND ${CMAKE_COMMAND} -E touch ${TIMESTAMP_HEADER}
         DEPENDS  "$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_TARGET_DEPS>" ${CONTAINER_FILE_TARGETS}
-        WORKING_DIRECTORY "${CONTAINER_LOC}"
         COMMENT "Deploying ${CONTAINER_PRINT_NAME} Celix container" VERBATIM
     )
 
-    include_directories(${CELIX_INCLUDE_DIRS})
-    add_executable(${CONTAINER_TARGET} ${LAUNCHER_SRC})
-    set_target_properties(${CONTAINER_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CONTAINER_LOC})
-    target_link_libraries(${CONTAINER_TARGET} ${CELIX_FRAMEWORK_LIBRARY} ${CELIX_UTILS_LIBRARY})
-    #TODO easy setup to link with additiona libs, i.e.
-    #target_link_libraries(${CONTAINER_TARGET} ${CELIX_DEFAULT_CONTAINER_LINK_LIBRARIES})
+    if (CONTAINER_LAUNCHER)
+        add_custom_target(${CONTAINER_TARGET}
+                DEPENDS ${TIMESTAMP_HEADER}
+        )
+        if (IS_ABSOLUTE "${CONTAINER_LAUNCHER}")
+            set(LAUNCHER "${CONTAINER_LAUNCHER}")
+        else()
+            #assuming target
+            set(LAUNCHER "$<TARGET_FILE:${CONTAINER_LAUNCHER}>")
+        endif()
+    else ()
+        include_directories(${CELIX_INCLUDE_DIRS})
+        add_executable(${CONTAINER_TARGET} ${LAUNCHER_SRC} ${TIMESTAMP_HEADER})
+        set_target_properties(${CONTAINER_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CONTAINER_LOC})
+        target_link_libraries(${CONTAINER_TARGET} ${CELIX_FRAMEWORK_LIBRARY} ${CELIX_UTILS_LIBRARY})
+        set(LAUNCHER "$<TARGET_FILE:${CONTAINER_TARGET}>")
+    endif ()
 
     #generate config.properties
     set(STAGE1_PROPERTIES "${CMAKE_CURRENT_BINARY_DIR}/${CONTAINER_TARGET}-container-config-stage1.properties")
@@ -100,32 +131,17 @@ $<JOIN:$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_PROPERTIES>,
         INPUT "${STAGE1_PROPERTIES}"
     )
 
-
-    #Setup launcher using specifie exe target / exe loc or the container launcher targer file
-    if (CONTAINER_LAUNCHER)
-        if (IS_ABSOLUTE "${CONTAINER_LAUNCHER}")
-            set(LAUNCHER "${CONTAINER_LAUNCHER}")
-        else()
-            #assuming target
-            set(LAUNCHER "$<TARGET_FILE:${CONTAINER_LAUNCHER}>")
-        endif()
-    else()
-        set(LAUNCHER "$<TARGET_FILE:${CONTAINER_TARGET}>")
-    endif()
-
     #needed in the release.sh & run.sh files
     #Setting CELIX_LIB_DIRS, CELIX_BIN_DIR and CELIX_LAUNCHER
-    if (EXISTS ${CELIX_FRAMEWORK_LIBRARY})
-        #CELIX_FRAMEWORK_LIBRARY set by FindCelix.cmake -> Celix Based Project
-        get_filename_component(CELIX_LIB_DIR ${CELIX_FRAMEWORK_LIBRARY} DIRECTORY) #Note assuming all celix libs are in the same dir
-        set(CELIX_LIB_DIRS "${CELIX_LIB_DIR}")
-        #CELIX_LAUNCHER is set by FindCelix.cmake
-        get_filename_component(CELIX_BIN_DIR ${CELIX_LAUNCHER} DIRECTORY)
-    else()
+    if (TARGET celix_framework)
         #Celix Main Project
         set(CELIX_LIB_DIRS "$<TARGET_FILE_DIR:celix_framework>:$<TARGET_FILE_DIR:celix_utils>:$<TARGET_FILE_DIR:celix_dfi>")
-        set(CELIX_LAUNCHER "$<TARGET_FILE:celix>")
         set(CELIX_BIN_DIR  "$<TARGET_FILE_DIR:celix>")
+    else ()
+        #CELIX_FRAMEWORK_LIBRARY and CELIX_LAUNCHER set by FindCelix.cmake -> Celix Based Project
+        get_filename_component(CELIX_LIB_DIR ${CELIX_FRAMEWORK_LIBRARY} DIRECTORY) #Note assuming all celix libs are in the same dir
+        set(CELIX_LIB_DIRS "${CELIX_LIB_DIR}")
+        get_filename_component(CELIX_BIN_DIR ${CELIX_LAUNCHER} DIRECTORY)
     endif()
 
 

http://git-wip-us.apache.org/repos/asf/celix/blob/f9dcf556/cmake/cmake_celix/main.c.in
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/main.c.in b/cmake/cmake_celix/main.c.in
deleted file mode 100644
index bd26e8b..0000000
--- a/cmake/cmake_celix/main.c.in
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- *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.
- */
-
-#include "celix_launcher.h"
-
-int main(int argc, char *argv[]) {
-    return celixLauncher_launchWithArgs(argc, argv);
-}
\ No newline at end of file