Commit 24ac9e0c97ff9f20d096b4d93663276bc8bb2de1

Edward Thomson 2019-02-13T23:26:54

deprecation: ensure we GIT_EXTERN deprecated funcs Although the error functions were deprecated, we did not properly mark them as deprecated. We need to include the `deprecated.h` file in order to ensure that the functions get their export attributes. Similarly, do not define `GIT_DEPRECATE_HARD` within the library, or those functions will also not get their export attributes. Define that only on the tests and examples.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0e0f296..73702ee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,9 +105,6 @@ SET(LIBGIT2_VERSION_STRING "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${
 FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$")
 STRING(REGEX REPLACE "^.*LIBGIT2_SOVERSION ([0-9]+)$" "\\1" LIBGIT2_SOVERSION "${GIT2_HEADER_SOVERSION}")
 
-# Ensure that we do not use deprecated functions internally
-ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD)
-
 # Platform specific compilation flags
 IF (MSVC)
 	IF (STDCALL)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 49edaec..e631b96 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -5,6 +5,9 @@ FILE(GLOB_RECURSE SRC_EXAMPLE_GIT2 network/*.c network/*.h common.?)
 ADD_EXECUTABLE(cgit2 ${SRC_EXAMPLE_GIT2})
 SET_TARGET_PROPERTIES(cgit2 PROPERTIES C_STANDARD 90)
 
+# Ensure that we do not use deprecated functions internally
+ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD)
+
 IF(WIN32 OR ANDROID)
 	TARGET_LINK_LIBRARIES(cgit2 git2)
 ELSE()
diff --git a/src/common.h b/src/common.h
index 6e1eac8..18ba72d 100644
--- a/src/common.h
+++ b/src/common.h
@@ -79,6 +79,12 @@
 #include "thread-utils.h"
 #include "integer.h"
 
+/*
+ * Include the declarations for deprecated functions; this ensures
+ * that they're decorated with the proper extern/visibility attributes.
+ */
+#include "git2/deprecated.h"
+
 #include <regex.h>
 
 #define DEFAULT_BUFSIZE 65536
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 6ce5ae0..aaa8ed1 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -11,6 +11,9 @@ ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
 ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\")
 ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
 
+# Ensure that we do not use deprecated functions internally
+ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD)
+
 INCLUDE_DIRECTORIES(${CLAR_PATH} ${libgit2_BINARY_DIR}/src)
 FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h)
 SET(SRC_CLAR "main.c" "clar_libgit2.c" "clar_libgit2_trace.c" "clar_libgit2_timer.c" "clar.c")