1616sinclude(build/apr_common.m4)
1717sinclude(build/apr_network.m4)
1818sinclude(build/apr_threads.m4)
19+ sinclude(build/apr_win32.m4)
1920sinclude(build/apr_hints.m4)
2021sinclude(build/libtool.m4)
2122sinclude(build/ltsugar.m4)
@@ -404,6 +405,12 @@ case $host in
404405 OSDIR="as400"
405406 eolstr="\\n"
406407 ;;
408+ *mingw*)
409+ OSDIR="win32"
410+ enable_threads="system_threads"
411+ eolstr="\\n"
412+ OBJECTS_PLATFORM='$(OBJECTS_win32)'
413+ ;;
407414 *cygwin*)
408415 OSDIR="unix"
409416 APR_ADDTO(CPPFLAGS,-DCYGWIN)
@@ -520,12 +527,27 @@ dnl Note: Autoconf will always append LIBS with an extra " " in AC_CHECK_LIB.
520527dnl It should check for LIBS being empty and set LIBS equal to the new value
521528dnl without the extra " " in that case, but they didn't do that. So, we
522529dnl end up LIBS="-lm -lcrypt -lnsl -ldl" which is an annoyance.
523- AC_SEARCH_LIBS(gethostbyname, nsl)
524- AC_SEARCH_LIBS(gethostname, nsl)
525- AC_SEARCH_LIBS(socket, socket)
526- AC_SEARCH_LIBS(crypt, crypt ufc)
527- AC_CHECK_LIB(truerand, main)
528- AC_SEARCH_LIBS(modf, m)
530+ case $host in
531+ *mingw*)
532+ dnl APR_ADDTO(LIBS,[-lmsvcrt --lshell32 -ladvapi32 -lws2_32])
533+
534+ AC_CHECK_LIB(msvcrt, getpid)
535+ APR_CHECK_DLL_FUNC(kernel32, SetErrorMode@4)
536+ APR_CHECK_DLL_FUNC(advapi32, GetSecurityInfo@32)
537+ APR_CHECK_DLL_FUNC(ws2_32, gethostbyname@4)
538+ APR_CHECK_DLL_FUNC(shell32, CommandLineToArgvW@8)
539+ APR_CHECK_DLL_FUNC(kernel32,[CreateFileMappingA@24],
540+ [ac_cv_func_CreateFileMapping=$ac_cv_lib_kernel32_CreateFileMappingA])
541+ ;;
542+ *)
543+ AC_SEARCH_LIBS(gethostbyname, nsl)
544+ AC_SEARCH_LIBS(gethostname, nsl)
545+ AC_SEARCH_LIBS(socket, socket)
546+ AC_SEARCH_LIBS(crypt, crypt ufc)
547+ AC_CHECK_LIB(truerand, main)
548+ AC_SEARCH_LIBS(modf, m)
549+ ;;
550+ esac
529551
530552dnl ----------------------------- Checking for Threads
531553echo "${nl}Checking for Threads..."
@@ -698,9 +720,10 @@ case $host in
698720#endif";;
699721esac
700722
701- AC_CHECK_HEADERS([sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h])
723+ AC_CHECK_HEADERS([sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h windows.h ])
702724AC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \
703725 create_area])
726+
704727APR_CHECK_DEFINE(MAP_ANON, sys/mman.h)
705728APR_CHECK_FILE(/dev/zero)
706729
@@ -760,6 +783,10 @@ APR_IFALLYES(header:kernel/OS.h func:create_area,
760783 [havebeosshm="1"
761784 APR_DECIDE(USE_SHMEM_BEOS_ANON,
762785 [BeOS areas])])
786+ APR_IFALLYES(header:windows.h func:CreateFileMapping,
787+ [havewin32shm="1"
788+ APR_DECIDE(USE_SHMEM_WIN32_ANON,
789+ [Windows CreateFileMapping()])])
763790case $host in
764791 *linux* )
765792 # Linux has problems with MM_SHMT_MMANON even though it reports
@@ -806,6 +833,7 @@ havemmapshm="0"
806833haveshmget="0"
807834havebeosarea="0"
808835haveos2shm="0"
836+ havewin32shm="0"
809837APR_BEGIN_DECISION([namebased memory allocation method])
810838APR_IFALLYES(header:sys/mman.h func:mmap func:munmap,
811839 [havemmaptmp="1"
@@ -826,6 +854,9 @@ APR_IFALLYES(header:kernel/OS.h func:create_area,
826854APR_IFALLYES(header:os2.h,
827855 [haveos2shm="1"
828856 APR_DECIDE(USE_SHMEM_OS2, [OS/2 DosAllocSharedMem()])])
857+ APR_IFALLYES(header:windows.h,
858+ [havewin32shm="1"
859+ APR_DECIDE(USE_SHMEM_WIN32, [Windows shared memory])])
829860case $host in
830861 *linux* )
831862 # Linux has problems with MM_SHMT_MMANON even though it reports
@@ -846,6 +877,7 @@ usemmapshm="0"
846877useshmget="0"
847878usebeosarea="0"
848879useos2shm="0"
880+ usewin32shm="0"
849881
850882case $ac_decision in
851883 USE_SHMEM_MMAP_TMP )
@@ -863,10 +895,13 @@ case $ac_decision in
863895 USE_SHMEM_OS2 )
864896 useos2shm="1"
865897 ;;
898+ USE_SHMEM_WIN32 )
899+ usewin32shm="1"
900+ ;;
866901esac
867902
868903# Do we have any shared memory support?
869- if test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm" = "0000000 "; then
904+ if test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm$usewin32shm " = "00000000 "; then
870905 sharedmem="0"
871906else
872907 sharedmem="1"
@@ -877,11 +912,13 @@ AC_SUBST(usemmapshm)
877912AC_SUBST(useshmget)
878913AC_SUBST(usebeosarea)
879914AC_SUBST(useos2shm)
915+ AC_SUBST(usewin32shm)
880916AC_SUBST(havemmaptmp)
881917AC_SUBST(havemmapshm)
882918AC_SUBST(haveshmget)
883919AC_SUBST(havebeosarea)
884920AC_SUBST(haveos2shm)
921+ AC_SUBST(havewin32shm)
885922AC_SUBST(sharedmem)
886923
887924dnl ----------------------------- Checks for Any required Functions
@@ -1462,7 +1499,7 @@ if test "$dsotype" = "any"; then
14621499 # Everything else:
14631500 if test "$dsotype" = "any"; then
14641501 case $host in
1465- *os390|*-os2*|*os400|*-aix*) dsotype=other ;;
1502+ *os390|*-os2*|*os400|*-aix*|*mingw* ) dsotype=other ;;
14661503 esac
14671504 fi
14681505fi
@@ -1658,6 +1695,11 @@ APR_IFALLYES(header:OS.h func:create_sem,
16581695if test "x$apr_lock_method" != "x"; then
16591696 APR_DECISION_FORCE($apr_lock_method)
16601697fi
1698+ case "$host" in
1699+ *mingw* )
1700+ APR_DECISION_FORCE(win32)
1701+ ;;
1702+ esac
16611703APR_END_DECISION
16621704AC_DEFINE_UNQUOTED($ac_decision)
16631705
0 commit comments