Home | History | Annotate | Download | only in src
      1 #***************************************************************************
      2 #                                  _   _ ____  _
      3 #  Project                     ___| | | |  _ \| |
      4 #                             / __| | | | |_) | |
      5 #                            | (__| |_| |  _ <| |___
      6 #                             \___|\___/|_| \_\_____|
      7 #
      8 # Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel (a] haxx.se>, et al.
      9 #
     10 # This software is licensed as described in the file COPYING, which
     11 # you should have received as part of this distribution. The terms
     12 # are also available at https://curl.haxx.se/docs/copyright.html.
     13 #
     14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
     15 # copies of the Software, and permit persons to whom the Software is
     16 # furnished to do so, under the terms of the COPYING file.
     17 #
     18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     19 # KIND, either express or implied.
     20 #
     21 ###########################################################################
     22 AUTOMAKE_OPTIONS = foreign nostdinc
     23 
     24 # remove targets if the command fails
     25 .DELETE_ON_ERROR:
     26 
     27 # Specify our include paths here, and do it relative to $(top_srcdir) and
     28 # $(top_builddir), to ensure that these paths which belong to the library
     29 # being currently built and tested are searched before the library which
     30 # might possibly already be installed in the system.
     31 #
     32 # $(top_srcdir)/include is for libcurl's external include files
     33 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
     34 # $(top_builddir)/src is for curl's generated src/curl_config.h file
     35 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
     36 # $(top_srcdir)/src is for curl's src/tool_setup.h and "curl-private" files
     37 
     38 AM_CPPFLAGS = -I$(top_srcdir)/include        \
     39               -I$(top_builddir)/lib          \
     40               -I$(top_builddir)/src          \
     41               -I$(top_srcdir)/lib            \
     42               -I$(top_srcdir)/src
     43 
     44 bin_PROGRAMS = curl
     45 
     46 SUBDIRS = ../docs
     47 
     48 if USE_CPPFLAG_CURL_STATICLIB
     49 AM_CPPFLAGS += -DCURL_STATICLIB
     50 endif
     51 
     52 include Makefile.inc
     53 
     54 # CURL_FILES comes from Makefile.inc
     55 curl_SOURCES = $(CURL_FILES)
     56 
     57 # This might hold -Werror
     58 CFLAGS += @CURL_CFLAG_EXTRAS@
     59 
     60 # Prevent LIBS from being used for all link targets
     61 LIBS = $(BLANK_AT_MAKETIME)
     62 
     63 if USE_EXPLICIT_LIB_DEPS
     64 curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
     65 else
     66 curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
     67 endif
     68 
     69 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
     70 curl_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
     71 
     72 # if unit tests are enabled, build a static library to link them with
     73 if BUILD_UNITTESTS
     74 noinst_LTLIBRARIES = libcurltool.la
     75 libcurltool_la_CPPFLAGS = $(LIBMETALINK_CPPFLAGS) $(AM_CPPFLAGS) \
     76                           -DCURL_STATICLIB -DUNITTESTS
     77 libcurltool_la_CFLAGS =
     78 libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
     79 libcurltool_la_SOURCES = $(curl_SOURCES)
     80 endif
     81 
     82 CLEANFILES = tool_hugehelp.c
     83 # Use the C locale to ensure that only ASCII characters appear in the
     84 # embedded text.
     85 NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
     86 
     87 EXTRA_DIST = mkhelp.pl makefile.dj                                     \
     88  Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT          \
     89  macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
     90  curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt
     91 
     92 # Use absolute directory to disable VPATH
     93 MANPAGE=$(abs_top_builddir)/docs/curl.1
     94 MKHELP=$(top_srcdir)/src/mkhelp.pl
     95 HUGE=tool_hugehelp.c
     96 
     97 HUGECMD = $(HUGEIT_$(V))
     98 HUGEIT_0 = @echo "  HUGE    " $@;
     99 HUGEIT_1 =
    100 HUGEIT_ = $(HUGEIT_0)
    101 
    102 CHECKSRC = $(CS_$(V))
    103 CS_0 = @echo "  RUN     " $@;
    104 CS_1 =
    105 CS_ = $(CS_0)
    106 
    107 if USE_MANUAL
    108 # Here are the stuff to create a built-in manual
    109 
    110 $(MANPAGE):
    111 	cd $(top_builddir)/docs && $(MAKE)
    112 
    113 if HAVE_LIBZ
    114 # This generates the tool_hugehelp.c file in both uncompressed and
    115 # compressed formats.
    116 $(HUGE): $(MANPAGE) $(MKHELP)
    117 	$(HUGECMD) (echo '#include "tool_setup.h"' > $(HUGE);   \
    118 	echo '#ifndef HAVE_LIBZ' >> $(HUGE);                    \
    119 	$(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE);     \
    120 	echo '#else' >> $(HUGE);                                \
    121 	$(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) -c >> $(HUGE);  \
    122 	echo '#endif /* HAVE_LIBZ */' >> $(HUGE) )
    123 else # HAVE_LIBZ
    124 # This generates the tool_hugehelp.c file uncompressed only
    125 $(HUGE): $(MANPAGE) $(MKHELP)
    126 	$(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE):    \
    127 	$(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE) )
    128 endif
    129 
    130 else # USE_MANUAL
    131 # built-in manual has been disabled, make a blank file
    132 $(HUGE):
    133 	$(HUGECMD)(echo "/* built-in manual is disabled, blank function */" > $(HUGE); \
    134 	echo '#include "tool_hugehelp.h"' >> $(HUGE); \
    135 	echo "void hugehelp(void) {}" >>$(HUGE) )
    136 endif
    137 
    138 # ignore tool_hugehelp.c since it is generated source code and it plays
    139 # by slightly different rules!
    140 checksrc:
    141 	$(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir)        \
    142 	-W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
    143 
    144 if CURLDEBUG
    145 # for debug builds, we scan the sources on all regular make invokes
    146 all-local: checksrc
    147 endif
    148 
    149 # disable the tests that are mostly causing false positives
    150 TIDYFLAGS=-checks=-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-optin.performance.Padding,-clang-analyzer-valist.Uninitialized,-clang-analyzer-core.NonNullParamChecker,-clang-analyzer-core.NullDereference
    151 
    152 TIDY:=clang-tidy
    153 
    154 tidy:
    155 	$(TIDY) $(CURL_CFILES) $(TIDYFLAGS) -- $(curl_CPPFLAGS) $(CPPFLAGS) -DHAVE_CONFIG_H
    156