1*6236dae4SAndroid Build Coastguard Worker#*************************************************************************** 2*6236dae4SAndroid Build Coastguard Worker# _ _ ____ _ 3*6236dae4SAndroid Build Coastguard Worker# Project ___| | | | _ \| | 4*6236dae4SAndroid Build Coastguard Worker# / __| | | | |_) | | 5*6236dae4SAndroid Build Coastguard Worker# | (__| |_| | _ <| |___ 6*6236dae4SAndroid Build Coastguard Worker# \___|\___/|_| \_\_____| 7*6236dae4SAndroid Build Coastguard Worker# 8*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al. 9*6236dae4SAndroid Build Coastguard Worker# 10*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which 11*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms 12*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html. 13*6236dae4SAndroid Build Coastguard Worker# 14*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell 15*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is 16*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file. 17*6236dae4SAndroid Build Coastguard Worker# 18*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied. 20*6236dae4SAndroid Build Coastguard Worker# 21*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl 22*6236dae4SAndroid Build Coastguard Worker# 23*6236dae4SAndroid Build Coastguard Worker########################################################################### 24*6236dae4SAndroid Build Coastguard WorkerAUTOMAKE_OPTIONS = foreign nostdinc 25*6236dae4SAndroid Build Coastguard Worker 26*6236dae4SAndroid Build Coastguard WorkerCMAKE_DIST = CMakeLists.txt curl_config.h.cmake 27*6236dae4SAndroid Build Coastguard Worker 28*6236dae4SAndroid Build Coastguard WorkerCHECKSRC_DIST = .checksrc vauth/.checksrc vquic/.checksrc vssh/.checksrc \ 29*6236dae4SAndroid Build Coastguard Worker vtls/.checksrc 30*6236dae4SAndroid Build Coastguard Worker 31*6236dae4SAndroid Build Coastguard WorkerEXTRA_DIST = Makefile.mk config-win32.h config-win32ce.h config-plan9.h \ 32*6236dae4SAndroid Build Coastguard Worker config-riscos.h config-mac.h curl_config.h.in config-dos.h libcurl.rc \ 33*6236dae4SAndroid Build Coastguard Worker config-amigaos.h config-win32ce.h config-os400.h setup-os400.h \ 34*6236dae4SAndroid Build Coastguard Worker $(CMAKE_DIST) setup-win32.h Makefile.soname optiontable.pl libcurl.def \ 35*6236dae4SAndroid Build Coastguard Worker $(CHECKSRC_DIST) 36*6236dae4SAndroid Build Coastguard Worker 37*6236dae4SAndroid Build Coastguard Workerlib_LTLIBRARIES = libcurl.la 38*6236dae4SAndroid Build Coastguard Worker 39*6236dae4SAndroid Build Coastguard Workerif BUILD_UNITTESTS 40*6236dae4SAndroid Build Coastguard Workernoinst_LTLIBRARIES = libcurlu.la 41*6236dae4SAndroid Build Coastguard Workerelse 42*6236dae4SAndroid Build Coastguard Workernoinst_LTLIBRARIES = 43*6236dae4SAndroid Build Coastguard Workerendif 44*6236dae4SAndroid Build Coastguard Worker 45*6236dae4SAndroid Build Coastguard Worker# This might hold -Werror 46*6236dae4SAndroid Build Coastguard WorkerCFLAGS += @CURL_CFLAG_EXTRAS@ 47*6236dae4SAndroid Build Coastguard Worker 48*6236dae4SAndroid Build Coastguard Worker# Specify our include paths here, and do it relative to $(top_srcdir) and 49*6236dae4SAndroid Build Coastguard Worker# $(top_builddir), to ensure that these paths which belong to the library 50*6236dae4SAndroid Build Coastguard Worker# being currently built and tested are searched before the library which 51*6236dae4SAndroid Build Coastguard Worker# might possibly already be installed in the system. 52*6236dae4SAndroid Build Coastguard Worker# 53*6236dae4SAndroid Build Coastguard Worker# $(top_srcdir)/include is for libcurl's external include files 54*6236dae4SAndroid Build Coastguard Worker# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file 55*6236dae4SAndroid Build Coastguard Worker# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "private" files 56*6236dae4SAndroid Build Coastguard Worker 57*6236dae4SAndroid Build Coastguard WorkerAM_CPPFLAGS = -I$(top_srcdir)/include \ 58*6236dae4SAndroid Build Coastguard Worker -I$(top_builddir)/lib \ 59*6236dae4SAndroid Build Coastguard Worker -I$(top_srcdir)/lib 60*6236dae4SAndroid Build Coastguard Worker 61*6236dae4SAndroid Build Coastguard Worker# Prevent LIBS from being used for all link targets 62*6236dae4SAndroid Build Coastguard WorkerLIBS = $(BLANK_AT_MAKETIME) 63*6236dae4SAndroid Build Coastguard Worker 64*6236dae4SAndroid Build Coastguard Workerinclude Makefile.soname 65*6236dae4SAndroid Build Coastguard Worker 66*6236dae4SAndroid Build Coastguard WorkerAM_CPPFLAGS += -DBUILDING_LIBCURL 67*6236dae4SAndroid Build Coastguard WorkerAM_LDFLAGS = 68*6236dae4SAndroid Build Coastguard WorkerAM_CFLAGS = 69*6236dae4SAndroid Build Coastguard Worker 70*6236dae4SAndroid Build Coastguard Worker# Makefile.inc provides the CSOURCES and HHEADERS defines 71*6236dae4SAndroid Build Coastguard Workerinclude Makefile.inc 72*6236dae4SAndroid Build Coastguard Worker 73*6236dae4SAndroid Build Coastguard Workerif USE_UNITY 74*6236dae4SAndroid Build Coastguard Worker# Keep these separate to avoid duplicate definitions when linking libtests 75*6236dae4SAndroid Build Coastguard Worker# in static mode. 76*6236dae4SAndroid Build Coastguard Workercurl_EXCLUDE = curl_threads.c timediff.c warnless.c 77*6236dae4SAndroid Build Coastguard Workerif DEBUGBUILD 78*6236dae4SAndroid Build Coastguard Worker# We must compile these sources separately to avoid memdebug.h redefinitions 79*6236dae4SAndroid Build Coastguard Worker# applying to them. 80*6236dae4SAndroid Build Coastguard Workercurl_EXCLUDE += memdebug.c curl_multibyte.c 81*6236dae4SAndroid Build Coastguard Workerendif 82*6236dae4SAndroid Build Coastguard Workerlibcurl_unity.c: $(top_srcdir)/scripts/mk-unity.pl $(CSOURCES) 83*6236dae4SAndroid Build Coastguard Worker @PERL@ $(top_srcdir)/scripts/mk-unity.pl $(srcdir) $(CSOURCES) --exclude $(curl_EXCLUDE) > libcurl_unity.c 84*6236dae4SAndroid Build Coastguard Worker 85*6236dae4SAndroid Build Coastguard Workernodist_libcurl_la_SOURCES = libcurl_unity.c 86*6236dae4SAndroid Build Coastguard Workerlibcurl_la_SOURCES = $(curl_EXCLUDE) 87*6236dae4SAndroid Build Coastguard Workernodist_libcurlu_la_SOURCES = libcurl_unity.c 88*6236dae4SAndroid Build Coastguard Workerlibcurlu_la_SOURCES = $(curl_EXCLUDE) 89*6236dae4SAndroid Build Coastguard WorkerCLEANFILES = libcurl_unity.c 90*6236dae4SAndroid Build Coastguard Workerelse 91*6236dae4SAndroid Build Coastguard Workerlibcurl_la_SOURCES = $(CSOURCES) $(HHEADERS) 92*6236dae4SAndroid Build Coastguard Workerlibcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS) 93*6236dae4SAndroid Build Coastguard Workerendif 94*6236dae4SAndroid Build Coastguard Worker 95*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CPPFLAGS_EXTRA = 96*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS_EXTRA = 97*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CFLAGS_EXTRA = 98*6236dae4SAndroid Build Coastguard Worker 99*6236dae4SAndroid Build Coastguard Workerif CURL_LT_SHLIB_USE_VERSION_INFO 100*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS_EXTRA += $(VERSIONINFO) 101*6236dae4SAndroid Build Coastguard Workerendif 102*6236dae4SAndroid Build Coastguard Worker 103*6236dae4SAndroid Build Coastguard Workerif CURL_LT_SHLIB_USE_NO_UNDEFINED 104*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS_EXTRA += -no-undefined 105*6236dae4SAndroid Build Coastguard Workerendif 106*6236dae4SAndroid Build Coastguard Worker 107*6236dae4SAndroid Build Coastguard Workerif CURL_LT_SHLIB_USE_MIMPURE_TEXT 108*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS_EXTRA += -mimpure-text 109*6236dae4SAndroid Build Coastguard Workerendif 110*6236dae4SAndroid Build Coastguard Worker 111*6236dae4SAndroid Build Coastguard Workerif CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS 112*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS_EXTRA += -Wl,--version-script=libcurl.vers 113*6236dae4SAndroid Build Coastguard Workerelse 114*6236dae4SAndroid Build Coastguard Worker# if symbol-hiding is enabled, hide them! 115*6236dae4SAndroid Build Coastguard Workerif DOING_CURL_SYMBOL_HIDING 116*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS_EXTRA += -export-symbols-regex '^curl_.*' 117*6236dae4SAndroid Build Coastguard Workerendif 118*6236dae4SAndroid Build Coastguard Workerendif 119*6236dae4SAndroid Build Coastguard Worker 120*6236dae4SAndroid Build Coastguard Workerif USE_CPPFLAG_CURL_STATICLIB 121*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CPPFLAGS_EXTRA += -DCURL_STATICLIB 122*6236dae4SAndroid Build Coastguard Workerelse 123*6236dae4SAndroid Build Coastguard Workerif HAVE_WINDRES 124*6236dae4SAndroid Build Coastguard Workerlibcurl_la_SOURCES += $(LIB_RCFILES) 125*6236dae4SAndroid Build Coastguard Worker$(LIB_RCFILES): $(top_srcdir)/include/curl/curlver.h 126*6236dae4SAndroid Build Coastguard Workerendif 127*6236dae4SAndroid Build Coastguard Workerendif 128*6236dae4SAndroid Build Coastguard Worker 129*6236dae4SAndroid Build Coastguard Workerif DOING_CURL_SYMBOL_HIDING 130*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CPPFLAGS_EXTRA += -DCURL_HIDDEN_SYMBOLS 131*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CFLAGS_EXTRA += $(CFLAG_CURL_SYMBOL_HIDING) 132*6236dae4SAndroid Build Coastguard Workerendif 133*6236dae4SAndroid Build Coastguard Worker 134*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA) 135*6236dae4SAndroid Build Coastguard Workerlibcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(CURL_LDFLAGS_LIB) $(LIBCURL_PC_LIBS_PRIVATE) 136*6236dae4SAndroid Build Coastguard Workerlibcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA) 137*6236dae4SAndroid Build Coastguard Worker 138*6236dae4SAndroid Build Coastguard Workerlibcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS 139*6236dae4SAndroid Build Coastguard Workerlibcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_PC_LIBS_PRIVATE) 140*6236dae4SAndroid Build Coastguard Workerlibcurlu_la_CFLAGS = $(AM_CFLAGS) 141*6236dae4SAndroid Build Coastguard Worker 142*6236dae4SAndroid Build Coastguard WorkerCHECKSRC = $(CS_$(V)) 143*6236dae4SAndroid Build Coastguard WorkerCS_0 = @echo " RUN " $@; 144*6236dae4SAndroid Build Coastguard WorkerCS_1 = 145*6236dae4SAndroid Build Coastguard WorkerCS_ = $(CS_0) 146*6236dae4SAndroid Build Coastguard Worker 147*6236dae4SAndroid Build Coastguard Workerchecksrc: 148*6236dae4SAndroid Build Coastguard Worker $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \ 149*6236dae4SAndroid Build Coastguard Worker -W$(srcdir)/curl_config.h $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] \ 150*6236dae4SAndroid Build Coastguard Worker $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch]) 151*6236dae4SAndroid Build Coastguard Worker 152*6236dae4SAndroid Build Coastguard Workerif DEBUGBUILD 153*6236dae4SAndroid Build Coastguard Worker# for debug builds, we scan the sources on all regular make invokes 154*6236dae4SAndroid Build Coastguard Workerall-local: checksrc 155*6236dae4SAndroid Build Coastguard Workerendif 156*6236dae4SAndroid Build Coastguard Worker 157*6236dae4SAndroid Build Coastguard Worker# disable the tests that are mostly causing false positives 158*6236dae4SAndroid Build Coastguard WorkerTIDYFLAGS=-checks=-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-optin.performance.Padding,-clang-analyzer-valist.Uninitialized,-clang-analyzer-core.NonNullParamChecker,-clang-analyzer-core.NullDereference -quiet 159*6236dae4SAndroid Build Coastguard Worker 160*6236dae4SAndroid Build Coastguard WorkerTIDY:=clang-tidy 161*6236dae4SAndroid Build Coastguard Worker 162*6236dae4SAndroid Build Coastguard Workertidy: 163*6236dae4SAndroid Build Coastguard Worker $(TIDY) $(CSOURCES) $(TIDYFLAGS) -- $(AM_CPPFLAGS) $(CPPFLAGS) -DHAVE_CONFIG_H 164*6236dae4SAndroid Build Coastguard Worker 165*6236dae4SAndroid Build Coastguard Workeroptiontable: 166*6236dae4SAndroid Build Coastguard Worker perl optiontable.pl < $(top_srcdir)/include/curl/curl.h > easyoptions.c 167*6236dae4SAndroid Build Coastguard Worker 168*6236dae4SAndroid Build Coastguard Workerif HAVE_WINDRES 169*6236dae4SAndroid Build Coastguard Worker.rc.lo: 170*6236dae4SAndroid Build Coastguard Worker $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include $(RCFLAGS) -i $< -o $@ 171*6236dae4SAndroid Build Coastguard Workerendif 172