# # Jamrules -- build configurations # # The default build is for debugging. To compile a release # build, add -sBUILD=release to the jam command line. To provide # a custom build you can use any name you want instead of release # or debug. # # JBIG2 and JPEG2000 support is optional. To compile with this, # add the following to the jam command line: # # -sHAVE_JBIG2DEC=true # -sHAVE_JASPER=true # # Windows builds assume that third party headers and # libraries are in c:/local/include and c:/local/lib. # # MacOS X builds assume that you have third party libraries installed # from MacPorts in /opt/local. # # Linux builds assume that you have freetype-config to find the paths # to the freetype library. # # To override these defaults, please supply the paths on the jam # command line with -sTHIRDPARTINC and -sTHIRDPARTYLIB. # # -sTHIRDPARTYINC="-Ic:/wherever/include" # -sTHIRDPARTYLIB="-Lc:/wherever/lib" # # To compile without builtin CJK CMap and font support, and save a few # megabytes of executable space: # # -sDEFINES=NOCJK # # Workaround for different OS/OSPLAT settings on FTJam and plain jam if $(JAM_TOOLSET) = MINGW { OS = MINGW ; } if $(JAM_TOOLSET) = VISUALC { OS = NT ; } BUILD ?= debug ; # Place all build products here: ALL_LOCATE_TARGET ?= [ FDirName $(TOP) build $(OS:L)-$(OSPLAT:L)-$(BUILD:L) ] ; # Add compile time defines for JBIG2 and JPEG2000 support. if $(HAVE_JBIG2DEC) { DEFINES += HAVE_JBIG2DEC ; } if $(HAVE_JASPER) { DEFINES += HAVE_JASPER ; } # NEED_STRLCPY = true ; # NEED_STRSEP = true ; # NEED_GETOPT = true ; if $(OS) = LINUX { Echo Building for LINUX ; THIRDPARTYINC ?= "`freetype-config --cflags`" ; THIRDPARTYLIB ?= "`freetype-config --libs`" -L/usr/X11R6/lib ; NEED_STRLCPY = true ; NEED_STRSEP = true ; NEED_GETOPT = true ; BUILD_X11APP = true ; CCFLAGS = -Wall -std=c99 $(THIRDPARTYINC) ; LINKFLAGS = $(THIRDPARTYLIB) ; LINKLIBS = -lfreetype -ljpeg -lz -lm ; APPLINKLIBS = -lX11 -lXext ; if $(BUILD) = debug { OPTIM = -g -O0 -fno-inline ; } if $(BUILD) = release { OPTIM = -O3 ; } if $(HAVE_JBIG2DEC) { LINKLIBS += -ljbig2dec ; } if $(HAVE_JASPER) { LINKLIBS += -ljasper ; } } if $(OS) = MACOSX { Echo Building for MACOSX ; BUILD_X11APP = true ; THIRDPARTYINC ?= -I/opt/local/include -I/opt/local/include/freetype2 -I/usr/X11R6/include ; THIRDPARTYLIB ?= -L/opt/local/lib -L/usr/X11R6/lib ; CCFLAGS = -Wall -std=c99 $(THIRDPARTYINC) ; LINKFLAGS = $(THIRDPARTYLIB) ; LINKLIBS = -lfreetype -ljpeg -lz -lm ; APPLINKLIBS = -lX11 -lXext ; if $(BUILD) = debug { OPTIM = -g -O0 -fno-inline ; } if $(BUILD) = release { OPTIM = -O3 ; } if $(HAVE_JBIG2DEC) { LINKLIBS += -ljbig2dec ; } if $(HAVE_JASPER) { LINKLIBS += -ljasper ; } } if $(OS) = MINGW { Echo Building for MINGW ; NOARSCAN = true ; BUILD_WINAPP = true ; BUILD_PLUGIN = true ; THIRDPARTYINC ?= -Ic:/local/include ; THIRDPARTYLIB ?= -Lc:/local/lib ; NEED_STRLCPY = true ; NEED_STRSEP = true ; NEED_GETOPT = true ; CCFLAGS = -Wall -std=c99 $(THIRDPARTYINC) ; LINKFLAGS = $(THIRDPARTYLIB) ; LINKLIBS = -lfreetype -ljpeg -lz ; APPLINKLIBS = -lgdi32 -lcomdlg32 -luser32 -ladvapi32 -lshell32 -mwindows ; if $(BUILD) = debug { OPTIM = -g -O0 -fno-inline ; } if $(BUILD) = release { OPTIM = -O3 ; } if $(HAVE_JBIG2DEC) { LINKLIBS += -ljbig2dec ; } if $(HAVE_JASPER) { LINKLIBS += -ljasper ; } actions WindRes { windres -i $(>) -o $(<) --include-dir=$(>:D) } } if $(OS) = NT { Echo Building for MSVC ; DEFINES += MSVC ; BUILD_WINAPP = true ; THIRDPARTYINC ?= /Ic:/local/include ; THIRDPARTYLIB ?= /LIBPATH:c:/local/lib ; NEED_STRLCPY = true ; NEED_STRSEP = true ; NEED_GETOPT = true ; CCFLAGS = $(THIRDPARTYINC) ; LINKFLAGS = $(THIRDPARTYLIB) ; LINKLIBS = freetype.lib jpeg.lib z.lib ; APPLINKLIBS = gdi32.lib comdlg32.lib user32.lib advapi32.lib shell32.lib ; if $(BUILD) = debug { } if $(BUILD) = release { } if $(HAVE_JBIG2DEC) { LINKLIBS += jbig2dec.lib ; } if $(HAVE_JASPER) { LINKLIBS += jasper.lib ; } actions WindRes { rc /fo $(<) $(>) } } # Set some DEFINES based on missing platform features if $(NEED_STRLCPY) { DEFINES += NEED_STRLCPY ; } if $(NEED_STRSEP) { DEFINES += NEED_STRSEP ; } if $(NEED_GETOPT) { DEFINES += NEED_GETOPT ; } # WindRes rule for compiling the windows viewer and plugin rule UserObject { switch $(>) { case *.rc : WindRes $(<) : $(>) ; case * : Echo "unknown suffix on" $(>) ; } } rule WindRes { Depends $(<) : $(>) ; Clean clean : $(<) ; }