OK, does it matter in which order "extern" and "declspec" appear?
[metze/wireshark/wip.git] / CMakeLists.txt
index b4aa40805e59ad193fbae92b865f42d2c77f3296..afbcbf2efd1603e8f8a5edd1833fd1e6c8835865 100644 (file)
@@ -27,11 +27,29 @@ cmake_minimum_required(VERSION 2.6)
 set(CMAKE_BACKWARDS_COMPATIBILITY 2.6)
 
 # Needs to be set after cmake_minimum_required or cmake_policy(VERSION)
-if(COMMAND cmake_policy)
-       # Backward compatibility for versions < 2.6.3
-       cmake_policy(SET CMP0011 OLD)
-#      cmake_policy(SET CMP0015 NEW)
-endif(COMMAND cmake_policy)
+# Policy since 2.6.1
+cmake_policy(SET CMP0008 NEW)
+# Policy since 2.6.3
+# Backward compatibility for versions < 2.6.3
+cmake_policy(SET CMP0011 OLD)
+# Policy since 2.8.1
+#cmake_policy(SET CMP0015 NEW)
+# Policy since 2.8.11
+if( ${CMAKE_MAJOR_VERSION} GREATER 2 OR
+    ${CMAKE_MINOR_VERSION} GREATER 8 OR
+    (${CMAKE_MINOR_VERSION} EQUAL 8 AND ${CMAKE_PATCH_VERSION} GREATER 10) )
+       # Don't: Automatically link Qt executable to qtmain target on Windows
+       cmake_policy(SET CMP0020 OLD)
+endif()
+
+# This cannot be implemented via option(...)
+if( NOT CMAKE_BUILD_TYPE )
+  set( CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
+      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+      FORCE)
+endif()
+message(STATUS "Configuration types: ${CMAKE_CONFIGURATION_TYPES}")
+message(STATUS "${CMAKE_BUILD_TYPE}: ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
 
 # set(PROJECT_MAJOR_VERSION 1)
 # set(PROJECT_MINOR_VERSION 9)
@@ -146,8 +164,7 @@ if( CMAKE_C_COMPILER_ID MATCHES "MSVC")
     )
 else()
     set(WIRESHARK_C_FLAGS
-        -O2
-        -g
+       # -O<X> and -g get set by the CMAKE_BUILD_TYPE
         -Wall
         -W
         -Wextra
@@ -204,8 +221,12 @@ else()
     # With clang some tests don't fail properly during testing but only
     # during real compiles
 
-    if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
-
+    if(CMAKE_C_COMPILER_ID MATCHES "Clang")
+        set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS}
+            -Qunused-arguments
+            #-fcolor-diagnostics
+        )
+    else()
         set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS}
             -fexcess-precision=fast
         )
@@ -284,10 +305,10 @@ endif()
 
 
 if( CMAKE_C_COMPILER_ID MATCHES "MSVC")
-       # Set in Makefile.nmake but doesn't seem to have any effect
-       set(WIRESHARK_LD_FLAGS
-       #       /LARGEADDRESSAWARE
-       )
+       # Set in Makefile.nmake
+       set(WIRESHARK_LD_FLAGS
+               /LARGEADDRESSAWARE
+       )
 else()
        set(WIRESHARK_LD_FLAGS
                -Wl,--as-needed
@@ -334,7 +355,7 @@ endif()
 # - set HAVE_XXX
 
 #The minimum package list
-set(PACKAGELIST GLIB2 GMODULE2 GTHREAD2 M LEX YACC Perl SH PythonInterp)
+set(PACKAGELIST Gettext GLIB2 GMODULE2 GTHREAD2 M LEX YACC Perl SED SH PythonInterp)
 set(GLIB2_FIND_REQUIRED)
 set(GLIB2_MIN_VERSION 2.14.0)
 set(GTHREAD2_REQUIRED)
@@ -452,7 +473,6 @@ set(PACKAGELIST ${PACKAGELIST} YAPP)
 
 set(PACKAGELIST ${PACKAGELIST} POD)
 
-
 set(PROGLIST text2pcap mergecap capinfos editcap reordercap dumpcap)
 
 #Sort the package list
@@ -637,6 +657,8 @@ endif()
 include(gmxTestLargeFiles)
 gmx_test_large_files(GMX_LARGEFILES)
 
+add_definitions( -DTOP_SRCDIR=\"${CMAKE_SOURCE_DIR}\" )
+
 if(APPLE)
        #
        # We assume that APPLE means OS X so that we have the OS X