Lines Matching +full:build +full:- +full:djgpp
1 <!--
4 SPDX-License-Identifier: curl
5 -->
13 package. This document describes how to compile, build and install curl and
22 ./bootstrap-vcpkg.sh
33 the `GIT-INFO.md` file in the root directory for specific instructions on how
41 ./configure --with-openssl [--with-gnutls --with-wolfssl]
52 ./configure --help
57 ./configure --prefix=/path/to/curl/tree
63 ./configure --prefix=$HOME
72 ./configure --with-openssl
75 you have pkg-config installed, set the pkg-config path first, like this:
77 env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-openssl
79 Without pkg-config installed, use this:
81 ./configure --with-openssl=/opt/OpenSSL
83 If you insist on forcing a build without SSL support, you can run configure
86 ./configure --without-ssl
93 CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure
97 provide this option to gcc to set a hard-coded path to the runtime linker:
99 LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure --with-openssl
106 ./configure --disable-shared
110 handled automatically by the library loader - on all modern systems.
119 When using static dependencies, the build scripts mostly assume that you, the
121 arguments in the build. With configure, by setting `LIBS` or `LDFLAGS` on the
129 options with the `--enable-debug` option.
132 services, and configure tries to auto-detect a decent default. If you want to
139 - AmiSSL: `--with-amissl`
140 - BearSSL: `--with-bearssl`
141 - GnuTLS: `--with-gnutls`.
142 - mbedTLS: `--with-mbedtls`
143 - OpenSSL: `--with-openssl` (also for BoringSSL, AWS-LC, LibreSSL, and quictls)
144 - rustls: `--with-rustls`
145 - Schannel: `--with-schannel`
146 - Secure Transport: `--with-secure-transport`
147 - wolfSSL: `--with-wolfssl`
149 You can build curl with *multiple* TLS backends at your choice, but some TLS
150 backends cannot be combined: if you build with an OpenSSL fork (or wolfSSL),
154 When you build with multiple TLS backends, you can select the active one at
161 exclusive. If you need MultiSSL in your build, you cannot have HTTP/3 support
169 When the configure script checks for third-party libraries, it adds those
183 You can build curl with:
185 - Microsoft Visual Studio 2008 v9.0 or later (`_MSC_VER >= 1500`)
186 - MinGW-w64
198 - [How To Use the C Runtime](https://support.microsoft.com/help/94248/how-to-use-the-c-run-time)
199 …- [Runtime Library Compiler Options](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-r…
200 …- [Potential Errors Passing CRT Objects Across DLL Boundaries](https://docs.microsoft.com/cpp/c-ru…
205 multi-threaded dynamic C runtime.
217 ## MS-DOS
222 CC=/path/to/djgpp/bin/i586-pc-msdosdjgpp-gcc \
223 AR=/path/to/djgpp/bin/i586-pc-msdosdjgpp-ar \
224 RANLIB=/path/to/djgpp/bin/i586-pc-msdosdjgpp-ranlib \
225 WATT_ROOT=/path/to/djgpp/net/watt \
226 --host=i586-pc-msdosdjgpp \
227 --with-openssl=/path/to/djgpp \
228 --with-zlib=/path/to/djgpp \
229 --without-libpsl \
230 --disable-shared
233 -DCMAKE_SYSTEM_NAME=DOS \
234 -DCMAKE_C_COMPILER_TARGET=i586-pc-msdosdjgpp \
235 -DCMAKE_C_COMPILER=/path/to/djgpp/bin/i586-pc-msdosdjgpp-gcc \
236 -DWATT_ROOT=/path/to/djgpp/net/watt \
237 -DOPENSSL_INCLUDE_DIR=/path/to/djgpp/include \
238 -DOPENSSL_SSL_LIBRARY=/path/to/djgpp/lib/libssl.a \
239 -DOPENSSL_CRYPTO_LIBRARY=/path/to/djgpp/lib/libcrypto.a \
240 -DZLIB_INCLUDE_DIR=/path/to/djgpp/include \
241 -DZLIB_LIBRARY=/path/to/djgpp/lib/libz.a \
242 -DCURL_USE_LIBPSL=OFF
246 - Requires DJGPP 2.04 or upper.
248 - Compile Watt-32 (and OpenSSL) with the same version of DJGPP. Otherwise
249 things go wrong because things like FS-extensions and `errno` values have
257 CC=/opt/amiga/bin/m68k-amigaos-gcc \
258 AR=/opt/amiga/bin/m68k-amigaos-ar \
259 RANLIB=/opt/amiga/bin/m68k-amigaos-ranlib \
260 --host=m68k-amigaos \
261 --with-amissl \
262 CFLAGS='-O0 -msoft-float -mcrt=clib2' \
263 CPPFLAGS=-I/path/to/AmiSSL/Developer/include \
264 LDFLAGS=-L/path/to/AmiSSL/Developer/lib/AmigaOS3 \
265 LIBS='-lnet -lm -latomic' \
266 --without-libpsl \
267 --disable-shared
270 -DAMIGA=1 \
271 -DCMAKE_SYSTEM_NAME=Generic \
272 -DCMAKE_C_COMPILER_TARGET=m68k-unknown-amigaos \
273 -DCMAKE_C_COMPILER=/opt/amiga/bin/m68k-amigaos-gcc \
274 -DCMAKE_C_FLAGS='-O0 -msoft-float -mcrt=clib2' \
275 -DAMISSL_INCLUDE_DIR=/path/to/AmiSSL/Developer/include \
276 -DAMISSL_STUBS_LIBRARY=/path/to/AmiSSL/Developer/lib/AmigaOS3/libamisslstubs.a \
277 -DAMISSL_AUTO_LIBRARY=/path/to/AmiSSL/Developer/lib/AmigaOS3/libamisslauto.a \
278 -DCURL_USE_LIBPSL=OFF
283 environment, therefore, you cannot use the various disable-protocol options of
287 [CURL-DISABLE](CURL-DISABLE.md) for the full list.
291 - Modify `lib/config-win32.h`
292 - Modify `lib/curl_setup.h`
293 - Modify `winbuild/Makefile.vc`
294 - Modify the "Preprocessor Definitions" in the libcurl project
296 Note: The pre-processor settings can be found using the Visual Studio IDE
297 under "Project -> Properties -> Configuration Properties -> C/C++ ->
300 ## Using BSD-style lwIP instead of Winsock TCP/IP stack in Windows builds
302 In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is
307 - Modify `lib/config-win32.h`
308 - Modify `winbuild/Makefile.vc`
309 - Modify the "Preprocessor Definitions" in the libcurl project
311 Note: The pre-processor settings can be found using the Visual Studio IDE
312 under "Project -> Properties -> Configuration Properties -> C/C++ ->
315 Once that libcurl has been built with BSD-style lwIP TCP/IP stack support, in
323 This BSD-style lwIP TCP/IP stack support must be considered experimental given
330 you must add `-DCURL_STATICLIB` to your `CFLAGS`. Otherwise the linker looks
344 implementation, Secure Transport, instead of OpenSSL. To build with Secure
345 Transport for SSL/TLS, use the configure option `--with-secure-transport`.
347 When Secure Transport is in use, the curl options `--cacert` and `--capath`
351 The `--cert` and `--engine` options, and their libcurl equivalents, are
354 In general, a curl build for an Apple `ARCH/SDK/DEPLOYMENT_TARGET` combination
364 export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYM…
365 ./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport
366 make -j8
374 -DCMAKE_OSX_ARCHITECTURES=x86_64 \
375 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.8 \
376 -DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)"
379 The above command lines build curl for macOS platform with `x86_64`
389 export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYM…
390 ./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport
391 make -j8
399 -DCMAKE_SYSTEM_NAME=iOS \
400 -DCMAKE_OSX_ARCHITECTURES=arm64 \
401 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
411 export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYM…
412 ./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport
413 make -j8
424 Before you can build curl for Android, you need to install the Android NDK
428 the build.
435 -DANDROID_ABI=arm64-v8a \
436 -DANDROID_PLATFORM=android-29 \
437 -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
438 -DCURL_ENABLE_SSL=OFF \
439 -DCURL_USE_LIBPSL=OFF
445 export HOST_TAG=darwin-x86_64 # Same tag for Apple Silicon. Other OS values here: https://developer…
447 export AR=$TOOLCHAIN/bin/llvm-ar
448 export AS=$TOOLCHAIN/bin/llvm-as
449 export CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang
450 export CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++
452 export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
453 export STRIP=$TOOLCHAIN/bin/llvm-strip
457 to adjust those variables accordingly. After that you can build curl like this:
459 ./configure --host aarch64-linux-android --with-pic --disable-shared
462 have to build curl with a SSL/TLS library, e.g. OpenSSL, because it is
463 impossible for curl to access Android's native SSL/TLS layer. To build curl
464 for Android using OpenSSL, follow the OpenSSL build instructions and then
466 `include/openssl` to `$TOOLCHAIN/sysroot/usr/include`. Now you can build curl
470 LIBS="-lssl -lcrypto -lc++" # For OpenSSL/BoringSSL. In general, you need to the SSL/TLS layer's tr…
471 ./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sys…
478 - Natively, running in the **ILE**. The obvious use is being able to call curl
480 - You need to build this from source. See `packages/OS400/README` for the ILE
481 specific build instructions.
482 - In the **PASE** environment, which runs AIX programs. curl is built as it
484 - IBM provides builds of curl in their Yum repository for PASE software.
485 - To build from source, follow the Unix instructions.
490 ## Multi-threading notes
503 - Set the environment variable `QIBM_MULTI_THREADED` to `Y` before starting
505 - Alternatively, start the job with the `ALWMLTTHD` parameter set to `*YES`.
511 `cd` to the new directory. (e.g. `cd curl-7.12.3`)
513 Set environment variables to point to the cross-compile toolchain and call
514 configure with any options you need. Be sure and specify the `--host` and
515 `--build` parameters at configuration time. The following script is an example
516 of cross-compiling for the IBM 405GP PowerPC processor using the toolchain on
523 export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
524 export AR=ppc_405-ar
525 export AS=ppc_405-as
526 export LD=ppc_405-ld
527 export RANLIB=ppc_405-ranlib
528 export CC=ppc_405-gcc
529 export NM=ppc_405-nm
531 ./configure --target=powerpc-hardhat-linux
532 --host=powerpc-hardhat-linux
533 --build=i586-pc-linux-gnu
534 --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local
535 --exec-prefix=/usr/local
538 You may also need to provide a parameter like `--with-random=/dev/urandom` to
540 device for a target system. The `--prefix` parameter specifies where curl gets
546 ./configure --host=ARCH-OS
554 would mean at minimum the `-Os` option, and others like the following that
555 may be relevant in some environments: `-march=X`, `-mthumb`, `-m32`,
556 `-mdynamic-no-pic`, `-flto`, `-fdata-sections`, `-ffunction-sections`,
557 `-fno-unwind-tables`, `-fno-asynchronous-unwind-tables`,
558 `-fno-record-gcc-switches`, `-fsection-anchors`, `-fno-plt`,
559 `-Wl,--gc-sections`, `-Wl,-Bsymbolic`, `-Wl,-s`,
563 ./configure CC=gcc CFLAGS='-Os -ffunction-sections' LDFLAGS='-Wl,--gc-sections'...
568 Be sure to specify as many `--disable-` and `--without-` flags on the
569 configure command-line as you can to disable all the libcurl features that you
571 `--disable-PROTOCOL` flags for all the types of URLs your application do not
573 disabling support for some feature (run `./configure --help` to see them all):
575 - `--disable-alt-svc` (HTTP Alt-Svc)
576 - `--disable-ares` (the C-ARES DNS library)
577 - `--disable-cookies` (HTTP cookies)
578 - `--disable-basic-auth` (cryptographic authentication)
579 - `--disable-bearer-auth` (cryptographic authentication)
580 - `--disable-digest-auth` (cryptographic authentication)
581 - `--disable-kerberos-auth` (cryptographic authentication)
582 - `--disable-negotiate-auth` (cryptographic authentication)
583 - `--disable-aws` (cryptographic authentication)
584 - `--disable-dateparse` (date parsing for time conditionals)
585 - `--disable-dnsshuffle` (internal server load spreading)
586 - `--disable-doh` (DNS-over-HTTP)
587 - `--disable-form-api` (POST form API)
588 - `--disable-get-easy-options` (lookup easy options at runtime)
589 - `--disable-headers-api` (API to access headers)
590 - `--disable-hsts` (HTTP Strict Transport Security)
591 - `--disable-http-auth` (all HTTP authentication)
592 - `--disable-ipv6` (IPv6)
593 - `--disable-libcurl-option` (--libcurl C code generation support)
594 - `--disable-manual` (--manual built-in documentation)
595 - `--disable-mime` (MIME API)
596 - `--disable-netrc` (.netrc file)
597 - `--disable-ntlm` (NTLM authentication)
598 - `--disable-ntlm-wb` (NTLM winbind)
599 - `--disable-progress-meter` (graphical progress meter in library)
600 - `--disable-proxy` (HTTP and SOCKS proxies)
601 - `--disable-pthreads` (multi-threading)
602 - `--disable-socketpair` (socketpair for asynchronous name resolving)
603 - `--disable-threaded-resolver` (threaded name resolver)
604 - `--disable-tls-srp` (Secure Remote Password authentication for TLS)
605 - `--disable-unix-sockets` (Unix sockets)
606 - `--disable-verbose` (eliminates debugging strings and error code strings)
607 - `--disable-versioned-symbols` (versioned symbols)
608 - `--enable-symbol-hiding` (eliminates unneeded symbols in the shared library)
609 - `--without-brotli` (Brotli on-the-fly decompression)
610 - `--without-libpsl` (Public Suffix List in cookies)
611 - `--without-nghttp2` (HTTP/2 using nghttp2)
612 - `--without-ngtcp2` (HTTP/2 using ngtcp2)
613 - `--without-zstd` (Zstd on-the-fly decompression)
614 - `--without-libidn2` (internationalized domain names)
615 - `--without-librtmp` (RTMP)
616 - `--without-ssl` (SSL/TLS)
617 - `--without-zlib` (on-the-fly decompression)
620 using 'strip' or an option like `-s`. If space is really tight, you may be able
622 using the -R option to objcopy (e.g. the .comment section).
624 Using these techniques it is possible to create a basic HTTP-only libcurl
632 `--disable` statements suggested above. Use of these can cause tests relying
638 - `--disable-cookies` !cookies
639 …- `--disable-dateparse` !RETRY-AFTER !`CURLOPT_TIMECONDITION` !`CURLINFO_FILETIME` !`If-Mod…
640 - `--disable-libcurl-option` !`--libcurl`
641 - `--disable-verbose` !verbose\ logs
654 Garmin OS, Genode, Haiku, HardenedBSD, HP-UX, Hurd, IBM I, illumos,
656 Mbed, Meego, Micrium, MINIX, Minoca, Moblin, MorphOS, MPE/iX, MS-DOS,
657 NCR MP-RAS, NetBSD, Netware, NextStep, Nintendo 3DS Nintendo Switch,
660 RTEMS, Sailfish OS, SCO Unix, Serenity, SINIX-Z, SkyOS, software,
668 Alpha, ARC, ARM, AVR32, C-SKY, CompactRISC, Elbrus, ETRAX, HP-PA, Itanium,
670 RISC-V, s390, SH4, SPARC, Tilera, VAX, x86, Xtensa, z/arch