Added tests (exes) targets, refactor a few things.
authorBenoit Neil <suky0001@free.fr>
Mon, 6 Apr 2009 21:05:44 +0000 (21:05 +0000)
committerBenoit Neil <suky0001@free.fr>
Mon, 6 Apr 2009 21:05:44 +0000 (21:05 +0000)
PS: Once again, sorry if the added files have executable perms on Linux.

CMakeLists.txt
lib/CMakeLists.txt
src/CMakeLists.txt
tests/CMakeLists.txt [new file with mode: 0644]
tests/libtest/CMakeLists.txt [new file with mode: 0644]
tests/server/CMakeLists.txt [new file with mode: 0644]

index 71442e4..c87127b 100644 (file)
@@ -750,8 +750,33 @@ IF(MSVC)
   ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
 ENDIF(MSVC)
 
+# Sets up the dependencies (zlib, OpenSSL, etc.) of a cURL subproject according to options.
+# TODO This is far to be complete!
+FUNCTION(SETUP_CURL_DEPENDENCIES TARGET_NAME)
+       IF(CURL_ZLIB AND ZLIB_FOUND)
+               INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
+       ENDIF()
+       IF(CURL_ZLIB AND ZLIB_FOUND)
+               TARGET_LINK_LIBRARIES(${TARGET_NAME} ${ZLIB_LIBRARIES})
+               #ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
+       ENDIF()
+
+       IF(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
+               INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
+       ENDIF()
+       IF(CURL_SSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
+               TARGET_LINK_LIBRARIES(${TARGET_NAME} ${OPENSSL_LIBRARIES})
+               #ADD_DEFINITIONS( -DUSE_SSLEAY )
+       ENDIF()
+ENDFUNCTION()
+
 ADD_SUBDIRECTORY(lib)
-ADD_SUBDIRECTORY(src)
+IF(BUILD_CURL_EXE)
+       ADD_SUBDIRECTORY(src)
+ENDIF()
+IF(BUILD_CURL_TESTS)
+       ADD_SUBDIRECTORY(tests)
+ENDIF()
 
 # This needs to be run very last so other parts of the scripts can take advantage of this.
 IF(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
index b938000..7e55c7d 100644 (file)
@@ -110,14 +110,6 @@ IF(CURL_MALLOC_DEBUG)
     )
 ENDIF(CURL_MALLOC_DEBUG)
 
-IF(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
-       INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
-ENDIF()
-
-IF(CURL_ZLIB AND ZLIB_FOUND)
-       INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
-ENDIF()
-
 IF(HAVE_FEATURES_H)
   SET_SOURCE_FILES_PROPERTIES(
     cookie.c
@@ -220,15 +212,7 @@ ADD_DEFINITIONS(
        -DBUILDING_LIBCURL
 )
 
-IF(CURL_ZLIB AND ZLIB_FOUND)
-       TARGET_LINK_LIBRARIES(${LIB_NAME} ${ZLIB_LIBRARIES})
-       #ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
-ENDIF()
-
-# IF(CURL_SSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
-       # TARGET_LINK_LIBRARIES(${LIB_NAME} ${OPENSSL_LIBRARIES})
-       # ADD_DEFINITIONS( -DUSE_SSLEAY )
-# ENDIF()
+SETUP_CURL_DEPENDENCIES(${LIB_NAME})
 
 # Remove the "lib" prefix since the library is already named "libcurl".
 SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES PREFIX "")
index 168abf4..e0e7a78 100644 (file)
@@ -47,15 +47,7 @@ INCLUDE_DIRECTORIES(
 
 
 # Setup dependencies
-
-IF(CURL_ZLIB AND ZLIB_FOUND)
-       TARGET_LINK_LIBRARIES(${EXE_NAME} ${ZLIB_LIBRARIES})
-       #ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
-ENDIF()
-# IF(CURL_SSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
-       # TARGET_LINK_LIBRARIES(${EXE_NAME} ${OPENSSL_LIBRARIES})
-       # ADD_DEFINITIONS( -DUSE_SSLEAY )
-# ENDIF()
+SETUP_CURL_DEPENDENCIES(${EXE_NAME})
 TARGET_LINK_LIBRARIES( ${EXE_NAME} libcurl )
 
 
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..147ef1f
--- /dev/null
@@ -0,0 +1,2 @@
+ADD_SUBDIRECTORY(libtest)
+ADD_SUBDIRECTORY(server)
diff --git a/tests/libtest/CMakeLists.txt b/tests/libtest/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b0bf771
--- /dev/null
@@ -0,0 +1,76 @@
+
+MACRO(SETUP_TEST TEST_NAME)            # ARGN are the files in the test
+       ADD_EXECUTABLE( ${TEST_NAME} ${ARGN} )
+       STRING(TOUPPER TEST_NAME UPPER_TEST_NAME)
+
+       INCLUDE_DIRECTORIES(
+               ${CURL_SOURCE_DIR}/lib          # To be able to reach "setup_once.h"
+               ${CURL_BINARY_DIR}/lib          # To be able to reach "config.h"
+               ${CURL_BINARY_DIR}/include      # To be able to reach "curl/curlbuild.h"
+       )
+
+       SETUP_CURL_DEPENDENCIES(${TEST_NAME})
+       TARGET_LINK_LIBRARIES( ${TEST_NAME} libcurl )
+
+       ADD_DEFINITIONS( "-D${UPPER_TEST_NAME}" )
+       
+       # Add the postfix to the executable since it is not added automatically as for modules and shared libraries
+       SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+
+       IF(MSVC)
+               IF(NOT BUILD_RELEASE_DEBUG_DIRS)
+                       # Ugly workaround to remove the "/debug" or "/release" in each output
+                       SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES PREFIX "../")
+               ENDIF()
+       ENDIF()
+
+ENDMACRO()
+
+
+
+# files used only in some libcurl test programs
+SET(TESTUTIL testutil.c testutil.h)
+
+# these files are used in every single test program below
+SET(SUPPORTFILES first.c test.h)
+
+# These are all libcurl test programs
+SET(noinst_PROGRAMS
+       lib500 lib501 lib502 lib503 lib504 lib505 lib506
+       lib507 lib508 lib510 lib511 lib512 lib513 lib514 lib515 lib516
+       lib517 lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526 #lib527
+       #lib529
+       lib530
+       #lib532
+       lib533 lib536 lib537 lib540 lib541 lib542 lib543
+       lib544
+       #lib545
+       lib547
+       #lib548
+       lib549 lib552 lib553 lib554 lib555 lib556
+       lib539 lib557 lib558
+       #lib559
+       lib560
+)
+
+SET(noinst_PROGRAMS_USE_TESTUTIL
+       lib502 lib503 lib504
+       lib507
+       lib525 lib526 #lib527
+       #lib529
+       lib530
+       #lib532
+       lib533 lib536
+       lib555
+)
+
+
+FOREACH(TEST_NAME ${noinst_PROGRAMS})
+       SET(SOURCE "${TEST_NAME}.c" ${SUPPORTFILES})
+       LIST(FIND noinst_PROGRAMS_USE_TESTUTIL ${TEST_NAME} USES_TESTUTIL)
+       IF(NOT ${USES_TESTUTIL} EQUAL -1)
+               LIST(APPEND SOURCE ${TESTUTIL})         # Need TestUtil
+       ENDIF()
+       SETUP_TEST(${TEST_NAME} ${SOURCE})
+ENDFOREACH()
+
diff --git a/tests/server/CMakeLists.txt b/tests/server/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b0369b8
--- /dev/null
@@ -0,0 +1,43 @@
+
+MACRO(SETUP_EXECUTABLE TEST_NAME)              # ARGN are the files in the test
+       ADD_EXECUTABLE( ${TEST_NAME} ${ARGN} )
+       STRING(TOUPPER TEST_NAME UPPER_TEST_NAME)
+
+       INCLUDE_DIRECTORIES(
+               ${CURL_SOURCE_DIR}/lib          # To be able to reach "setup_once.h"
+               ${CURL_BINARY_DIR}/lib          # To be able to reach "config.h"
+               ${CURL_BINARY_DIR}/include      # To be able to reach "curl/curlbuild.h"
+       )
+
+       SETUP_CURL_DEPENDENCIES(${TEST_NAME})
+       TARGET_LINK_LIBRARIES( ${TEST_NAME} libcurl )
+
+       ADD_DEFINITIONS( "-D${UPPER_TEST_NAME}" )
+       
+       # Add the postfix to the executable since it is not added automatically as for modules and shared libraries
+       SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+
+       IF(MSVC)
+               IF(NOT BUILD_RELEASE_DEBUG_DIRS)
+                       # Ugly workaround to remove the "/debug" or "/release" in each output
+                       SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES PREFIX "../")
+               ENDIF()
+       ENDIF()
+
+ENDMACRO()
+
+
+
+SET(useful
+       getpart.c getpart.h
+       ${CURL_SOURCE_DIR}/lib/strequal.c
+       ${CURL_SOURCE_DIR}/lib/base64.c ${CURL_SOURCE_DIR}/lib/mprintf.c
+       ${CURL_SOURCE_DIR}/lib/memdebug.c ${CURL_SOURCE_DIR}/lib/timeval.c
+)
+
+SETUP_EXECUTABLE(sws sws.c util.c util.h ${useful})
+SETUP_EXECUTABLE(resolve resolve.c util.c util.h ${useful})
+SETUP_EXECUTABLE(sockfilt sockfilt.c util.c util.h ${useful} ${CURL_SOURCE_DIR}/lib/inet_pton.c)
+SETUP_EXECUTABLE(getpart testpart.c ${useful})
+SETUP_EXECUTABLE(tftpd tftpd.c util.c util.h ${useful} tftp.h)
+