summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJeff Trawick <trawick@apache.org>2013-10-11 00:15:55 +0000
committerJeff Trawick <trawick@apache.org>2013-10-11 00:15:55 +0000
commit3661b01a03f6caabf723baa546accdd7f03d4bd1 (patch)
treeb9109f764c0705bcb341d1f39d3ccae36eb5990f /CMakeLists.txt
parent6dae3e6c4c474607d6ea03bc3e131c57f767d92d (diff)
downloadapr-3661b01a03f6caabf723baa546accdd7f03d4bd1.tar.gz
Merge non-APR-Util bits of r1523521 and 1523604 from trunk:
r1523521: fix various compile errors and warnings (in testucs.c) r1523604: Fix build of aprapp/libaprapp (APR_DECLARE_STATIC was misplaced). Support building test suite against either static or dynamic libs. (Requiring separate builds is ugly, but so is creating a more complex directory structure or naming convention in the build directory and possibly having to modify test program source to find child programs.) Build additional test programs. Add running the test suite to the build system. (Using the "NMake Makefiles" generator, use "nmake test" to run silently, with output logged to some files, or "nmake check" to run with test output logged to the console.) git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.5.x@1531155 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt131
1 files changed, 95 insertions, 36 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a9a63af9a..1ca8a9b2b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,7 @@ OPTION(APR_INSTALL_PRIVATE_H "Install selected private .h files (for httpd)" O
OPTION(APR_HAVE_IPV6 "IPv6 support" ON)
OPTION(INSTALL_PDB "Install .pdb files (if generated)" ON)
OPTION(APR_BUILD_TESTAPR "Build the test suite" OFF)
+OPTION(TEST_STATIC_LIBS "Test programs use APR static libraries instead of shared libraries?" OFF)
SET(MIN_WINDOWS_VER "Vista"
CACHE STRING "Minimum Windows version")
@@ -85,8 +86,6 @@ INCLUDE_DIRECTORIES(${APR_INCLUDE_DIRECTORIES})
SET(APR_HEADERS ${PROJECT_BINARY_DIR}/apr.h)
-# and misc/win32/apr_app.c
-
SET(APR_PUBLIC_HEADERS_STATIC
include/apr_allocator.h
include/apr_atomic.h
@@ -278,54 +277,108 @@ SET(install_targets ${install_targets} libaprapp-1)
SET(install_lib_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/libaprapp-1.pdb)
SET_TARGET_PROPERTIES(libaprapp-1 PROPERTIES COMPILE_DEFINITIONS APR_APP)
-ADD_LIBRARY(aprapp-1 STATIC ${APR_HEADERS} ${PROJECT_BINARY_DIR}/apr.h misc/win32/apr_app.c)
+ADD_LIBRARY(aprapp-1 STATIC ${APR_HEADERS} ${PROJECT_BINARY_DIR}/apr.h misc/win32/apr_app.c misc/win32/internal.c)
SET(install_targets ${install_targets} aprapp-1)
SET(install_lib_pdb ${install_lib_pdb} ${PROJECT_BINARY_DIR}/aprapp-1.pdb)
-SET_TARGET_PROPERTIES(libaprapp-1 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_APP")
+SET_TARGET_PROPERTIES(aprapp-1 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_APP")
IF(APR_BUILD_TESTAPR)
- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/data)
- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/test/data/file_datafile.txt ${PROJECT_BINARY_DIR}/data/file_datafile.txt)
- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/test/data/mmap_datafile.txt ${PROJECT_BINARY_DIR}/data/mmap_datafile.txt)
+ ENABLE_TESTING()
+ # Create a "check" target that displays test program output to the console.
+ ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} --verbose)
+
+ # copy data files to build directory so that we can run programs from there
+ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory
+ ${PROJECT_BINARY_DIR}/data)
+ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${PROJECT_SOURCE_DIR}/test/data/file_datafile.txt
+ ${PROJECT_BINARY_DIR}/data/file_datafile.txt)
+ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${PROJECT_SOURCE_DIR}/test/data/mmap_datafile.txt
+ ${PROJECT_BINARY_DIR}/data/mmap_datafile.txt)
+
+ IF(TEST_STATIC_LIBS)
+ SET(whichapr apr-1)
+ SET(whichaprapp aprapp-1)
+ SET(apiflag -DAPR_DECLARE_STATIC)
+ ELSE()
+ SET(whichapr libapr-1)
+ SET(whichaprapp libaprapp-1)
+ SET(apiflag)
+ ENDIF()
+
+ ADD_EXECUTABLE(testapp test/testapp.c)
+ TARGET_LINK_LIBRARIES(testapp ${whichapr} ${whichaprapp} ${APR_SYSTEM_LIBS})
+ SET_TARGET_PROPERTIES(testapp PROPERTIES LINK_FLAGS /entry:wmainCRTStartup)
+ IF(apiflag)
+ SET_TARGET_PROPERTIES(testapp PROPERTIES COMPILE_FLAGS ${apiflag})
+ ENDIF()
+ ADD_TEST(NAME testapp COMMAND testapp)
ADD_EXECUTABLE(testall ${APR_TEST_SOURCES})
- TARGET_LINK_LIBRARIES(testall apr-1 ${APR_SYSTEM_LIBS})
+ TARGET_LINK_LIBRARIES(testall ${whichapr} ${APR_SYSTEM_LIBS})
+ IF(apiflag)
+ SET_TARGET_PROPERTIES(testall PROPERTIES COMPILE_FLAGS ${apiflag})
+ ENDIF()
+ ADD_TEST(NAME testall COMMAND testall)
ADD_LIBRARY(mod_test MODULE test/mod_test.c)
- TARGET_LINK_LIBRARIES(mod_test apr-1 ${APR_SYSTEM_LIBS})
+ TARGET_LINK_LIBRARIES(mod_test ${whichapr} ${APR_SYSTEM_LIBS})
SET_PROPERTY(TARGET mod_test APPEND PROPERTY LINK_FLAGS /export:print_hello)
# nasty work-around for difficulties adding more than one additional flag
# (they get joined in a bad way behind the scenes)
GET_PROPERTY(link_flags TARGET mod_test PROPERTY LINK_FLAGS)
SET(link_flags "${link_flags} /export:count_reps")
SET_TARGET_PROPERTIES(mod_test PROPERTIES LINK_FLAGS ${link_flags})
-
- ADD_EXECUTABLE(occhild test/occhild.c)
- TARGET_LINK_LIBRARIES(occhild apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(globalmutexchild test/globalmutexchild.c)
- TARGET_LINK_LIBRARIES(globalmutexchild apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(proc_child test/proc_child.c)
- TARGET_LINK_LIBRARIES(proc_child apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(readchild test/readchild.c)
- TARGET_LINK_LIBRARIES(readchild apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(sockchild test/sockchild.c)
- TARGET_LINK_LIBRARIES(sockchild apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(testshmconsumer test/testshmconsumer.c)
- TARGET_LINK_LIBRARIES(testshmconsumer apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(testshmproducer test/testshmproducer.c)
- TARGET_LINK_LIBRARIES(testshmproducer apr-1 ${APR_SYSTEM_LIBS})
-
- ADD_EXECUTABLE(tryread test/tryread.c)
- TARGET_LINK_LIBRARIES(tryread apr-1 ${APR_SYSTEM_LIBS})
-
- # test programs are linked with static library
- SET_TARGET_PROPERTIES(testall mod_test occhild globalmutexchild proc_child readchild sockchild testshmconsumer testshmproducer tryread PROPERTIES COMPILE_FLAGS -DAPR_DECLARE_STATIC)
+ IF(apiflag)
+ SET_TARGET_PROPERTIES(mod_test PROPERTIES COMPILE_FLAGS ${apiflag})
+ ENDIF()
+
+ # Build all the single-source executable files with no special build
+ # requirements.
+ SET(single_source_programs
+ test/echod.c
+ test/sendfile.c
+ test/sockperf.c
+ test/testlockperf.c
+ test/testmutexscope.c
+ test/globalmutexchild.c
+ test/occhild.c
+ test/proc_child.c
+ test/readchild.c
+ test/sockchild.c
+ test/testshmproducer.c
+ test/testshmconsumer.c
+ test/tryread.c
+ test/internal/testucs.c
+ )
+
+ FOREACH(sourcefile ${single_source_programs})
+ STRING(REGEX REPLACE ".*/([^\\]+)\\.c" "\\1" proggie ${sourcefile})
+ ADD_EXECUTABLE(${proggie} ${sourcefile})
+ TARGET_LINK_LIBRARIES(${proggie} ${whichapr} ${APR_SYSTEM_LIBS})
+ IF(apiflag)
+ SET_TARGET_PROPERTIES(${proggie} PROPERTIES COMPILE_FLAGS ${apiflag})
+ ENDIF()
+ ENDFOREACH()
+
+ # Add tests for programs that run by themselves with no arguments.
+ SET(simple_tests
+ testlockperf
+ testmutexscope
+ testucs
+ )
+
+ FOREACH(simple ${simple_tests})
+ ADD_TEST(NAME ${simple} COMMAND ${simple})
+ ENDFOREACH()
+
+ # sendfile runs multiple times with different parameters.
+ FOREACH(sendfile_mode blocking nonblocking timeout)
+ ADD_TEST(NAME sendfile-${sendfile_mode} COMMAND sendfile client ${sendfile_mode} startserver)
+ ENDFOREACH()
+
+ # No test is added for echod+sockperf. Those will have to be run manually.
ENDIF (APR_BUILD_TESTAPR)
@@ -365,6 +418,7 @@ MESSAGE(STATUS "")
MESSAGE(STATUS "")
MESSAGE(STATUS "APR configuration summary:")
MESSAGE(STATUS "")
+
MESSAGE(STATUS " Build type ...................... : ${CMAKE_BUILD_TYPE}")
MESSAGE(STATUS " Install .pdb (if available)...... : ${INSTALL_PDB}")
MESSAGE(STATUS " Install prefix .................. : ${CMAKE_INSTALL_PREFIX}")
@@ -372,4 +426,9 @@ MESSAGE(STATUS " C compiler ...................... : ${CMAKE_C_COMPILER}")
MESSAGE(STATUS " IPv6 ............................ : ${APR_HAVE_IPV6}")
MESSAGE(STATUS " Minimum Windows version ......... : ${MIN_WINDOWS_VER}")
MESSAGE(STATUS " Build test suite ................ : ${APR_BUILD_TESTAPR}")
+IF(TEST_STATIC_LIBS)
+MESSAGE(STATUS " (testing static libraries)")
+ELSE()
+MESSAGE(STATUS " (testing dynamic libraries)")
+ENDIF()
MESSAGE(STATUS " Install private .h for httpd .... : ${APR_INSTALL_PRIVATE_H}")