1- cmake_minimum_required (VERSION 2.6 )
1+ cmake_minimum_required (VERSION 3.0 )
22message (STATUS "Running cmake version ${CMAKE_VERSION} " )
33
44project (InpxCreator)
@@ -13,33 +13,33 @@ message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
1313set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR} /cmake)
1414
1515# Project version number
16- set (PRJ_VERSION_MAJOR 8 )
17- set (PRJ_VERSION_MINOR 63 )
16+ set (PRJ_VERSION_MAJOR 9 )
17+ set (PRJ_VERSION_MINOR 0 )
1818configure_file ("${PROJECT_SOURCE_DIR} /cmake/version.h.in" "${PROJECT_BINARY_DIR} /version.h" )
1919include_directories ("${PROJECT_BINARY_DIR} " )
2020
21- if (WIN32 AND DEFINED ENV{MSYSTEM} )
21+ if (CMAKE_CROSSCOMPILING OR WIN32 )
2222 # Cannot win here - libwinpthread-1.dll will still be required on run-time (unless somebody rebuilds mingw compilers in MSYS2 with win32 threads)
2323 if ($ENV{MSYSTEM} STREQUAL "MINGW32" )
24- set (DEST_DIR "${PROJECT_SOURCE_DIR} /bin " )
25- find_path (WINPTHREAD_DLL_DIR libwinpthread-1.dll "/mingw32/bin" )
24+ set (DEST_DIR "${PROJECT_SOURCE_DIR} /bin_win32 " )
25+ find_path (WINPTHREAD_DLL_DIR libwinpthread-1.dll )
2626 elseif ($ENV{MSYSTEM} STREQUAL "MINGW64" )
27- set (DEST_DIR "${PROJECT_SOURCE_DIR} /bin64 " )
28- find_path (WINPTHREAD_DLL_DIR libwinpthread-1.dll "/mingw64/bin" )
27+ set (DEST_DIR "${PROJECT_SOURCE_DIR} /bin_win64 " )
28+ find_path (WINPTHREAD_DLL_DIR libwinpthread-1.dll )
2929 else ()
3030 # cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release ..
3131 message (FATAL_ERROR "Currently unsuppored environment. CMake willl exit now." )
3232 endif ()
33+ # I want static libraries everywhere (but for MySQL on Windows)
34+ set (CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_SHARED_LIBRARY_SUFFIX} .a)
3335else ()
3436 execute_process (COMMAND ${CMAKE_COMMAND} -E env uname -m OUTPUT_VARIABLE LINUX_BIN OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET )
3537 set (DEST_DIR "${PROJECT_SOURCE_DIR} /bin_linux_${LINUX_BIN} " )
38+ set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
3639endif ()
37- message (STATUS "Destination directory: ${DEST_DIR} " )
40+ message (STATUS "Destination directory: ${DEST_DIR} ${WINPTHREAD_DLL_DIR} " )
3841
39- # I want static libraries everywhere (but for MySQL on Windows)
40- set (CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_SHARED_LIBRARY_SUFFIX} .a)
4142set (BUILD_SHARED_LIBS OFF )
42-
4343set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++" )
4444set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
4545set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s" )
@@ -65,7 +65,7 @@ get_filename_component(MYSQL_NAME ${MYSQL_LIBRARIES} NAME_WE)
6565# Prepare history file
6666execute_process (COMMAND ${CMAKE_COMMAND} -E env ${GIT_EXECUTABLE} changelog --final-tag ${PRJ_VERSION_MAJOR} .${PRJ_VERSION_MINOR} --stdout OUTPUT_FILE ${PROJECT_BINARY_DIR} /history.txt ERROR_QUIET )
6767
68- if (WIN32 )
68+ if (CMAKE_CROSSCOMPILING OR WIN32 )
6969 set (SRCS_MINIZIP minizip/ioapi.c minizip/iowin32.c minizip/unzip.c minizip/zip.c)
7070else ()
7171 set (SRCS_MINIZIP minizip/ioapi.c minizip/ioapi.c minizip/unzip.c minizip/zip.c)
@@ -85,14 +85,14 @@ FILE(GLOB files "misc/*")
8585install (FILES ${files} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
8686FILE (GLOB scripts "scripts/*" )
8787install (PROGRAMS ${scripts} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
88- if (WIN32 )
88+ if (CMAKE_CROSSCOMPILING OR WIN32 )
8989 install (PROGRAMS ${MYSQL_LIB_DIR} /${MYSQL_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
9090 install (PROGRAMS ${WINPTHREAD_DLL_DIR} /libwinpthread-1.dll DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
9191endif ()
9292install (FILES ${MYSQL_LIB_DIR} /../share/english/errmsg.sys DESTINATION ${DEST_DIR} /language CONFIGURATIONS Release)
9393install (TARGETS lib2inpx DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
9494# for debugging purposes
95- if (WIN32 )
95+ if (CMAKE_CROSSCOMPILING OR WIN32 )
9696 install (PROGRAMS ${MYSQL_LIB_DIR} /${MYSQL_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_BINARY_DIR} CONFIGURATIONS Release Debug)
9797 install (PROGRAMS ${WINPTHREAD_DLL_DIR} /libwinpthread-1.dll DESTINATION ${PROJECT_BINARY_DIR} CONFIGURATIONS Release Debug)
9898endif ()
@@ -103,6 +103,16 @@ find_package(Glide 0.12 REQUIRED)
103103# Proper go build structure will be here
104104set (GO_PATH "${CMAKE_BINARY_DIR} /go" )
105105
106+ if (CMAKE_CROSSCOMPILING )
107+ if ($ENV{MSYSTEM} STREQUAL "MINGW32" )
108+ set (CROSS_GOOS windows)
109+ set (CROSS_GOARCH 386)
110+ elseif ($ENV{MSYSTEM} STREQUAL "MINGW64" )
111+ set (CROSS_GOOS windows)
112+ set (CROSS_GOARCH amd64)
113+ endif ()
114+ endif ()
115+
106116message (STATUS "Vendoring for go" )
107117execute_process (COMMAND ${CMAKE_COMMAND} -E make_directory go/src )
108118execute_process (COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR} /glide.yaml go/src/. )
@@ -118,7 +128,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libget2${CMAKE_EXECUTABLE_SUFFIX}
118128 # setting up source tree
119129 COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR} /libget2/ go/src/libget2
120130 # Building
121- COMMAND ${CMAKE_COMMAND} -E env GOROOT=${GO_ROOT} GOPATH=${GO_PATH} ${GO_EXECUTABLE} build libget2
131+ COMMAND ${CMAKE_COMMAND} -E env GOROOT=${GO_ROOT} GOPATH=${GO_PATH} GOOS=${CROSS_GOOS} GOARCH=${CROSS_GOARCH } ${GO_EXECUTABLE} build libget2
122132 COMMENT "Building GO program - libget2" )
123133add_custom_target (libget2_exe ALL DEPENDS ${CMAKE_BINARY_DIR} /libget2${CMAKE_EXECUTABLE_SUFFIX} )
124134install (PROGRAMS ${CMAKE_BINARY_DIR} /libget2${CMAKE_EXECUTABLE_SUFFIX} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
@@ -131,7 +141,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libmerge${CMAKE_EXECUTABLE_SUFFIX}
131141 # setting up source tree
132142 COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR} /libmerge/ go/src/libmerge
133143 # Building
134- COMMAND ${CMAKE_COMMAND} -E env GOROOT=${GO_ROOT} GOPATH=${GO_PATH} ${GO_EXECUTABLE} build libmerge
144+ COMMAND ${CMAKE_COMMAND} -E env GOROOT=${GO_ROOT} GOPATH=${GO_PATH} GOOS=${CROSS_GOOS} GOARCH=${CROSS_GOARCH } ${GO_EXECUTABLE} build libmerge
135145 COMMENT "Building GO program - libmerge" )
136146add_custom_target (libmerge_exe ALL DEPENDS ${CMAKE_BINARY_DIR} /libmerge${CMAKE_EXECUTABLE_SUFFIX} )
137147install (PROGRAMS ${CMAKE_BINARY_DIR} /libmerge${CMAKE_EXECUTABLE_SUFFIX} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
0 commit comments