# HG changeset patch # User Andre Heinecke # Date 1411028978 -7200 # Node ID 148014db2f3ba11775e814e3fd17d00535cdab38 # Parent e82c440c272786a574c14a9ccc581820a682bad0 (issue126) Commit WIP on static linking libc diff -r e82c440c2727 -r 148014db2f3b CMakeLists.txt --- a/CMakeLists.txt Wed Sep 17 16:23:33 2014 +0200 +++ b/CMakeLists.txt Thu Sep 18 10:29:38 2014 +0200 @@ -86,7 +86,7 @@ set(WARN_HARDENING_FLAGS " -Wextra -Wconversion -Wformat-security") # Hardening flags -set(HARDENING_FLAGS " -Wall -fstack-protector-all -fno-exceptions") +set(HARDENING_FLAGS " -fPIC -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") @@ -103,8 +103,9 @@ endif(WIN32) if(UNIX) - set(HARDENING_FLAGS " ${HARDENING_FLAGS} -pie -fPIE -ftrapv") + set(HARDENING_FLAGS " ${HARDENING_FLAGS} -Bdynamic -ftrapv") set(HARDENING_FLAGS " ${HARDENING_FLAGS} -Wl,-z,relro,-z,now") + set(EXTRA_STATIC_FLAGS " -Wl,--undefined=__pthread_unwind -static -static-libstdc++ -static-libgcc") elseif(WIN32) set(HARDENING_FLAGS " ${HARDENING_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat") endif() diff -r e82c440c2727 -r 148014db2f3b INSTALL --- a/INSTALL Wed Sep 17 16:23:33 2014 +0200 +++ b/INSTALL Thu Sep 18 10:29:38 2014 +0200 @@ -12,6 +12,8 @@ ( qtbase/src/plugins/platforms/xcb/README ). Polarssl needs cmake and build-essentials. +The following documentation uses the variable YOURPREFIX as placeholder for your environment prefix + export YOURPREFIX= export PATH=$YOURPREFIX/bin:$PATH @@ -90,6 +92,7 @@ --without-zlib make && make install + To compile the software you can use plain cmake. An out of source build is highly suggested. For build options see CMakeList.txt @@ -99,7 +102,6 @@ cd build-linux cmake .. -DCMAKE_PREFIX_PATH=$YOURPREFIX - I386 ==== Install dependencies (list might be incomplete) diff -r e82c440c2727 -r 148014db2f3b cinst/CMakeLists.txt --- a/cinst/CMakeLists.txt Wed Sep 17 16:23:33 2014 +0200 +++ b/cinst/CMakeLists.txt Thu Sep 18 10:29:38 2014 +0200 @@ -11,6 +11,8 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../common) +set(CMAKE_CXX_FLAGS "${EXTRA_STATIC_FLAGS}") + set(CINST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/windowsstore.c ${CMAKE_CURRENT_SOURCE_DIR}/nssstore_linux.c @@ -23,11 +25,20 @@ set(WIN_EXTRA_LIBS -lcrypt32 -luserenv -lshell32) endif(WIN32) +#if(EXISTS "${CMAKE_PREFIX_PATH}/lib/libc.a") +# message(status "Linking against static libc: ${CMAKE_PREFIX_PATH}/lib/libc.a") +# set (LIBC_STATIC "${CMAKE_PREFIX_PATH}/lib/libc.a" "${CMAKE_PREFIX_PATH}/lib/libpthread.a") +#endif() + +message(fatal "cmake prefix ${CMAKE_PREFIX_PATH}") target_link_libraries(cinst trustbridge_common ${PROFILING_LIBS} ${POLARSSL_LIBRARIES} - ${WIN_EXTRA_LIBS}) + ${WIN_EXTRA_LIBS} + ${LIBC_STATIC} + pthread + ) install(TARGETS cinst DESTINATION bin) if (WIN32)