1# 2# CPL (Common Portability Library) makefile for MSVC 3# 4 5OBJ = cpl_conv.obj \ 6 cpl_error.obj \ 7 cpl_string.obj \ 8 cplstring.obj \ 9 cplstringlist.obj \ 10 cpl_strtod.obj \ 11 cpl_vsisimple.obj \ 12 cplgetsymbol.obj \ 13 cpl_path.obj \ 14 cpl_csv.obj \ 15 cpl_findfile.obj \ 16 cpl_vsil_win32.obj \ 17 cpl_minixml.obj \ 18 cpl_multiproc.obj \ 19 cpl_list.obj \ 20 cpl_getexecpath.obj \ 21 cpl_vsil.obj \ 22 cpl_vsi_mem.obj \ 23 cpl_http.obj \ 24 cpl_hash_set.obj \ 25 cplkeywordparser.obj \ 26 cpl_recode.obj \ 27 cpl_recode_iconv.obj \ 28 cpl_recode_stub.obj \ 29 cpl_quad_tree.obj \ 30 cpl_vsil_gzip.obj \ 31 cpl_minizip_ioapi.obj \ 32 cpl_minizip_unzip.obj \ 33 cpl_minizip_zip.obj \ 34 cpl_vsil_subfile.obj \ 35 cpl_atomic_ops.obj \ 36 cpl_time.obj \ 37 cpl_vsil_stdout.obj \ 38 cpl_vsil_sparsefile.obj \ 39 cpl_vsil_abstract_archive.obj \ 40 cpl_vsil_tar.obj \ 41 cpl_vsil_curl.obj \ 42 cpl_vsil_s3.obj \ 43 cpl_vsil_gs.obj \ 44 cpl_vsil_az.obj \ 45 cpl_vsil_adls.obj \ 46 cpl_vsil_oss.obj \ 47 cpl_vsil_plugin.obj \ 48 cpl_vsil_swift.obj \ 49 cpl_vsil_webhdfs.obj \ 50 cpl_vsil_hdfs.obj \ 51 cpl_vsil_curl_streaming.obj \ 52 cpl_vsil_stdin.obj \ 53 cpl_vsil_buffered_reader.obj \ 54 cpl_vsil_cache.obj \ 55 cpl_base64.obj \ 56 cpl_xml_validate.obj \ 57 cpl_spawn.obj \ 58 cpl_google_oauth2.obj \ 59 cpl_progress.obj \ 60 cpl_virtualmem.obj \ 61 cpl_worker_thread_pool.obj \ 62 cpl_vsil_crypt.obj \ 63 cpl_sha1.obj \ 64 cpl_sha256.obj \ 65 cpl_aws.obj \ 66 cpl_aws_win32.obj \ 67 cpl_vsi_error.obj \ 68 cpl_cpu_features.obj \ 69 cpl_google_cloud.obj \ 70 cpl_azure.obj \ 71 cpl_alibaba_oss.obj \ 72 cpl_json_streaming_parser.obj \ 73 cpl_json_streaming_writer.obj \ 74 cpl_json.obj \ 75 cpl_md5.obj \ 76 cpl_swift.obj \ 77 cpl_vax.obj \ 78 cpl_vsil_uploadonclose.obj \ 79 $(ODBC_OBJ) 80 81LIB = cpl.lib 82 83GDAL_ROOT = .. 84 85!INCLUDE ..\nmake.opt 86 87!IFDEF ZLIB_EXTERNAL_LIB 88EXTRAFLAGS = $(ZLIB_INC) 89!ELSE 90EXTRAFLAGS = -I..\frmts\zlib 91!ENDIF 92 93EXTRAFLAGS = $(EXTRAFLAGS) -DHAVE_LIBZ -I..\ogr\ogrsf_frmts\geojson\libjson 94 95!IFDEF LIBICONV_INCLUDE 96EXTRAFLAGS = $(EXTRAFLAGS) -DHAVE_ICONV $(LIBICONV_CFLAGS) $(LIBICONV_INCLUDE) 97!ENDIF 98 99!IFDEF CURL_INC 100EXTRAFLAGS = $(EXTRAFLAGS) -DHAVE_CURL $(CURL_CFLAGS) $(CURL_INC) 101!ENDIF 102 103!IFDEF LIBXML2_INC 104EXTRAFLAGS = $(EXTRAFLAGS) -DHAVE_LIBXML2 $(LIBXML2_INC) 105!ENDIF 106 107!IFDEF CRYPTOPP_INC 108EXTRAFLAGS = $(EXTRAFLAGS) -DHAVE_CRYPTOPP $(CRYPTOPP_INC) 109!ENDIF 110 111!IFDEF USE_ONLY_CRYPTODLL_ALG 112EXTRAFLAGS = $(EXTRAFLAGS) -DUSE_ONLY_CRYPTODLL_ALG 113!ENDIF 114 115!IFDEF OPENSSL_INC 116EXTRAFLAGS = $(EXTRAFLAGS) -DHAVE_OPENSSL_CRYPTO $(OPENSSL_INC) 117!ENDIF 118 119!IFDEF LIBDEFLATE_CFLAGS 120EXTRAFLAGS = $(EXTRAFLAGS) $(LIBDEFLATE_CFLAGS) -DHAVE_LIBDEFLATE 121!ENDIF 122 123!IFDEF ODBC_SUPPORTED 124ODBC_OBJ = cpl_odbc.obj 125!ENDIF 126 127default: prev_dllbuild cpl_config.h $(LIB) 128 129$(LIB): $(OBJ) 130 lib /out:cpl.lib *.obj 131 132clean: 133 -del *.obj *.lib cpl_config.h dllbuild.prev 134 135# This "mechanism" updates a temporary dllbuild.prev file with the $(DLLBUILD) setting, but only 136# when dllbuild.prev doesn't exist or doesn't match the current $(DLLBUILD) setting. 137# 138# The upside to this is that repeated builds with the same setting won't cause cpl_config.h to be 139# regenerated, which should prevent unnecessary recompilation. 140# 141# It has to be done in a temporary/inline batch script because normal NMAKE commands apparently 142# don't have extensions enabled which apparently prevents setting a variable from file contents. 143prev_dllbuild: 144 call <<prev_dllbuild.bat 145@SETLOCAL ENABLEEXTENSIONS 146IF NOT EXIST dllbuild.prev (ECHO $(DLLBUILD))> dllbuild.prev 147SET /P PREV_DLLBUILD=<dllbuild.prev 148IF NOT "%PREV_DLLBUILD%"=="$(DLLBUILD)" (ECHO $(DLLBUILD))> dllbuild.prev 149<< 150 151cpl_config.h: dllbuild.prev \ 152 cpl_config.h.vc.begin \ 153 cpl_config.h.vc.common \ 154 cpl_config.h.vc.no_dll \ 155 cpl_config.h.vc.end 156 type cpl_config.h.vc.begin > cpl_config.h 157 type cpl_config.h.vc.common >> cpl_config.h 158 IF NOT "$(DLLBUILD)"=="1" \ 159 type cpl_config.h.vc.no_dll >> cpl_config.h 160 type cpl_config.h.vc.end >> cpl_config.h 161