distro
distro's
distros
+DJGPP
dlist
DLL
dll
FreeRTOS
freshmeat
Frexx
+FS
fseek
FTPing
fuzzer
make
mingw32:
- $(MAKE) -C lib -f Makefile.m32
- $(MAKE) -C src -f Makefile.m32
+ $(MAKE) -C lib -f Makefile.mk
+ $(MAKE) -C src -f Makefile.mk
mingw32-clean:
- $(MAKE) -C lib -f Makefile.m32 clean
- $(MAKE) -C src -f Makefile.m32 clean
- $(MAKE) -C docs/examples -f Makefile.m32 clean
+ $(MAKE) -C lib -f Makefile.mk clean
+ $(MAKE) -C src -f Makefile.mk clean
+ $(MAKE) -C docs/examples -f Makefile.mk clean
mingw32-vclean mingw32-distclean:
- $(MAKE) -C lib -f Makefile.m32 vclean
- $(MAKE) -C src -f Makefile.m32 vclean
- $(MAKE) -C docs/examples -f Makefile.m32 vclean
+ $(MAKE) -C lib -f Makefile.mk vclean
+ $(MAKE) -C src -f Makefile.mk vclean
+ $(MAKE) -C docs/examples -f Makefile.mk vclean
mingw32-examples%:
- $(MAKE) -C docs/examples -f Makefile.m32 CFG=$@
+ $(MAKE) -C docs/examples -f Makefile.mk CFG=$@
mingw32%:
- $(MAKE) -C lib -f Makefile.m32 CFG=$@
- $(MAKE) -C src -f Makefile.m32 CFG=$@
+ $(MAKE) -C lib -f Makefile.mk CFG=$@
+ $(MAKE) -C src -f Makefile.mk CFG=$@
vc:
cd winbuild
cd winbuild
nmake /f Makefile.vc MACHINE=x64
-djgpp:
- $(MAKE) -C lib -f Makefile.dj
- $(MAKE) -C src -f Makefile.dj
+djgpp%:
+ $(MAKE) -C lib -f Makefile.mk CFG=$@ CROSSPREFIX=i586-pc-msdosdjgpp-
+ $(MAKE) -C src -f Makefile.mk CFG=$@ CROSSPREFIX=i586-pc-msdosdjgpp-
cygwin:
./configure
./configure --with-openssl
make
-amiga:
- cd ./lib && make -f makefile.amiga
- cd ./src && make -f makefile.amiga
+amiga%:
+ $(MAKE) -C lib -f Makefile.mk CFG=$@ CROSSPREFIX=m68k-amigaos-
+ $(MAKE) -C src -f Makefile.mk CFG=$@ CROSSPREFIX=m68k-amigaos-
unix: all
and SSPI support.
If you have any problems linking libraries or finding header files, be sure
-to verify that the provided `Makefile.m32` files use the proper paths, and
+to verify that the provided `Makefile.mk` files use the proper paths, and
adjust as necessary. It is also possible to override these paths with
environment variables, for example:
set LIBS=-lldapsdk -lldapssl -lldapx
```
-If you want to enable LDAPS support then set LDAPS=1.
+If you want to enable LDAPS support then append `-ldaps` to the make target.
## Cygwin
Run `make`
+## MS-DOS
+
+Requires DJGPP in the search path and pointing to the Watt-32 stack via
+`WATT_PATH=c:/djgpp/net/watt`.
+
+Run `make -f Makefile.dist djgpp` in the root curl dir.
+
+For build configuration options, please see the MinGW32 section.
+
+Notes:
+
+ - DJGPP 2.04 beta has a `sscanf()` bug so the URL parsing is not done
+ properly. Use DJGPP 2.03 until they fix it.
+
+ - Compile Watt-32 (and OpenSSL) with the same version of DJGPP. Otherwise
+ things go wrong because things like FS-extensions and `errno` values have
+ been changed between releases.
+
+## AmigaOS
+
+Run `make -f Makefile.dist amiga` in the root curl dir.
+
+For build configuration options, please see the MinGW32 section.
+
## Disabling Specific Protocols in Windows builds
The configure utility, unfortunately, is not available for the Windows
AUTOMAKE_OPTIONS = foreign nostdinc
-EXTRA_DIST = README.md Makefile.example Makefile.inc Makefile.m32 \
- makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
+EXTRA_DIST = README.md Makefile.example Makefile.inc Makefile.mk \
+ $(COMPLICATED_EXAMPLES) .checksrc
# Specify our include paths here, and do it relative to $(top_srcdir) and
# $(top_builddir), to ensure that these paths which belong to the library
#
#***************************************************************************
-# Build libcurl via lib/Makefile.m32 first.
+# Build libcurl via lib/Makefile.mk first.
PROOT := ../..
+ifeq ($(findstring -static,$(CFG)),)
+ DYN := 1
+endif
+
+### Common
+
+include $(PROOT)/lib/Makefile.mk
+
+### Local
+
+CPPFLAGS += -DCURL_NO_OLDIES
LDFLAGS += -L$(PROOT)/lib
-LIBS += -lcurl
+LIBS := -lcurl $(LIBS)
-ifeq ($(findstring -static,$(CFG)),)
+ifdef DYN
curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
- DYN := 1
else
curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
- CPPFLAGS += -DCURL_STATICLIB
- LDFLAGS += -static
+ ifdef WIN32
+ CPPFLAGS += -DCURL_STATICLIB
+ LDFLAGS += -static
+ endif
endif
-LIBS += -lws2_32
+ifdef WIN32
+ LIBS += -lws2_32
+endif
### Sources and targets
# Provides check_PROGRAMS
include Makefile.inc
-TARGETS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS) synctime))
-TOCLEAN := $(TARGETS:.exe=.o)
+ifdef WIN32
+check_PROGRAMS += synctime
+endif
-### Local rules
+TARGETS := $(patsubst %,%$(BIN_EXT),$(strip $(check_PROGRAMS)))
+TOCLEAN := $(TARGETS)
-%.exe: %.o $(curl_DEPENDENCIES)
- $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $< $(LIBS)
+### Rules
-### Global script
+%$(BIN_EXT): %.c $(curl_DEPENDENCIES)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(CURL_LDFLAGS_BIN) $< -o $@ $(LIBS)
-include $(PROOT)/lib/Makefile.m32
+all: $(TARGETS)
+++ /dev/null
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, 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
-#
-###########################################################################
-
-TOPDIR = ../..
-
-include $(TOPDIR)/packages/DOS/common.dj
-
-CFLAGS += -DFALSE=0 -DTRUE=1
-
-LIBS = $(TOPDIR)/lib/libcurl.a
-
-ifeq ($(USE_SSL),1)
- LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
-endif
-
-ifeq ($(USE_IDNA),1)
- LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
-endif
-
-LIBS += $(WATT32_ROOT)/lib/libwatt.a $(ZLIB_ROOT)/libz.a
-
-include Makefile.inc
-
-PROGRAMS = $(patsubst %,%.exe,$(check_PROGRAMS))
-
-all: $(PROGRAMS)
- @echo Welcome to libcurl example program
-
-%.exe: %.c
- $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
- @echo
-
-clean vclean realclean:
- - rm -f $(PROGRAMS) depend.dj
-
--include depend.dj
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
-EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h config-plan9.h \
- config-riscos.h config-mac.h curl_config.h.in makefile.dj config-dos.h \
- libcurl.plist libcurl.rc config-amigaos.h makefile.amiga config-win32ce.h \
+EXTRA_DIST = Makefile.mk config-win32.h config-win32ce.h config-plan9.h \
+ config-riscos.h config-mac.h curl_config.h.in config-dos.h \
+ libcurl.plist libcurl.rc config-amigaos.h config-win32ce.h \
config-os400.h setup-os400.h $(CMAKE_DIST) setup-win32.h .checksrc
lib_LTLIBRARIES = libcurl.la
#
#***************************************************************************
-# Makefile for building curl parts with MinGW and optional features.
+# Makefile to build curl parts with GCC-like toolchains and optional features.
#
-# Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-# Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
+# Usage: [mingw32-]make -f Makefile.mk CFG=-feat1[-feat2][-feat3][...]
+# Example: [mingw32-]make -f Makefile.mk CFG=-zlib-ssl-libssh2-ipv6
#
# Set component roots via envvar <feature>_PATH. Also available for
-# customization: CC, RC, AR, CPPFLAGS, LDFLAGS, LIBS, CFLAGS, RCFLAGS,
-# ARCH[=custom], CROSSPREFIX, CURL_LDFLAGS_BIN, CURL_LDFLAGS_LIB, CURL_DLL_SUFFIX,
+# customization: CC, AR, RC, CPPFLAGS, LDFLAGS, LIBS, CFLAGS, RCFLAGS,
+# TRIPLET, CROSSPREFIX, CURL_LDFLAGS_BIN, CURL_LDFLAGS_LIB, CURL_DLL_SUFFIX,
# and more for individual components (see below).
-# This script is reused by 'src' and 'docs/examples' Makefile.m32 scripts.
-# Skip lib-specific parts when called through them.
-ifndef PROOT
-PROOT := ..
-
-CPPFLAGS += -DBUILDING_LIBCURL
-
-### Sources and targets
-
-# Provides CSOURCES, HHEADERS, LIB_RCFILES
-include Makefile.inc
-
-libcurl_dll_LIBRARY := libcurl$(CURL_DLL_SUFFIX).dll
-libcurl_dll_a_LIBRARY := libcurl.dll.a
-libcurl_a_LIBRARY := libcurl.a
+# This script is reused by 'src' and 'docs/examples' Makefile.mk scripts.
-TARGETS := $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)
-
-libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CSOURCES))))
-libcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS))
-libcurl_dll_OBJECTS := $(libcurl_a_OBJECTS)
-libcurl_dll_OBJECTS += $(patsubst %.rc,%.res,$(strip $(LIB_RCFILES)))
-vpath %.c vauth vquic vssh vtls
+ifndef PROOT
+ PROOT := ..
+ LOCAL := 1
+endif
-TOCLEAN := $(libcurl_dll_OBJECTS)
-TOVCLEAN := $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY)
+### Common
-### Local rules
+ifeq ($(CC),cc)
+ CC := gcc
+endif
+CC := $(CROSSPREFIX)$(CC)
+AR := $(CROSSPREFIX)$(AR)
+RC ?= $(CROSSPREFIX)windres
-# Keep this at the top to act as the default target.
-all: $(TARGETS)
+# For compatibility
+ifeq ($(ARCH),w64)
+ TRIPLET := x86_64-w64-mingw32
+ CFLAGS += -m64
+ LDFLAGS += -m64
+ RCFLAGS += --target=pe-x86-64
+else ifdef ARCH
+ TRIPLET := i686-w64-mingw32
+ CFLAGS += -m32
+ LDFLAGS += -m32
+ RCFLAGS += --target=pe-i386
+else
+ TRIPLET ?= $(shell $(CC) -dumpmachine)
+endif
-$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
- @$(call DEL, $@)
- $(AR) rcs $@ $(libcurl_a_OBJECTS)
+BIN_EXT := .exe
-$(libcurl_dll_LIBRARY): $(libcurl_dll_OBJECTS)
- $(CC) $(LDFLAGS) -shared $(CURL_LDFLAGS_LIB) -o $@ $(libcurl_dll_OBJECTS) $(LIBS) \
- -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY)
+ifneq ($(findstring -w,$(TRIPLET)),)
+ WIN32 := 1
+else ifneq ($(findstring msdos,$(TRIPLET)),)
+ # Cross-tools: https://github.com/andrewwutw/build-djgpp
+ MSDOS := 1
+else ifneq ($(findstring amigaos,$(TRIPLET)),)
+ # Cross-tools: https://github.com/bebbo/amiga-gcc
+ AMIGA := 1
endif
CPPFLAGS += -I. -I$(PROOT)/include
RCFLAGS += -I$(PROOT)/include
-CC := $(CROSSPREFIX)$(CC)
-AR := $(CROSSPREFIX)$(AR)
-RC ?= $(CROSSPREFIX)windres
+ifndef WIN32
+ DYN :=
+endif
-ifneq ($(ARCH),custom)
- # Set environment var ARCH to your architecture to override auto-detection.
- ifndef ARCH
- ifneq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),)
- ARCH := w64
- else
- ARCH := w32
- endif
- endif
- ifeq ($(ARCH),w64)
- CFLAGS += -m64
- LDFLAGS += -m64
- RCFLAGS += --target=pe-x86-64
- else
- CFLAGS += -m32
- LDFLAGS += -m32
- RCFLAGS += --target=pe-i386
- endif
+ifdef AMIGA
+ BIN_EXT :=
+endif
+
+### Deprecated settings. For compatibility.
+
+ifdef WATT_ROOT
+ WATT_PATH := $(realpath $(WATT_ROOT))
endif
### Optional features
-ifneq ($(findstring -unicode,$(CFG)),)
- CPPFLAGS += -DUNICODE -D_UNICODE
- CURL_LDFLAGS_BIN += -municode
+ifneq ($(findstring -debug,$(CFG)),)
+ CPPFLAGS += -DDEBUGBUILD
+ LDFLAGS += -g
+else
+ CPPFLAGS += -DNDEBUG
+endif
+ifneq ($(findstring -trackmem,$(CFG)),)
+ CPPFLAGS += -DCURLDEBUG
+endif
+ifneq ($(findstring -map,$(CFG)),)
+ MAP := 1
+endif
+
+ifdef WIN32
+ ifneq ($(findstring -unicode,$(CFG)),)
+ CPPFLAGS += -DUNICODE -D_UNICODE
+ CURL_LDFLAGS_BIN += -municode
+ endif
endif
# CPPFLAGS below are only necessary when building libcurl via 'lib' (see
CPPFLAGS += -DUSE_LIBSSH2
CPPFLAGS += -I"$(LIBSSH2_PATH)/include"
_LDFLAGS += -L"$(LIBSSH2_PATH)/lib"
- _LDFLAGS += -L"$(LIBSSH2_PATH)/win32"
+ ifdef WIN32
+ _LDFLAGS += -L"$(LIBSSH2_PATH)/win32"
+ endif
_LIBS += -lssh2
else ifneq ($(findstring -libssh,$(CFG)),)
LIBSSH_PATH ?= $(PROOT)/../libssh
ZLIB_PATH ?= $(PROOT)/../zlib
# These CPPFLAGS are also required when compiling the curl tool via 'src'.
CPPFLAGS += -DHAVE_LIBZ
- CPPFLAGS += -I"$(ZLIB_PATH)"
- _LDFLAGS += -L"$(ZLIB_PATH)"
- _LIBS += -lz
+ CPPFLAGS += -I"$(ZLIB_PATH)/include"
+ _LDFLAGS += -L"$(ZLIB_PATH)/lib"
+ ZLIB_LIBS ?= -lz
+ _LIBS += $(ZLIB_LIBS)
+ ZLIB := 1
endif
ifneq ($(findstring -zstd,$(CFG)),)
ZSTD_PATH ?= $(PROOT)/../zstd
endif
ifneq ($(findstring -sspi,$(CFG)),)
- CPPFLAGS += -DUSE_WINDOWS_SSPI
+ ifdef WIN32
+ CPPFLAGS += -DUSE_WINDOWS_SSPI
+ endif
endif
ifneq ($(findstring -ipv6,$(CFG)),)
CPPFLAGS += -DENABLE_IPV6
CPPFLAGS += -DHAVE_LDAP_SSL
endif
-ifeq ($(findstring -lldap,$(LIBS)),)
- _LIBS += -lwldap32
+ifneq ($(findstring -watt,$(CFG))$(MSDOS),)
+ WATT_PATH ?= $(PROOT)/../watt
+ CPPFLAGS += -I"$(WATT_PATH)/inc"
+ _LDFLAGS += -L"$(WATT_PATH)/lib"
+ _LIBS += -lwatt
+endif
+
+ifdef WIN32
+ ifeq ($(findstring -lldap,$(LIBS)),)
+ _LIBS += -lwldap32
+ endif
+ _LIBS += -lws2_32 -lcrypt32 -lbcrypt
endif
-_LIBS += -lws2_32 -lcrypt32 -lbcrypt
ifneq ($(findstring 11,$(subst $() ,,$(SSLLIBS))),)
CPPFLAGS += -DCURL_WITH_MULTI_SSL
LIBS += $(_LIBS)
endif
-### Global rules
+### Common rules
+
+OBJ_DIR := $(TRIPLET)
ifneq ($(findstring /sh,$(SHELL)),)
-DEL = rm -f $1
-COPY = -cp -afv $1 $2
+DEL = rm -f $1
+COPY = -cp -afv $1 $2
+MKDIR = mkdir -p $1
+RMDIR = rm -fr $1
+WHICH = command -v
else
-DEL = -del 2>NUL /q /f $(subst /,\,$1)
-COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
+DEL = -del 2>NUL /q /f $(subst /,\,$1)
+COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
+MKDIR = -md 2>NUL $(subst /,\,$1)
+RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
+WHICH = where
endif
all: $(TARGETS)
-%.o: %.c
- $(CC) -W -Wall $(CFLAGS) $(CPPFLAGS) -c $<
+$(OBJ_DIR):
+ -$(MKDIR) $(OBJ_DIR)
+
+$(OBJ_DIR)/%.o: %.c
+ $(CC) -W -Wall $(CFLAGS) $(CPPFLAGS) -c $< -o $@
-%.res: %.rc
+$(OBJ_DIR)/%.res: %.rc
$(RC) -O coff $(RCFLAGS) -i $< -o $@
clean:
@$(call DEL, $(TOCLEAN))
+ @$(RMDIR) $(OBJ_DIR)
distclean vclean: clean
@$(call DEL, $(TARGETS) $(TOVCLEAN))
+
+### Local
+
+ifdef LOCAL
+
+CPPFLAGS += -DBUILDING_LIBCURL
+
+### Sources and targets
+
+# Provides CSOURCES, HHEADERS, LIB_RCFILES
+include Makefile.inc
+
+vpath %.c vauth vquic vssh vtls
+
+libcurl_a_LIBRARY := libcurl.a
+ifdef WIN32
+libcurl_dll_LIBRARY := libcurl$(CURL_DLL_SUFFIX).dll
+libcurl_dll_a_LIBRARY := libcurl.dll.a
+ifdef MAP
+libcurl_map_LIBRARY := libcurl$(CURL_DLL_SUFFIX).map
+CURL_LDFLAGS_LIB += -Wl,-Map,$(libcurl_map_LIBRARY)
+endif
+endif
+
+TARGETS := $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)
+
+libcurl_a_OBJECTS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(strip $(CSOURCES))))
+libcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS))
+ifdef WIN32
+libcurl_dll_OBJECTS := $(libcurl_a_OBJECTS)
+libcurl_dll_OBJECTS += $(patsubst %.rc,$(OBJ_DIR)/%.res,$(strip $(LIB_RCFILES)))
+endif
+
+TOCLEAN := $(libcurl_dll_OBJECTS)
+TOVCLEAN := $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY) $(libcurl_map_LIBRARY)
+
+### Rules
+
+$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
+ @$(call DEL, $@)
+ $(AR) rcs $@ $(libcurl_a_OBJECTS)
+
+$(libcurl_dll_LIBRARY): $(libcurl_dll_OBJECTS)
+ $(CC) $(LDFLAGS) -shared $(CURL_LDFLAGS_LIB) -o $@ $(libcurl_dll_OBJECTS) $(LIBS) \
+ -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY)
+
+all: $(OBJ_DIR) $(TARGETS)
+endif
#define USE_MANUAL 1
#define CURL_DISABLE_LDAP 1
+#ifndef OS
#define OS "AmigaOS"
+#endif
#define PACKAGE "curl"
#define PACKAGE_BUGREPORT "a suitable mailing list: https://curl.se/mail/"
/* lib/config-dos.h - Hand crafted config file for DOS */
/* ================================================================ */
+#ifndef OS
#if defined(DJGPP)
#define OS "MSDOS/djgpp"
#elif defined(__HIGHC__)
#else
#define OS "MSDOS/?"
#endif
+#endif
#define PACKAGE "curl"
+#define USE_MANUAL 1
+
#define HAVE_ARPA_INET_H 1
#define HAVE_ASSERT_H 1
#define HAVE_ERRNO_H 1
/* CURLDEBUG definition enables memory tracking */
/* #define CURLDEBUG */
-#ifdef USE_ZLIB /* Deprecated. Use HAVE_LIBZ instead. */
- #define HAVE_LIBZ 1
-#endif
-
/* to disable LDAP */
#define CURL_DISABLE_LDAP 1
/* On Mac OS X you must run configure to generate curl_config.h file */
/* =================================================================== */
+#ifndef OS
#define OS "mac"
+#endif
/* Define if you want the built-in manual */
#define USE_MANUAL 1
#undef VERSION
/* Define cpu-machine-OS */
+#ifndef OS
#define OS "OS/400"
+#endif
/* OS400 supports a 3-argument ASCII version of gethostbyaddr_r(), but its
* prototype is incompatible with the "standard" one (1st argument is not
#define CURL_DISABLE_LDAP 1
#define NEED_REENTRANT 1
+#ifndef OS
#define OS "plan9"
+#endif
#define PACKAGE "curl"
#define PACKAGE_NAME "curl"
#define PACKAGE_BUGREPORT "a suitable mailing list: https://curl.se/mail/"
#undef VERSION
/* Define cpu-machine-OS */
+#ifndef OS
#define OS "ARM-RISC OS"
+#endif
/* Define if you want the built-in manual */
#define USE_MANUAL
/* ---------------------------------------------------------------- */
/* Define cpu-machine-OS */
-#if !defined(OS)
+#ifndef OS
#if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
#define OS "i386-pc-win32"
#elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
/* ---------------------------------------------------------------- */
/* Define cpu-machine-OS */
-#undef OS
+#ifndef OS
#define OS "i386-pc-win32ce"
+#endif
/* Name of package */
#define PACKAGE "curl"
# include "config-plan9.h"
#endif
+#ifdef MSDOS
+# include "config-dos.h"
+#endif
+
#endif /* HAVE_CONFIG_H */
/* ================================================================ */
+++ /dev/null
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, 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
-#
-###########################################################################
-#
-# libcurl Makefile for AmigaOS ...
-#
-
-# change the follow to where you have the AmiTCP SDK v4.3 includes:
-
-ATCPSDKI= /GG/netinclude
-
-
-CC = m68k-amigaos-gcc
-CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
-
-include Makefile.inc
-OBJS = $(CSOURCES:.c=.o)
-
-all: $(OBJS)
- ar cru libcurl.a $(OBJS)
- ranlib libcurl.a
-
-install:
- $(INSTALL) -c ./libcurl.a /lib/libcurl.a
+++ /dev/null
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
-# Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, 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
-#
-#***************************************************************************
-
-#
-# Adapted for djgpp2 / Watt-32 / DOS
-#
-
-DEPEND_PREREQ = curl_config.h
-VPATH = vtls vauth vquic vssh
-TOPDIR = ..
-
-include ../packages/DOS/common.dj
-include Makefile.inc
-
-CFLAGS += -DBUILDING_LIBCURL
-
-SOURCES = $(sort $(CSOURCES))
-OBJECTS = $(addprefix $(OBJ_DIR)/, $(notdir $(SOURCES:.c=.o)))
-
-CURL_LIB = libcurl.a
-
-all: $(OBJ_DIR) curl_config.h $(CURL_LIB)
-
-$(CURL_LIB): $(OBJECTS)
- ar rs $@ $?
-
-curl_config.h: config-dos.h
- $(COPY) $^ $@
-
-# clean generated files
-#
-genclean:
- - $(DELETE) curl_config.h
-
-# clean object files and subdir
-#
-objclean: genclean
- - $(DELETE) $(OBJ_DIR)$(DS)*.o
- - $(RMDIR) $(OBJ_DIR)
-
-# clean without removing built library
-#
-clean: objclean
- - $(DELETE) depend.dj
-
-# clean everything
-#
-realclean vclean: clean
- - $(DELETE) $(CURL_LIB)
-
--include depend.dj
+++ /dev/null
-Gisle Vanem made curl build fine on DOS (and MinGW) with djgpp, OpenSSL and his
-Watt-32 stack.
-
-'make -f Makefile.dist djgpp' in the root curl dir should build it fine.
-Or enter 'lib' and do a 'make -f Makefile.dj clean all' to first delete
-'lib/curl_config.h' which is possibly from a previous incompatible Windows-build.
-
-Note 1: djgpp 2.04 beta has a sscanf() bug so the URL parsing isn't
- done properly. Use djgpp 2.03 until they fix it.
-
-Note 2: Compile Watt-32 (and OpenSSL) with the same version of djgpp.
- Otherwise things go wrong because things like FS-extensions and
- errnos have been changed between releases.
-
-Note 3: Several 'USE_x' variables in 'common.dj' are on the 'USE_x ?= 0'
- form (conditional variable assignment). So one can build like this:
- c:\curl\lib> make -f makefile.dj USE_OPENSSL=1 USE_ZLIB=1 clean all
+++ /dev/null
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, 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
-#
-###########################################################################
-#
-# Common defines for curl (djgpp/Watt-32)
-#
-# Assumes you've unpacked curl with long-file names
-# I.e use "set LFN=y" before untaring on Win9x/XP.
-# Requires sed, rm and the usual stuff.
-#
-# Define TOPDIR before including this file.
-
-MAKEFILE = Makefile.dj
-OBJ_DIR = djgpp
-
-#
-# Find out if using a Unix-like shell or a DOS command interpreter
-#
-ifneq ($(findstring COMMAND.COM,$(SHELL)),COMMAND.COM)
- ifneq ($(findstring CMD.EXE,$(SHELL)),CMD.EXE)
- ifneq ($(findstring 4DOS.COM,$(SHELL)),4DOS.COM)
- IS_UNIX_SHELL = 1
- endif
- endif
-endif
-
-#
-# Define shell dependent commands and vars
-#
-ifeq ($(IS_UNIX_SHELL),1)
- COPY = cp -f
- DELETE = rm -f
- MKDIR = mkdir
- RMDIR = rm -f -r
- DS = /
-else
- COPY = copy
- DELETE = del
- MKDIR = mkdir
- RMDIR = rmdir
- DS = \$(NOTHING)
-endif
-
-ifeq ($(OS),Windows_NT)
- #
- # Windows hosted djgpp cross compiler. Get it from:
- # https://github.com/andrewwutw/build-djgpp/releases
- #
- DJ_PREFIX ?= c:/some-path/djgpp/bin/i586-pc-msdosdjgpp-
- CC = $(DJ_PREFIX)gcc
-
-else
- #
- # The normal djgpp 'gcc' for MSDOS.
- #
- CC = gcc
-endif
-
-#
-# OpenSSL is available from www.openssl.org and builds okay
-# with djgpp/Watt-32. Set to 0 if you don't need https URLs
-# (reduces curl.exe with approx 700 kB)
-#
-USE_OPENSSL ?= 0
-
-#
-# Use zlib for contents encoding. Needed for 'USE_OPENSSL=1' too.
-#
-USE_ZLIB ?= 0
-
-#
-# Use libidn for international domain names
-#
-USE_IDNA ?= 0
-
-#
-# Use Watt-32 IPv6 stack (only IPv6 name resolution working at the moment)
-#
-USE_IPV6 ?= 0
-
-#
-# Use C-Ares resolver library
-#
-USE_ARES ?= 0
-
-#
-# Enable debug code in libcurl/curl
-#
-USE_DEBUG ?= 0
-
-#
-# Enable memory tracking code in libcurl/curl
-#
-USE_CURLDEBUG ?= 0
-
-#
-# Generate a .map file in 'link_EXE' macro
-#
-MAKE_MAP_FILE ?= 0
-
-default: all
-
-#
-# Root directory for Waterloo tcp/ip etc. Change to suite.
-# WATT_ROOT should be set during Watt-32 install.
-#
-WATT32_ROOT = $(realpath $(WATT_ROOT))
-OPENSSL_ROOT ?= $(TOPDIR)/../crypto/OpenSSL
-ZLIB_ROOT ?= e:/djgpp/contrib/zlib
-LIBIDN_ROOT ?= $(TOPDIR)/../IDN/libidn
-ARES_ROOT ?= $(TOPDIR)/../DNS/c-ares
-
-CFLAGS = -g -O2 -I. -I$(TOPDIR)/include -I$(TOPDIR)/lib \
- -I$(WATT32_ROOT)/inc -Wall -DHAVE_CONFIG_H
-
-ifeq ($(USE_OPENSSL),1)
- CFLAGS += -DUSE_OPENSSL -I$(OPENSSL_ROOT)/include
-
- #
- # Squelch the warnings on deprecated functions.
- #
- CFLAGS += -DOPENSSL_SUPPRESS_DEPRECATED
-
- #
- # Use some of these too?
- #
- # CFLAGS += -DUSE_TLS_SRP=1 \
- # -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES \
- # -DHAVE_SSLV2_CLIENT_METHOD \
- # -DOPENSSL_NO_DEPRECATED
-
- #
- # 'libcomm.a' is normally 'libcommon.a'. But to keep it 8+3 clean, it's
- # shortened to 'libcomm.a'. The official OpenSSL build was recently changed
- # and this "Common" library was added for several of the Crypto Providers.
- #
- OPENSSL_LIBS = $(OPENSSL_ROOT)/lib/libssl.a \
- $(OPENSSL_ROOT)/lib/libcrypt.a \
- $(OPENSSL_ROOT)/lib/libcomm.a
-endif
-
-ifeq ($(USE_ZLIB),1)
- CFLAGS += -DHAVE_LIBZ -I$(ZLIB_ROOT)
-endif
-
-ifeq ($(USE_IPV6),1)
- CFLAGS += -DENABLE_IPV6
-endif
-
-ifeq ($(USE_ARES),1)
- CFLAGS += -DUSE_ARES -I$(ARES_ROOT)/include
-endif
-
-ifeq ($(USE_IDNA),1)
- CFLAGS += -DHAVE_LIBIDN -I$(LIBIDN_ROOT)/lib
-endif
-
-ifeq ($(USE_DEBUG),1)
- CFLAGS += -DDEBUG=1 -DDEBUGBUILD
-endif
-
-ifeq ($(USE_CURLDEBUG),1)
- CFLAGS += -DCURLDEBUG
-endif
-
-$(OBJ_DIR):
- $(MKDIR) $(OBJ_DIR)
-
-$(OBJ_DIR)/%.o: %.c
- $(CC) $(CFLAGS) -o $@ -c $<
- @echo
-
-#
-# Link-EXE macro:
-# $(1): the .exe
-# $(2): the .o-files and libraries
-#
-ifeq ($(MAKE_MAP_FILE),1)
- define link_EXE
- $(CC) -o $(1) $(LDFLAGS) -Wl,--print-map,--sort-common $(2) > $(1:.exe=.map)
- endef
-else
- define link_EXE
- $(CC) $(LDFLAGS) -o $(1) $(2)
- endef
-endif
-
-$(TOPDIR)/docs/curl.1: $(wildcard $(TOPDIR)/docs/cmdline-opts/*.d)
- cd $(TOPDIR)/docs/cmdline-opts; \
- perl gen.pl mainpage > ../$(TOPDIR)/docs/curl.1
-
-DEP_REPLACE = sed -e 's@\(.*\)\.o: @\n$$(OBJ_DIR)\/\1.o: @' \
- -e 's@$(ARES_ROOT)@$$(ARES_ROOT)@g' \
- -e 's@$(OPENSSL_ROOT)@$$(OPENSSL_ROOT)@g' \
- -e 's@$(WATT32_ROOT)@$$(WATT32_ROOT)@g' \
- -e 's@$(ZLIB_ROOT)@$$(ZLIB_ROOT)@g'
-
-#
-# One may have to do 'make -f Makefile.dj clean' first in case
-# a foreign 'curl_config.h' is making trouble.
-#
-depend: $(DEPEND_PREREQ) $(MAKEFILE)
- $(CC) -MM $(CFLAGS) $(CSOURCES) | $(DEP_REPLACE) > depend.dj
# embedded text.
NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
-EXTRA_DIST = mkhelp.pl makefile.dj \
- Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
+EXTRA_DIST = mkhelp.pl \
+ Makefile.mk curl.rc Makefile.inc CMakeLists.txt
# Use absolute directory to disable VPATH
MANPAGE=$(abs_top_builddir)/docs/curl.1
#
#***************************************************************************
-# See usage in lib/Makefile.m32
+# See usage in lib/Makefile.mk
PROOT := ..
+### Common
+
+include $(PROOT)/lib/Makefile.mk
+
+### Local
+
RCFLAGS += -DCURL_EMBED_MANIFEST
CPPFLAGS += -I$(PROOT)/lib
LDFLAGS += -L$(PROOT)/lib
-LIBS += -lcurl
+LIBS := -lcurl $(LIBS)
+
+ifdef WIN32
+ ifneq ($(findstring -dyn,$(CFG)),)
+ DYN := 1
+ endif
+endif
-ifneq ($(findstring -dyn,$(CFG)),)
+ifdef DYN
curl_DEPENDENCIES := $(PROOT)/lib/libcurl$(CURL_DLL_SUFFIX).dll
curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
- DYN := 1
else
curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
- CPPFLAGS += -DCURL_STATICLIB
- LDFLAGS += -static
+ ifdef WIN32
+ CPPFLAGS += -DCURL_STATICLIB
+ LDFLAGS += -static
+ endif
endif
### Sources and targets
# Provides CURL_CFILES, CURLX_CFILES, CURL_RCFILES
include Makefile.inc
-TARGETS := curl.exe
+TARGETS := curl$(BIN_EXT)
-curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
-curl_OBJECTS += $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
-curl_OBJECTS += $(patsubst %.rc,%.res,$(strip $(CURL_RCFILES)))
+CURL_CFILES += $(notdir $(CURLX_CFILES))
+
+curl_OBJECTS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(strip $(CURL_CFILES)))
+ifdef WIN32
+curl_OBJECTS += $(patsubst %.rc,$(OBJ_DIR)/%.res,$(strip $(CURL_RCFILES)))
+endif
+ifdef MAP
+CURL_MAP := curl.map
+CURL_LDFLAGS_BIN += -Wl,-Map,$(CURL_MAP)
+TOVCLEAN := $(CURL_MAP)
+endif
vpath %.c $(PROOT)/lib
TOCLEAN := $(curl_OBJECTS)
+
+### Rules
+
ifneq ($(wildcard tool_hugehelp.c.cvs),)
+PERL ?= perl
+NROFF ?= groff
+
TOCLEAN += tool_hugehelp.c
-endif
-### Local rules
+ifneq ($(shell $(WHICH) $(NROFF)),)
+$(PROOT)/docs/curl.1: $(wildcard $(PROOT)/docs/cmdline-opts/*.d)
+ cd $(PROOT)/docs/cmdline-opts && \
+ $(PERL) gen.pl mainpage $(notdir $^) > ../curl.1
-$(TARGETS): $(curl_OBJECTS) $(curl_DEPENDENCIES)
- $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $(curl_OBJECTS) $(LIBS)
+# Necessary for the generated tools_hugehelp.c
+CPPFLAGS += -DUSE_MANUAL
+ifdef ZLIB
+_MKHELPOPT += -c
+endif
+tool_hugehelp.c: $(PROOT)/docs/curl.1 mkhelp.pl
+ $(NROFF) -man -Tascii $(MANOPT) $< | \
+ $(PERL) mkhelp.pl $(_MKHELPOPT) $< > $@
+else
tool_hugehelp.c:
@echo Creating $@
@$(call COPY, $@.cvs, $@)
+endif
+endif
-### Global script
+$(TARGETS): $(curl_OBJECTS) $(curl_DEPENDENCIES)
+ $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $(curl_OBJECTS) $(LIBS)
-include $(PROOT)/lib/Makefile.m32
+all: $(OBJ_DIR) $(TARGETS)
+++ /dev/null
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, 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
-#
-###########################################################################
-#
-# curl Makefile for AmigaOS ...
-#
-
-# change the follow to where you have the AmiTCP SDK v4.3 includes:
-
-ATCPSDKI= /GG/netinclude
-
-
-CC = m68k-amigaos-gcc
-CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
-LIBS = ../lib/libcurl.a -lssl -lcrypto -lz
-MANPAGE = ../docs/curl.1
-README = ../docs/MANUAL
-MKHELP = ../src/mkhelp.pl
-
-include Makefile.inc
-
-OBJS = $(CURL_CFILES:.c=.o) $(CURLX_CFILES:.c=.o)
-
-all: tool_hugehelp.c $(OBJS)
- $(CC) $(CFLAGS) -o curl $(OBJS) $(LIBS) -Wl,-Map,curl.map,--cref
-
-tool_hugehelp.c: $(README) $(MANPAGE) mkhelp.pl
- rm -f tool_hugehelp.c
- /bin/nroff -man $(MANPAGE) | /bin/perl $(MKHELP) -c $(README) > tool_hugehelp.c
-
-install:
- $(INSTALL) -c curl /c/curl
+++ /dev/null
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
-# Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, 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
-#
-#***************************************************************************
-
-#
-# Adapted for djgpp2 / Watt-32 / DOS
-#
-
-DEPEND_PREREQ = # tool_hugehelp.c
-
-TOPDIR = ..
-
-vpath %.c ../lib
-
-include ../packages/DOS/common.dj
-include Makefile.inc
-
-CSOURCES = $(CURL_CFILES) $(CURLX_CFILES)
-
-ifeq ($(USE_OPENSSL),1)
- EX_LIBS += $(OPENSSL_LIBS)
-endif
-
-ifeq ($(USE_ARES),1)
- EX_LIBS += $(ARES_ROOT)/libcares.a
-endif
-
-ifeq ($(USE_ZLIB),1)
- EX_LIBS += $(ZLIB_ROOT)/libz.a
- CFLAGS += -DUSE_MANUAL
-endif
-
-ifeq ($(USE_IDNA),1)
- EX_LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
-endif
-
-EX_LIBS += $(WATT32_ROOT)/lib/libwatt.a
-
-PROGRAM = curl.exe
-OBJECTS = $(addprefix $(OBJ_DIR)/, $(notdir $(CSOURCES:.c=.o)))
-
-all: $(OBJ_DIR) $(PROGRAM)
- @echo Welcome to curl
-
-$(PROGRAM): $(OBJECTS) ../lib/libcurl.a
- $(CC) -o $@ $^ $(LDFLAGS) $(EX_LIBS)
-
-#
-# groff 1.18+ requires "-P -c"
-# If 'USE_ZLIB = 1', create a compressed help-file.
-#
-ifeq ($(USE_ZLIB),1)
- COMPRESS_OPT = -c
-endif
-
-tool_hugehelp.c: ../docs/curl.1 mkhelp.pl Makefile.dj
- groff -Tascii -man $< | perl -w mkhelp.pl $(COMPRESS_OPT) $< > $@
-
-# clean generated files
-#
-genclean:
- - $(DELETE) tool_hugehelp.c
-
-# clean object files and subdir
-#
-objclean: genclean
- - $(DELETE) $(OBJ_DIR)$(DS)*.o
- - $(RMDIR) $(OBJ_DIR)
-
-# clean without removing built program
-#
-clean: objclean
- - $(DELETE) depend.dj
-
-# clean everything
-#
-realclean vclean: clean
- - $(DELETE) $(PROGRAM)
-
--include depend.dj