aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormyd7349 <myd7349@gmail.com>2019-05-01 17:19:12 -0500
committerPhil Christensen <philc@microsoft.com>2019-05-01 15:19:12 -0700
commitf47866c4c46da60061e97d752146f8ea2c05b01f (patch)
tree99a4056f66bd3f0204e3eef787ea8c6ba01d65ec
parentd3c18ed57e2ed58f922e556bbe1f50a88ea7c716 (diff)
downloadvcpkg-f47866c4c46da60061e97d752146f8ea2c05b01f.tar.gz
vcpkg-f47866c4c46da60061e97d752146f8ea2c05b01f.zip
[cmocka] Add new port (fix #4728) (#5669)
-rw-r--r--ports/cmocka/CONTROL3
-rw-r--r--ports/cmocka/fix-uwp.patch13
-rw-r--r--ports/cmocka/portfile.cmake48
-rw-r--r--ports/cmocka/shared-lib.patch22
-rw-r--r--ports/cmocka/static-lib.patch22
-rw-r--r--ports/cmocka/usage5
-rw-r--r--ports/cmocka/vcpkg-cmake-wrapper.cmake10
7 files changed, 123 insertions, 0 deletions
diff --git a/ports/cmocka/CONTROL b/ports/cmocka/CONTROL
new file mode 100644
index 000000000..042cf23a7
--- /dev/null
+++ b/ports/cmocka/CONTROL
@@ -0,0 +1,3 @@
+Source: cmocka
+Version: 1.1.5-1
+Description: An elegant unit testing framework for C with support for mock objects
diff --git a/ports/cmocka/fix-uwp.patch b/ports/cmocka/fix-uwp.patch
new file mode 100644
index 000000000..cb3828b1c
--- /dev/null
+++ b/ports/cmocka/fix-uwp.patch
@@ -0,0 +1,13 @@
+diff --git a/src/cmocka.c b/src/cmocka.c
+index 6bfc831..4c1c04b 100644
+--- a/src/cmocka.c
++++ b/src/cmocka.c
+@@ -3356,7 +3356,7 @@ int _run_tests(const UnitTest * const tests, const size_t number_of_tests) {
+ int _run_group_tests(const UnitTest * const tests, const size_t number_of_tests)
+ {
+ UnitTestFunction setup = NULL;
+- const char *setup_name;
++ const char *setup_name = NULL;
+ size_t num_setups = 0;
+ UnitTestFunction teardown = NULL;
+ const char *teardown_name = NULL;
diff --git a/ports/cmocka/portfile.cmake b/ports/cmocka/portfile.cmake
new file mode 100644
index 000000000..a448d3a70
--- /dev/null
+++ b/ports/cmocka/portfile.cmake
@@ -0,0 +1,48 @@
+include(vcpkg_common_functions)
+
+vcpkg_from_gitlab(
+ GITLAB_URL https://gitlab.com
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO cmocka/cmocka
+ REF cmocka-1.1.5
+ SHA512 4e305e500f448676be5503972c49089c51f38b47d8129add2205608ed73f9de8b911aee83c00da4ef52c0179a5b5ba0e3386f3bca839f18e7ab21787184d9990
+ HEAD_REF master
+ PATCHES
+ shared-lib.patch
+ static-lib.patch
+ fix-uwp.patch
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIB)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DUNIT_TESTING=OFF
+ -DWITH_EXAMPLES=OFF
+ -DBUILD_STATIC_LIB=${BUILD_STATIC_LIB}
+ -DWITH_STATIC_LIB=${BUILD_STATIC_LIB}
+)
+
+vcpkg_install_cmake()
+
+vcpkg_copy_pdbs()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT})
+
+file(COPY
+ ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake
+ DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}
+)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+configure_file(${SOURCE_PATH}/COPYING ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
+
+# Install usage
+configure_file(${CMAKE_CURRENT_LIST_DIR}/usage ${CURRENT_PACKAGES_DIR}/share/${PORT}/usage @ONLY)
+
+# CMake integration test
+#vcpkg_test_cmake(PACKAGE_NAME ${PORT})
diff --git a/ports/cmocka/shared-lib.patch b/ports/cmocka/shared-lib.patch
new file mode 100644
index 000000000..8c2f76277
--- /dev/null
+++ b/ports/cmocka/shared-lib.patch
@@ -0,0 +1,22 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 5684685..8555169 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -30,7 +30,7 @@ if (WIN32)
+ cmocka.def
+ )
+ endif (WIN32)
+-
++if (BUILD_SHARED_LIBS)
+ add_library(${CMOCKA_SHARED_LIBRARY} SHARED ${cmocka_SRCS})
+
+ target_include_directories(${CMOCKA_SHARED_LIBRARY}
+@@ -82,7 +82,7 @@ install(TARGETS
+ ${CMAKE_INSTALL_BINDIR}
+ COMPONENT
+ ${PROJECT_NAME})
+-
++endif (BUILD_SHARED_LIBS)
+ if (BUILD_STATIC_LIB)
+ add_library(${CMOCKA_STATIC_LIBRARY} STATIC ${cmocka_SRCS})
+
diff --git a/ports/cmocka/static-lib.patch b/ports/cmocka/static-lib.patch
new file mode 100644
index 000000000..f879fe25b
--- /dev/null
+++ b/ports/cmocka/static-lib.patch
@@ -0,0 +1,22 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 00e568e..6e3489a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -77,9 +77,17 @@ install(
+
+ # cmake config files
+ if (WIN32)
++ if (BUILD_SHARED_LIBS)
+ set(CMOCKA_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX})
++ else()
++ set(CMOCKA_LIBRARY_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}${CMOCKA_STATIC_LIBRARY}${CMAKE_IMPORT_LIBRARY_SUFFIX})
++ endif()
+ else()
++ if (BUILD_SHARED_LIBS)
+ set(CMOCKA_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
++ else()
++ set(CMOCKA_LIBRARY_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}${CMOCKA_STATIC_LIBRARY}${CMAKE_STATIC_LIBRARY_SUFFIX})
++ endif()
+ endif()
+
+ set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE INTERNAL "")
diff --git a/ports/cmocka/usage b/ports/cmocka/usage
new file mode 100644
index 000000000..59f2a5da8
--- /dev/null
+++ b/ports/cmocka/usage
@@ -0,0 +1,5 @@
+The package @PORT@:@TARGET_TRIPLET@ provides CMake targets:
+
+ find_package(@PORT@ CONFIG REQUIRED)
+ target_include_directories(main PRIVATE ${CMOCKA_INCLUDE_DIR})
+ target_link_libraries(main PRIVATE ${CMOCKA_LIBRARIES})
diff --git a/ports/cmocka/vcpkg-cmake-wrapper.cmake b/ports/cmocka/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..49b486ff8
--- /dev/null
+++ b/ports/cmocka/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,10 @@
+_find_package(${ARGS})
+
+get_filename_component(_cmocka_lib_name ${CMOCKA_LIBRARY} NAME)
+
+set(CMOCKA_LIBRARY
+ debug ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/${_cmocka_lib_name}
+ optimized ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/${_cmocka_lib_name}
+)
+
+set(CMOCKA_LIBRARIES ${CMOCKA_LIBRARY})