build: offer windows 64 bit build (issue #300)

* update to clang/llvm to 3.9
* update to qt 5.8
* fixed windows javapathdetector for 64 bit java.
* added LibGui as dependency to tests
* fixed legacy Java 6 install necessary on MacOS
* fixed setting of user path for 64 bit build
* added missing pngs to windows installer
* renamed graph zoom button images
* reverted moving of setupLogging call to fix crash on deployed exe

fortune cookie message = An old acquaintance will enter your life.
This commit is contained in:
malte_langkabel
2017-02-03 14:31:43 +01:00
parent 8c0f9f2de4
commit 7f2db69995
250 changed files with 1173 additions and 1075 deletions
+6 -6
View File
@@ -19,28 +19,28 @@ then
if [ "$2" = "test" ]
then
#echo "release test"
cd bin/test && Release/Coati_test
cd bin/test && ../../build/Release/Release/test/Coati_test
elif [ "$2" = "keygen" ]
then
#echo "release keygen"
cd bin/license_generator && Release/Coati_license_generator
cd bin/license_generator && ../../build/Release/Release/license_generator/Coati_license_generator
else
#echo "release app"
cd bin/app && Release/Coati
cd bin/app && ../../build/Release/Release/app/Coati
fi
elif [ "$1" = "debug" ] || [ "$1" = "d" ]
then
if [ "$2" = "test" ]
then
#echo "debug test"
cd bin/test && Debug/Coati_test
cd bin/test && ../../build/Debug/Debug/test/Coati_test
elif [ "$2" = "keygen" ]
then
#echo "debug keygen"
cd bin/license_generator && Debug/Coati_license_generator
cd bin/license_generator && ../../build/Debug/Debug/license_generator/Coati_license_generator
else
#echo "debug app"
cd bin/app && Debug/Coati
cd bin/app && ../../build/Debug/Debug/app/Coati
fi
else
echo "no arguments: first argument 'release' or 'debug', second argument 'test' for tests"
+9 -16
View File
@@ -30,27 +30,20 @@ cd $ROOT_DIR/
if [ $PLATFORM == "Windows" ]; then
BACKSLASHED_ROOT_DIR="${ROOT_DIR//\//\\}"
# Remove symbolic links
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\bin\app\Debug\data' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\bin\app\Debug\user' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\bin\app\Release\data' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\bin\app\Release\user' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win32\Debug\app\data' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win32\Debug\app\user' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win32\Release\app\data' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win32\Release\app\user' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win64\Debug\app\data' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win64\Debug\app\user' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win64\Release\app\data' &
cmd //c 'rmdir '$BACKSLASHED_ROOT_DIR'\build\win64\Release\app\user' &
fi
# Remove folders and contents
rm -rf java_indexer/bin
rm -rf java_indexer/lib
rm -rf build
rm -rf bin/app/Debug
rm -rf bin/app/Release
rm -rf bin/lib/Debug
rm -rf bin/lib/Release
rm -rf bin/test/Debug
rm -rf bin/test/Release
rm -rf bin/gen
rm -rf bin/lib
rm -rf bin/lib_gui
rm -rf bin/lib_license
rm -rf bin/lib_parser
rm -rf bin/license_generator
# Remove log files
find bin/test/data/log -type f -name 'log*' -delete
+7 -2
View File
@@ -1,10 +1,11 @@
MY_PATH=`dirname "$0"`
ICON_INPUT_PATH=$MY_PATH/../bin/app/data/gui/icon
ICON_OUTPUT_PATH=$MY_PATH/../build
ICON_SIZES_PATH=$ICON_INPUT_PATH/sizes
ICON_BUILD_PATH=$ICON_INPUT_PATH/build
mkdir -p $ICON_SIZES_PATH
mkdir -p $ICON_BUILD_PATH
convert $ICON_INPUT_PATH/logo_1024_1024.png -resize 16x16 $ICON_SIZES_PATH/icon_16.png
convert $ICON_INPUT_PATH/logo_1024_1024.png -resize 24x24 $ICON_SIZES_PATH/icon_24.png
@@ -15,6 +16,10 @@ convert $ICON_INPUT_PATH/logo_1024_1024.png -resize 64x64 $ICON_SIZES_PATH/icon_
convert $ICON_INPUT_PATH/logo_1024_1024.png -resize 128x128 $ICON_SIZES_PATH/icon_128.png
convert $ICON_INPUT_PATH/logo_1024_1024.png -resize 256x256 $ICON_SIZES_PATH/icon_256.png
convert $ICON_SIZES_PATH/icon_16.png $ICON_SIZES_PATH/icon_24.png $ICON_SIZES_PATH/icon_32.png $ICON_SIZES_PATH/icon_40.png $ICON_SIZES_PATH/icon_48.png $ICON_SIZES_PATH/icon_64.png $ICON_SIZES_PATH/icon_128.png $ICON_SIZES_PATH/icon_256.png -colors 256 $ICON_OUTPUT_PATH/coati.ico
convert $ICON_SIZES_PATH/icon_16.png $ICON_SIZES_PATH/icon_24.png $ICON_SIZES_PATH/icon_32.png $ICON_SIZES_PATH/icon_40.png $ICON_SIZES_PATH/icon_48.png $ICON_SIZES_PATH/icon_64.png $ICON_SIZES_PATH/icon_128.png $ICON_SIZES_PATH/icon_256.png -colors 256 $ICON_BUILD_PATH/coati.ico
cp $ICON_BUILD_PATH/coati.ico $MY_PATH/../build/win32
cp $ICON_BUILD_PATH/coati.ico $MY_PATH/../build/win64
rm -rf $ICON_SIZES_PATH
rm -rf $ICON_BUILD_PATH
+87 -41
View File
@@ -1,4 +1,5 @@
# FLAGS
CLEAN_AND_SETUP=true
REBUILD=true
OBFUSCATE=true
UPDATE_DATABASES=true
@@ -16,6 +17,10 @@ BASE_DIR=`dirname "$CLEANED_PATH_TO_SCRIPT"`
cd $BASE_DIR/..
if [ $CLEAN_AND_SETUP = false ]; then
echo -e "$INFO CLEAN_AND_SETUP flag is set to false. Do you want to proceed?"
read -p "Press [Enter] key to continue"
fi
if [ $REBUILD = false ]; then
echo -e "$INFO REBUILD flag is set to false. Do you want to proceed?"
@@ -44,21 +49,30 @@ rm -rf src/lib_gui/platform_includes/deploy.h
echo "#define DEPLOY" >src/lib_gui/platform_includes/deploy.h
### TODO: RUN CMAKE!
### TODO: add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild
# CLEANING THE PROJECT
if [ $REBUILD = true ]; then
if [ $CLEAN_AND_SETUP = true ]; then
echo -e "$INFO cleaning the project"
"devenv.com" build/Coati.sln //clean Release
script/clean.sh
echo -e "$INFO setting the project up"
script/setup.sh
fi
# BUILDING THE EXECUTABLE
echo -e "$INFO building the executable (app)"
"devenv.com" build/Coati.sln //build Release //project build/Coati.vcxproj
# CLEANING THE SOLUTIONS
if [ $REBUILD = true ]; then
echo -e "$INFO cleaning the solution"
"devenv.com" build/win32/Coati.sln //clean Release
"devenv.com" build/win64/Coati.sln //clean Release
fi
# BUILDING THE EXECUTABLES
echo -e "$INFO building the app (32 bit)"
"devenv.com" build/win32/Coati.sln //build Release //project build/win32/Coati.vcxproj
echo -e "$INFO building the app (64 bit)"
"devenv.com" build/win64/Coati.sln //build Release //project build/win64/Coati.vcxproj
# CREATING DATABASES
@@ -74,35 +88,41 @@ if [ $UPDATE_DATABASES = true ]; then
cd temp
echo -e "$INFO saving license key"
../bin/app/Release/Coati.exe -z ../script/license.txt
../build/win32/Release/app/Coati.exe -z ../script/license.txt
echo -e "$INFO creating database for tictactie"
../bin/app/Release/Coati.exe -p ../bin/app/user/projects/tictactoe/tictactoe.coatiproject -d
../build/win32/Release/app/Coati.exe -p ../bin/app/user/projects/tictactoe/tictactoe.coatiproject -d
echo -e "$INFO creating database for tutorial"
../bin/app/Release/Coati.exe -p ../bin/app/user/projects/tutorial/tutorial.coatiproject -d
../build/win32/Release/app/Coati.exe -p ../bin/app/user/projects/tutorial/tutorial.coatiproject -d
echo -e "$INFO creating database for javaparser"
../bin/app/Release/Coati.exe -p ../bin/app/user/projects/javaparser/javaparser.coatiproject -d
../build/win32/Release/app/Coati.exe -p ../bin/app/user/projects/javaparser/javaparser.coatiproject -d
cd ..
rm -rf temp
fi
# OBFUSCATING THE EXECUTABLE
# OBFUSCATING THE EXECUTABLES
if [ $OBFUSCATE = true ]; then
echo -e "$INFO obfuscating the executables"
rm bin/app/Release/Coati_obfuscated.exe
upx --brute -o bin/app/Release/Coati_obfuscated.exe bin/app/Release/Coati.exe
echo -e "$INFO obfuscating the executable (32 bit)"
rm build/win32/Release/app/Coati_obfuscated.exe
upx --brute -o build/win32/Release/app/Coati_obfuscated.exe build/win32/Release/app/Coati.exe
echo -e "$INFO obfuscating the executable (64 bit)"
rm build/win64/Release/app/Coati_obfuscated.exe
upx --brute -o build/win64/Release/app/Coati_obfuscated.exe build/win64/Release/app/Coati.exe
else
cp bin/app/Release/Coati.exe bin/app/Release/Coati_obfuscated.exe
cp build/win32/Release/app/Coati.exe build/win32/Release/app/Coati_obfuscated.exe
cp build/win64/Release/app/Coati.exe build/win64/Release/app/Coati_obfuscated.exe
fi
# BUILDING THE INSTALLER
cd deployment/windows/wixSetup
build.bat
build_win32.sh
build_win64.sh
cd ../../..
@@ -112,42 +132,68 @@ VERSION_STRING="${VERSION_STRING//-/_}"
VERSION_STRING="${VERSION_STRING//./_}"
VERSION_STRING="${VERSION_STRING%_*}"
APP_PACKAGE_NAME=Coati_${VERSION_STRING}
echo -e "$INFO creating package folder for win32"
APP_PACKAGE_NAME_WIN32=Coati_${VERSION_STRING}_32bit
APP_PACKAGE_DIR_WIN32=release/$APP_PACKAGE_NAME_WIN32
APP_PACKAGE_DIR=release/$APP_PACKAGE_NAME
rm -rf $APP_PACKAGE_DIR_WIN32
mkdir -p $APP_PACKAGE_DIR_WIN32
echo -e "$INFO creating package folder"
rm -rf $APP_PACKAGE_DIR
mkdir -p $APP_PACKAGE_DIR
cp -u -r deployment/windows/wixSetup/bin/win32/* $APP_PACKAGE_DIR_WIN32/
cp -u -r deployment/windows/wixSetup/bin/* $APP_PACKAGE_DIR/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/atom/
cp -u -r ide_plugins/atom/* $APP_PACKAGE_DIR_WIN32/plugins/atom/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/eclipse/
cp -u -r ide_plugins/eclipse/* $APP_PACKAGE_DIR_WIN32/plugins/eclipse/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/emacs/
cp -u -r ide_plugins/emacs/* $APP_PACKAGE_DIR_WIN32/plugins/emacs/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/idea/
cp -u -r ide_plugins/idea/* $APP_PACKAGE_DIR_WIN32/plugins/idea/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/sublime_text/
cp -u -r ide_plugins/sublime_text/* $APP_PACKAGE_DIR_WIN32/plugins/sublime_text/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/vim/
cp -u -r ide_plugins/vim/* $APP_PACKAGE_DIR_WIN32/plugins/vim/
mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/visual_studio/
cp -u -r ide_plugins/vs/coati_plugin_vs.vsix $APP_PACKAGE_DIR_WIN32/plugins/visual_studio/
mkdir -p $APP_PACKAGE_DIR/plugins/atom/
cp -u -r ide_plugins/atom/* $APP_PACKAGE_DIR/plugins/atom/
mkdir -p $APP_PACKAGE_DIR/plugins/eclipse/
cp -u -r ide_plugins/eclipse/* $APP_PACKAGE_DIR/plugins/eclipse/
mkdir -p $APP_PACKAGE_DIR/plugins/emacs/
cp -u -r ide_plugins/emacs/* $APP_PACKAGE_DIR/plugins/emacs/
mkdir -p $APP_PACKAGE_DIR/plugins/idea/
cp -u -r ide_plugins/idea/* $APP_PACKAGE_DIR/plugins/idea/
mkdir -p $APP_PACKAGE_DIR/plugins/sublime_text/
cp -u -r ide_plugins/sublime_text/* $APP_PACKAGE_DIR/plugins/sublime_text/
mkdir -p $APP_PACKAGE_DIR/plugins/vim/
cp -u -r ide_plugins/vim/* $APP_PACKAGE_DIR/plugins/vim/
mkdir -p $APP_PACKAGE_DIR/plugins/visual_studio/
cp -u -r ide_plugins/vs/coati_plugin_vs.vsix $APP_PACKAGE_DIR/plugins/visual_studio/
echo -e "$INFO creating package folder for win64"
APP_PACKAGE_NAME_WIN64=Coati_${VERSION_STRING}_64bit
APP_PACKAGE_DIR_WIN64=release/$APP_PACKAGE_NAME_WIN64
rm -rf $APP_PACKAGE_DIR_WIN64
mkdir -p $APP_PACKAGE_DIR_WIN64
cp -u -r deployment/windows/wixSetup/bin/win64/* $APP_PACKAGE_DIR_WIN64/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/atom/
cp -u -r ide_plugins/atom/* $APP_PACKAGE_DIR_WIN64/plugins/atom/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/eclipse/
cp -u -r ide_plugins/eclipse/* $APP_PACKAGE_DIR_WIN64/plugins/eclipse/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/emacs/
cp -u -r ide_plugins/emacs/* $APP_PACKAGE_DIR_WIN64/plugins/emacs/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/idea/
cp -u -r ide_plugins/idea/* $APP_PACKAGE_DIR_WIN64/plugins/idea/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/sublime_text/
cp -u -r ide_plugins/sublime_text/* $APP_PACKAGE_DIR_WIN64/plugins/sublime_text/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/vim/
cp -u -r ide_plugins/vim/* $APP_PACKAGE_DIR_WIN64/plugins/vim/
mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/visual_studio/
cp -u -r ide_plugins/vs/coati_plugin_vs.vsix $APP_PACKAGE_DIR_WIN64/plugins/visual_studio/
# PACKAGING COATI
echo -e "$INFO packaging coati"
cd ./release/
winrar a -afzip ${APP_PACKAGE_NAME}_Windows.zip $APP_PACKAGE_NAME
winrar a -afzip Coati_${VERSION_STRING}_Windows_32bit.zip $APP_PACKAGE_NAME_WIN32
winrar a -afzip Coati_${VERSION_STRING}_Windows_64bit.zip $APP_PACKAGE_NAME_WIN64
cd ../
# CLEANING UP
echo -e "$INFO Cleaning"
rm -rf $APP_PACKAGE_DIR
echo -e "$INFO Cleaning package folders"
rm -rf $APP_PACKAGE_DIR_WIN32
rm -rf $APP_PACKAGE_DIR_WIN64
# UNSETTING THE DEPLOY FLAG
+13
View File
@@ -0,0 +1,13 @@
-----BEGIN LICENSE-----
Malte Langkabel
Private/Academic Single User License
Coati 0
$9$AQAKVgXEpRqHfGMwWj/TA5YWrVmWWJrk5PmADbFYkewV7Ddvq+JV
nT+lDlImNpfRQDY4YTJDYc0B/IW5n8ccn21HqLkRvR5t8T5/GvUzRNZ
PnZfA/sE0tVBpS1IMEhUd5JIztHKXHFDdwcvIS7Z+y6vxn0knD0/VF4
RjvvgicxikAnfF9cNxTb3IYAaUSREFTPejX6JABSai0jJhZLR4P9upK
rj6OYFerGI2/+6D2UyBJhaAc2P3zcd2ivd01IRjJNeXlGA3r5mCcl5y
SuPtreW3Yyq/uafyP1rV6uASIb+3oV6Y+jTo1kFYqEh8tjmrxOHbJLu
3+wHyJgMu5fLhJFWAKyxPjVbY5A0nvQAb0F+ROSZZ5IiKKCYIcofcxt
HrBYDDdP0rJw==
-----END LICENSE-----
+56 -22
View File
@@ -56,40 +56,66 @@ fi
# Create Debug and Release folders
echo -e $INFO "create build folders"
mkdir -p build
mkdir -p bin/app/Debug
mkdir -p bin/app/Release
mkdir -p bin/lib/Debug
mkdir -p bin/lib/Release
mkdir -p bin/test/Debug
mkdir -p bin/test/Release
if [ $PLATFORM == "Windows" ]; then
mkdir -p build/win32/Debug/app
mkdir -p build/win32/Debug/test
mkdir -p build/win32/Release/app
mkdir -p build/win32/Release/test
mkdir -p build/win64/Debug/app
mkdir -p build/win64/Debug/test
mkdir -p build/win64/Release/app
mkdir -p build/win64/Release/test
else
mkdir -p build/Debug/app
mkdir -p build/Debug/test
mkdir -p build/Release/app
mkdir -p build/Release/test
fi
# Copy necessary dynamic libraries to bin folder
if [ $PLATFORM == "Windows" ]; then
echo -e $INFO "copy dynamic libraries"
cp -u -r setup/dynamic_libraries/windows/app/Debug/* bin/app/Debug
cp -u -r setup/dynamic_libraries/windows/app/Release/* bin/app/Release
cp -u -r setup/dynamic_libraries/win32/app/Debug/* build/win32/Debug/app
cp -u -r setup/dynamic_libraries/win32/app/Release/* build/win32/Release/app
cp -u -r setup/dynamic_libraries/win64/app/Debug/* build/win64/Debug/app
cp -u -r setup/dynamic_libraries/win64/app/Release/* build/win64/Release/app
cp -u -r setup/dynamic_libraries/win32/app/Debug/Qt5* build/win32/Debug/test
cp -u -r setup/dynamic_libraries/win32/app/Debug/platforms* build/win32/Debug/test/platforms
cp -u -r setup/dynamic_libraries/win32/app/Release/Qt5* build/win32/Release/test
cp -u -r setup/dynamic_libraries/win32/app/Release/platforms* build/win32/Release/test/platforms
cp -u -r setup/dynamic_libraries/win64/app/Debug/Qt5* build/win64/Debug/test
cp -u -r setup/dynamic_libraries/win64/app/Debug/platforms* build/win64/Debug/test/platforms
cp -u -r setup/dynamic_libraries/win64/app/Release/Qt5* build/win64/Release/test
cp -u -r setup/dynamic_libraries/win64/app/Release/platforms* build/win64/Release/test/platforms
echo -e $INFO "copy test_main file"
cp -u setup/cxx_test/windows/test_main.cpp build
cp -u setup/cxx_test/windows/test_main.cpp build/win32
cp -u setup/cxx_test/windows/test_main.cpp build/win64
echo -e $INFO "creating program icon"
sh script/create_windows_icon.sh
fi
echo -e $INFO "create symbolic links for data"
if [ $PLATFORM == "Windows" ]; then
BACKSLASHED_ROOT_DIR="${ROOT_DIR//\//\\}"
echo -e $INFO "create symbolic links for data"
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\bin\app\Debug\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\bin\app\Debug\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\bin\app\Release\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\bin\app\Release\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Debug\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Debug\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Release\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Release\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Debug\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Debug\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Release\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Release\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
elif [ $PLATFORM == "Linux" ]; then
echo -e $INFO "create symbolic links for data"
cd $ROOT_DIR/bin/app/Release
ln -s -f ../data
cd $ROOT_DIR/bin/app/Debug
ln -s -f ../data
cd $ROOT_DIR/build/Release/app
ln -s -f $ROOT_DIR/bin/app/data
cd $ROOT_DIR/build/Debug/app
ln -s -f $ROOT_DIR/bin/app/data
cd $ROOT_DIR
fi
@@ -103,6 +129,14 @@ if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
echo -e $INFO "run cmake with Release configuration"
cd ../Release && cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" ../..
else
echo -e $INFO "run cmake with 32 bit configuration"
cd build/win32
cmake -G "Visual Studio 14 2015" ../..
cd ../win64
cmake -G "Visual Studio 14 2015 Win64" ../..
fi
echo -e $SUCCESS "setup complete"