summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorViktor Szakats <commit@vsz.me>2022-11-22 08:25:05 +0000
committerViktor Szakats <commit@vsz.me>2022-11-22 08:28:41 +0000
commita8861b6ccdd7ca35b6115588a578e36d765c9e38 (patch)
treee61fd7c69aa00984a4cc1a2da584272e793d1661 /src
parent4a8b4a1b6635f1dc811b65a9355b89f0277da1f2 (diff)
downloadcurl-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.am4
-rw-r--r--src/Makefile.mk (renamed from src/Makefile.m32)71
-rw-r--r--src/makefile.amiga52
-rw-r--r--src/makefile.dj101
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