Changeset: 7498f1f6b8ed for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7498f1f6b8ed Modified Files: CMakeLists.txt buildtools/conf/CMakeLists.txt clients/mapiclient/CMakeLists.txt testing/CMakeLists.txt tools/merovingian/client/CMakeLists.txt tools/merovingian/daemon/CMakeLists.txt tools/mserver/CMakeLists.txt Branch: cmake-fun Log Message:
Windows compilation and installation fixes. diffs (248 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,12 @@ include(CheckCSourceCompiles REQUIRED) include(CheckCSourceRuns REQUIRED) include(CheckIncludeFile REQUIRED) include(CheckIncludeFiles REQUIRED) +include(CheckStructHasMember REQUIRED) include(CheckSymbolExists REQUIRED) include(CheckTypeSize REQUIRED) -include(CheckStructHasMember REQUIRED) -include(FindIconv REQUIRED) +include(GNUInstallDirs REQUIRED) +include(TestBigEndian REQUIRED) include(TestLargeFiles REQUIRED) -include(TestBigEndian REQUIRED) cmake_policy(SET CMP0075 NEW) @@ -173,24 +173,25 @@ if(NOT ${ENABLE_STATIC_ANALYSIS} STREQUA set(STATIC_CODE_ANALYSIS ON) endif() -if(UNIX OR APPLE) # instalation directories. This has to come earlier - include(GNUInstallDirs REQUIRED) +set(SOURCE "${CMAKE_SOURCE_DIR}") +set(PREFIX "${CMAKE_INSTALL_PREFIX}") +set(EXEC_PREFIX "${CMAKE_INSTALL_PREFIX}") - set(LOGDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/monetdb" CACHE PATH "Where to put log files (LOCALSTATEDIR/log/monetdb)") - set(RUNDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/monetdb" CACHE PATH "Where to put pid files (LOCALSTATEDIR/run/monetdb)") - set(BINDIR "${CMAKE_INSTALL_FULL_BINDIR}") - set(DATADIR "${CMAKE_INSTALL_FULL_DATADIR}") - set(DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}") - set(DATAROOTDIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}") - set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") - set(LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}") - set(LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") - set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") - set(PKGCONFIGDIR "${LIBDIR}/pkgconfig") - set(SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}") - set(MANDIR "${CMAKE_INSTALL_FULL_MANDIR}") - set(INFODIR "${CMAKE_INSTALL_FULL_INFODIR}") -endif() +set(BINDIR "${CMAKE_INSTALL_FULL_BINDIR}") +set(DATADIR "${CMAKE_INSTALL_FULL_DATADIR}") +set(DATAROOTDIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}") +set(DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}") +set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") +set(INFODIR "${CMAKE_INSTALL_FULL_INFODIR}") +set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") +set(LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}") +set(LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") +set(LOGDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/monetdb" CACHE PATH "Where to put log files (LOCALSTATEDIR/log/monetdb)") +set(MANDIR "${CMAKE_INSTALL_FULL_MANDIR}") +set(PKGCONFIGDIR "${LIBDIR}/pkgconfig") +set(RUNDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/monetdb" CACHE PATH "Where to put pid files (LOCALSTATEDIR/run/monetdb)") +set(SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}") + set(PROGRAM_PERMISSIONS_DEFAULT OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) # password hash algorithm @@ -293,18 +294,6 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "Inte endif() # Check for compiler flags -if(NOT CMAKE_C_FLAGS) - set(CMAKE_C_FLAGS "") -endif() -if(MSVC) - addCompilerFlag("/GF" "/GF" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - addCompilerFlag("/W3" "/W3" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - addCompilerFlag("/nologo" "/nologo" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - addCompilerFlag("/Zi" "/Zi" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - addCompilerFlag("/Oi" "/Oi" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) -endif() -set(X_CFLAGS "") - function(removeCompilerFlag REGEX_EXPRESSION FLAG_TO_REMOVE OLD_FLAGS BUILD NEW_FLAGS) if(${OLD_FLAGS} MATCHES "${REGEX_EXPRESSION}") string(REGEX REPLACE "${REGEX_EXPRESSION}" "" NEW_VAR "${OLD_FLAGS}") @@ -325,6 +314,18 @@ function(addLinkerFlag REGEX_EXPRESSION endif() endfunction() +if(NOT CMAKE_C_FLAGS) + set(CMAKE_C_FLAGS "") +endif() +if(MSVC) + addCompilerFlag("/GF" "/GF" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) + addCompilerFlag("/W3" "/W3" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) + addCompilerFlag("/nologo" "/nologo" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) + addCompilerFlag("/Zi" "/Zi" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) + addCompilerFlag("/Oi" "/Oi" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) +endif() +set(X_CFLAGS "") + if(${ENABLE_ASSERT} STREQUAL "NO") set(NDEBUG ON) elseif(${ENABLE_ASSERT} STREQUAL "YES" AND ${CMAKE_C_COMPILER_ID} STREQUAL "Intel") @@ -816,16 +817,16 @@ endif() set(DL_LIBRARIES "") if(UNIX) find_library(MATH_LIBRARIES NAMES m DOC "m library to link") - set(DL_LIBRARIES ${CMAKE_DL_LIBS}) + set(DL_LIBRARIES "${CMAKE_DL_LIBS}") endif() if(NOT MATH_LIBRARIES) set(MATH_LIBRARIES "" CACHE STRING "m library to link") endif() if(WIN32) - find_library(PSAPILIB_LIBRARIES NAMES psapi DOC "psapi library to link") + find_library(PSAPI_LIBRARIES NAMES psapi DOC "psapi library to link (only on Windows)") endif() -if(NOT PSAPILIB_LIBRARIES) - set(PSAPILIB_LIBRARIES "" CACHE STRING "psapi library to link") +if(NOT PSAPI_LIBRARIES) + set(PSAPI_LIBRARIES "" CACHE STRING "psapi library to link (only on Windows)") endif() # Malloc libs @@ -953,6 +954,7 @@ endif() # Iconv set(ICONV_LIBRARIES "") +include(FindIconv) if(Iconv_FOUND) set(HAVE_ICONV ON) set(HAVE_ICONV_H ON) @@ -1349,12 +1351,7 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO") if(MSVC) check_include_file("odbcinst.h" HAVE_ODBCINST_H) if(NOT HAVE_ODBCINST_H) - if(${WITH_UNIXODBC} STREQUAL "YES") - message(FATAL_ERROR "odbcinst.h not found") - else() - set(HAVE_ODBC NO) - message(STATUS "odbcinst.h not found") - endif() + message(STATUS "odbcinst.h not found") endif() set(FOUND_ODBCINST_LIBRARIES ) diff --git a/buildtools/conf/CMakeLists.txt b/buildtools/conf/CMakeLists.txt --- a/buildtools/conf/CMakeLists.txt +++ b/buildtools/conf/CMakeLists.txt @@ -11,7 +11,7 @@ if(HAVE_DEVELOPER) endif() if(WIN32) - install(FILES banner.bmp license.rtf monetdb.ico website.html DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}) + install(FILES banner.bmp license.rtf monetdb.ico website.html DESTINATION ${BINDIR}) else() install(FILES monetdbd.conf DESTINATION ${SYSCONFDIR}/tmpfiles.d) endif() diff --git a/clients/mapiclient/CMakeLists.txt b/clients/mapiclient/CMakeLists.txt --- a/clients/mapiclient/CMakeLists.txt +++ b/clients/mapiclient/CMakeLists.txt @@ -36,4 +36,6 @@ target_link_libraries(tomograph PRIVATE ${ICONV_LIBRARIES} ${CRYPTO_LIBRARIES}) install(TARGETS mclient msqldump stethoscope tachograph tomograph DESTINATION ${BINDIR}) -install(FILES mclient.1 msqldump.1 DESTINATION ${DATADIR}/man/man1) +if(NOT WIN32) + install(FILES mclient.1 msqldump.1 DESTINATION ${MANDIR}/man1) +endif() diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -31,12 +31,6 @@ string(REPLACE "\\" "\\\\" QXPYTHON2_LIB string(REPLACE "\\" "\\\\" QXPYTHON3 "${PYTHON3_INTERPRETER}") string(REPLACE "\\" "\\\\" QXPYTHON3_LIBDIR "${PYTHON3_LIBDIR}") -find_program(SH sh) -if(NOT SH) - message(FATAL_ERROR "A shell interpreter was not found") -endif() -set(BASH "${SH}") - if(CMAKE_SIZEOF_VOID_P EQUAL 4) set(BITS32_FALSE "#") else() @@ -75,6 +69,11 @@ install(FILES Mfilter.py process.py ${CM if(WIN32) install(FILES Mlog.bat Mtest.py.bat DESTINATION ${BINDIR}) else() + find_program(SH sh) + if(NOT SH) + message(FATAL_ERROR "A shell interpreter was not found") + endif() + set(BASH "${SH}") configure_file(Mlog.in ${CMAKE_CURRENT_BINARY_DIR}/Mlog @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Mlog PERMISSIONS ${PROGRAM_PERMISSIONS_DEFAULT} DESTINATION ${BINDIR}) install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${BINDIR})") diff --git a/tools/merovingian/client/CMakeLists.txt b/tools/merovingian/client/CMakeLists.txt --- a/tools/merovingian/client/CMakeLists.txt +++ b/tools/merovingian/client/CMakeLists.txt @@ -13,4 +13,4 @@ target_link_libraries(monetdb PRIVATE me ${SOCKET_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${SNAPPY_LIBRARIES} ${LZ4_LIBRARIES} ${LIBLZMA_LIBRARIES} ${CURL_LIBRARIES} ${ICONV_LIBRARIES}) install(TARGETS monetdb DESTINATION ${BINDIR}) -install(FILES monetdb.1 DESTINATION ${DATADIR}/man/man1) +install(FILES monetdb.1 DESTINATION ${MANDIR}/man1) diff --git a/tools/merovingian/daemon/CMakeLists.txt b/tools/merovingian/daemon/CMakeLists.txt --- a/tools/merovingian/daemon/CMakeLists.txt +++ b/tools/merovingian/daemon/CMakeLists.txt @@ -21,4 +21,4 @@ target_link_libraries(monetdbd PRIVATE m install(TARGETS monetdbd DESTINATION ${BINDIR}) configure_file(monetdbd.1.in ${CMAKE_CURRENT_BINARY_DIR}/monetdbd.1 @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/monetdbd.1 DESTINATION ${DATADIR}/man/man1) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/monetdbd.1 DESTINATION ${MANDIR}/man1) diff --git a/tools/mserver/CMakeLists.txt b/tools/mserver/CMakeLists.txt --- a/tools/mserver/CMakeLists.txt +++ b/tools/mserver/CMakeLists.txt @@ -15,23 +15,25 @@ configure_file(monet_version.c.in ${CMAK add_executable(mserver5 mserver5.c monet_version.h ${CMAKE_CURRENT_BINARY_DIR}/monet_version.c) target_link_libraries(mserver5 PRIVATE monetdb5 mal gdk stream mapi ${UUID_LIBRARIES} ${MATH_LIBRARIES} ${SOCKET_LIBRARIES} - ${MALLOC_LIBRARIES} ${PTHREAD_LIBRARIES} ${PTHREAD_LIBRARIES} ${DL_LIBRARIES} ${CRYPTO_LIBRARIES} - ${PCRE_LIBRARIES} ${LIBXML2_LIBRARIES} ${PSAPILIB_LIBS} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} + ${MALLOC_LIBRARIES} ${PTHREAD_LIBRARIES} ${DL_LIBRARIES} ${CRYPTO_LIBRARIES} + ${PCRE_LIBRARIES} ${LIBXML2_LIBRARIES} ${PSAPI_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${SNAPPY_LIBRARIES} ${LZ4_LIBRARIES} ${LIBLZMA_LIBRARIES} ${CURL_LIBRARIES} ${ICONV_LIBRARIES}) install(TARGETS mserver5 DESTINATION ${BINDIR}) install(FILES tomographintro.docx tomographintro.pdf DESTINATION ${DATADIR}/doc/MonetDB-client-tools) install(FILES monetdblogo.png DESTINATION ${DATADIR}/doc/MonetDB) -set(localstatedir "${LOCALSTATEDIR}") -configure_file(mserver5.1.in ${CMAKE_CURRENT_BINARY_DIR}/mserver5.1 @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mserver5.1 DESTINATION ${DATADIR}/man/man1) +if(NOT WIN32) + set(localstatedir "${LOCALSTATEDIR}") + configure_file(mserver5.1.in ${CMAKE_CURRENT_BINARY_DIR}/mserver5.1 @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mserver5.1 DESTINATION ${MANDIR}/man1) +endif() if(HAVE_TESTING) add_executable(shutdowntest shutdowntest.c) target_link_libraries(shutdowntest PRIVATE monetdb5 mal gdk stream mapi ${UUID_LIBRARIES} ${MATH_LIBRARIES} - ${SOCKET_LIBRARIES} ${MALLOC_LIBRARIES} ${PTHREAD_LIBRARIES} ${PTHREAD_LIBRARIES} ${DL_LIBRARIES} - ${CRYPTO_LIBRARIES} ${PCRE_LIBRARIES} ${LIBXML2_LIBRARIES} ${PSAPILIB_LIBS} ${ZLIB_LIBRARIES} + ${SOCKET_LIBRARIES} ${MALLOC_LIBRARIES} ${PTHREAD_LIBRARIES} ${DL_LIBRARIES} + ${CRYPTO_LIBRARIES} ${PCRE_LIBRARIES} ${LIBXML2_LIBRARIES} ${PSAPI_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${SNAPPY_LIBRARIES} ${LZ4_LIBRARIES} ${LIBLZMA_LIBRARIES} ${CURL_LIBRARIES} ${ICONV_LIBRARIES}) install(TARGETS shutdowntest DESTINATION ${BINDIR}) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list