90dad3535f903fa1c278f771d02e2d7e36f26a97
[gssweb.git] / json_gssapi / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2 include(GenerateExportHeader)
3 include(GNUInstallDirs)
4 project(json_gssapi)
5
6 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/ ${CMAKE_CURRENT_BINARY_DIR})
7
8 add_library(jsongssapi SHARED 
9                        src/datamodel/GSSDisplayStatus.cpp 
10                        src/datamodel/GSSName.cpp
11                        src/datamodel/GSSOID.cpp
12                        src/datamodel/GSSOIDSet.cpp
13                        src/datamodel/GSSBuffer.cpp
14                        src/datamodel/GSSCredential.cpp
15                        src/GSSException.cpp
16                        src/GSSRequest.cpp 
17                        src/commands/GSSGetMic.cpp
18                        src/commands/GSSInitSecContext.cpp
19                        src/commands/GSSCommand.cpp 
20                        src/commands/GSSImportName.cpp
21                        src/commands/GSSAcquireCred.cpp 
22                        src/commands/GSSDisplayName.cpp
23                        src/commands/GSSPseudoRandom.cpp
24                        src/commands/GSSWrap.cpp  
25                        src/commands/GSSUnwrap.cpp
26                        src/utils/util_base64.cpp
27                        src/utils/util_json.cpp
28                        src/utils/util_random.cpp
29                        src/cache/GSSContextCache.cpp
30                        src/cache/GSSNameCache.cpp
31                        src/datamodel/GSSContext.cpp
32                       )
33 set_target_properties( jsongssapi
34         PROPERTIES SOVERSION 1)
35
36
37 GENERATE_EXPORT_HEADER(jsongssapi)
38
39 add_executable(json_gssapi src/main.cpp)
40
41 find_package (PkgConfig)
42 pkg_check_modules (GLIB2   glib-2.0)
43
44 find_package (Jansson)
45 if (JANSSON_FOUND)
46 else (JANSSON_FOUND)
47   set(JANSSON_LIBRARIES jansson)
48 endif (JANSSON_FOUND)
49
50 # deal with gssapi / krb5
51 if (WIN32)
52   if ("$ENV{TARGET_CPU}" STREQUAL "x86")
53     set(KRB5_SDK $ENV{ProgramFiles}\\MIT\\Kerberos)
54     set(GSSAPI_LIB ${KRB5_SDK}\\lib\\i386\\gssapi32.lib)
55   elseif ("$ENV{TARGET_CPU}" STREQUAL "x64")
56     set(KRB5_SDK $ENV{PROGRAMW6432}\\MIT\\Kerberos)
57     set(GSSAPI_LIB ${KRB5_SDK}\\lib\\amd64\\gssapi64.lib)
58   else ("$ENV{TARGET_CPU}" STREQUAL "x86")
59     message(FATAL_ERROR "TARGET_CPU '$ENV{TARGET_CPU}' not supported. Did you run setenv.bat?")
60   endif ("$ENV{TARGET_CPU}" STREQUAL "x86")
61   set(KRB5_INCLUDE_DIRS ${KRB5_SDK}\\include;${KRB5_SDK}\\include\\gssapi)
62   set(KRB5_LIBRARIES ${GSSAPI_LIB})
63 else (WIN32)
64   set(KRB5_LIBRARIES gssapi_krb5)
65 endif (WIN32)
66
67 # openssl / crpyto for random
68 if (WIN32)
69 else (WIN32)
70 target_link_libraries(jsongssapi crypto)
71 target_link_libraries(json_gssapi crypto)
72 add_definitions(-DHAVE_OPENSSL)
73 endif (WIN32)
74
75 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
76   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
77 elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
78   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
79 endif ()
80
81 include_directories(${KRB5_INCLUDE_DIRS} ${JANSSON_INCLUDE_DIRS})
82 target_link_libraries(jsongssapi ${KRB5_LIBRARIES} ${JANSSON_LIBRARIES})
83 target_link_libraries(json_gssapi jsongssapi ${KRB5_LIBRARIES} ${JANSSON_LIBRARIES})
84
85 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/")
86
87 find_package (CPPUNIT)
88 install(TARGETS json_gssapi jsongssapi
89         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
90         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
91         )
92
93 add_subdirectory(src)
94
95 add_subdirectory(test)