Skip to content

Commit 05bde46

Browse files
committed
Moving build of everything to Linux
1 parent bf755d8 commit 05bde46

12 files changed

+223
-269
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,15 @@ lib2inpx-win32.rar
200200
lib2inpx-win64.rar
201201
lib2inpx-win32.7z
202202
lib2inpx-win64.7z
203+
lib2inpx-linux_i686.7z
204+
lib2inpx-linux_x86_64.7z
203205
lib2inpx_linux_i686.tar.gz
204206
lib2inpx_linux_x86_64.tar.gz
205207

206208
[Bb]in
207209
[Bb]in64
210+
[Bb]in_win32
211+
[Bb]in_win64
208212
[Bb]in_linux_i686
209213
[Bb]in_linux_x86_64
210214

@@ -225,8 +229,12 @@ zlib-?.?.?/contrib/masmx86/*.lst
225229

226230
[Dd]ebug32/
227231
[Dd]ebug64/
232+
[Dd]ebug_win32/
233+
[Dd]ebug_win64/
228234
[Rr]elease32/
229235
[Rr]elease64/
236+
[Rr]elease_win32/
237+
[Rr]elease_win64/
230238

231239
[Dd]ebug_linux_i686/
232240
[Dd]ebug_linux_x86_64/

CMakeLists.txt

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 2.6)
1+
cmake_minimum_required(VERSION 3.0)
22
message(STATUS "Running cmake version ${CMAKE_VERSION}")
33

44
project(InpxCreator)
@@ -13,33 +13,33 @@ message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
1313
set(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)
1818
configure_file("${PROJECT_SOURCE_DIR}/cmake/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
1919
include_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)
3335
else()
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)
3639
endif()
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)
4142
set(BUILD_SHARED_LIBS OFF)
42-
4343
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
4444
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
4545
set(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
6666
execute_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)
7070
else()
7171
set(SRCS_MINIZIP minizip/ioapi.c minizip/ioapi.c minizip/unzip.c minizip/zip.c)
@@ -85,14 +85,14 @@ FILE(GLOB files "misc/*")
8585
install(FILES ${files} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
8686
FILE(GLOB scripts "scripts/*")
8787
install(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)
9191
endif()
9292
install(FILES ${MYSQL_LIB_DIR}/../share/english/errmsg.sys DESTINATION ${DEST_DIR}/language CONFIGURATIONS Release)
9393
install(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)
9898
endif()
@@ -103,6 +103,16 @@ find_package(Glide 0.12 REQUIRED)
103103
# Proper go build structure will be here
104104
set(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+
106116
message(STATUS "Vendoring for go")
107117
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory go/src)
108118
execute_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")
123133
add_custom_target(libget2_exe ALL DEPENDS ${CMAKE_BINARY_DIR}/libget2${CMAKE_EXECUTABLE_SUFFIX})
124134
install(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")
136146
add_custom_target(libmerge_exe ALL DEPENDS ${CMAKE_BINARY_DIR}/libmerge${CMAKE_EXECUTABLE_SUFFIX})
137147
install(PROGRAMS ${CMAKE_BINARY_DIR}/libmerge${CMAKE_EXECUTABLE_SUFFIX} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)

build-release-linux.sh

Lines changed: 0 additions & 59 deletions
This file was deleted.

build-release-win.sh

Lines changed: 0 additions & 101 deletions
This file was deleted.

build-release.sh

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#!/usr/bin/bash -e
2+
3+
# Standard preambule
4+
plain() {
5+
local mesg=$1; shift
6+
printf " ${mesg}\n" "$@" >&2
7+
}
8+
9+
print_warning() {
10+
local mesg=$1; shift
11+
printf "${YELLOW}=> WARNING: ${mesg}${ALL_OFF}\n" "$@" >&2
12+
}
13+
14+
print_msg1() {
15+
local mesg=$1; shift
16+
printf "${GREEN}==> ${mesg}${ALL_OFF}\n" "$@" >&2
17+
}
18+
19+
print_msg2() {
20+
local mesg=$1; shift
21+
printf "${BLUE} -> ${mesg}${ALL_OFF}\n" "$@" >&2
22+
}
23+
24+
print_error() {
25+
local mesg=$1; shift
26+
printf "${RED}==> ERROR: ${mesg}${ALL_OFF}\n" "$@" >&2
27+
}
28+
29+
ALL_OFF=''
30+
BLUE=''
31+
GREEN=''
32+
RED=''
33+
YELLOW=''
34+
35+
readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
36+
ARCH_INSTALLS="${ARCH_INSTALLS:-win32 win64 linux}"
37+
38+
for _mingw in ${ARCH_INSTALLS}; do
39+
40+
case ${_mingw} in
41+
win32)
42+
_arch=win32
43+
_msystem=MINGW32
44+
_dist=bin_win32
45+
_gcc=i686-w64-mingw32-gcc
46+
;;
47+
win64)
48+
_arch=win64
49+
_msystem=MINGW64
50+
_dist=bin_win64
51+
_gcc=x86_64-w64-mingw32-gcc
52+
;;
53+
linux)
54+
_msystem=
55+
_os=$(uname)
56+
_arch=${_os,,}_$(uname -m)
57+
_dist=bin_${_arch}
58+
_gcc=gcc
59+
;;
60+
esac
61+
62+
if command -v ${_gcc} >/dev/null 2>&1; then
63+
64+
print_msg1 "Building ${_arch} release"
65+
66+
[ -d ${_dist} ] && rm -rf ${_dist}
67+
68+
[ -d Release_${_arch} ] && rm -rf Release_${_arch}
69+
mkdir -p Release_${_arch}
70+
71+
(
72+
cd Release_${_arch}
73+
74+
if [ -z ${_msystem} ]; then
75+
cmake -DCMAKE_BUILD_TYPE=Release ..
76+
make install
77+
else
78+
MSYSTEM=${_msystem} cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=cmake/${_arch}.toolchain ..
79+
MSYSTEM=${_msystem} make install
80+
fi
81+
)
82+
83+
(
84+
[ -f lib2inpx-${_arch}.7z ] && rm lib2inpx-${_arch}.7z
85+
86+
cd ${_dist}
87+
88+
7z a -r ../lib2inpx-${_arch}
89+
)
90+
else
91+
print_warning "You don't have installed mingw-w64 toolchain for ${_mingw}."
92+
fi
93+
done
94+
95+
exit 0
96+

0 commit comments

Comments
 (0)