[waffle] [PATCH 19/19] cmake: rework cmocka build process
Emil Velikov
emil.l.velikov at gmail.com
Mon Aug 4 10:03:33 PDT 2014
Rather than wrapping around cmocka's existing cmake, simply inherit
the build setup/variables from the waffle project and build a simple
cmocka static library.
This way we'll no longer need to add the custom commands for build
and we'll be able to easily handle mingw-w64 and msvc build :)
To make things even better this speeds up the configure/build process.
Patch is largely written by Nils Gladitz, ngladitz on #cmake
Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
A small lovely patch strictly speaking not part of this series. Yet I've
that I had it locally for ages, and without it the "fix-make-check" will
not work at all :'(
-Emil
cmake/Modules/WaffleCMocka.cmake | 58 +++-------------------------------------
1 file changed, 4 insertions(+), 54 deletions(-)
diff --git a/cmake/Modules/WaffleCMocka.cmake b/cmake/Modules/WaffleCMocka.cmake
index e276acd..9222645 100644
--- a/cmake/Modules/WaffleCMocka.cmake
+++ b/cmake/Modules/WaffleCMocka.cmake
@@ -24,60 +24,10 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
set(cmocka_source_dir ${CMAKE_SOURCE_DIR}/third_party/cmocka)
-set(cmocka_build_dir ${CMAKE_BINARY_DIR}/third_party/cmocka/build)
-set(cmocka_cmake_output_file ${cmocka_build_dir}/waffle-cmake.log)
-set(cmocka_cmake_error_file ${cmocka_build_dir}/waffle-cmake.err)
-set(cmocka_cmake_command "cd \"${cmocka_build_dir}\" && cmake -G\"${CMAKE_GENERATOR}\" -DCMAKE_C_COMPILER=\"${CMAKE_C_COMPILER}\" \"${cmocka_source_dir}\"")
-if(waffle_on_linux)
- set(cmocka_library_location ${cmocka_build_dir}/src/libcmocka.so)
-elseif(waffle_on_mac)
- set(cmocka_library_location ${cmocka_build_dir}/src/libcmocka.dylib)
-endif()
-
-include_directories(${cmocka_source_dir}/include)
-link_directories(${cmocka_build_dir}/src)
-
-add_library(cmocka SHARED IMPORTED)
-set_target_properties(cmocka
- PROPERTIES
- IMPORTED_LOCATION ${cmocka_library_location}
-)
-add_dependencies(cmocka cmocka-build)
-add_custom_command(
- OUTPUT ${cmocka_library_location}
- WORKING_DIRECTORY ${cmocka_build_dir}
- COMMAND cmake --build .
-)
-
-add_custom_target(cmocka-build
- DEPENDS ${cmocka_library_location}
-)
-add_custom_target(cmocka-clean
- WORKING_DIRECTORY ${cmocka_build_dir}
- COMMAND cmake --build . --target clean
+list(APPEND CMOCKA_SOURCES
+ ${cmocka_source_dir}/src/cmocka.c
)
-# Configure CMocka.
-if(NOT EXISTS ${cmocka_build_dir}/CMakeCache.txt)
- file(MAKE_DIRECTORY ${cmocka_build_dir})
- message(STATUS "Configuring subproject third_party/cmocka")
- message(STATUS "${cmocka_cmake_command}")
- execute_process(
- COMMAND sh -c ${cmocka_cmake_command}
- RESULT_VARIABLE cmocka_cmake_result
- OUTPUT_FILE ${cmocka_cmake_output_file}
- ERROR_FILE ${cmocka_cmake_error_file}
- )
- if(NOT ${cmocka_cmake_result} EQUAL 0)
- if(EXISTS ${cmocka_cmake_error_file})
- message(STATUS "Error messages from subproject third_party/cmocka:")
- message(STATUS)
- execute_process(COMMAND cat ${cmocka_cmake_error_file})
- endif()
- message(STATUS "See following files for details on cmocka configuration failure::")
- message(STATUS " ${cmocka_cmake_output_file}")
- message(STATUS " ${cmocka_cmake_error_file}")
- message(FATAL_ERROR "Failed to configure subproject third_party/cmocka")
- endif()
-endif()
+add_library(cmocka STATIC ${cmocka_source_dir}/src/cmocka.c)
+target_include_directories(cmocka PUBLIC ${cmocka_source_dir}/include)
--
2.0.2
More information about the waffle
mailing list