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 /src | |
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 'src')
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/Makefile.mk (renamed from src/Makefile.m32) | 71 | ||||
-rw-r--r-- | src/makefile.amiga | 52 | ||||
-rw-r--r-- | src/makefile.dj | 101 |
4 files changed, 57 insertions, 171 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index d746d4676..0db01575c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -87,8 +87,8 @@ CLEANFILES = tool_hugehelp.c # 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 diff --git a/src/Makefile.m32 b/src/Makefile.mk index 096e09399..31e4d22a2 100644 --- a/src/Makefile.m32 +++ b/src/Makefile.mk @@ -22,23 +22,36 @@ # #*************************************************************************** -# 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 @@ -46,27 +59,53 @@ endif # 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) diff --git a/src/makefile.amiga b/src/makefile.amiga deleted file mode 100644 index 9aac7a0fb..000000000 --- a/src/makefile.amiga +++ /dev/null @@ -1,52 +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 -# -########################################################################### -# -# 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 diff --git a/src/makefile.dj b/src/makefile.dj deleted file mode 100644 index 84c127b07..000000000 --- a/src/makefile.dj +++ /dev/null @@ -1,101 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# 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 |