fix: mingw build
authorIng. Radomír Polách <rp@t4d.cz>
Mon, 5 Sep 2016 21:29:39 +0000 (23:29 +0200)
committerIng. Radomír Polách <rp@t4d.cz>
Mon, 5 Sep 2016 21:29:39 +0000 (23:29 +0200)
CMakeLists.txt
Makefile
blockdev/CMakeLists.txt
toolchain/mingw.cmake [new file with mode: 0644]

index f104b65c0cc4929554e385a14ca5c851e6c1fc43..68a9cb0d2c6aa1e30072c7f4adff11e437207e19 100644 (file)
@@ -36,7 +36,11 @@ elseif(LIB_ONLY)
     add_definitions(-DCONFIG_BLOCK_DEV_CACHE_SIZE=16)
 else()
     #Generic example target
-    set(BLOCKDEV_TYPE  linux)
+    if (WIN32)
+      set(BLOCKDEV_TYPE  windows)
+    else()
+      set(BLOCKDEV_TYPE  linux)
+    endif()
     set (INSTALL_LIB 1)
     add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=0)
     add_definitions(-DCONFIG_HAVE_OWN_ERRNO=0)
index 255aba4a1aeee2adef4def22bf47ed816d28b274..c69247d02548a3b7882700224cb5d96287891ba8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -28,6 +28,13 @@ generic:
        $(COMMON_DEFINITIONS)                                 \
        -DCMAKE_TOOLCHAIN_FILE=../toolchain/generic.cmake ..
 
+mingw:
+       rm -R -f build_mingw
+       mkdir build_mingw
+       cd build_mingw && cmake -G"Unix Makefiles"          \
+       $(COMMON_DEFINITIONS)                                 \
+       -DWIN32=1 \
+       -DCMAKE_TOOLCHAIN_FILE=../toolchain/mingw.cmake ..
 
 avrxmega7:
        rm -R -f build_avrxmega7
index 1da4447a2e0b4c7c01f3112bd19cd9da8eb14b3f..a16e8102b630f100c3bbad9cb60222fb041d1be6 100644 (file)
@@ -1,9 +1,10 @@
 #Blockdev library
 
-if    (BLOCKDEV_TYPE STREQUAL  linux)
-aux_source_directory(linux BLOCKDEV_SRC)
-elseif    (BLOCKDEV_TYPE STREQUAL  windows)
-aux_source_directory(windows BLOCKDEV_SRC)
+if    (WIN32)
+  aux_source_directory(linux BLOCKDEV_SRC)
+  aux_source_directory(windows BLOCKDEV_SRC)
+elseif    (BLOCKDEV_TYPE STREQUAL  linux)
+  aux_source_directory(linux BLOCKDEV_SRC)
 else()
 endif()
 
diff --git a/toolchain/mingw.cmake b/toolchain/mingw.cmake
new file mode 100644 (file)
index 0000000..b251acb
--- /dev/null
@@ -0,0 +1,32 @@
+# Name of the target
+set(CMAKE_SYSTEM_NAME Windows)
+set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
+set(CMAKE_SYSTEM_PROCESSOR mingw)
+
+# Toolchain settings
+set(CMAKE_C_COMPILER    ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER  ${TOOLCHAIN_PREFIX}-g++)
+set(AS                  ${TOOLCHAIN_PREFIX}-as)
+set(AR                  ${TOOLCHAIN_PREFIX}-as)
+set(OBJCOPY             objcopy)
+set(OBJDUMP             objdump)
+set(SIZE                size)
+
+set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
+
+set(CMAKE_C_FLAGS   "-std=gnu99 -fdata-sections -ffunction-sections" CACHE INTERNAL "c compiler flags")
+set(CMAKE_CXX_FLAGS "-fdata-sections -ffunction-sections" CACHE INTERNAL "cxx compiler flags")
+set(CMAKE_ASM_FLAGS "" CACHE INTERNAL "asm compiler flags")
+if (APPLE)
+    set(CMAKE_EXE_LINKER_FLAGS "-dead_strip" CACHE INTERNAL "exe link flags")
+else (APPLE)
+    set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections" CACHE INTERNAL "exe link flags")
+endif (APPLE)
+
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -ggdb3" CACHE INTERNAL "c debug compiler flags")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -ggdb3" CACHE INTERNAL "cxx debug compiler flags")
+SET(CMAKE_ASM_FLAGS_DEBUG "-g -ggdb3" CACHE INTERNAL "asm debug compiler flags")
+
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -g -ggdb3" CACHE INTERNAL "c release compiler flags")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -g -ggdb3" CACHE INTERNAL "cxx release compiler flags")
+SET(CMAKE_ASM_FLAGS_RELEASE "" CACHE INTERNAL "asm release compiler flags")