changeset 834:8081ed84589d

Use static nss from subrepository on windows
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 28 Jul 2014 13:03:45 +0200
parents e1bb60a8129b
children bd9d07c301fd
files CMakeLists.txt INSTALL cinst/CMakeLists.txt packaging/create-dist-package.sh.in packaging/filelist.nsh packaging/tmp-createpackage.sh.in ui/tests/CMakeLists.txt
diffstat 7 files changed, 37 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Mon Jul 28 13:03:00 2014 +0200
+++ b/CMakeLists.txt	Mon Jul 28 13:03:45 2014 +0200
@@ -36,7 +36,17 @@
 
 find_package(Qt5Widgets)
 
-find_package(NSS)
+if (NOT WIN32)
+   find_package(NSS)
+else ()
+   # Use static NSS for Windows
+   if (NOT EXISTS "${CMAKE_SOURCE_DIR}/nss-cmake-static")
+      MESSAGE(FATAL_ERROR "Could not find nss-cmake-static checkout. Please run: \n hg clone https://wald.intevation.org/hg/trustbridge/nss-cmake-static '${CMAKE_SOURCE_DIR}/nss-cmake-static'")
+   endif()
+  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/nss-cmake-static/")
+  set(NSS_STATIC_PATH "${CMAKE_SOURCE_DIR}/nss-cmake-static")
+  include (nss-cmake-static)
+endif()
 
 # Use cmake's automoc and make sure the generated files are included
 set(CMAKE_AUTOMOC ON)
@@ -60,7 +70,7 @@
 set(WARN_HARDENING_FLAGS " -Wextra -Wconversion -Wformat-security")
 
 # Hardening flags
-set(HARDENING_FLAGS " -Wall -Werror -fstack-protector-all -fno-exceptions")
+set(HARDENING_FLAGS " -Wall -fstack-protector-all -fno-exceptions")
 set(HARDENING_FLAGS " ${HARDENING_FLAGS} -Wstack-protector")
 set(HARDENING_FLAGS " ${HARDENING_FLAGS} --param ssp-buffer-size=4")
 set(HARDENING_FLAGS " ${HARDENING_FLAGS} -D_FORTIFY_SOURCE=2 -O0")
@@ -99,6 +109,15 @@
     add_dependencies(static_check flawfinder)
 endif (FLAWFINDER_PATH)
 
+if(WIN32)
+  add_subdirectory(nss-cmake-static)
+  add_definitions(-D_WIN32_WINNT=0x0600) # Windows vista. NSS defines its own winver.
+endif()
+
+# No chance to compile nss with -Werror
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
+
 add_subdirectory(common)
 
 add_subdirectory(cinst)
@@ -113,10 +132,6 @@
 add_subdirectory(doc)
 
 # Configure packaging script for testing
-list(GET NSS_LIBRARIES 1 NSS_BASE_DIR)
-get_filename_component(NSS_BASE_DIR ${NSS_BASE_DIR} PATH)
-
-set(NSS_BASE_DIR "${NSS_BASE_DIR}/..")
 configure_file (packaging/tmp-createpackage.sh.in packaging/tmp-createpackage.sh @ONLY)
 configure_file (packaging/create-dist-package.sh.in packaging/create-dist-package.sh @ONLY)
 configure_file (packaging/linux-createpackage.sh.in packaging/linux-createpackage.sh @ONLY)
--- a/INSTALL	Mon Jul 28 13:03:00 2014 +0200
+++ b/INSTALL	Mon Jul 28 13:03:45 2014 +0200
@@ -63,6 +63,7 @@
 
     hg clone https://wald.intevation.org/hg/trustbridge/
     cd trustbridge
+    hg clone https://wald.intevation.org/hg/trustbridge/nss-cmake-static
     mkdir build-linux
     cd build-linux
     cmake .. -DCMAKE_PREFIX_PATH=$YOURPREFIX
--- a/cinst/CMakeLists.txt	Mon Jul 28 13:03:00 2014 +0200
+++ b/cinst/CMakeLists.txt	Mon Jul 28 13:03:45 2014 +0200
@@ -33,21 +33,21 @@
 
 # ----------------------------------------------------------------------
 # Mozilla nss store specific certificate installer:
+set(MOZILLA_SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/nss-secitemlist.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/mozilla.c
+ )
 
-if(NSS_FOUND)
-  include_directories(${NSS_INCLUDE_DIRS})
-  set(MOZILLA_SOURCES
-    ${CMAKE_CURRENT_SOURCE_DIR}/nss-secitemlist.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/mozilla.c
-    )
-  add_executable(mozilla ${MOZILLA_SOURCES})
-  target_link_libraries(mozilla
-   trustbridge_common
-   ${POLARSSL_LIBRARIES}
-   ${NSS_LIBRARIES}
-   ${PROFILING_LIBS})
- set_target_properties(mozilla PROPERTIES COMPILE_FLAGS "-std=c99")
- install(TARGETS mozilla DESTINATION bin)
+if(WIN32 OR NSS_FOUND)
+   include_directories(${NSS_INCLUDE_DIRS})
+   add_executable(mozilla ${MOZILLA_SOURCES})
+   target_link_libraries(mozilla
+      trustbridge_common
+      ${POLARSSL_LIBRARIES}
+      ${NSS_LIBRARIES}
+      ${PROFILING_LIBS})
+   set_target_properties(mozilla PROPERTIES COMPILE_FLAGS "-std=c99")
+   install(TARGETS mozilla DESTINATION bin)
 else()
    message(STATUS "WARNING: Could not find nss. Mozilla cert installer will not be build!")
 endif()
--- a/packaging/create-dist-package.sh.in	Mon Jul 28 13:03:00 2014 +0200
+++ b/packaging/create-dist-package.sh.in	Mon Jul 28 13:03:45 2014 +0200
@@ -4,11 +4,6 @@
 set -x
 set -e
 
-if [ ! -d "$WINDOWS_NSSDIR" ]; then
-    echo "ERROR: Please set WINDOWS_NSSDIR to the location of your nss binaries"
-    exit 1
-fi
-
 if [ ! -x `which wine` ]; then
     echo "ERROR: Could not find wine."
     exit 1
@@ -36,7 +31,6 @@
 echo "productname_short=TrustBridge" >> $TMPDIR/meta.ini
 echo "description=TrustBridge" >> $TMPDIR/meta.ini
 echo "size=$EST_SIZE" >> $TMPDIR/meta.ini
-cp $WINDOWS_NSSDIR/*.dll $TMPDIR/windows
 
 # Create a temporary NSIS file for the uninstaller cration
 LC_ALL="de_DE.latin-1" makensis -Dfiles_dir=$TMPDIR/windows \
--- a/packaging/filelist.nsh	Mon Jul 28 13:03:00 2014 +0200
+++ b/packaging/filelist.nsh	Mon Jul 28 13:03:45 2014 +0200
@@ -11,16 +11,3 @@
 File "${files_dir}${path_sep}cinst.exe"
 File "${files_dir}${path_sep}trustbridge.exe"
 File "${files_dir}${path_sep}mozilla.exe"
-
-; NSS: This should ultimately be static
-File "${files_dir}${path_sep}nssckbi.dll"
-File "${files_dir}${path_sep}smime3.dll"
-File "${files_dir}${path_sep}nss3.dll"
-File "${files_dir}${path_sep}nssdbm3.dll"
-File "${files_dir}${path_sep}softokn3.dll"
-File "${files_dir}${path_sep}sqlite3.dll"
-File "${files_dir}${path_sep}freebl3.dll"
-File "${files_dir}${path_sep}nssutil3.dll"
-File "${files_dir}${path_sep}libplc4.dll"
-File "${files_dir}${path_sep}libplds4.dll"
-File "${files_dir}${path_sep}libnspr4.dll"
--- a/packaging/tmp-createpackage.sh.in	Mon Jul 28 13:03:00 2014 +0200
+++ b/packaging/tmp-createpackage.sh.in	Mon Jul 28 13:03:45 2014 +0200
@@ -10,13 +10,10 @@
 #NSSDIR is hackish as this will be replaced by static compiling 
 # anyway
 
-NSSDIR="@NSS_BASE_DIR@/bin/"
-
 TMPDIR=$(mktemp -d)
 
 EXEFILES=$(find . -name cinst.exe -o -name trustbridge.exe -o -name mozilla.exe)
 
-cp $NSSDIR/*.dll $TMPDIR
 cp $EXEFILES $TMPDIR
 
 EST_SIZE=$(du -s $TMPDIR | cut -f 1)
--- a/ui/tests/CMakeLists.txt	Mon Jul 28 13:03:00 2014 +0200
+++ b/ui/tests/CMakeLists.txt	Mon Jul 28 13:03:45 2014 +0200
@@ -137,7 +137,7 @@
    endif()
 endif ()
 
-if (NSS_FOUND)
+if (WIN32 OR NSS_FOUND)
    include_directories(${NSS_INCLUDE_DIRS})
    set(NSSTEST_SOURCES
       ${CMAKE_SOURCE_DIR}/cinst/nssstore_linux.c

http://wald.intevation.org/projects/trustbridge/