#To make a solution file to navigate the APR source code from the Visual Studio GUI: #copy d:\work\prep\apr\1.4.6\patch\*.* d:\work\apr-1.4.6 #cmake -G "Visual Studio 9 2008" -DCMAKE_INSTALL_PREFIX=d:\work\local d:\work\apr-1.4.6 project (apr) cmake_minimum_required(VERSION 2.8) include_directories (include ${CMAKE_CURRENT_BINARY_DIR}/include) #Header files which form the public interface to the library. #They will be installed by "make install". set (PUBLIC_HEADER_FILES_COMMON include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_fnmatch.h include/apr_general.h include/apr_getopt.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_lib.h include/apr_mmap.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_random.h include/apr_ring.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_cond.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_thread_rwlock.h include/apr_time.h include/apr_user.h include/apr_version.h include/apr_want.h ) set (PUBLIC_HEADER_FILES_ARCH include/arch/apr_private_common.h ) set (HEADER_FILES ${PUBLIC_HEADER_FILES_COMMON} ${PUBLIC_HEADER_FILES_ARCH} ) set (PUBLIC_HEADER_FILES_WIN32 include/arch/win32/apr_arch_atime.h include/arch/win32/apr_arch_dso.h include/arch/win32/apr_arch_file_io.h include/arch/win32/apr_arch_inherit.h include/arch/win32/apr_arch_misc.h include/arch/win32/apr_arch_networkio.h include/arch/win32/apr_arch_proc_mutex.h include/arch/win32/apr_arch_thread_cond.h include/arch/win32/apr_arch_thread_mutex.h include/arch/win32/apr_arch_thread_rwlock.h include/arch/win32/apr_arch_threadproc.h include/arch/win32/apr_arch_utf8.h include/arch/win32/apr_dbg_win32_handles.h include/arch/win32/apr_private.h ) set (PUBLIC_HEADER_FILES_UNIX include/arch/unix/apr_arch_atomic.h include/arch/unix/apr_arch_dso.h include/arch/unix/apr_arch_file_io.h include/arch/unix/apr_arch_global_mutex.h include/arch/unix/apr_arch_inherit.h include/arch/unix/apr_arch_internal_time.h include/arch/unix/apr_arch_misc.h include/arch/unix/apr_arch_networkio.h include/arch/unix/apr_arch_proc_mutex.h include/arch/unix/apr_arch_shm.h include/arch/unix/apr_arch_threadproc.h include/arch/unix/apr_arch_thread_cond.h include/arch/unix/apr_arch_thread_mutex.h include/arch/unix/apr_arch_thread_rwlock.h include/arch/unix/apr_arch_poll_private.h ) set (SOURCE_FILES file_io/unix/copy.c file_io/unix/fullrw.c file_io/unix/mktemp.c file_io/unix/fileacc.c file_io/unix/filepath_util.c memory/unix/apr_pools.c file_io/unix/tempdir.c misc/unix/errorcodes.c misc/unix/getopt.c misc/unix/otherchild.c misc/unix/version.c mmap/unix/common.c network_io/unix/inet_ntop.c network_io/unix/inet_pton.c network_io/unix/multicast.c network_io/unix/sockaddr.c network_io/unix/socket_util.c poll/unix/poll.c poll/unix/pollcb.c poll/unix/pollset.c poll/unix/select.c random/unix/apr_random.c random/unix/sha2.c random/unix/sha2_glue.c passwd/apr_getpass.c strings/apr_cpystrn.c strings/apr_fnmatch.c strings/apr_snprintf.c strings/apr_strings.c strings/apr_strnatcmp.c strings/apr_strtok.c tables/apr_hash.c tables/apr_tables.c ) if (WIN32) if (BUILD_SHARED_LIBS) add_definitions (-DAPR_DECLARE_EXPORT) else () add_definitions (-DAPR_DECLARE_STATIC) #Contains startup code which will in turn invoke main() set(SOURCE_FILES ${SOURCE_FILES} misc/win32/apr_app.c) endif (BUILD_SHARED_LIBS) configure_file (${CMAKE_CURRENT_SOURCE_DIR}/include/apr.hw ${CMAKE_CURRENT_BINARY_DIR}/include/apr.h COPYONLY) include_directories (include/arch/win32 include/arch/unix) #Append the header files that are used only on Windows set (HEADER_FILES ${HEADER_FILES} ${PUBLIC_HEADER_FILES_WIN32} ) #Append the source files that are used only on Windows set (SOURCE_FILES ${SOURCE_FILES} atomic/win32/apr_atomic.c dso/win32/dso.c file_io/win32/buffer.c file_io/win32/dir.c file_io/win32/filedup.c file_io/win32/filepath.c file_io/win32/filestat.c file_io/win32/filesys.c file_io/win32/flock.c file_io/win32/open.c file_io/win32/pipe.c file_io/win32/readwrite.c file_io/win32/seek.c locks/win32/proc_mutex.c locks/win32/thread_cond.c locks/win32/thread_mutex.c locks/win32/thread_rwlock.c misc/win32/charset.c misc/win32/env.c misc/win32/internal.c misc/win32/misc.c misc/win32/rand.c misc/win32/start.c misc/win32/utf8.c mmap/win32/mmap.c network_io/win32/sendrecv.c network_io/win32/sockets.c network_io/win32/sockopt.c shmem/win32/shm.c threadproc/win32/proc.c threadproc/win32/signals.c threadproc/win32/thread.c threadproc/win32/threadpriv.c time/win32/time.c time/win32/timestr.c user/win32/groupinfo.c user/win32/userinfo.c libapr.rc ) endif (WIN32) if (UNIX) #TODO: Configure header file apr.h. configure_file (${CMAKE_CURRENT_SOURCE_DIR}/include/apr.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/apr.h) include_directories (include/arch/unix) #Append the header files that are used only on UNIX set (HEADER_FILES ${HEADER_FILES} ${PUBLIC_HEADER_FILES_UNIX} ) #Append the source files that are used only on UNIX set (SOURCE_FILES ${SOURCE_FILES} atomic/unix/builtins.c atomic/unix/ia32.c atomic/unix/mutex.c atomic/unix/ppc.c atomic/unix/s390.c atomic/unix/solaris.c dso/unix/dso.c file_io/unix/buffer.c file_io/unix/copy.c file_io/unix/dir.c file_io/unix/filedup.c file_io/unix/filepath.c file_io/unix/filestat.c file_io/unix/flock.c file_io/unix/open.c file_io/unix/pipe.c locks/unix/global_mutex.c locks/unix/proc_mutex.c locks/unix/thread_cond.c locks/unix/thread_mutex.c locks/unix/thread_rwlock.c misc/unix/charset.c misc/unix/env.c misc/unix/rand.c misc/unix/start.c misc/unix/mmap.c network_io/unix/sendrecv.c network_io/unix/sockets.c network_io/unix/sockopt.c poll/unix/epoll.c poll/unix/kqueue.c poll/unix/port.c ) endif (UNIX) if (BUILD_SHARED_LIBS) message (STATUS "Building shared APR library") else () message (STATUS "Building static APR library") endif (BUILD_SHARED_LIBS) add_library (apr-1 ${SOURCE_FILES} ${HEADER_FILES} ) if (WIN32) target_link_libraries (apr-1 ws2_32 rpcrt4 mswsock) endif (WIN32) install (TARGETS apr-1 ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) install (FILES ${PUBLIC_HEADER_FILES_COMMON} ${CMAKE_CURRENT_BINARY_DIR}/include/apr.h DESTINATION include/apr) install (FILES ${PUBLIC_HEADER_FILES_ARCH} DESTINATION include/apr/arch) install (FILES ${PUBLIC_HEADER_FILES_WIN32} DESTINATION include/apr/arch/win32) install (FILES ${PUBLIC_HEADER_FILES_UNIX} DESTINATION include/apr/arch/unix)