In CMake, add interface properties to the targets so that upstream users
can guess the needed include dirs and link libraries from target properties.

* CMakeLists.txt:
  Do not set global include_directories and APR_CFLAGS.
  (SERF_DEPENDENCY_INCLUDES): Renamed from DEPENDENCY_INCLUDES.
  (SERF_INTERFACE_INCLUDES): Split from SERF_DEPENDENCY_INCLUDES.
  (SERF_DEPENDENCY_LIBRARIES: Renamed from DEPENDENCY_LIBRARIES.
  (serf_shared): Target renamed from 'serf'.
  (serf_shared, serf_static): Set public, interface and private include
   directories and link libraries.

* test/CMakeLists.txt
  (${SIMPLE_TEST_TARGETS}): Ignore dependency libraries, depend on the
   serf_static target properties instead.
  (test_all): Likewise; also, use private properties for OpenSSL, etc.
   include directories and the MOCKHTTP_OPENSSL definition.

git-svn-id: https://svn.apache.org/repos/asf/serf/trunk@1835104 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3062009..d86def8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -199,15 +199,19 @@
 endif()
 
 
-set(DEPENDENCY_INCLUDES
+set(SERF_DEPENDENCY_INCLUDES
     ${OPENSSL_INCLUDE_DIR}
     ${ZLIB_INCLUDE_DIRS}
+)
+list(REMOVE_DUPLICATES SERF_DEPENDENCY_INCLUDES)
+
+set(SERF_INTERFACE_INCLUDES
     ${APR_INCLUDES}
     ${APRUTIL_INCLUDES}
 )
-list(REMOVE_DUPLICATES DEPENDENCY_INCLUDES)
+list(REMOVE_DUPLICATES SERF_INTERFACE_INCLUDES)
 
-set(DEPENDENCY_LIBRARIES
+set(SERF_DEPENDENCY_LIBRARIES
     ${OPENSSL_LIBRARIES}
     ${ZLIB_LIBRARIES}
     ${APR_LIBRARIES}
@@ -216,12 +220,7 @@
     ${APRUTIL_EXTRALIBS}
     ${SERF_STANDARD_LIBRARIES}
 )
-list(REMOVE_DUPLICATES DEPENDENCY_LIBRARIES)
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${APR_CFLAGS}")
-
-include_directories(BEFORE SYSTEM ${DEPENDENCY_INCLUDES})
-include_directories(${SERF_SOURCE_DIR})
+list(REMOVE_DUPLICATES SERF_DEPENDENCY_LIBRARIES)
 
 
 # Feature tests
@@ -299,30 +298,43 @@
 
 
 # Define all targets
-add_library(serf SHARED ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(serf ${DEPENDENCY_LIBRARIES})
-
-add_library(serf_static STATIC ${SOURCES})
-
-set_target_properties(serf serf_static
+add_library(serf_shared SHARED ${SOURCES} ${SHARED_SOURCES})
+target_compile_options(serf_shared PUBLIC ${APR_CFLAGS})
+target_include_directories(serf_shared SYSTEM BEFORE
+                           PRIVATE ${SERF_DEPENDENCY_INCLUDES}
+                           PUBLIC ${SERF_INTERFACE_INCLUDES})
+target_include_directories(serf_shared PUBLIC ${SERF_SOURCE_DIR})
+target_link_libraries(serf_shared PRIVATE ${SERF_DEPENDENCY_LIBRARIES})
+set_target_properties(serf_shared
                       PROPERTIES
-                      OUTPUT_NAME "serf-${SERF_MAJOR_VERSION}"
                       VERSION ${SERF_VERSION}
                       SOVERSION ${SERF_SOVERSION})
 
-install(TARGETS serf serf_static
+add_library(serf_static STATIC ${SOURCES})
+target_compile_options(serf_static PUBLIC ${APR_CFLAGS})
+target_include_directories(serf_static SYSTEM BEFORE
+                           PRIVATE ${SERF_DEPENDENCY_INCLUDES}
+                           PUBLIC ${SERF_INTERFACE_INCLUDES})
+target_include_directories(serf_static PUBLIC ${SERF_SOURCE_DIR})
+target_link_libraries(serf_static INTERFACE ${SERF_DEPENDENCY_LIBRARIES})
+
+set_target_properties(serf_shared serf_static
+                      PROPERTIES
+                      OUTPUT_NAME "serf-${SERF_MAJOR_VERSION}")
+
+install(TARGETS serf_shared serf_static
         ARCHIVE DESTINATION "lib"
         LIBRARY DESTINATION "lib"
         RUNTIME DESTINATION "bin")
 
 if(SERF_WINDOWS)
-  install(FILES $<TARGET_PDB_FILE:serf> DESTINATION "bin")
+  install(FILES $<TARGET_PDB_FILE:serf_shared> DESTINATION "bin")
 endif()
 
 if(NOT SERF_WINDOWS)
-  set(SERF_INCLUDE_SUBDIR "serf-${SERF_MAJOR_VERSION}")
+  set(SERF_INCLUDE_SUBDIR "/serf-${SERF_MAJOR_VERSION}")
 endif()
-install(FILES ${HEADERS} DESTINATION "include/${SERF_INCLUDE_SUBDIR}")
+install(FILES ${HEADERS} DESTINATION "include${SERF_INCLUDE_SUBDIR}")
 
 
 # Generate the pkg-config module file.
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 23fe72c..5c97544 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -48,17 +48,17 @@
   string(REPLACE "-std=c89" "-std=c99" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
 endif()
 
-add_definitions("-DMOCKHTTP_OPENSSL")
-
 foreach(TEST_TARGET ${SIMPLE_TEST_TARGETS})
   add_executable(${TEST_TARGET} "${TEST_TARGET}.c")
   add_dependencies(${TEST_TARGET} serf_static)
-  target_link_libraries(${TEST_TARGET} serf_static ${DEPENDENCY_LIBRARIES})
+  target_link_libraries(${TEST_TARGET} serf_static)
 endforeach()
 
 add_executable(test_all ${TEST_ALL_SOURCES})
 add_dependencies(test_all serf_static)
-target_link_libraries(test_all serf_static ${DEPENDENCY_LIBRARIES})
+target_compile_definitions(test_all PRIVATE "-DMOCKHTTP_OPENSSL")
+target_include_directories(test_all SYSTEM BEFORE PRIVATE ${SERF_DEPENDENCY_INCLUDES})
+target_link_libraries(test_all serf_static)
 
 file(GLOB RESPONSE_TEST_CASES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/*.response")
 foreach(TEST_CASE ${RESPONSE_TEST_CASES})