diff --git a/CMakeLists.txt b/CMakeLists.txt index 738cf9189f3a1ffd100296736e645648703e3891..a9602bc6a0ecaa0b763b86f74a95bf71285c0eed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,16 +4,27 @@ project (Cryptlib C) include("ExternalProject") find_program(PATCH_PATH NAMES patch HINTS "C:/Program Files/Git/usr/bin" "C:/Program Files (x86)/Git/usr/bin" REQUIRED) -find_program(ENV_PATH NAMES env REQUIRED) -find_program(SH_PATH NAMES sh REQUIRED) +find_program(SH_PATH NAMES sh HINTS "C:/Program Files/Git/usr/bin" "C:/Program Files (x86)/Git/usr/bin" REQUIRED) +find_program(FIND_PATH NAMES find PATHS "C:/Program Files/Git/usr/bin" "C:/Program Files (x86)/Git/usr/bin" NO_DEFAULT_PATH) +find_program(FIND_PATH NAMES find) if(WIN32) - set(MAKE_FLAGS MINGW32_NT-6.1 OSNAME=win32 RANLIB=${CMAKE_RANLIB} AR=${CMAKE_AR} CC=${CMAKE_C_COMPILER} MAKE=${MAKE_PATH}) - find_program(UNZIP_PATH tar REQUIRED) - set(DOWNLOAD_CMD "${UNZIP_PATH}" -xf "${CMAKE_CURRENT_SOURCE_DIR}/dist/cryptlib.zip" -C "<SOURCE_DIR>") - find_program(MAKE_PATH NAMES msbuild REQUIRED) - set(BUILD_CMD ${msbuild} /p:Configuration=Release /p:Platform=Win32 cryptlib.sln) + if(MSVC) + find_program(MAKE_PATH NAMES make mingw32-make REQUIRED) + find_program(UNZIP_PATH tar REQUIRED) + set(DOWNLOAD_CMD "${UNZIP_PATH}" -xf "${CMAKE_CURRENT_SOURCE_DIR}/dist/cryptlib.zip" -C "<SOURCE_DIR>") + find_program(MAKE_PATH NAMES msbuild REQUIRED) + set(BUILD_CMD ${MAKE_PATH} /p:Configuration=Release /p:Platform=Win32 "<SOURCE_DIR>/crypt32.sln") + set(INSTALL_CMD ${CMAKE_CURRENT_SOURCE_DIR}/install.bat "<SOURCE_DIR>" "${Cryptlib_BINARY_DIR}") + else() + set(MAKE_FLAGS MINGW32_NT-6.1 OSNAME=win32 RANLIB=${CMAKE_RANLIB} AR=${CMAKE_AR} CC=${CMAKE_C_COMPILER} MAKE=${MAKE_PATH}) + set(BUILD_CMD ${MAKE_PATH} ${MAKE_FLAGS}) + find_program(UNZIP_PATH tar REQUIRED) + set(DOWNLOAD_CMD "${UNZIP_PATH}" -xf "${CMAKE_CURRENT_SOURCE_DIR}/dist/cryptlib.zip" -C "<SOURCE_DIR>") + set(INSTALL_CMD cp "<SOURCE_DIR>/cryptlib.h" "<SOURCE_DIR>/libcl.a" ${Cryptlib_BINARY_DIR}) + endif() else() + find_program(ENV_PATH NAMES env REQUIRED) find_program(MAKE_PATH NAMES make mingw32-make REQUIRED) if("$ENV{CMAKE_BUILD_PARALLEL_LEVEL}" STREQUAL "") set(MAKE_FLAGS ${MAKE_FLAGS} -j 32) @@ -23,6 +34,7 @@ else() set(BUILD_CMD ${ENV_PATH} - PATH=$ENV{PATH} ${CROSS_MAKE_ENV} ${MAKE_PATH} ${MAKE_FLAGS}) find_program(UNZIP_PATH unzip REQUIRED) set(DOWNLOAD_CMD "${UNZIP_PATH}" -oa "${CMAKE_CURRENT_SOURCE_DIR}/dist/cryptlib.zip" -d "<SOURCE_DIR>") + set(INSTALL_CMD cp "<SOURCE_DIR>/cryptlib.h" "<SOURCE_DIR>/libcl.a" ${Cryptlib_BINARY_DIR}) endif() @@ -31,12 +43,12 @@ ExternalProject_Add( DOWNLOAD_COMMAND ${DOWNLOAD_CMD} UPDATE_COMMAND "" CONFIGURE_COMMAND "" - PATCH_COMMAND ${SH_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/patch.sh" "${CMAKE_CURRENT_SOURCE_DIR}" "<SOURCE_DIR>" + PATCH_COMMAND ${SH_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/patch.sh" "${CMAKE_CURRENT_SOURCE_DIR}" "<SOURCE_DIR>" ${FIND_PATH} ${PATCH_PATH} BUILD_IN_SOURCE TRUE BUILD_COMMAND ${BUILD_CMD} # This is actually an install byproduct but hey... ¯\_(ツ)_/¯ BUILD_BYPRODUCTS ${Cryptlib_BINARY_DIR}/libcl.a - INSTALL_COMMAND cp "<SOURCE_DIR>/cryptlib.h" "<SOURCE_DIR>/libcl.a" ${Cryptlib_BINARY_DIR} + INSTALL_COMMAND ${INSTALL_CMD} ) add_library(cryptlib STATIC IMPORTED GLOBAL) diff --git a/install.bat b/install.bat new file mode 100644 index 0000000000000000000000000000000000000000..933d5bf95dca7c4a672d5ed6b997d9f644b68a10 --- /dev/null +++ b/install.bat @@ -0,0 +1,5 @@ +copy "%1\cryptlib.h" "%2" +copy "%1\binaries32_vs10\cl32.lib" "%2" +copy "%1\binaries32_vs10\cl32.dll" "%2" +copy "%1\binaries32_vs10\cl32.pdb" "%2" +copy "%1\binaries32_vs10\cl32.exp" "%2"