This is an automated email from the ASF dual-hosted git repository. rainerjung pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat-connectors.git
commit 1be42d3dea7b6aeb0a472e89c0337566186e6485 Author: Rainer Jung <[email protected]> AuthorDate: Thu Jun 25 02:22:32 2026 +0200 Optimize nmake makefiles - pull up more setting to NMAKEMakefile.inc - move NMAKEMakefile.inc to common to prepare reusing it for mod_jk build on Windows --- native/common/NMAKEmakefile.inc | 333 ++++++++++++++++++++++++++++++++++++++++ native/iis/Makefile.vc | 35 +---- native/iis/pcre/Makefile.vc | 8 +- native/iis/pcre2/Makefile.vc | 8 +- 4 files changed, 338 insertions(+), 46 deletions(-) diff --git a/native/common/NMAKEmakefile.inc b/native/common/NMAKEmakefile.inc new file mode 100644 index 000000000..9d3bdcd72 --- /dev/null +++ b/native/common/NMAKEmakefile.inc @@ -0,0 +1,333 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# @author Mladen Turk +# +# +# ==================================================================== +# +# Makefile.inc Tomcat Native makefile definitions. +# This file defines CPU architecture and basic compiler +# and linker parameters. +# Common params: +# CPU Compile for specified CPU. Supported CPU's are: +# X86 (Common x86 architecture) +# X64 (AMD64/EMT64 architecture) +# If not specified it will default to the +# PROCESSOR_ARCHITECTURE environment variable +# or to the X64 if not specified. +# WINVER Compile for specified Windows version +# WIN10 for Windows 10 and up (default) +# Windows 11 uses the same WIN10 WINVER. +# Deprecated targets (may not even compile): +# WIN81 for Windows 8.1 and up +# WIN8 for Windows 8 and up +# WIN7 for Windows 7 and up +# BUILD Build version +# RETAIL or RELEASE (default) +# DEBUG +# TARGET Build application target +# EXE Console executable (default) +# GUI Windows GUI executable +# DLL Dynamic Link Library +# LIB Static library +# UNICODE Build unicode version +# If definded and not empty -D_UNICODE is added +# to CFLAGS; -D_MBCS is added otherwise +# Environment variables used: +# EXTRA_CFLAGS Added to the common CFLAGS +# EXTRA_CXXFLAGS Added to the common CXXFLAGS +# EXTRA_LIBS Added to the common LIBS +# EXTRA_LFLAGS Added to the common LFLAGS +# EXTRA_RCFLAGS Added to the common RCFLAGS +# +# Compiler tools environment variables: +# CC C compiler (defaults to cl.exe) +# CXX C++ compiler (defaults to $CC -TP) +# CPP C preprocessor (defaults to $CC -EP) +# LINK Linker (defaults to link.exe) +# RC Resource compiler (defaults to rc.exe) +# MT Manifest toolkit (defaults to mt.exe) +# ML Assembler (defaults to ml.exe or ml64.exe) +# +# Originally contributed by Mladen Turk <mturk jboss.com> +# +# ==================================================================== +# + +# C/C++ compiler +!IF !DEFINED(CC) || "$(CC)" == "" +CC = cl.exe +!ENDIF +!IF !DEFINED(CXX) || "$(CXX)" == "" +CXX = $(CC) -TP +!ENDIF +!IF !DEFINED(CPP) || "$(CPP)" == "" +CPP = $(CC) -EP +!ENDIF +# Linker +!IF !DEFINED(LINK) || "$(LINK)" == "" +LINK = link.exe +!ENDIF +# Resource Compiler +!IF !DEFINED(RC) || "$(RC)" == "" +RC = rc.exe +!ENDIF +# Manifest toolkit +!IF !DEFINED(MT) || "$(MT)" == "" +MT = mt.exe +!ENDIF + +LINK_WRAPPER = $(LINK) + +# Use BUILD_CPU if CPU was not set +!IF !DEFINED(CPU) || "$(CPU)" == "" +!IF "$(BUILD_CPU)" == "i386" || "$(BUILD_CPU)" == "x86" || "$(BUILD_CPU)" == "i686" +CPU=X86 +!ENDIF +!IF "$(BUILD_CPU)" == "amd64" || "$(BUILD_CPU)" == "x86_64" || "$(BUILD_CPU)" == "x64" +CPU=X64 +!ENDIF +!ENDIF +# Figure out CPU from the current host +!IF !DEFINED(CPU) || "$(CPU)" == "" +!IF "$(PROCESSOR_ARCHITECTURE)" == "" +!IF "$(PROCESSOR_ARCHITEW6432)" == "" +CPU=X64 +!ELSE +CPU=$(PROCESSOR_ARCHITEW6432) +!ENDIF +!ELSE +!IF "$(PROCESSOR_ARCHITECTURE)" == "AMD64" +CPU=X64 +!ELSE +CPU=$(PROCESSOR_ARCHITECTURE) +!ENDIF +!ENDIF +!ENDIF + +!IF "$(CPU)" != "X86" +!IF "$(CPU)" != "X64" +!ERROR Must specify CPU environment variable (X86, X64) $(CPU) +!ENDIF +!ENDIF + +!IF !DEFINED(TARGET) || "$(TARGET)" == "" +TARGET=EXE +!ENDIF + +!IF "$(TARGET)" != "EXE" +!IF "$(TARGET)" != "GUI" +!IF "$(TARGET)" != "DLL" +!IF "$(TARGET)" != "LIB" +!ERROR Must specify TARGET environment variable (EXE, GUI, DLL, LIB) +!ENDIF +!ENDIF +!ENDIF +!ENDIF + +!IF !DEFINED(WINVER) || "$(WINVER)" == "" +WINVER=WIN10 +!ENDIF + + +!IF "$(WINVER)" == "WIN7" +NMAKE_WINVER = 0x0601 +!ELSEIF "$(WINVER)" == "WIN8" +NMAKE_WINVER = 0x0602 +!ELSEIF "$(WINVER)" == "WIN81" +NMAKE_WINVER = 0x0603 +!ELSEIF "$(WINVER)" == "WIN10" +NMAKE_WINVER = 0x0A00 +!ELSE +!ERROR Must specify WINVER environment variable (WIN10, WIN7, WIN8, WIN81) +!ENDIF + +NMAKE_WINNT = -DWINNT -D_WINNT -D_WIN32_WINNT=$(NMAKE_WINVER) -DWINVER=$(NMAKE_WINVER) + +!IF !DEFINED(BUILD) || "$(BUILD)" == "" +BUILD=RELEASE +!ENDIF +!IFDEF RELEASE +BUILD=RELEASE +!ENDIF +!IFDEF DEBUG +BUILD=DEBUG +!ENDIF +!IFDEF NODEBUG +BUILD=RELEASE +!ENDIF + +!IF "$(BUILD)" != "RELEASE" +!IF "$(BUILD)" != "DEBUG" +!ERROR Must specify BUILD environment variable (RELEASE, DEBUG) +!ENDIF +!ENDIF + +# Common flags for all platforms +CMN_CFLAGS = -c -nologo -DWIN32 -D_WIN32 -D_WINDOWS $(NMAKE_WINNT) -W3 +!IF "$(TARGET)" == "EXE" +CMN_CFLAGS = $(CMN_CFLAGS) -D_CONSOLE +!ENDIF +# Mark that extern C newer throws C++ exception +CMN_CFLAGS = $(CMN_CFLAGS) -EHsc + +!IF !DEFINED(UNICODE) || "$(UNICODE)" == "" +CMN_CFLAGS = $(CMN_CFLAGS) -D_MBCS -DMBCS +!ELSE +CMN_CFLAGS = $(CMN_CFLAGS) -D_UNICODE -DUNICODE +!ENDIF +CMN_CFLAGS = $(CMN_CFLAGS) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE + +!IF "$(CPU)" == "X86" +CPU_CFLAGS = -D_X86_=1 +MACHINE=X86 +MACHINE_LC=i386 +!ELSEIF "$(CPU)" == "X64" +CPU_CFLAGS = -D_AMD64_=1 -DWIN64 -D_WIN64 +MACHINE=AMD64 +MACHINE_LC=amd64 +!ENDIF + +!IF "$(BUILD)" == "RELEASE" +!IF "$(CPU)" == "X86" +OPT_CFLAGS = -O2 -Ob2 -Oy- -Zi -DNDEBUG +!ELSE +OPT_CFLAGS = -O2 -Ob2 -Zi -DNDEBUG +!ENDIF +!ELSE +OPT_CFLAGS = -Od -Zi -DDEBUG -D_DEBUG +!ENDIF + +!IF DEFINED(STATIC_CRT) +CRT_CFLAGS = -D_MT -MT +!ELSE +CRT_CFLAGS = -D_MT -MD +!ENDIF + +!IF "$(BUILD)" == "DEBUG" +CRT_CFLAGS = $(CRT_CFLAGS)d +!ENDIF + +CFLAGS = $(CMN_CFLAGS) $(CPU_CFLAGS) $(OPT_CFLAGS) $(CRT_CFLAGS) + +!IF DEFINED(EXTRA_CFLAGS) +CFLAGS = $(CFLAGS) $(EXTRA_CFLAGS) +!ENDIF + +# Cleanup CXXFLAGS +CXXFLAGS = +!IF DEFINED(EXTRA_CXXFLAGS) +CXXFLAGS = $(EXTRA_CXXFLAGS) +!ENDIF + +# Linker section +LIBS = kernel32.lib advapi32.lib ws2_32.lib +# Extra libs from command line or env +!IF DEFINED(EXTRA_LIBS) +LIBS = $(LIBS) $(EXTRA_LIBS) +!ENDIF + +# Run-Time Error Checks +!IF "$(BUILD)" == "DEBUG" +!IF DEFINED(RTC_CHECK) +LIBS = $(LIBS) RunTmChk.lib +CFLAGS = $(CFLAGS) -RTC1 +!ENDIF +!ENDIF + +COMMON_LFLAGS = /NOLOGO /MACHINE:$(MACHINE) + +# Always add debugging to the linker +OPT_LFLAGS = /INCREMENTAL:NO /DEBUG +!IF "$(BUILD)" == "RELEASE" +OPT_LFLAGS = /OPT:REF $(OPT_LFLAGS) +!IF DEFINED(STATIC_CRT) && "$(STATIC_CRT)" == "Hybrid" +OPT_LFLAGS = $(OPT_LFLAGS) /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib +!ENDIF +!ENDIF + +!IF "$(TARGET)" == "EXE" +LFLAGS = $(COMMON_LFLAGS) /SUBSYSTEM:CONSOLE +!ELSEIF "$(TARGET)" == "GUI" +LFLAGS = $(COMMON_LFLAGS) /SUBSYSTEM:WINDOWS +!ELSEIF "$(TARGET)" == "DLL" +LFLAGS = $(COMMON_LFLAGS) /DLL /SUBSYSTEM:WINDOWS +!ELSEIF "$(TARGET)" == "LIB" +LFLAGS = -lib $(COMMON_LFLAGS) +!ENDIF + +!IF DEFINED(EXTRA_LFLAGS) +LFLAGS = $(LFLAGS) $(EXTRA_LFLAGS) +!ENDIF + +!IF "$(TARGET)" != "LIB" +LFLAGS = $(LFLAGS) $(OPT_LFLAGS) +!ENDIF + +PDBFLAGS = -Fo$(WORKDIR)\ -Fd$(WORKDIR)\$(PROJECT) + +# Resource compiler flags + +RCFLAGS=/l 0x409 /n +!IF "$(BUILD)" == "RELEASE" +RCFLAGS = $(RCFLAGS) /d NDEBUG +!ELSE +RCFLAGS = $(RCFLAGS) /d _DEBUG /d DEBUG +!ENDIF +RCFLAGS = $(RCFLAGS) /d WIN32 /d WINNT /d WINVER=$(NMAKE_WINVER) /d _WIN32_WINNT=$(NMAKE_WINVER) +!IF DEFINED(EXTRA_RCFLAGS) +RCFLAGS = $(RCFLAGS) $(EXTRA_RCFLAGS) +!ENDIF + + +# Build Target dir e.g. WIN10_X64_DLL_RELEASE +!IF !DEFINED(WORKDIR) || "$(WORKDIR)" == "" +!IF !DEFINED(WORKDIR_EXT) || "$(WORKDIR_EXT)" == "" +WORKDIR = $(WINVER)_$(CPU)_$(TARGET)_$(BUILD) +WORKDIR_DLL = $(WINVER)_$(CPU)_DLL_$(BUILD) +WORKDIR_LIB = $(WINVER)_$(CPU)_LIB_$(BUILD) +WORKDIR_EXE = $(WINVER)_$(CPU)_EXE_$(BUILD) +!ELSE +WORKDIR = $(WINVER)_$(CPU)_$(BUILDIR_EXT)_$(BUILD) +!ENDIF +!ENDIF + +CLEANTARGET=if exist "$(WORKDIR)\$(NULL)" rd /s /q $(WORKDIR) +MAKEWORKDIR=if not exist "$(WORKDIR)\$(NULL)" mkdir $(WORKDIR) +MAKEINSTALL=if not exist "$(INSTALLLOC)\$(NULL)" mkdir $(INSTALLLOC) + +CMN_OBJECTS = \ + $(WORKDIR)\jk_ajp12_worker.obj \ + $(WORKDIR)\jk_ajp13.obj \ + $(WORKDIR)\jk_ajp13_worker.obj \ + $(WORKDIR)\jk_ajp14.obj \ + $(WORKDIR)\jk_ajp14_worker.obj \ + $(WORKDIR)\jk_ajp_common.obj \ + $(WORKDIR)\jk_connect.obj \ + $(WORKDIR)\jk_context.obj \ + $(WORKDIR)\jk_lb_worker.obj \ + $(WORKDIR)\jk_map.obj \ + $(WORKDIR)\jk_md5.obj \ + $(WORKDIR)\jk_msg_buff.obj \ + $(WORKDIR)\jk_pool.obj \ + $(WORKDIR)\jk_shm.obj \ + $(WORKDIR)\jk_sockbuf.obj \ + $(WORKDIR)\jk_status.obj \ + $(WORKDIR)\jk_uri_worker_map.obj \ + $(WORKDIR)\jk_url.obj \ + $(WORKDIR)\jk_util.obj \ + $(WORKDIR)\jk_worker.obj + diff --git a/native/iis/Makefile.vc b/native/iis/Makefile.vc index 0ba175ea2..aea57fc93 100644 --- a/native/iis/Makefile.vc +++ b/native/iis/Makefile.vc @@ -21,7 +21,7 @@ TARGET = DLL # pcre or pcre2 PCRE = pcre -!include <NMAKEmakefile.inc> +!include <..\common\NMAKEmakefile.inc> !IF !DEFINED(SRCDIR) || "$(SRCDIR)" == "" SRCDIR = ..\common @@ -47,46 +47,17 @@ CFLAGS = $(CFLAGS) -DPCRE2_STATIC -DPCRE2_CODE_UNIT_WIDTH=8 -DHAVE_PCRE2 RCFLAGS = $(RCFLAGS) /d JK_ISAPI -PDBFLAGS = -Fo$(WORKDIR)\ -Fd$(WORKDIR)\$(PROJECT) - PCRELIB = $(PCREDIR)\$(WORKDIR_LIB)\$(PCRE).lib OBJECTS = \ - $(WORKDIR)\jk_ajp12_worker.obj \ - $(WORKDIR)\jk_ajp13.obj \ - $(WORKDIR)\jk_ajp13_worker.obj \ - $(WORKDIR)\jk_ajp14.obj \ - $(WORKDIR)\jk_ajp14_worker.obj \ - $(WORKDIR)\jk_ajp_common.obj \ - $(WORKDIR)\jk_connect.obj \ - $(WORKDIR)\jk_context.obj \ - $(WORKDIR)\jk_isapi_plugin.obj \ - $(WORKDIR)\jk_lb_worker.obj \ - $(WORKDIR)\jk_map.obj \ - $(WORKDIR)\jk_md5.obj \ - $(WORKDIR)\jk_msg_buff.obj \ - $(WORKDIR)\jk_pool.obj \ - $(WORKDIR)\jk_shm.obj \ - $(WORKDIR)\jk_sockbuf.obj \ - $(WORKDIR)\jk_status.obj \ - $(WORKDIR)\jk_uri_worker_map.obj \ - $(WORKDIR)\jk_url.obj \ - $(WORKDIR)\jk_util.obj \ - $(WORKDIR)\jk_worker.obj - -LINK_WRAPPER = $(LINK) + $(CMN_OBJECTS) \ + $(WORKDIR)\jk_isapi_plugin.obj BUILDBIN = $(WORKDIR)\$(PROJECT).dll BUILDPDB = $(WORKDIR)\$(PROJECT).pdb BUILDRES = $(WORKDIR)\$(PROJECT).res BUILDMFT = $(BUILDBIN).manifest -{$(SRCDIR)\src}.c{$(WORKDIR)}.obj: - $(CC) $(CFLAGS) $(INCLUDES) $(PDBFLAGS) $< - -{$(SRCDIR)\os\win32}.c{$(WORKDIR)}.obj: - $(CC) $(CFLAGS) $(INCLUDES) $(PDBFLAGS) $< - all : libpcre $(WORKDIR) $(BUILDBIN) $(WORKDIR) : diff --git a/native/iis/pcre/Makefile.vc b/native/iis/pcre/Makefile.vc index 0af2574c7..d7f3e91a2 100644 --- a/native/iis/pcre/Makefile.vc +++ b/native/iis/pcre/Makefile.vc @@ -18,16 +18,12 @@ PROJECT = pcre TARGET = LIB -!include <..\NMAKEmakefile.inc> +!include <..\..\common\NMAKEmakefile.inc> INCLUDES = -I. CFLAGS = $(CFLAGS) -DHAVE_CONFIG_H -DPCRE_STATIC -RCFLAGS = $(RCFLAGS) /d JK_ISAPI - -PDBFLAGS = -Fo$(WORKDIR)\ -Fd$(WORKDIR)\$(PROJECT) - OBJECTS = \ $(WORKDIR)\pcre_byte_order.obj \ $(WORKDIR)\pcre_chartables.obj \ @@ -52,8 +48,6 @@ OBJECTS = \ $(WORKDIR)\pcre_xclass.obj -LINK_WRAPPER = $(LINK) - BUILDLIB = $(WORKDIR)\$(PROJECT).lib all : $(WORKDIR) $(BUILDLIB) diff --git a/native/iis/pcre2/Makefile.vc b/native/iis/pcre2/Makefile.vc index 553b54521..96c48bf73 100644 --- a/native/iis/pcre2/Makefile.vc +++ b/native/iis/pcre2/Makefile.vc @@ -18,7 +18,7 @@ PROJECT = pcre2 TARGET = LIB -!include <..\NMAKEmakefile.inc> +!include <..\..\common\NMAKEmakefile.inc> SRCDIR=src @@ -26,10 +26,6 @@ INCLUDES = -I$(SRCDIR) CFLAGS = $(CFLAGS) -DHAVE_CONFIG_H -DPCRE2_STATIC -RCFLAGS = $(RCFLAGS) /d JK_ISAPI - -PDBFLAGS = -Fo$(WORKDIR)\ -Fd$(WORKDIR)\$(PROJECT) - OBJECTS = \ $(WORKDIR)\pcre2_auto_possess.obj \ $(WORKDIR)\pcre2_chartables.obj \ @@ -65,8 +61,6 @@ OBJECTS = \ ADDFILES= $(SRCDIR)\config.h $(SRCDIR)\pcre2.h $(SRCDIR)\pcre2_chartables.c -LINK_WRAPPER = $(LINK) - BUILDLIB = $(WORKDIR)\$(PROJECT).lib all : $(WORKDIR) $(ADDFILES) $(BUILDLIB) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
