Commit 08f32085 by QbProg

Adds an option to select the CRT link mode ( static or dynamic ).

This is useful when linking libgit2 statically, as the setting must match the linking program's one.
parent a5f61384
...@@ -35,6 +35,10 @@ IF(MSVC) ...@@ -35,6 +35,10 @@ IF(MSVC)
# - Turn this off by invoking CMake with the "-DSTDCALL=Off" argument. # - Turn this off by invoking CMake with the "-DSTDCALL=Off" argument.
# #
OPTION( STDCALL "Build libgit2 with the __stdcall convention" ON ) OPTION( STDCALL "Build libgit2 with the __stdcall convention" ON )
# This option must match the settings used in your program, in particular if you
# are linking statically
OPTION( STATIC_CRT "Link the static CRT libraries" ON )
ENDIF() ENDIF()
# Installation paths # Installation paths
...@@ -148,26 +152,36 @@ IF (MSVC) ...@@ -148,26 +152,36 @@ IF (MSVC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gz") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gz")
ENDIF () ENDIF ()
IF (STATIC_CRT)
SET(CRT_FLAG_DEBUG "/MTd")
SET(CRT_FLAG_RELEASE "/MT")
ELSE()
SET(CRT_FLAG_DEBUG "/MDd")
SET(CRT_FLAG_RELEASE "/MD")
ENDIF()
# /Zi - Create debugging information # /Zi - Create debugging information
# /Od - Disable optimization # /Od - Disable optimization
# /D_DEBUG - #define _DEBUG # /D_DEBUG - #define _DEBUG
# /MTd - Statically link the multithreaded debug version of the CRT # /MTd - Statically link the multithreaded debug version of the CRT
# /MDd - Dynamically link the multithreaded debug version of the CRT
# /RTC1 - Run time checks # /RTC1 - Run time checks
SET(CMAKE_C_FLAGS_DEBUG "/Zi /Od /D_DEBUG /MTd /RTC1") SET(CMAKE_C_FLAGS_DEBUG "/Zi /Od /D_DEBUG /RTC1 ${CRT_FLAG_DEBUG}")
# /DNDEBUG - Disables asserts # /DNDEBUG - Disables asserts
# /MT - Statically link the multithreaded release version of the CRT # /MT - Statically link the multithreaded release version of the CRT
# /MD - Dynamically link the multithreaded release version of the CRT
# /O2 - Optimize for speed # /O2 - Optimize for speed
# /Oy - Enable frame pointer omission (FPO) (otherwise CMake will automatically turn it off) # /Oy - Enable frame pointer omission (FPO) (otherwise CMake will automatically turn it off)
# /GL - Link time code generation (whole program optimization) # /GL - Link time code generation (whole program optimization)
# /Gy - Function-level linking # /Gy - Function-level linking
SET(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /MT /O2 /Oy /GL /Gy") SET(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /O2 /Oy /GL /Gy ${CRT_FLAG_RELEASE}")
# /Oy- - Disable frame pointer omission (FPO) # /Oy- - Disable frame pointer omission (FPO)
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/DNDEBUG /Zi /MT /O2 /Oy- /GL /Gy") SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/DNDEBUG /Zi /O2 /Oy- /GL /Gy ${CRT_FLAG_RELEASE}")
# /O1 - Optimize for size # /O1 - Optimize for size
SET(CMAKE_C_FLAGS_MINSIZEREL "/DNDEBUG /MT /O1 /Oy /GL /Gy") SET(CMAKE_C_FLAGS_MINSIZEREL "/DNDEBUG /O1 /Oy /GL /Gy ${CRT_FLAG_RELEASE}")
# /DYNAMICBASE - Address space load randomization (ASLR) # /DYNAMICBASE - Address space load randomization (ASLR)
# /NXCOMPAT - Data execution prevention (DEP) # /NXCOMPAT - Data execution prevention (DEP)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment