Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 17 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@
## - however: exec_process seems to handle our arguments incorrectly (at least on Windows). Check functionality before you commit!

# Determine what to build (all or single library)
set( BUILD_TYPE LIST CACHE STRING "Can be used to restrict building to a single library: ALL,LIBSVM,XERCESC,BOOST,COINOR,BZIP2,ZLIB,GLPK,KISSFFT,OPENMP,ARROW,MINIZIP_NG")
set( VALID_BUILD_TYPES "ALL" "LIBSVM" "XERCESC" "BOOST" "COINOR" "BZIP2" "ZLIB" "GLPK" "EIGEN" "KISSFFT" "HDF5" "OPENMP" "ARROW" "MINIZIP_NG")
set( BUILD_TYPE LIST CACHE STRING "Can be used to restrict building to a single library: ALL,LIBSVM,XERCESC,BOOST,COINOR,BZIP2,ZLIB,GLPK,KISSFFT,OPENMP,ARROW,LIBZIP")
set( VALID_BUILD_TYPES "ALL" "LIBSVM" "XERCESC" "BOOST" "COINOR" "BZIP2" "ZLIB" "GLPK" "EIGEN" "KISSFFT" "HDF5" "OPENMP" "ARROW" "LIBZIP")

# check build type
if (BUILD_TYPE STREQUAL "HELP" OR BUILD_TYPE STREQUAL "LIST")
Expand Down Expand Up @@ -197,7 +197,7 @@ set(KISSFFT_DIR ${CONTRIB_BIN_SOURCE_DIR}/kissfft)
set(HDF5_DIR ${CONTRIB_BIN_SOURCE_DIR}/hdfsrc)
set(OPENMP_DIR ${CONTRIB_BIN_SOURCE_DIR}/openmp-12.0.1.src)
set(ARROW_DIR ${CONTRIB_BIN_SOURCE_DIR}/arrow-apache-arrow-23.0.0/cpp)
set(MINIZIP_NG_DIR ${CONTRIB_BIN_SOURCE_DIR}/minizip-ng-4.0.7)
set(LIBZIP_DIR ${CONTRIB_BIN_SOURCE_DIR}/libzip-1.11.4)

## source(archive) paths
## PLEASE upload all source archives to
Expand All @@ -212,7 +212,7 @@ set(MINIZIP_NG_DIR ${CONTRIB_BIN_SOURCE_DIR}/minizip-ng-4.0.7)
## set(ARCHIVE_ZLIB_SHA256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
## NOTE: for local development you can simply place the *.tar.gz in the binary
## directory to prevent the download and sha256 verification
## LIBRARIES: BZIP2, ZLIB, BOOST, XERCES, LIBSVM, GLPK, COINOR, EIGEN, KISSFFT, HDF5, OPENMP, ARROW, MINIZIP_NG
## LIBRARIES: BZIP2, ZLIB, BOOST, XERCES, LIBSVM, GLPK, COINOR, EIGEN, KISSFFT, HDF5, OPENMP, ARROW, LIBZIP

set(ARCHIVE_BZIP2 bzip2-1.0.5.tar.gz)
set(ARCHIVE_BZIP2_TAR bzip2-1.0.5.tar)
Expand Down Expand Up @@ -262,9 +262,9 @@ set(ARCHIVE_ARROW arrow-apache-arrow-23.0.0.tar.gz )
set(ARCHIVE_ARROW_TAR arrow-apache-arrow-23.0.0.tar )
set(ARCHIVE_ARROW_SHA256 "7510f4b578febb3af5b3e93ad4616ae3cb680b0f651217ebb29f4c7e5ea952f3")

set(ARCHIVE_MINIZIP_NG minizip-ng-4.0.7.tar.gz)
set(ARCHIVE_MINIZIP_NG_TAR minizip-ng-4.0.7.tar)
set(ARCHIVE_MINIZIP_NG_SHA256 "a87f1f734f97095fe1ef0018217c149d53d0f78438bcb77af38adc21dff2dfbc")
set(ARCHIVE_LIBZIP libzip-1.11.4.tar.gz)
set(ARCHIVE_LIBZIP_TAR libzip-1.11.4.tar)
set(ARCHIVE_LIBZIP_SHA256 "82e9f2f2421f9d7c2466bbc3173cd09595a88ea37db0d559a9d0a2dc60dc722e")

## necessary for clean up .. change if install process of library changes
set(INCLUDE_DIR_BOOST ${CONTRIB_BIN_INCLUDE_DIR}/boost)
Expand All @@ -275,7 +275,6 @@ set(INCLUDE_DIR_EIGEN ${CONTRIB_BIN_INCLUDE_DIR}/eigen3)
set(INCLUDE_DIR_KISSFFT ${CONTRIB_BIN_INCLUDE_DIR}/kissfft)
set(INCLUDE_DIR_OPENMP ${CONTRIB_BIN_INCLUDE_DIR}/openmp.src)
set(INCLUDE_DIR_ARROW ${CONTRIB_BIN_INCLUDE_DIR}/arrow)
set(INCLUDE_DIR_MINIZIP_NG ${CONTRIB_BIN_INCLUDE_DIR}/minizip-ng)

## hack for simple libs that do not have include directories
set(INCLUDE_FILES_LIBSVM ${CONTRIB_BIN_INCLUDE_DIR}/svm.h)
Expand Down Expand Up @@ -490,7 +489,7 @@ include ("${CMAKE_SOURCE_DIR}/libraries.cmake/kissfft.cmake")
include ("${CMAKE_SOURCE_DIR}/libraries.cmake/hdf5.cmake")
include ("${CMAKE_SOURCE_DIR}/libraries.cmake/openmp.cmake")
include ("${CMAKE_SOURCE_DIR}/libraries.cmake/arrow.cmake")
include ("${CMAKE_SOURCE_DIR}/libraries.cmake/minizip_ng.cmake")
include ("${CMAKE_SOURCE_DIR}/libraries.cmake/libzip.cmake")

## build mac os x specific C/C++ flags
set( OPENMS_CONTRIB_MACOSX_MIXED_MODE 0 CACHE INTERNAL "building multiple architectures on MacOSX" FORCE)
Expand Down Expand Up @@ -554,15 +553,6 @@ if (BUILD_TYPE STREQUAL "ALL" OR "ARROW" IN_LIST BUILD_TYPE)
OPENMS_COPY_LIBS("ARROW")
endif()

##################################################
### MINIZIP_NG ###
##################################################
if (BUILD_TYPE STREQUAL "ALL" OR "MINIZIP_NG" IN_LIST BUILD_TYPE)
OPENMS_CLEAN_LIB("MINIZIP_NG")
OPENMS_CONTRIB_BUILD_MINIZIP_NG()
OPENMS_COPY_LIBS("MINIZIP_NG")
endif()

##################################################
### LIBSVM ###
##################################################
Expand Down Expand Up @@ -631,6 +621,15 @@ if (BUILD_TYPE STREQUAL "ALL" OR "HDF5" IN_LIST BUILD_TYPE)
OPENMS_COPY_LIBS("HDF5")
endif()

##################################################
### LIBZIP ###
##################################################
if (BUILD_TYPE STREQUAL "ALL" OR "LIBZIP" IN_LIST BUILD_TYPE)
OPENMS_CLEAN_LIB("LIBZIP")
OPENMS_CONTRIB_BUILD_LIBZIP()
OPENMS_COPY_LIBS("LIBZIP")
endif()

##################################################
### OPENMP ###
##################################################
Expand Down
162 changes: 162 additions & 0 deletions libraries.cmake/libzip.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
##################################################
### libzip ###
##################################################

MACRO( OPENMS_CONTRIB_BUILD_LIBZIP )
OPENMS_LOGHEADER_LIBRARY("libzip")
#extract: (takes very long.. so skip if possible)
if(MSVC)
set(ZIP_ARGS x -y -osrc)
else()
set(ZIP_ARGS xzf)
endif()
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_LIBZIP "LIBZIP" "CMakeLists.txt")

# Common CMake options for libzip (all platforms)
set(_LIBZIP_COMMON_ARGS
"-DENABLE_COMMONCRYPTO=OFF"
"-DENABLE_GNUTLS=OFF"
"-DENABLE_MBEDTLS=OFF"
"-DENABLE_OPENSSL=OFF"
"-DENABLE_WINDOWS_CRYPTO=OFF"
"-DENABLE_BZIP2=ON"
"-DENABLE_LZMA=OFF"
"-DENABLE_ZSTD=OFF"
"-DBUILD_TOOLS=OFF"
"-DBUILD_REGRESS=OFF"
"-DBUILD_OSSFUZZ=OFF"
"-DBUILD_EXAMPLES=OFF"
"-DBUILD_DOC=OFF"
"-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}"
"-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}"
)

## build the obj/lib
if (MSVC)
message(STATUS "Generating libzip build system .. ")
execute_process(COMMAND ${CMAKE_COMMAND}
${_LIBZIP_COMMON_ARGS}
-G "${CMAKE_GENERATOR}"
${ARCHITECTURE_OPTION_CMAKE}
.
WORKING_DIRECTORY ${LIBZIP_DIR}
OUTPUT_VARIABLE LIBZIP_CMAKE_OUT
ERROR_VARIABLE LIBZIP_CMAKE_ERR
RESULT_VARIABLE LIBZIP_CMAKE_SUCCESS)

# output to logfile
file(APPEND ${LOGFILE} ${LIBZIP_CMAKE_OUT})
file(APPEND ${LOGFILE} ${LIBZIP_CMAKE_ERR})

if(NOT LIBZIP_CMAKE_SUCCESS EQUAL 0)
message(STATUS "Generating libzip build system .. failed")
message(STATUS "Output: ${LIBZIP_CMAKE_OUT}")
message(FATAL_ERROR "Error: ${LIBZIP_CMAKE_ERR}")
else()
message(STATUS "Generating libzip build system .. done")
endif()

message(STATUS "Building libzip lib (Debug) .. ")
execute_process(COMMAND ${CMAKE_COMMAND} --build ${LIBZIP_DIR} --target INSTALL --config Debug
WORKING_DIRECTORY ${LIBZIP_DIR}
OUTPUT_VARIABLE LIBZIP_BUILD_OUT
ERROR_VARIABLE LIBZIP_BUILD_ERR
RESULT_VARIABLE LIBZIP_BUILD_SUCCESS)

# output to logfile
file(APPEND ${LOGFILE} ${LIBZIP_BUILD_OUT})
file(APPEND ${LOGFILE} ${LIBZIP_BUILD_ERR})

if(NOT LIBZIP_BUILD_SUCCESS EQUAL 0)
message(STATUS "Building libzip lib (Debug) .. failed")
message(STATUS "Output: ${LIBZIP_BUILD_OUT}")
message(FATAL_ERROR "Error: ${LIBZIP_BUILD_ERR}")
else()
message(STATUS "Building libzip lib (Debug) .. done")
endif()

# rebuild as release
message(STATUS "Building libzip lib (Release) .. ")
execute_process(COMMAND ${CMAKE_COMMAND} --build ${LIBZIP_DIR} --target INSTALL --config Release
WORKING_DIRECTORY ${LIBZIP_DIR}
OUTPUT_VARIABLE LIBZIP_BUILD_OUT
ERROR_VARIABLE LIBZIP_BUILD_ERR
RESULT_VARIABLE LIBZIP_BUILD_SUCCESS)

# output to logfile
file(APPEND ${LOGFILE} ${LIBZIP_BUILD_OUT})
file(APPEND ${LOGFILE} ${LIBZIP_BUILD_ERR})

if(NOT LIBZIP_BUILD_SUCCESS EQUAL 0)
message(STATUS "Building libzip lib (Release) .. failed")
message(STATUS "Output: ${LIBZIP_BUILD_OUT}")
message(FATAL_ERROR "Error: ${LIBZIP_BUILD_ERR}")
else()
message(STATUS "Building libzip lib (Release) .. done")
endif()

else() ## Linux/MacOS

# Build list of platform-specific CMake args
set(_LIBZIP_PLATFORM_ARGS)
if(APPLE)
list(APPEND _LIBZIP_PLATFORM_ARGS
"-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}"
"-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}"
"-DCMAKE_MACOSX_RPATH=TRUE"
)
endif()

# CFLAGS for libzip
set(LIBZIP_CFLAGS "-Wall -O3 -fPIC")

message(STATUS "Generating libzip build system .. ")
execute_process(COMMAND ${CMAKE_COMMAND}
${_LIBZIP_PLATFORM_ARGS}
${_LIBZIP_COMMON_ARGS}
-G "${CMAKE_GENERATOR}"
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_C_FLAGS=${LIBZIP_CFLAGS}"
.
WORKING_DIRECTORY ${LIBZIP_DIR}
OUTPUT_VARIABLE LIBZIP_CMAKE_OUT
ERROR_VARIABLE LIBZIP_CMAKE_ERR
RESULT_VARIABLE LIBZIP_CMAKE_SUCCESS)

# output to logfile
file(APPEND ${LOGFILE} ${LIBZIP_CMAKE_OUT})
file(APPEND ${LOGFILE} ${LIBZIP_CMAKE_ERR})

if(NOT LIBZIP_CMAKE_SUCCESS EQUAL 0)
message(STATUS "Generating libzip build system .. failed")
message(STATUS "Output: ${LIBZIP_CMAKE_OUT}")
message(STATUS "Error: ${LIBZIP_CMAKE_ERR}")
message(FATAL_ERROR "libzip configuration failed. Check the log file for details: ${LOGFILE}")
else()
message(STATUS "Generating libzip build system .. done")
endif()

message(STATUS "Building libzip lib (Release) .. ")
execute_process(COMMAND ${CMAKE_COMMAND}
--build ${LIBZIP_DIR}
--target install
WORKING_DIRECTORY ${LIBZIP_DIR}
OUTPUT_VARIABLE LIBZIP_BUILD_OUT
ERROR_VARIABLE LIBZIP_BUILD_ERR
RESULT_VARIABLE LIBZIP_BUILD_SUCCESS)

# output to logfile
file(APPEND ${LOGFILE} ${LIBZIP_BUILD_OUT})
file(APPEND ${LOGFILE} ${LIBZIP_BUILD_ERR})

if(NOT LIBZIP_BUILD_SUCCESS EQUAL 0)
message(STATUS "Output: ${LIBZIP_BUILD_OUT}")
message(STATUS "Error: ${LIBZIP_BUILD_ERR}")
message(FATAL_ERROR "Building libzip lib (Release) .. failed")
else()
message(STATUS "Building libzip lib (Release) .. done")
endif()

endif()

ENDMACRO( OPENMS_CONTRIB_BUILD_LIBZIP )
Loading