Skip to content

Commit

Permalink
Windows build fix
Browse files Browse the repository at this point in the history
Added CMAKE_BINARY_DIR/include to include dirs(because of the generated
header)

Moved cmake code changing /MD to /MT above C/C cmake inclusion

Added optional msi-signing target(copy-pasted from c/c)
  • Loading branch information
lawrinn committed Jun 7, 2018
1 parent a6621de commit a17d984
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 22 deletions.
63 changes: 41 additions & 22 deletions CMakeLists.txt
Expand Up @@ -58,15 +58,56 @@ SET(DSN_DIALOG_FILES ${CMAKE_SOURCE_DIR}/dsn/odbc_dsn.c
ma_error.c
ma_common.c)

# This has to be before C/C's cmake run, or it will build with /MD
IF(WIN32)
IF (MSVC)
SET(CONFIG_TYPES "DEBUG" "RELEASE" "RELWITHDEBINFO" "MINSIZEREL")
FOREACH(BUILD_TYPE ${CONFIG_TYPES})
FOREACH(COMPILER CXX C)
SET(COMPILER_FLAGS "${CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}}")
IF (NOT COMPILER_FLAGS STREQUAL "")
STRING(REPLACE "/MD" "/MT" COMPILER_FLAGS ${COMPILER_FLAGS})
IF (BUILD_TYPE STREQUAL "Debug")
SET(COMPILER_FLAGS "${COMPILER_FLAGS} /RTC1 /RTCc")
STRING(REPLACE "/Zi" "/ZI" COMPILER_FLAGS ${COMPILER_FLAGS})
ENDIF()
MESSAGE (STATUS "CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}= ${COMPILER_FLAGS}")
SET(CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE} ${COMPILER_FLAGS} CACHE
STRING "overwritten by mariadb-odbc" FORCE)
ENDIF()
ENDFOREACH()
ENDFOREACH()
ENDIF()
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
ENDIF()

INCLUDE(${CMAKE_SOURCE_DIR}/cmake/connector_c.cmake)

IF(WIN32)
#ADD_OPTION(WITH_MSI "Build MSI installation package" OFF)
ADD_OPTION(WITH_SIGNCODE "Digitally sign files" OFF)
ENDIF()

#ADD_OPTION(WITH_UNIT_TESTS "build test suite" ON)
#ADD_OPTION(WITH_SSL "Enables use of TLS/SSL library" ON)

IF(WITH_SIGNCODE)
IF(WIN32 AND NOT SIGN_OPTIONS)
SET(SIGN_OPTIONS /a /t http://timestamp.verisign.com/scripts/timstamp.dll)
ELSE()
SEPARATE_ARGUMENTS(SIGN_OPTIONS)
ENDIF()
MARK_AS_ADVANCED(SIGN_OPTIONS)
ENDIF()

#Debug log is controlled by conenction option solely
ADD_DEFINITIONS(-DMAODBC_DEBUG)

INCLUDE(${CMAKE_SOURCE_DIR}/cmake/SearchLibrary.cmake)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/SetValueMacro.cmake)

INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libmariadb/include)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}/libmariadb/include)

IF(WIN32)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/win)
Expand Down Expand Up @@ -165,28 +206,6 @@ ELSE()
ADD_DEFINITIONS(-DSQLCOLATTRIB_SQLLEN_PTR)
ENDIF()

IF(WIN32)
IF (MSVC)
SET(CONFIG_TYPES "DEBUG" "RELEASE" "RELWITHDEBINFO" "MINSIZEREL")
FOREACH(BUILD_TYPE ${CONFIG_TYPES})
FOREACH(COMPILER CXX C)
SET(COMPILER_FLAGS "${CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}}")
IF (NOT COMPILER_FLAGS STREQUAL "")
STRING(REPLACE "/MD" "/MT" COMPILER_FLAGS ${COMPILER_FLAGS})
IF (BUILD_TYPE STREQUAL "Debug")
SET(COMPILER_FLAGS "${COMPILER_FLAGS} /RTC1 /RTCc")
STRING(REPLACE "/Zi" "/ZI" COMPILER_FLAGS ${COMPILER_FLAGS})
ENDIF()
MESSAGE (STATUS "CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}= ${COMPILER_FLAGS}")
SET(CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE} ${COMPILER_FLAGS} CACHE
STRING "overwritten by mariadb-odbc" FORCE)
ENDIF()
ENDFOREACH()
ENDFOREACH()
ENDIF()
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
ENDIF()

# This is interim, we port ascii version to Linux first
IF(WIN32)
SET(UNICODE "W")
Expand Down
14 changes: 14 additions & 0 deletions wininstall/CMakeLists.txt
Expand Up @@ -49,6 +49,20 @@ ELSE()
SET(MSI_PACKAGE "mariadb-connector-odbc-${PRODUCT_VERSION}-${PLATFORM}.msi")
ENDIF()

IF(WITH_SIGNCODE)
IF(EXISTS "/tools/sign.bat")
ADD_CUSTOM_TARGET(SIGNMSI
DEPENDS ${MSI_PACKAGE}
COMMAND /tools/sign.bat ${MSI_PACKAGE})
ELSE()
ADD_CUSTOM_TARGET(SIGNMSI
DEPENDS ${MSI_PACKAGE}
COMMAND signtool sign ${SIGN_OPTIONS} ${MSI_PACKAGE})
ENDIF()
ADD_DEPENDENCIES(SIGNMSI ${MSI_PACKAGE})
SET_TARGET_PROPERTIES(SIGNMSI PROPERTIES EXCLUDE_FROM_ALL OFF)
ENDIF()

MESSAGE(STATUS "MSI package name ${MSI_PACKAGE}")

ADD_CUSTOM_TARGET(
Expand Down

0 comments on commit a17d984

Please sign in to comment.