blob: d4c57e2043aba070a0c1cb5d2a29ac876e003cb2 [file] [log] [blame]
# -*- Makefile -*-
!IF "$(OS)" == "Windows_NT"
NULL=
rmdir=rd /s /q
!ELSE
NULL=nul
rmdir=deltree /y
!ERROR it's not NT
!ENDIF
SILENT=@
# Default build and bind modes
BUILD_MODE = release
BIND_MODE = shared
!IF "$(BUILD_MODE)" == "release" || "$(BUILD_MODE)" == "Release"
!IF "$(BIND_MODE)" == "shared"
# release shared
API_LIBS = $(APR_SOURCE)\Release\libapr-1.lib \
$(API_SOURCE)\Release\libapriconv-1.lib
CFG_CFLAGS = /MD /Zi /O2 /Oy- /D "NDEBUG"
CFG_LDFLAGS = /debug /opt:ref /incremental:no
CFG_OUTPUT = Release\iconv
!ELSE
!IF "$(BIND_MODE)" == "static"
# release static
API_LIBS = $(APR_SOURCE)\LibR\apr-1.lib \
$(API_SOURCE)\LibR\apriconv-1.lib \
kernel32.lib advapi32.lib ws2_32.lib mswsock.lib
CFG_CFLAGS = /MD /Zi /O2 /Oy- /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "API_DECLARE_STATIC"
CFG_LDFLAGS = /debug /opt:ref /incremental:no
CFG_OUTPUT = LibR\iconv
!ELSE
!ERROR Unknown bind mode "$(BIND_MODE)"
!ENDIF
!ENDIF
!ELSE
!IF "$(BUILD_MODE)" == "debug" || "$(BUILD_MODE)" == "Debug"
!IF "$(BIND_MODE)" == "shared"
# debug shared
API_LIBS = $(APR_SOURCE)\Debug\libapr-1.lib \
$(API_SOURCE)\Debug\libapriconv-1.lib
CFG_CFLAGS = /MDd /Zi /Od /EHsc /D "_DEBUG"
CFG_LDFLAGS = /debug /incremental:no
CFG_OUTPUT = Debug\iconv
!ELSE
!IF "$(BIND_MODE)" == "static"
# debug static
APR_LIB = $(APR_SOURCE)\LibD\apr-1.lib \
$(API_SOURCE)\LibD\apriconv-1.lib \
kernel32.lib advapi32.lib ws2_32.lib mswsock.lib
CFG_CFLAGS = /MDd /Zi /Od /EHsc /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "API_DECLARE_STATIC"
CFG_LDFLAGS = /debug /incremental:no
CFG_OUTPUT = LibD\iconv
!ELSE
!ERROR Unknown bind mode "$(BIND_MODE)"
!ENDIF
!ENDIF
!ELSE
!ERROR Unknown build mode "$(BUILD_MODE)"
!ENDIF
!ENDIF
APR_SOURCE = ..\..\apr
API_SOURCE = ..
OUTPUT_DIR = $(API_SOURCE)\$(CFG_OUTPUT)
INT_CFLAGS = /nologo $(CFG_CFLAGS) /Fd"$(OUTPUT_DIR)\iconv_src" \
/Fp"$(OUTPUT_DIR)\iconv.pch" /Yu"iconv.h" \
/I "$(API_SOURCE)\include" /I "$(API_SOURCE)\lib" \
/I "$(APR_SOURCE)\include" \
/D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL"
INT_LDFLAGS = /nologo $(CFG_LDFLAGS) /dll /subsystem:windows /incremental:no \
/export:iconv_module,DATA
CFLAGS = /W3
ALL_CFLAGS = $(INT_CFLAGS) $(INT_INCLUDES) $(INT_DEFINES) $(CFLAGS)
LDFLAGS =
ALL_LDFLAGS = $(INT_LDFLAGS) $(LDFLAGS)
all: $(OUTPUT_DIR) $(ALL_TARGETS)
$(OUTPUT_DIR):
-$(SILENT)if not exist "$(OUTPUT_DIR)\$(NULL)" mkdir "$(OUTPUT_DIR)"
.c{$(OUTPUT_DIR)}.so:
$(SILENT)if not exist "$(OUTPUT_DIR)\iconv.pch" ( \
echo Precompiling iconv.pch from iconv.h & \
cl $(ALL_CFLAGS) /Yc"iconv.h" /Fo"$*.obj" /c $< \
) else ( \
cl $(ALL_CFLAGS) /Fo"$*.obj" /c $< \
)
$(SILENT)link $(ALL_LDFLAGS) $*.obj $(API_LIBS) /out:$@ \
/base:@"..\build\BaseAddr.ref",$(@F) & \
( if exist $@.manifest \
mt -manifest $@.manifest -outputresource:$@;2 ) & \
del "$*.exp" & del "$*.lib"
# The rebase target below is used only to *regenerate* the BaseAddr.ref file
# if the module list or sizes change considerably. Use the rebase target to
# to create the BaseAddr.0xNNNNNNNN.txt file of the rebase results,
# then remerge it back into the explicit build/BaseAddr.ref file.
#
BASE_REF = $(OUTPUT_DIR)\BaseAddr.$(REBASE_TOP).txt
ALL_REBASE = -d -p -b $(REBASE_TOP) -C $(BASE_REF)
rebase: $(ALL_TARGETS)
$(SILENT)echo Extracting .dbg symbols and rebasing all modules...
$(SILENT)rebase $(ALL_REBASE) $(ALL_TARGETS)
$(SILENT)echo.
clean:
-$(SILENT)if exist "$(OUTPUT_DIR)/$(NULL)" $(rmdir) $(OUTPUT_DIR)
install:
@echo Copying apr-iconv modules from $(OUTPUT_DIR) to $(INSTALL_DIR)
-$(SILENT)mkdir "$(INSTALL_DIR)"
$(SILENT)copy $(OUTPUT_DIR)\*.so "$(INSTALL_DIR)" < <<
A
<<
@echo Copying apr-iconv pdb debugging symbols from $(OUTPUT_DIR) to $(INSTALL_DIR)
$(SILENT)copy $(OUTPUT_DIR)\*.pdb "$(INSTALL_DIR)" < <<
A
<<