From 0035ff45c59437db1a8ffe960b40905c8582b149 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 24 Jan 2025 14:22:23 +0100 Subject: [PATCH] build: drop `tool_hugehelp.c.cvs`, tidy up macros, drop `buildconf.bat` Rework the way `tool_hugehelp.c` is included in builds. After this patch, with `./configure` and CMake `tool_hugehelp.c` is only compiled when building with manuals enabled. With manuals disabled this source file is not used anymore. The method is similar to how 8a3740bc8e558b9a9d4a652b74cf27a0961d7010 implemented `tool_ca_embed.c`. `./configure` always generates it as before, otherwise the build fails. - winbuild: rework to not need `buildconf.bat`, but automatically use `tool_hugehelp.c` if present (e.g. when building from an official source tarball) and enable `USE_MANUAL` accordingly. - `buildconf.bat`: after dropping `tool_hugehelp.c` generation, the only logic left was `cp Makefile.dist Makefile`. This allowed to launch winbuild builds via GNU Make in a Git repo. Drop this option together with the batch file. - build `libcurltool` without `USE_MANUAL` macro to exclude the manual and the dependence on the generator commands. Drop relying on `UNITTESTS` for this purpose. Follow-up to 96843f4ef74e02452972fd97fe15d8ff656f46ec #16068 - `src/mkhelp.pl`: include `tool_hugehelp.h` before using `USE_MANUAL` to have it set in `config-*.h` builds with source tarballs created with manual but without zlib. Closes #16081 --- .github/scripts/distfiles.sh | 1 - GIT-INFO.md | 4 - Makefile.am | 2 +- Makefile.dist | 19 +-- appveyor.sh | 2 - buildconf.bat | 265 ----------------------------------- docs/HTTP3.md | 4 - lib/config-win32.h | 5 - src/CMakeLists.txt | 17 +-- src/Makefile.am | 6 +- src/mkhelp.pl | 2 +- src/tool_help.c | 4 +- src/tool_hugehelp.c.cvs | 39 ------ src/tool_hugehelp.h | 6 +- src/tool_operate.c | 10 +- tests/testcurl.pl | 1 - winbuild/Makefile.vc | 6 +- winbuild/MakefileBuild.vc | 13 +- 18 files changed, 32 insertions(+), 374 deletions(-) delete mode 100644 buildconf.bat delete mode 100644 src/tool_hugehelp.c.cvs diff --git a/.github/scripts/distfiles.sh b/.github/scripts/distfiles.sh index 31b5a11896..26370744d7 100755 --- a/.github/scripts/distfiles.sh +++ b/.github/scripts/distfiles.sh @@ -29,7 +29,6 @@ gitonly=".git* ^scripts/installcheck.sh ^scripts/release-notes.pl ^scripts/singleuse.pl -^src/tool_hugehelp.c.cvs ^tests/CI.md" tarfiles="$(mktemp)" diff --git a/GIT-INFO.md b/GIT-INFO.md index 09a3a994e1..1ff22010cb 100644 --- a/GIT-INFO.md +++ b/GIT-INFO.md @@ -21,10 +21,6 @@ Daniel uses a configure line similar to this for easier development: ./configure --disable-shared --enable-debug --enable-maintainer-mode -In environments that do not support configure (i.e. Windows), do this: - - buildconf.bat - ## REQUIREMENTS See [docs/INTERNALS.md][0] for requirement details. diff --git a/Makefile.am b/Makefile.am index 944806eef0..d5832c41bd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -83,7 +83,7 @@ PLAN9_DIST = plan9/include/mkfile \ EXTRA_DIST = CHANGES.md COPYING Makefile.dist \ RELEASE-NOTES $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \ - $(PLAN9_DIST) buildconf.bat Dockerfile + $(PLAN9_DIST) Dockerfile DISTCLEANFILES = buildinfo.txt diff --git a/Makefile.dist b/Makefile.dist index ee1c2be59b..61ba795a47 100644 --- a/Makefile.dist +++ b/Makefile.dist @@ -30,28 +30,13 @@ ssl: ./configure --with-openssl make -vc: - cd winbuild - nmake /f Makefile.vc MACHINE=x86 - -vc-x64: - cd winbuild - nmake /f Makefile.vc MACHINE=x64 - -cygwin: - ./configure - make - -cygwin-ssl: - ./configure --with-openssl - make +cygwin: all +cygwin-ssl: ssl unix: all - unix-ssl: ssl linux: all - linux-ssl: ssl ca-bundle: scripts/mk-ca-bundle.pl diff --git a/appveyor.sh b/appveyor.sh index 2843d1827b..bdc7ee4843 100644 --- a/appveyor.sh +++ b/appveyor.sh @@ -75,7 +75,6 @@ elif [ "${BUILD_SYSTEM}" = 'VisualStudioSolution' ]; then ) curl="build/Win32/${VC_VERSION}/${PRJ_CFG}/curld.exe" elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2015' ]; then - ./buildconf.bat ( cd winbuild cat << EOF > _make.bat @@ -88,7 +87,6 @@ EOF ) curl="builds/libcurl-vc14-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe" elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2017' ]; then - ./buildconf.bat ( cd winbuild cat << EOF > _make.bat diff --git a/buildconf.bat b/buildconf.bat deleted file mode 100644 index 532c9848d6..0000000000 --- a/buildconf.bat +++ /dev/null @@ -1,265 +0,0 @@ -@echo off -rem *************************************************************************** -rem * _ _ ____ _ -rem * Project ___| | | | _ \| | -rem * / __| | | | |_) | | -rem * | (__| |_| | _ <| |___ -rem * \___|\___/|_| \_\_____| -rem * -rem * Copyright (C) Daniel Stenberg, , et al. -rem * -rem * This software is licensed as described in the file COPYING, which -rem * you should have received as part of this distribution. The terms -rem * are also available at https://curl.se/docs/copyright.html. -rem * -rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell -rem * copies of the Software, and permit persons to whom the Software is -rem * furnished to do so, under the terms of the COPYING file. -rem * -rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -rem * KIND, either express or implied. -rem * -rem * SPDX-License-Identifier: curl -rem * -rem *************************************************************************** - -rem NOTES -rem -rem This batch file must be used to set up a git tree to build on systems where -rem there is no autotools support (i.e. DOS and Windows). -rem - -:begin - rem Set our variables - if "%OS%" == "Windows_NT" setlocal - set MODE=GENERATE - - rem Switch to this batch file's directory - cd /d "%~0\.." 1>NUL 2>&1 - - rem Check we are running from a curl git repository - if not exist GIT-INFO.md goto norepo - -:parseArgs - if "%~1" == "" goto start - - if /i "%~1" == "-clean" ( - set MODE=CLEAN - ) else if /i "%~1" == "-?" ( - goto syntax - ) else if /i "%~1" == "-h" ( - goto syntax - ) else if /i "%~1" == "-help" ( - goto syntax - ) else ( - goto unknown - ) - - shift & goto parseArgs - -:start - if "%MODE%" == "GENERATE" ( - echo. - echo Generating prerequisite files - - call :generate - if errorlevel 3 goto nogenhugehelp - if errorlevel 2 goto nogenmakefile - if errorlevel 1 goto warning - - ) else ( - echo. - echo Removing prerequisite files - - call :clean - if errorlevel 2 goto nocleanhugehelp - if errorlevel 1 goto nocleanmakefile - ) - - goto success - -rem Main generate function. -rem -rem Returns: -rem -rem 0 - success -rem 1 - success with simplified tool_hugehelp.c -rem 2 - failed to generate Makefile -rem 3 - failed to generate tool_hugehelp.c -rem -:generate - if "%OS%" == "Windows_NT" setlocal - set BASIC_HUGEHELP=0 - - rem Create Makefile - echo * %CD%\Makefile - if exist Makefile.dist ( - copy /Y Makefile.dist Makefile 1>NUL 2>&1 - if errorlevel 1 ( - if "%OS%" == "Windows_NT" endlocal - exit /B 2 - ) - ) - - rem Create tool_hugehelp.c - echo * %CD%\src\tool_hugehelp.c - call :genHugeHelp - if errorlevel 2 ( - if "%OS%" == "Windows_NT" endlocal - exit /B 3 - ) - if errorlevel 1 ( - set BASIC_HUGEHELP=1 - ) - cmd /c exit 0 - - if "%BASIC_HUGEHELP%" == "1" ( - if "%OS%" == "Windows_NT" endlocal - exit /B 1 - ) - - if "%OS%" == "Windows_NT" endlocal - exit /B 0 - -rem Main clean function. -rem -rem Returns: -rem -rem 0 - success -rem 1 - failed to clean Makefile -rem 2 - failed to clean tool_hugehelp.c -rem -:clean - rem Remove Makefile - echo * %CD%\Makefile - if exist Makefile ( - del Makefile 2>NUL - if exist Makefile ( - exit /B 1 - ) - ) - - rem Remove tool_hugehelp.c - echo * %CD%\src\tool_hugehelp.c - if exist src\tool_hugehelp.c ( - del src\tool_hugehelp.c 2>NUL - if exist src\tool_hugehelp.c ( - exit /B 2 - ) - ) - - exit /B - -rem Function to generate src\tool_hugehelp.c -rem -rem Returns: -rem -rem 0 - full tool_hugehelp.c generated -rem 1 - simplified tool_hugehelp.c -rem 2 - failure -rem -:genHugeHelp - if "%OS%" == "Windows_NT" setlocal - set LC_ALL=C - set BASIC=1 - - if exist src\tool_hugehelp.c.cvs ( - copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1 - ) else ( - echo #include "tool_setup.h"> src\tool_hugehelp.c - echo #include "tool_hugehelp.h">> src\tool_hugehelp.c - echo.>> src\tool_hugehelp.c - echo void hugehelp(void^)>> src\tool_hugehelp.c - echo {>> src\tool_hugehelp.c - echo #ifdef USE_MANUAL>> src\tool_hugehelp.c - echo fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c - echo #endif>> src\tool_hugehelp.c - echo }>> src\tool_hugehelp.c - ) - - findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1 - if errorlevel 1 ( - if "%OS%" == "Windows_NT" endlocal - exit /B 2 - ) - - if "%BASIC%" == "1" ( - if "%OS%" == "Windows_NT" endlocal - exit /B 1 - ) - - if "%OS%" == "Windows_NT" endlocal - exit /B 0 - -rem Function to clean-up local variables under DOS, Windows 3.x and -rem Windows 9x as setlocal isn't available until Windows NT -rem -:dosCleanup - set MODE= - set BASIC_HUGEHELP= - set LC_ALL - set BASIC= - - exit /B - -:syntax - rem Display the help - echo. - echo Usage: buildconf [-clean] - echo. - echo -clean - Removes the files - goto error - -:unknown - echo. - echo Error: Unknown argument '%1' - goto error - -:norepo - echo. - echo Error: This batch file should only be used with a curl git repository - goto error - -:nogenmakefile - echo. - echo Error: Unable to generate Makefile - goto error - -:nogenhugehelp - echo. - echo Error: Unable to generate src\tool_hugehelp.c - goto error - -:nocleanmakefile - echo. - echo Error: Unable to clean Makefile - goto error - -:nocleanhugehelp - echo. - echo Error: Unable to clean src\tool_hugehelp.c - goto error - -:warning - echo. - echo Warning: The curl manual could not be integrated in the source. This means when - echo you build curl the manual will not be available (curl --manual^). Integration of - echo the manual is not required and a summary of the options will still be available - echo (curl --help^). To integrate the manual build with configure or cmake. - goto success - -:error - if "%OS%" == "Windows_NT" ( - endlocal - ) else ( - call :dosCleanup - ) - exit /B 1 - -:success - if "%OS%" == "Windows_NT" ( - endlocal - ) else ( - call :dosCleanup - ) - exit /B 0 diff --git a/docs/HTTP3.md b/docs/HTTP3.md index 3ff73c8e5b..f0f5c445c6 100644 --- a/docs/HTTP3.md +++ b/docs/HTTP3.md @@ -303,10 +303,6 @@ prompt](../winbuild/README.md#open-a-command-prompt)): % cd curl/winbuild % nmake /f Makefile.vc mode=dll WITH_MSH3=dll MSH3_PATH="C:/Program Files/msh3" MACHINE=x64 -**Note** - If you encounter a build error with `tool_hugehelp.c` being -missing, rename `tool_hugehelp.c.cvs` in the same directory to -`tool_hugehelp.c` and then run `nmake` again. - Run in the `C:/Program Files/msh3/lib` directory, copy `curl.exe` to that directory, or copy `msquic.dll` and `msh3.dll` from that directory to the `curl.exe` directory. For example: diff --git a/lib/config-win32.h b/lib/config-win32.h index 3a225b4812..8bcf90027d 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -500,11 +500,6 @@ Vista # endif /* UNDER_CE */ #endif /* !CURL_OS */ -/* If you want to build curl with the built-in manual */ -#ifndef UNDER_CE -#define USE_MANUAL 1 -#endif - /* ---------------------------------------------------------------- */ /* Windows CE */ /* ---------------------------------------------------------------- */ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ef6ccbfbf5..715a471a75 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -26,9 +26,10 @@ add_definitions("-DBUILDING_CURL") set(_curl_cfiles_gen "") set(_curl_hfiles_gen "") +set(_curl_definitions "") if(ENABLE_CURL_MANUAL AND HAVE_MANUAL_TOOLS) - add_definitions("-DUSE_MANUAL") + list(APPEND _curl_definitions "USE_MANUAL") add_custom_command( OUTPUT "tool_hugehelp.c" COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > "tool_hugehelp.c" @@ -43,20 +44,13 @@ if(ENABLE_CURL_MANUAL AND HAVE_MANUAL_TOOLS) "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h" "${CURL_ASCIIPAGE}" VERBATIM) - list(APPEND _curl_cfiles_gen "tool_hugehelp.c") - list(APPEND _curl_hfiles_gen "tool_hugehelp.h") -else() - add_custom_command( - OUTPUT "tool_hugehelp.c" - COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" > "tool_hugehelp.c" - DEPENDS - "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h" - VERBATIM) + list(APPEND _curl_cfiles_gen "tool_hugehelp.c") + list(APPEND _curl_hfiles_gen "tool_hugehelp.h") endif() if(CURL_CA_EMBED_SET) if(PERL_FOUND) - add_definitions("-DCURL_CA_EMBED") + list(APPEND _curl_definitions "CURL_CA_EMBED") add_custom_command( OUTPUT "tool_ca_embed.c" COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mk-file-embed.pl" --var curl_ca_embed @@ -93,6 +87,7 @@ add_executable( ${EXE_NAME} ${CURL_CFILES} ${_curl_cfiles_gen} ${CURLX_CFILES} ${CURL_HFILES} ${_curl_hfiles_gen} ) +target_compile_definitions(${EXE_NAME} PRIVATE ${_curl_definitions}) add_executable( ${PROJECT_NAME}::${EXE_NAME} diff --git a/src/Makefile.am b/src/Makefile.am index 5282aaff06..6e7fedb844 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -129,9 +129,11 @@ HUGEIT_0 = @echo " HUGE " $@; HUGEIT_1 = HUGEIT_ = $(HUGEIT_0) +curl_CPPFLAGS = $(AM_CPPFLAGS) + if USE_MANUAL # Here are the stuff to create a built-in manual -AM_CPPFLAGS += -DUSE_MANUAL +curl_CPPFLAGS += -DUSE_MANUAL $(ASCIIPAGE): cd $(top_builddir)/docs && $(MAKE) @@ -167,7 +169,7 @@ CA_EMBED_CSOURCE = tool_ca_embed.c curl_cfiles_gen += $(CA_EMBED_CSOURCE) CLEANFILES += $(CA_EMBED_CSOURCE) if CURL_CA_EMBED_SET -AM_CPPFLAGS += -DCURL_CA_EMBED +curl_CPPFLAGS += -DCURL_CA_EMBED MK_FILE_EMBED = $(top_srcdir)/src/mk-file-embed.pl $(CA_EMBED_CSOURCE): $(MK_FILE_EMBED) $(CURL_CA_EMBED) $(PERL) $(MK_FILE_EMBED) --var curl_ca_embed < $(CURL_CA_EMBED) > $(CA_EMBED_CSOURCE) diff --git a/src/mkhelp.pl b/src/mkhelp.pl index 00f6a22e4a..74cb16ed5b 100755 --- a/src/mkhelp.pl +++ b/src/mkhelp.pl @@ -43,8 +43,8 @@ print <lname); else msnprintf(cmdbuf, sizeof(cmdbuf), "\n %s", category); -#ifndef UNITTESTS +#ifdef USE_MANUAL if(a->cmd == C_XATTR) /* this is the last option, which then ends when FILES starts */ showhelp("\nALL OPTIONS\n", cmdbuf, "\nFILES"); diff --git a/src/tool_hugehelp.c.cvs b/src/tool_hugehelp.c.cvs deleted file mode 100644 index 7711661317..0000000000 --- a/src/tool_hugehelp.c.cvs +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - * SPDX-License-Identifier: curl - * - ***************************************************************************/ - -#include "tool_setup.h" -#include "tool_hugehelp.h" - -void hugehelp(void) -{ - puts("built-in manual was disabled at build-time"); -} - -void showhelp(const char *trigger, const char *arg, const char *endarg) -{ - (void)trigger; - (void)arg; - (void)endarg; - hugehelp(); -} diff --git a/src/tool_hugehelp.h b/src/tool_hugehelp.h index f00f88702b..89df96ce5f 100644 --- a/src/tool_hugehelp.h +++ b/src/tool_hugehelp.h @@ -25,13 +25,9 @@ ***************************************************************************/ #include "tool_setup.h" -void showhelp(const char *trigger, const char *arg, const char *endarg); - #ifdef USE_MANUAL +void showhelp(const char *trigger, const char *arg, const char *endarg); void hugehelp(void); -#else -/* do nothing if not there */ -#define hugehelp() #endif #endif /* HEADER_CURL_TOOL_HUGEHELP_H */ diff --git a/src/tool_operate.c b/src/tool_operate.c index 733515a14c..007a5e0544 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -94,9 +94,7 @@ #include "tool_xattr.h" #include "tool_vms.h" #include "tool_help.h" -#ifndef UNITTESTS #include "tool_hugehelp.h" -#endif #include "tool_progress.h" #include "tool_ipfs.h" #include "dynbuf.h" @@ -107,10 +105,6 @@ CURL_EXTERN CURLcode curl_easy_perform_ev(CURL *easy); #include "memdebug.h" /* keep this as LAST include */ -#ifdef UNITTESTS -#undef CURL_CA_EMBED -#endif - #ifdef CURL_CA_EMBED #ifndef CURL_DECLARED_CURL_CA_EMBED #define CURL_DECLARED_CURL_CA_EMBED @@ -3191,8 +3185,10 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[]) tool_help(global->help_category); /* Check if we were asked for the manual */ else if(res == PARAM_MANUAL_REQUESTED) { -#ifndef UNITTESTS +#ifdef USE_MANUAL hugehelp(); +#else + puts("built-in manual was disabled at build-time"); #endif } /* Check if we were asked for the version information */ diff --git a/tests/testcurl.pl b/tests/testcurl.pl index cb31727962..12ca212e05 100755 --- a/tests/testcurl.pl +++ b/tests/testcurl.pl @@ -566,7 +566,6 @@ if ($configurebuild) { logit "copying files to build dir ..."; if ($^O eq 'MSWin32') { system("xcopy /s /q \"$CURLDIR\" ."); - system("buildconf.bat"); } elsif ($^O eq 'linux') { system("cp -afr $CURLDIR/* ."); diff --git a/winbuild/Makefile.vc b/winbuild/Makefile.vc index 97fc761f29..d404279dd3 100644 --- a/winbuild/Makefile.vc +++ b/winbuild/Makefile.vc @@ -61,11 +61,7 @@ CFGSET=true LIBCURL_OBJS=$(CSOURCES:.c=.obj) !INCLUDE "../src/Makefile.inc" - -# tool_hugehelp has a special rule -CURL_OBJS=$(CURL_CFILES:tool_hugehelp.c=) - -CURL_OBJS=$(CURL_OBJS:.c=.obj) +CURL_OBJS=$(CURL_CFILES:.c=.obj) # backwards compatible check for USE_SSPI diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc index 41fe4d3dc9..84863f8dd1 100644 --- a/winbuild/MakefileBuild.vc +++ b/winbuild/MakefileBuild.vc @@ -99,6 +99,11 @@ CURL_RESFLAGS = /i../include LIBCURL_SRC_DIR = ..\lib CURL_SRC_DIR = ..\src +!IF EXISTS($(CURL_SRC_DIR)\tool_hugehelp.c) +USE_MANUAL = true +CFLAGS = $(CFLAGS) /DUSE_MANUAL +!ENDIF + !IFNDEF WITH_DEVEL WITH_DEVEL = ../../deps !ENDIF @@ -684,7 +689,7 @@ CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP) !ENDIF !ENDIF -CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \ +CURL_FROM_LIBCURL=\ $(CURL_DIROBJ)\nonblock.obj \ $(CURL_DIROBJ)\strtoofft.obj \ $(CURL_DIROBJ)\warnless.obj \ @@ -694,6 +699,10 @@ CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \ $(CURL_DIROBJ)\dynbuf.obj \ $(CURL_DIROBJ)\base64.obj +!IFDEF USE_MANUAL +CURL_FROM_LIBCURL = $(CURL_FROM_LIBCURL) $(CURL_DIROBJ)\tool_hugehelp.obj +!ENDIF + $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS) $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS) $(MANIFESTTOOL) @@ -701,8 +710,10 @@ $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS) {$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj:: $(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\" $< +!IFDEF USE_MANUAL $(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c $(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c +!ENDIF $(CURL_DIROBJ)\nonblock.obj: ../lib/nonblock.c $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/nonblock.c $(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c