OSDN Git Service

[General][BUILD][WIP] TRY: Also use LLVM CLANG to build Win32 binary, still not succe...
authorK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 27 Sep 2016 04:05:39 +0000 (13:05 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 27 Sep 2016 04:05:39 +0000 (13:05 +0900)
source/build-cmake/buildvars.dat
source/build-cmake/buildvars_mingw.dat
source/build-cmake/buildvars_mingw_cross_win32.dat
source/build-cmake/cmake/toolchain_win32_cross_linux_llvm.cmake [new file with mode: 0644]
source/build-cmake/config_build_cross_win32.sh

index d17baed..3639b7c 100644 (file)
@@ -1,8 +1,11 @@
-
+###
+#
 MAKEFLAGS_GENERAL="-j6"
 BUILD_TYPE="Relwithdebinfo"
 CMAKE=/usr/bin/cmake
+CMAKE_APPENDFLAG=""
 
+## CLANG
 CCMAKE_CC=clang-3.9
 CCMAKE_CXX=clang++-3.9
 
@@ -12,13 +15,14 @@ MAKEFLAGS_BASE=" \
                -fvectorize -funroll-loops \
                -msse -msse2 \
               "
-              
-MAKEFLAGS_CXX="-g -O3  -std=c++03 ${MAKEFLAGS_BASE} -flto -DNDEBUG" 
-MAKEFLAGS_CC="-g -O3   -std=c11 ${MAKEFLAGS_BASE} -flto -DNDEBUG"
-MAKEFLAGS_LIB_CXX="-flto -g -O3  -std=c++03 ${MAKEFLAGS_BASE} -DNDEBUG" 
-MAKEFLAGS_LIB_CC="-flto -g -O3  -std=c11 ${MAKEFLAGS_BASE}  -DNDEBUG"
+MAKEFLAGS_CXX_BASE="-g -O3  -std=c++03 ${MAKEFLAGS_BASE} -flto -DNDEBUG" 
+MAKEFLAGS_CC_BASE="-g -O3   -std=c11 ${MAKEFLAGS_BASE} -flto -DNDEBUG"
+MAKEFLAGS_LINK_BASE="-g -O3  ${MAKEFLAGS_BASE} -flto"
 
+CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DCMAKE_AR:STRING=llvm-ar-3.9 -DCMAKE_NM:STRING=llvm-nm-3.9 -DCMAKE_RANLIB:STRING=llvm-ranlib-3.9"
+CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DCMAKE_AS:STRING=llvm-as-3.9"
 
+## GCC
 #CCMAKE_CC=gcc-6
 #CCMAKE_CXX=g++-6
 #
@@ -32,27 +36,29 @@ MAKEFLAGS_LIB_CC="-flto -g -O3  -std=c11 ${MAKEFLAGS_BASE}  -DNDEBUG"
 #             -floop-nest-optimize \
 #             -msse -msse2 \
 #             "
-#MAKEFLAGS_CXX="-g -O2 ${MAKEFLAGS_BASE} -flto -DNDEBUG" 
-#MAKEFLAGS_CC="-g -O2  ${MAKEFLAGS_BASE} -flto -DNDEBUG"
-#MAKEFLAGS_LIB_CXX="-flto -g -O2 ${MAKEFLAGS_BASE} -DNDEBUG" 
-#MAKEFLAGS_LIB_CC="-flto -g -O2 ${MAKEFLAGS_BASE}  -DNDEBUG"
+#MAKEFLAGS_CXX_BASE="-g -ggdb -O2 ${MAKEFLAGS_BASE} -flto -ffat-lto-objects -DNDEBUG" 
+#MAKEFLAGS_CC_BASE="-g -ggdb -O2  ${MAKEFLAGS_BASE} -flto -ffat-lto-objects  -DNDEBUG"
+#MAKEFLAGS_LINK_BASE="-g -ggdb -O2  ${MAKEFLAGS_BASE} -flto -fwhole-program"
+#CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DCMAKE_AR:STRING=gcc-ar-6 -DCMAKE_NM:STRING=gcc-nm-6 -DCMAKE_RANLIB:STRING=gcc-ranlib-6"
 
+#################
+#
+#
+MAKEFLAGS_CXX="${MAKEFLAGS_CXX_BASE}"
+MAKEFLAGS_CC="${MAKEFLAGS_CC_BASE}"
+MAKEFLAGS_LIB_CXX="${MAKEFLAGS_CXX_BASE}"
+MAKEFLAGS_LIB_CC="${MAKEFLAGS_CC_BASE}"
 
+CMAKE_LINKFLAG="-g  -O3 ${MAKEFLAGS_LINK_BASE}"
+CMAKE_DLL_LINKFLAG="-g -O3 ${MAKEFLAGS_LINK_BASE}"
 
-CMAKE_APPENDFLAG="-DUSE_MOVIE_SAVER=ON -DUSE_MOVIE_LOADER=ON"
+###################
+#
+#
+CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DUSE_MOVIE_SAVER=ON -DUSE_MOVIE_LOADER=ON"
 CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DLIBAV_ROOT_DIR=/usr/local/ffmpeg-3.1.1"
 CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG}  -DQT5_ROOT_PATH=/opt/Qt5.3.2/5.3/gcc_64"
 
-#CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DCMAKE_AR:STRING=gcc-ar-6 -DCMAKE_NM:STRING=gcc-nm-6 -DCMAKE_RANLIB:STRING=gcc-ranlib-6"
-
-CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DCMAKE_AR:STRING=llvm-ar-3.9 -DCMAKE_NM:STRING=llvm-nm-3.9 -DCMAKE_RANLIB:STRING=llvm-ranlib-3.9"
-CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DCMAKE_AS:STRING=llvm-asr-3.9"
-
-
-
-CMAKE_LINKFLAG="-g  -O3 ${MAKEFLAGS_BASE}"
-CMAKE_DLL_LINKFLAG="-g -O3 ${MAKEFLAGS_BASE}"
-
 LIB_INSTALL="/usr/local/lib/x86_64-linux-gnu/"
 #LIB_INSTALL="/usr/local/lib/"
 #LIB_INSTALL="/usr/lib/x86_64-linux-gnu/"
index 2b75d36..b692c18 100644 (file)
@@ -27,10 +27,10 @@ MAKEFLAGS_CC="-O3  ${MAKEFLAGS_BASE} -DNDEBUG"
 
 MAKEFLAGS_LIB_CXX="-O3 ${MAKEFLAGS_BASE} -DNDEBUG" 
 MAKEFLAGS_LIB_CC="-O3 ${MAKEFLAGS_BASE}  -DNDEBUG"
-#MAKEFLAGS_CXX="-O0 -flto -DNDEBUG" 
-#MAKEFLAGS_CC="-O0 -flto -DNDEBUG"
+#MAKEFLAGS_LIB_CXX="-O0 -flto -DNDEBUG" 
+#MAKEFLAGS_LIB_CC="-O0 -flto -DNDEBUG"
 
-MAKEFLAGS_GENERAL="-j4"
+MAKEFLAGS_GENERAL="-j3"
 
 #CMAKE_LINKFLAG="-DCMAKE_EXE_LINKER_FLAGS:STRING=-s -O3 -flto ${MAKEFLAGS_BASE} -fwhole-program -static-libgcc -static-libstdc++"
 CMAKE_LINKFLAG="-DCMAKE_EXE_LINKER_FLAGS:STRING=-s -static-libgcc -static-libstdc++"
index af73127..ba4a07b 100644 (file)
@@ -1,46 +1,57 @@
 #CMAKE=/usr/bin/cmake
 #TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
+#TOOLCHAIN_SCRIPT="../../cmake/toolchain_win32_cross_linux_llvm.cmake"
 
 BUILD_TYPE="Release"
 
-#MAKEFLAGS_BASE="-fvect-cost-model=dynamic -ftree-vectorize \
-#               -ftree-loop-distribute-patterns \
-#              -ftree-loop-optimize -ftree-loop-if-convert-stores \
-#              -fbranch-probabilities -fbranch-target-load-optimize \
-#              -fselective-scheduling -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops \
-#               -funroll-loops \
-#              -fgraphite-identity \
-#              -floop-nest-optimize \
-#              "
+## MinGW GCC
 MAKEFLAGS_BASE="-fvect-cost-model=dynamic -ftree-vectorize \
                -ftree-loop-optimize -ftree-loop-if-convert-stores \
                -fselective-scheduling -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops \
+               -funroll-loops \
+               -floop-nest-optimize \
                -msse -msse2 -mfpmath=sse"
-#MAKEFLAGS_BASE="-fvect-cost-model=dynamic -ftree-vectorize \
-#             -ftree-loop-optimize -ftree-loop-if-convert-stores \
-#             "
-
-MAKEFLAGS_CXX="-O2 ${MAKEFLAGS_BASE} -DNDEBUG" 
-MAKEFLAGS_CC="-O2 ${MAKEFLAGS_BASE} -DNDEBUG"
-#MAKEFLAGS_CXX="-O2 -flto -ffat-lto-objects -DNDEBUG" 
-#MAKEFLAGS_CC="-O2 -flto -ffat-lto-objects -DNDEBUG"
-
-MAKEFLAGS_LIB_CXX="-O2 ${MAKEFLAGS_BASE} -DNDEBUG" 
-MAKEFLAGS_LIB_CC="-O2 ${MAKEFLAGS_BASE}  -DNDEBUG"
-#MAKEFLAGS_LIB_CXX="-O2 -flto -ffat-lto-objects -DNDEBUG" 
-#MAKEFLAGS_LIB_CC="-O2 -flto -ffat-lto-objects -DNDEBUG"
-
-MAKEFLAGS_GENERAL="-j2"
-
-#CMAKE_LINKFLAG="-static-libstdc++ -static-libgcc"
-CMAKE_LINKFLAG="-s"
-CMAKE_APPENDFLAG="-DUSE_QT5_4_APIS=ON -DUSE_MOVIE_LOADER=ON -DUSE_MOVIE_SAVER=ON"
-#CMAKE_APPENDFLAG="-DCMAKE_AR:STRING=i686-w64-mingw32-gcc-ar \
-#                   -DCMAKE_LD:STRING=i686-w64-mingw32-gcc-ld \
-#                 -DCMAKE_NM:STRING=i686-w64-mingw32-gcc-nm \
-#                 -DCMAKE_RANLIB:STRING=i686-w64-mingw32-gcc-ranlib \
+               
+MAKEFLAGS_BASE2="-flto -O3 ${MAKEFLAGS_BASE} -DNDEBUG"
+#MAKEFLAGS_BASE2="-g -ggdb -DNDEBUG"
+
+MAKEFLAGS_CXX="${MAKEFLAGS_BASE2}"
+MAKEFLAGS_CC="${MAKEFLAGS_BASE2}"
+MAKEFLAGS_LIB_CXX="${MAKEFLAGS_BASE2}"
+MAKEFLAGS_LIB_CC="${MAKEFLAGS_BASE2}"
+
+MAKEFLAGS_LINK_BASE="-s ${MAKEFLAGS_BASE2}"
+#MAKEFLAGS_LINK_BASE="-g -ggdb ${MAKEFLAGS_BASE2}"
+CMAKE_LINKFLAG="${MAKEFLAGS_LINK_BASE}"
+CMAKE_DLL_LINKFLAG="${MAKEFLAGS_LINK_BASE}"
+
+CMAKE_APPENDFLAG="-DUSE_QT5_4_APIS=ON -DUSE_MOVIE_LOADER=ON \
+                   -DUSE_MOVIE_SAVER=ON \
+                   -DCMAKE_AR:STRING=i686-w64-mingw32-gcc-ar \
+                   -DCMAKE_LD:STRING=i686-w64-mingw32-gcc-ld \
+                  -DCMAKE_NM:STRING=i686-w64-mingw32-gcc-nm \
+                  -DCMAKE_RANLIB:STRING=i686-w64-mingw32-gcc-ranlib \
+                  "
+
+## LLVM
+#MAKEFLAGS_BASE="-target i686-w64-mingw32"
+#CMAKE_APPENDFLAG="-DUSE_QT5_4_APIS=ON -DUSE_MOVIE_LOADER=ON \
+#                   -DUSE_MOVIE_SAVER=ON \
+#                   -DCMAKE_AR:STRING=llvm-ar-3.9 \
+#                   -DCMAKE_LD:STRING=llvm-ld-3.9 \
+#                 -DCMAKE_NM:STRING=llvm-nm-3.9 \
+#                 -DCMAKE_RANLIB:STRING=llvm-ranlib-3.9 \
 #                 "
+#MAKEFLAGS_CXX="-flto -O2 ${MAKEFLAGS_BASE} -DNDEBUG" 
+#MAKEFLAGS_CC="-flto -O2 ${MAKEFLAGS_BASE} -DNDEBUG"
+#MAKEFLAGS_LIB_CXX="-flto -O2 ${MAKEFLAGS_BASE} -DNDEBUG" 
+#MAKEFLAGS_LIB_CC="-flto -O2 ${MAKEFLAGS_BASE}  -DNDEBUG"
+#CMAKE_LINKFLAG="-s -flto"
+#CMAKE_DLL_LINKFLAG="-s -flto"
+#CMAKE_LINKFLAG="-g  -ggdb"
+#CMAKE_DLL_LINKFLAG="-g  -ggdb"
 
 CMAKE_APPENDFLAG="${CMAKE_APPENDFLAG} -DLIBAV_ROOT_DIR=/usr/local/i586-mingw-msvc/ffmpeg-3.1.1"
+MAKEFLAGS_GENERAL="-j5"
 
 
diff --git a/source/build-cmake/cmake/toolchain_win32_cross_linux_llvm.cmake b/source/build-cmake/cmake/toolchain_win32_cross_linux_llvm.cmake
new file mode 100644 (file)
index 0000000..455b620
--- /dev/null
@@ -0,0 +1,61 @@
+# the name of the target operating system
+SET(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+SET(CMAKE_C_COMPILER clang-3.9)
+SET(CMAKE_CXX_COMPILER clang++-3.9)
+SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
+SET(CMAKE_AR  llvm-ar-3.9)
+
+#set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
+#set(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++")
+set(CMAKE_EXE_LINKER_FLAGS "-target i686-w64-mingw32 -flto")
+
+#SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> --plugin==$(i686-264-mingw32-gcc --print-file-name=liblto_plugin.so) <LINK_FLAGS> <OBJECTS>")
+#SET(CMAKE_C_ARCHIVE_FINISH   true)
+#SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> --plugin==$(i686-264-mingw32-gcc --print-file-name=liblto_plugin.so) <LINK_FLAGS> <OBJECTS>")
+#SET(CMAKE_CXX_ARCHIVE_FINISH   true)
+
+set(LIBAV_ROOT_DIR "/usr/local/i586-mingw-msvc/ffmpeg-3.1.1")
+
+# here is the target environment located
+set(USE_SDL2 ON)
+if(USE_SDL2)
+   SET(CMAKE_FIND_ROOT_PATH  /usr/i686-w64-mingw32 
+                          /usr/local/i586-mingw-msvc
+                          /usr/local/i586-mingw-msvc/SDL2/i686-w64-mingw32
+                         /usr/local/i586-mingw-msvc/5.7/mingw_611
+#                        /usr/local/i586-mingw-msvc/5.5/mingw_530_win32
+                         )
+else()
+   SET(CMAKE_FIND_ROOT_PATH  /usr/i686-w64-mingw32 
+                          /usr/local/i586-mingw-msvc
+                          /usr/local/i586-mingw-msvc/SDL1/
+                         /usr/local/i586-mingw-msvc/5.7/mingw_611
+#                        /usr/local/i586-mingw-msvc/5.5/mingw_530_win32
+                         )
+endif()
+SET(CSP_CROSS_BUILD 1)
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search 
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+#set(LIBAV_INCLUDE_DIRS /usr/local/i586-mingw-msvc/ffmpeg-3.0/include)
+
+set(SDL2_LIBRARIES
+                         /usr/local/i586-mingw-msvc/SDL/i686-w64-mingw32/lib/libSDL2.dll.a 
+                        /usr/local/i586-mingw-msvc/SDL/i686-w64-mingw32/lib/libSDL2main.a)
+set(SDL2_INCLUDE_DIRS /usr/local/i586-mingw-msvc/SDL/i686-w64-mingw32/include/SDL2)
+
+set(SDL_LIBRARIES
+                         /usr/local/i586-mingw-msvc/SDL1/lib/libSDL.dll.a 
+                        /usr/local/i586-mingw-msvc/SDL1/lib/libSDLmain.a)
+set(SDL_INCLUDE_DIRS /usr/local/i586-mingw-msvc/SDL1/include/SDL)
+
+set(SDLMAIN_LIBRARY "")
+
+set(ADDITIONAL_LIBRARIES libwinmm.a)
index 34833e1..3c5af4b 100755 (executable)
@@ -2,6 +2,7 @@
 
 CMAKE=/usr/bin/cmake
 TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
+#TOOLCHAIN_SCRIPT="../../cmake/toolchain_win32_cross_linux_llvm.cmake"
 
 MAKEFLAGS_CXX="-g -O3 -DNDEBUG"
 MAKEFLAGS_CC="-g -O3 -DNDEBUG"
@@ -10,6 +11,7 @@ CMAKE_APPENDFLAG=""
 export WINEDEBUG="-all"
 CMAKE_LINKFLAG=""
 CMAKE_APPENDFLAG=""
+MAKEFLAGS_GENERAL="-j4"
 
 mkdir -p ./bin-win32/
 
@@ -17,8 +19,6 @@ if [ -e ./buildvars_mingw_cross_win32.dat ] ; then
     . ./buildvars_mingw_cross_win32.dat
 fi
 
-MAKEFLAGS_GENERAL="-j4"
-
 # To use MOC, please enable wine as interpreter of EXEs , below:
 # $ sudo update-binfmts --install Win32_Wine /usr/bin/wine --extension exe . 
 # Compatible with GCC-4.9 (-fabi-version=8)
@@ -28,7 +28,6 @@ MAKEFLAGS_CC="${MAKEFLAGS_CC} -DWINVER=0x501"
 MAKEFLAGS_LIB_CXX="${MAKEFLAGS_LIB_CXX} -DWINVER=0x501"
 MAKEFLAGS_LIB_CC="${MAKEFLAGS_LIB_CC} -DWINVER=0x501"
 
-
 function build_dll() {
     mkdir -p $1/build-win32
     cd $1/build-win32