Home | History | Annotate | Download | only in win32
      1 # Change this (or specify PREFIX= when invoking this NMake Makefile) if
      2 # necessary, so that the libs and headers of the dependent third-party
      3 # libraries can be located.  For instance, if building from GLib's
      4 # included Visual Studio projects, this should be able to locate the GLib
      5 # build out-of-the-box if they were not moved.  GLib's headers will be
      6 # found in $(GLIB_PREFIX)\include\glib-2.0 and
      7 # $(GLIB_PREFIX)\lib\glib-2.0\include and its import library will be found
      8 # in $(GLIB_PREFIX)\lib.
      9 
     10 !if "$(PREFIX)" == ""
     11 PREFIX = ..\..\vs$(VSVER)\$(PLAT)
     12 !endif
     13 
     14 # Location of the PERL interpretor, for running glib-mkenums.  glib-mkenums
     15 # needs to be found in $(PREFIX)\bin.  Using either a 32-bit or x64 PERL
     16 # interpretor are supported for either a 32-bit or x64 build.
     17 
     18 !if "$(PERL)" == ""
     19 PERL = perl
     20 !endif
     21 
     22 # Location of the Python interpretor, for building introspection.  The complete set
     23 # of Python Modules for introspection (the giscanner Python scripts and the _giscanner.pyd
     24 # compiled module) needs to be found in $(PREFIX)\lib\gobject-introspection\giscanner, and
     25 # the g-ir-scanner Python script and g-ir-compiler utility program needs to be found
     26 # in $(PREFIX)\bin, together with any DLLs they will depend on, if those DLLs are not already
     27 # in your PATH.
     28 # Note that the Python interpretor and the introspection modules and utility progam must
     29 # correspond to the build type (i.e. 32-bit Release for 32-bit Release builds, and so on).
     30 #
     31 # For introspection, currently only Python 2.7.x is supported.  This may change when Python 3.x
     32 # support is added upstream in gobject-introspection--when this happens, the _giscanner.pyd must
     33 # be the one that is built against the release series of Python that is used here.
     34 
     35 !if "$(PYTHON)" == ""
     36 PYTHON = python
     37 !endif
     38 
     39 # Location of the pkg-config utility program, for building introspection.  It needs to be able
     40 # to find the pkg-config (.pc) files so that the correct libraries and headers for the needed libraries
     41 # can be located, using PKG_CONFIG_PATH.  Using either a 32-bit or x64 pkg-config are supported for
     42 # either a 32-bit or x64 build.
     43 
     44 !if "$(PKG_CONFIG)" == ""
     45 PKG_CONFIG = pkg-config
     46 !endif
     47 
     48 # The items below this line should not be changed, unless one is maintaining
     49 # the NMake Makefiles.  The exception is for the CFLAGS_ADD line(s) where one
     50 # could use his/her desired compiler optimization flags, if he/she knows what is
     51 # being done.
     52 
     53 # Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
     54 # VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
     55 !if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
     56 MSG = ^
     57 This Makefile is only for Visual Studio 2008 and later.^
     58 You need to ensure that the Visual Studio Environment is properly set up^
     59 before running this Makefile.
     60 !error $(MSG)
     61 !endif
     62 
     63 ERRNUL  = 2>NUL
     64 _HASH=^#
     65 
     66 !if ![echo VCVERSION=_MSC_VER > vercl.x] \
     67     && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
     68     && ![echo PLAT=Win32 >> vercl.x] \
     69     && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
     70     && ![echo PLAT=x64 >> vercl.x] \
     71     && ![echo $(_HASH)endif >> vercl.x] \
     72     && ![cl -nologo -TC -P vercl.x $(ERRNUL)]
     73 !include vercl.i
     74 !if ![echo VCVER= ^\> vercl.vc] \
     75     && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
     76 !include vercl.vc
     77 !endif
     78 !endif
     79 !if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
     80 !endif
     81 
     82 !if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
     83 VSVER = 9
     84 !elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
     85 VSVER = 10
     86 !elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
     87 VSVER = 11
     88 !elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
     89 VSVER = 12
     90 !elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
     91 VSVER = 14
     92 !else
     93 VSVER = 0
     94 !endif
     95 
     96 !if "$(VSVER)" == "0"
     97 MSG = ^
     98 This NMake Makefile set supports Visual Studio^
     99 9 (2008) through 14 (2015).  Your Visual Studio^
    100 version is not supported.
    101 !error $(MSG)
    102 !endif
    103 
    104 VALID_CFGSET = FALSE
    105 !if "$(CFG)" == "release" || "$(CFG)" == "debug"
    106 VALID_CFGSET = TRUE
    107 !endif
    108 
    109 # One may change these items, but be sure to test
    110 # the resulting binaries
    111 !if "$(CFG)" == "release"
    112 CFLAGS_ADD = /MD /O2 /GL /MP
    113 !if $(VSVER) > 9 && $(VSVER) < 14
    114 # Undocumented "enhance optimized debugging" switch. Became documented
    115 # as "/Zo" in VS 2013 Update 3, and is turned on by default in VS 2015.
    116 CFLAGS_ADD = $(CFLAGS_ADD) /d2Zi+
    117 !endif
    118 !else
    119 CFLAGS_ADD = /MDd /Od
    120 !endif
    121 
    122 !if "$(PLAT)" == "x64"
    123 LDFLAGS_ARCH = /machine:x64
    124 !elseif "$(PLAT)" == "arm"
    125 LDFLAGS_ARCH = /machine:arm
    126 CFLAGS_ADD = $(CFLAGS_ADD) /DWINAPI_FAMILY=3
    127 !else
    128 LDFLAGS_ARCH = /machine:x86
    129 !endif
    130 
    131 !if "$(VALID_CFGSET)" == "TRUE"
    132 CFLAGS = $(CFLAGS_ADD) /W3 /Zi /I.. /I..\src /I. /I$(PREFIX)\include
    133 
    134 !if "$(ADDITIONAL_LIB_DIR)" != ""
    135 ADDITIONAL_LIB_ARG = /libpath:$(ADDITIONAL_LIB_DIR)
    136 !endif
    137 LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib $(ADDITIONAL_LIB_ARG) /DEBUG
    138 
    139 !if "$(CFG)" == "debug"
    140 LDFLAGS = $(LDFLAGS_BASE)
    141 !else
    142 LDFLAGS = $(LDFLAGS_BASE) /opt:ref /LTCG
    143 !endif
    144 !endif
    145