summaryrefslogtreecommitdiff
path: root/wscript
diff options
context:
space:
mode:
Diffstat (limited to 'wscript')
-rw-r--r--wscript48
1 files changed, 32 insertions, 16 deletions
diff --git a/wscript b/wscript
index d791d932d..198b4760b 100644
--- a/wscript
+++ b/wscript
@@ -5,10 +5,12 @@ from waflib.Build import BuildContext, CleanContext, \
# Unix flags
CFLAGS_UNIX = ["-O2", "-Wall", "-Wextra"]
CFLAGS_UNIX_DBG = ['-g']
+CFLAGS_UNIX_PED = ['-pedantic', '-Werror']
# Windows MSVC flags
-CFLAGS_WIN32_COMMON = ['/TC', '/W4', '/WX', '/nologo', '/Zi']
+CFLAGS_WIN32_COMMON = ['/TC', '/W4', '/nologo', '/Zi']
CFLAGS_WIN32_RELEASE = ['/O2', '/MD']
+CFLAGS_WIN32_PED = ['/Wx']
# Note: /RTC* cannot be used with optimization on.
CFLAGS_WIN32_DBG = ['/Od', '/RTC1', '/RTCc', '/DEBUG', '/MDd']
@@ -31,9 +33,10 @@ PPC optimized version (ppc) or the SHA1 functions from OpenSSL (openssl)")
help='Select target architecture (ia64, x64, x86, x86_amd64, x86_ia64)')
opt.add_option('--without-sqlite', action='store_false', default=True,
dest='use_sqlite', help='Disable sqlite support')
+ opt.add_option('--strict', action='store_true', default=False,
+ help='Max warning level; treat warnings as errors')
def configure(conf):
-
# load the MSVC configuration flags
if conf.options.msvc:
conf.env['MSVC_VERSIONS'] = ['msvc ' + conf.options.msvc]
@@ -43,25 +46,38 @@ def configure(conf):
# default configuration for C programs
conf.load('compiler_c')
- dbg = conf.options.debug
-
- conf.env.CFLAGS = CFLAGS_UNIX + (CFLAGS_UNIX_DBG if dbg else [])
-
+ debug = conf.options.debug
+ pedantic = conf.options.strict
+
+ if conf.env.CC_NAME == 'msvc':
+ conf.env.CFLAGS = CFLAGS_WIN32_COMMON
+ conf.env.LINKFLAGS = CFLAGS_WIN32_L
+ if debug:
+ conf.env.CFLAGS += CFLAGS_WIN32_DEBUG
+ conf.env.LINKFLAGS += CFLAGS_WIN32_L_DBG
+ else:
+ conf.env.CFLAGS += CFLAGS_WIN32_RELEASE
+
+ if pedantic:
+ conf.ENV.CFLAGS += CFLAGS_WIN32_PED
+
+ elif conf.env.CC_NAME == 'gcc':
+ conf.env.CFLAGS = CFLAGS_UNIX
+ if debug:
+ conf.env.CFLAGS += CFLAGS_UNIX_DBG
+ if pedantic:
+ conf.env.CFLAGS += CFLAGS_UNIX_PED
+
+
+ # Win32 Platform: MinGW and MSVC
if conf.env.DEST_OS == 'win32':
conf.env.PLATFORM = 'win32'
+ conf.env.DEFINES += ['WIN32', '_DEBUG', '_LIB']
- if conf.env.CC_NAME == 'msvc':
- conf.env.CFLAGS = CFLAGS_WIN32_COMMON + \
- (CFLAGS_WIN32_DBG if dbg else CFLAGS_WIN32_RELEASE)
- conf.env.LINKFLAGS += CFLAGS_WIN32_L + \
- (CFLAGS_WIN32_L_DBG if dbg else [])
- conf.env.DEFINES += ['WIN32', '_DEBUG', '_LIB']
-
- elif conf.env.CC_NAME == 'gcc':
- conf.check_cc(lib='pthread', uselib_store='pthread')
-
+ # Unix-like platforms: Linux, Darwin, Cygwin, *BSD, etc
else:
conf.env.PLATFORM = 'unix'
+ conf.check_cc(lib='pthread', uselib_store='pthread')
# Do not build ZLib with GZIP support
conf.env.DEFINES += ['NO_GZIP']