diff options
author | Viktor Szakats <commit@vsz.me> | 2022-11-22 08:25:05 +0000 |
---|---|---|
committer | Viktor Szakats <commit@vsz.me> | 2022-11-22 08:28:41 +0000 |
commit | a8861b6ccdd7ca35b6115588a578e36d765c9e38 (patch) | |
tree | e61fd7c69aa00984a4cc1a2da584272e793d1661 /packages | |
parent | 4a8b4a1b6635f1dc811b65a9355b89f0277da1f2 (diff) | |
download | curl-a8861b6ccdd7ca35b6115588a578e36d765c9e38.tar.gz |
Makefile.mk: portable Makefile.m32
Update bare GNU Make `Makefile.m32` to:
- Move objects into a subdirectory.
- Add support for MS-DOS. Tested with DJGPP.
- Add support for Watt-32 (on MS-DOS).
- Add support for AmigaOS.
- Rename `Makefile.m32` to `Makefile.mk`
- Replace `ARCH` with `TRIPLET`.
- Build `tool_hugehelp.c` proper (when tools are available).
- Drop MS-DOS compatibility macro `USE_ZLIB` (replaced by `HAVE_LIBZ`)
- Add support for `ZLIB_LIBS` to override `-lz`.
- Omit object files when building examples.
- Default `CC` to `gcc` once again, for convenience. (Caveat: compiler
name `cc` cannot be set now.)
- Set `-DCURL_NO_OLDIES` for examples, like autotools does.
- Delete `makefile.dj` files. Notice the configuration details and
defaults are not retained with the new method.
- Delete `makefile.amiga` files. A successful build needs a few custom
options. We're also not retaining all build details from the existing
Amiga make files.
- Rename `Makefile.m32` to `Makefile.mk` to reflect that they are not
Windows/MinGW32-specific anymore.
- Add support for new `CFG` options: `-map`, `-debug`, `-trackmem`
- Set `-DNDEBUG` by default.
- Allow using `-DOS=...` in all `lib/config-*.h` headers, syncing this
with `config-win32.h`.
- Look for zlib parts in `ZLIB_PATH/include` and `ZLIB_PATH/lib`
instead of bare `ZLIB_PATH`.
Note that existing build configurations for MS-DOS and AmigaOS likely
become incompatible with this change.
Example AmigaOS configuration:
```
export CROSSPREFIX=/opt/amiga/bin/m68k-amigaos-
export CC=gcc
export CPPFLAGS='-DHAVE_PROTO_BSDSOCKET_H'
export CFLAGS='-mcrt=clib2'
export LDFLAGS="${CFLAGS}"
export LIBS='-lnet -lm'
make -C lib -f Makefile.mk
make -C src -f Makefile.mk
```
Example MS-DOS configuration:
```
export CROSSPREFIX=/opt/djgpp/bin/i586-pc-msdosdjgpp-
export WATT_PATH=/opt/djgpp/net/watt
export ZLIB_PATH=/opt/djgpp
export OPENSSL_PATH=/opt/djgpp
export OPENSSL_LIBS='-lssl -lcrypt'
export CFG=-zlib-ssl
make -C lib -f Makefile.mk
make -C src -f Makefile.mk
```
Closes #9764
Diffstat (limited to 'packages')
-rw-r--r-- | packages/DOS/README | 17 | ||||
-rw-r--r-- | packages/DOS/common.dj | 223 |
2 files changed, 0 insertions, 240 deletions
diff --git a/packages/DOS/README b/packages/DOS/README deleted file mode 100644 index 8336efa41..000000000 --- a/packages/DOS/README +++ /dev/null @@ -1,17 +0,0 @@ -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 diff --git a/packages/DOS/common.dj b/packages/DOS/common.dj deleted file mode 100644 index b181e8215..000000000 --- a/packages/DOS/common.dj +++ /dev/null @@ -1,223 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# 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 |