Add copyright comment headers to appropriate files
[gssweb.git] / json_gssapi / CMakeLists.txt
1 # Copyright (c) 2014, 2015 JANET(UK)
2 # All rights reserved.
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # 1. Redistributions of source code must retain the above copyright
9 #    notice, this list of conditions and the following disclaimer.
10 #
11 # 2. Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the distribution.
14 #
15 # 3. Neither the name of JANET(UK) nor the names of its contributors
16 #    may be used to endorse or promote products derived from this software
17 #    without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
24 # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28 # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
30 # OF THE POSSIBILITY OF SUCH DAMAGE.
31
32 cmake_minimum_required(VERSION 2.8)
33 include(GenerateExportHeader)
34 include(GNUInstallDirs)
35 project(json_gssapi)
36
37 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/ ${CMAKE_CURRENT_BINARY_DIR})
38
39 add_library(jsongssapi SHARED 
40                        src/datamodel/GSSDisplayStatus.cpp 
41                        src/datamodel/GSSName.cpp
42                        src/datamodel/GSSOID.cpp
43                        src/datamodel/GSSOIDSet.cpp
44                        src/datamodel/GSSBuffer.cpp
45                        src/datamodel/GSSCredential.cpp
46                        src/GSSException.cpp
47                        src/GSSRequest.cpp 
48                        src/commands/GSSGetMic.cpp
49                        src/commands/GSSInitSecContext.cpp
50                        src/commands/GSSCommand.cpp 
51                        src/commands/GSSImportName.cpp
52                        src/commands/GSSAcquireCred.cpp 
53                        src/commands/GSSDisplayName.cpp
54                        src/commands/GSSPseudoRandom.cpp
55                        src/commands/GSSWrap.cpp  
56                        src/commands/GSSUnwrap.cpp
57                        src/utils/util_base64.cpp
58                        src/utils/util_json.cpp
59                        src/utils/util_random.cpp
60                        src/cache/GSSContextCache.cpp
61                        src/cache/GSSNameCache.cpp
62                        src/datamodel/GSSContext.cpp
63                       )
64 set_target_properties( jsongssapi
65         PROPERTIES SOVERSION 1)
66
67
68 GENERATE_EXPORT_HEADER(jsongssapi)
69
70 add_executable(json_gssapi src/main.cpp)
71
72 find_package (PkgConfig)
73 pkg_check_modules (GLIB2   glib-2.0)
74
75 find_package (Jansson)
76 if (JANSSON_FOUND)
77 else (JANSSON_FOUND)
78   set(JANSSON_LIBRARIES jansson)
79 endif (JANSSON_FOUND)
80
81 # deal with gssapi / krb5
82 if (WIN32)
83   if ("$ENV{TARGET_CPU}" STREQUAL "x86")
84     set(KRB5_SDK $ENV{ProgramFiles}\\MIT\\Kerberos)
85     set(GSSAPI_LIB ${KRB5_SDK}\\lib\\i386\\gssapi32.lib)
86   elseif ("$ENV{TARGET_CPU}" STREQUAL "x64")
87     set(KRB5_SDK $ENV{PROGRAMW6432}\\MIT\\Kerberos)
88     set(GSSAPI_LIB ${KRB5_SDK}\\lib\\amd64\\gssapi64.lib)
89   else ("$ENV{TARGET_CPU}" STREQUAL "x86")
90     message(FATAL_ERROR "TARGET_CPU '$ENV{TARGET_CPU}' not supported. Did you run setenv.bat?")
91   endif ("$ENV{TARGET_CPU}" STREQUAL "x86")
92   set(KRB5_INCLUDE_DIRS ${KRB5_SDK}\\include;${KRB5_SDK}\\include\\gssapi)
93   set(KRB5_LIBRARIES ${GSSAPI_LIB})
94 else (WIN32)
95   set(KRB5_LIBRARIES gssapi_krb5)
96 endif (WIN32)
97
98 # openssl / crpyto for random
99 if (WIN32)
100 else (WIN32)
101 target_link_libraries(jsongssapi crypto)
102 target_link_libraries(json_gssapi crypto)
103 add_definitions(-DHAVE_OPENSSL)
104 endif (WIN32)
105
106 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
107   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
108 elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
109   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
110 endif ()
111
112 include_directories(${KRB5_INCLUDE_DIRS} ${JANSSON_INCLUDE_DIRS})
113 target_link_libraries(jsongssapi ${KRB5_LIBRARIES} ${JANSSON_LIBRARIES})
114 target_link_libraries(json_gssapi jsongssapi ${KRB5_LIBRARIES} ${JANSSON_LIBRARIES})
115
116 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/")
117
118 find_package (CPPUNIT)
119 install(TARGETS json_gssapi jsongssapi
120         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
121         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
122         )
123
124 add_subdirectory(src)
125
126 add_subdirectory(test)