This is an automated email from the ASF dual-hosted git repository.

abroekhuis pushed a commit to branch feature/support_multiple_build_types
in repository https://gitbox.apache.org/repos/asf/celix.git

commit b83b72ffdb3b0bbd47b6d38e662cb2cf73b09a27
Author: Alexander Broekhuis <[email protected]>
AuthorDate: Mon Apr 20 10:30:03 2020 +0200

    Updated cmake files to be able to build and install multiple build types 
(Debug, Release, etc).
    For Debug, libs are postfixed with "d", and bundles and the CelixTargets 
file with "Debug".
---
 CMakeLists.txt                          |  7 +++++--
 cmake/cmake_celix/BundlePackaging.cmake | 23 +++++++++++++++--------
 documents/cmake_commands/README.md      |  4 ++--
 3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 665eb92..953522f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,7 +40,8 @@ IF (ANDROID)
 ELSE ()
     set(CMAKE_C_FLAGS "-D_GNU_SOURCE -std=gnu99 -fPIC ${CMAKE_C_FLAGS}")
     set(CMAKE_CXX_FLAGS "-std=c++11 -fno-rtti ${CMAKE_CXX_FLAGS}")
-    set(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}")
+    set(CMAKE_C_FLAGS "-Wall -Werror -Wno-nullability-completeness 
-Wno-expansion-to-defined ${CMAKE_C_FLAGS}")
+#    set(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}")
     set(CMAKE_CXX_FLAGS "-Wall -Wextra -Weffc++ ${CMAKE_CXX_FLAGS}")
     set(CMAKE_C_FLAGS_DEBUG "-g -DDEBUG ${CMAKE_C_FLAGS}")
     set(CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG ${CMAKE_CXX_FLAGS}")
@@ -93,6 +94,8 @@ set(CELIX_MICRO "0")
 # Default bundle version
 set(DEFAULT_VERSION 1.0.0)
 
+set(CMAKE_DEBUG_POSTFIX "d")
+
 # Options
 option(ENABLE_TESTING "Enables unit/bundle testing" FALSE)
 if (ENABLE_TESTING)
@@ -137,7 +140,7 @@ add_subdirectory(examples/celix-examples examples)
 
 #export targets
 install(EXPORT celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE 
Targets.cmake COMPONENT cmake)
-install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake 
FILE CelixTargets.cmake COMPONENT cmake)
+install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake 
FILE CelixTargets COMPONENT cmake)
 
 #install celix cmake modules
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/ DESTINATION 
share/celix/cmake/Modules)
diff --git a/cmake/cmake_celix/BundlePackaging.cmake 
b/cmake/cmake_celix/BundlePackaging.cmake
index a1b2c5b..2f22b5b 100644
--- a/cmake/cmake_celix/BundlePackaging.cmake
+++ b/cmake/cmake_celix/BundlePackaging.cmake
@@ -189,7 +189,10 @@ function(add_celix_bundle)
     if (NOT DEFINED BUNDLE_SYMBOLIC_NAME)
         set(BUNDLE_SYMBOLIC_NAME ${BUNDLE_TARGET_NAME})
     endif ()
-    if (NOT DEFINED BUNDLE_FILENAME)
+
+    if (NOT DEFINED BUNDLE_FILENAME AND NOT CMAKE_BUILD_TYPE STREQUAL 
"Release")
+        set(BUNDLE_FILENAME ${BUNDLE_TARGET_NAME}-${CMAKE_BUILD_TYPE}.zip)
+    elseif(NOT DEFINED BUNDLE_FILENAME)
         set(BUNDLE_FILENAME ${BUNDLE_TARGET_NAME}.zip)
     endif ()
 
@@ -762,7 +765,7 @@ function(install_celix_bundle)
     if (INSTALL_EXPORT)
         get_target_property(CURRENT_EXPORT_BUNDLES celix-bundles 
EXPORT_${INSTALL_EXPORT}_BUNDLES)
 
-       if (NOT CURRENT_EXPORT_BUNDLES)
+       if (NOT CURRENT_EXPORT_BUNDLES)
             set(CURRENT_EXPORT_BUNDLES ${BUNDLE})
         else ()
             list(APPEND CURRENT_EXPORT_BUNDLES ${BUNDLE})
@@ -791,7 +794,7 @@ install using the provided <export_name>. These imported 
CMake targets can be us
 bundles.
 
 Optional Arguments:
-- FILE: The Celix Targets cmake filename to used. Default is 
<export_name>BundleTargets.cmake
+- FILE: The Celix Targets cmake filename to used, without the cmake extension. 
Default is <export_name>BundleTargets
 - PROJECT_NAME: The project name to used for the share location. Default is 
the cmake project name.
 - DESTINATION: The (relative) location to install the Celix Targets cmake file 
to. Default is share/<PROJECT_NAME>/cmake.
 
@@ -803,7 +806,7 @@ install_celix_targets(<export_name>
 )
 
 Example:
-install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake 
FILE CelixTargets.cmake)
+install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake 
FILE CelixTargets)
 ]]
 
 function(install_celix_bundle_targets)
@@ -825,10 +828,14 @@ function(install_celix_bundle_targets)
         message(FATAL_ERROR "Please provide a namespace used for the generated 
cmake targets.")
     endif ()
 
-
     if (NOT DEFINED EXPORT_FILE)
-        set(EXPORT_FILE ${EXPORT_NAME}BundleTargets.cmake)
+        set(EXPORT_FILE ${EXPORT_NAME}BundleTargets)
     endif ()
+
+#    if (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
+        set(EXPORT_FILE ${EXPORT_FILE}-${CMAKE_BUILD_TYPE})
+#    endif ()
+
     if (NOT DEFINED EXPORT_PROJECT_NAME)
         string(TOLOWER ${PROJECT_NAME} EXPORT_PROJECT_NAME)
     endif()
@@ -875,8 +882,8 @@ endif ()
     file(GENERATE OUTPUT "${CONF_FILE}" INPUT "${CONF_IN_FILE}")
 
     if (EXPORT_COMPONENT)
-        install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME 
${EXPORT_FILE} COMPONENT ${EXPORT_COMPONENT})
+        install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME 
${EXPORT_FILE}.cmake COMPONENT ${EXPORT_COMPONENT})
     else ()
-        install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME 
${EXPORT_FILE})
+        install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME 
${EXPORT_FILE}.cmake)
     endif ()
 endfunction()
diff --git a/documents/cmake_commands/README.md 
b/documents/cmake_commands/README.md
index e0ac129..3026a3f 100644
--- a/documents/cmake_commands/README.md
+++ b/documents/cmake_commands/README.md
@@ -189,7 +189,7 @@ install using the provided <export_name>. These imported 
CMake targets can be us
 bundles. 
 
 Optional Arguments:
-- FILE: The Celix Targets cmake filename to used. Default is 
<export_name>BundleTargets.cmake
+- FILE: The Celix Targets cmake filename to used, without the cmake extension. 
Default is <export_name>BundleTargets.
 - PROJECT_NAME: The project name to used for the share location. Default is 
the cmake project name.
 - DESTINATION: The (relative) location to install the Celix Targets cmake file 
to. Default is share/<PROJECT_NAME>/cmake.
 
@@ -204,7 +204,7 @@ install_celix_targets(<export_name>
 
 Example:
 ```CMake
-install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake 
FILE CelixTargets.cmake)
+install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake 
FILE CelixTargets)
 ```
 
 

Reply via email to