1 Index: cmake/modules/OCIVersion.c
2 ===================================================================
3 --- cmake/modules/OCIVersion.c (revision 0)
4 +++ cmake/modules/OCIVersion.c (revision 0)
5 @@ -0,0 +1,18 @@
6 +#include <stdio.h>
7 +#include <oci.h>
8 +
9 +int main()
10 +{
11 +/* signed int major_version, minor_version, update_num, patch_num, port_update_num; */
12 +/* /\*signed int res =*\/ OCIClientVersion ( &major_version, */
13 +/* &minor_version, */
14 +/* &update_num, */
15 +/* &patch_num, */
16 +/* &port_update_num ); */
17 +
18 +/* printf("%d.%d.%d.%d.%d\n", */
19 +/* major_version, minor_version, update_num, patch_num, port_update_num); */
20 +
21 +/* printf("%dR%d\n", OCI_MAJOR_VERSION, OCI_MINOR_VERSION); */
22 + return OCI_MAJOR_VERSION * 10 + OCI_MINOR_VERSION;
23 +}
24 Index: cmake/modules/FindOracle.cmake
25 ===================================================================
26 --- cmake/modules/FindOracle.cmake (revision 0)
27 +++ cmake/modules/FindOracle.cmake (revision 0)
28 @@ -0,0 +1,209 @@
29 +# TOra: Configure Oracle libraries
30 +#
31 +# ORACLE_FOUND - system has Oracle OCI
32 +# ORACLE_HAS_XML - Oracle has XDK support(thick client installed)
33 +# ORACLE_INCLUDES - where to find oci.h
34 +# ORACLE_LIBRARIES - the libraries to link against to use Oracle OCI
35 +#
36 +# Components: CLNTSH, OCCI, XML, OCIEI
37 +# CLNTSH is enabled by default
38 +# for example: FIND_PACKAGE(Oracle REQUIRED CLNTSH OCCI)
39 +#
40 +# copyright (c) 2007 Petr Vanek <petr@scribus.info>
41 +# copyright (c) 2009 Ivan Brezina <ibre5041@ibrezina.net>
42 +# Redistribution and use is allowed according to the terms of the GPLv2 license.
43 +#
44 +
45 +SET(ORACLE_FOUND "NO")
46 +SET(ORACLE_HAS_XML "NO")
47 +SET(ORACLE_HOME $ENV{ORACLE_HOME})
48 +
49 +# "components" handling. It enables to find various independent libraries,
50 +IF( Oracle_FIND_COMPONENTS )
51 + FOREACH( component ${Oracle_FIND_COMPONENTS} )
52 + STRING( TOUPPER ${component} _COMPONENT )
53 + SET( ORACLE_USE_${_COMPONENT} 1 )
54 + ENDFOREACH( component )
55 +
56 + # legacy behaviour
57 + IF (NOT ORACLE_USE_CLNTSH)
58 + SET(ORACLE_USE_CLNTSH 1)
59 + ENDIF (NOT ORACLE_USE_CLNTSH)
60 +
61 + # it looks like it's mandatory on macosx
62 + IF (APPLE)
63 + SET(ORACLE_USE_OCIEI 1)
64 + ENDIF (APPLE)
65 +
66 +ENDIF( Oracle_FIND_COMPONENTS )
67 +
68 +
69 +IF (ORACLE_PATH_INCLUDES)
70 + SET (ORACLE_INCLUDES_LOCATION ${ORACLE_PATH_INCLUDES})
71 +ELSE (ORACLE_PATH_INCLUDES)
72 + SET (ORACLE_INCLUDES_LOCATION
73 + ${ORACLE_HOME}/rdbms/public
74 + ${ORACLE_HOME}/include
75 + # xdk
76 + ${ORACLE_HOME}/xdk/include
77 + # sdk
78 + ${ORACLE_HOME}/sdk/include
79 + # xe on windows
80 + ${ORACLE_HOME}/OCI/include
81 + )
82 +ENDIF (ORACLE_PATH_INCLUDES)
83 +
84 +IF (ORACLE_PATH_LIB)
85 + SET (ORACLE_LIB_LOCATION ${ORACLE_PATH_LIB})
86 +ELSE (ORACLE_PATH_LIB)
87 + SET (ORACLE_LIB_LOCATION
88 + # TODO add 32/64bit version here (lib32/lib64 on some platforms)
89 + ${ORACLE_HOME}/lib
90 + # xe on windows
91 + ${ORACLE_HOME}/OCI/lib/MSVC
92 + ${ORACLE_HOME}
93 + )
94 +ENDIF (ORACLE_PATH_LIB)
95 +
96 +FIND_PATH(
97 + ORACLE_INCLUDES
98 + oci.h
99 + ${ORACLE_INCLUDES_LOCATION}
100 + NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
101 +)
102 +
103 +SET(FORCE_ERROR 0)
104 +
105 +IF (ORACLE_USE_CLNTSH)
106 + FIND_LIBRARY(
107 + ORACLE_LIBRARY_CLNTSH
108 + NAMES libclntsh clntsh oci
109 + PATHS ${ORACLE_LIB_LOCATION}
110 + NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
111 + )
112 + IF (NOT ORACLE_LIBRARY_CLNTSH AND Oracle_FIND_REQUIRED)
113 + SET(FORCE_ERROR "CLNTSH")
114 + ENDIF (NOT ORACLE_LIBRARY_CLNTSH AND Oracle_FIND_REQUIRED)
115 +ENDIF (ORACLE_USE_CLNTSH)
116 +
117 +
118 +IF (ORACLE_USE_OCCI)
119 + FIND_LIBRARY(
120 + ORACLE_LIBRARY_OCCI
121 + NAMES libocci occi
122 + PATHS ${ORACLE_LIB_LOCATION}
123 + NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
124 + )
125 + IF (NOT ORACLE_LIBRARY_OCCI AND Oracle_FIND_REQUIRED)
126 + SET(FORCE_ERROR "OCCI")
127 + ENDIF (NOT ORACLE_LIBRARY_OCCI AND Oracle_FIND_REQUIRED)
128 +ENDIF (ORACLE_USE_OCCI)
129 +
130 +IF (ORACLE_USE_XML)
131 + FIND_PATH(
132 + ORACLE_INCLUDES_XML
133 + xml.h
134 + ${ORACLE_INCLUDES_LOCATION}
135 + NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
136 + )
137 + IF (NOT ORACLE_INCLUDES_XML AND Oracle_FIND_REQUIRED)
138 + SET(FORCE_ERROR "XML")
139 + ENDIF (NOT ORACLE_INCLUDES_XML AND Oracle_FIND_REQUIRED)
140 +
141 + FIND_LIBRARY(
142 + ORACLE_LIBRARY_XML
143 + NAMES libxml xml libxml10 xml10 libxml11 xml11 oraxml10 oraxml11
144 + PATHS ${ORACLE_LIB_LOCATION}
145 + NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
146 + )
147 + IF (NOT ORACLE_LIBRARY_XML AND Oracle_FIND_REQUIRED)
148 + SET(FORCE_ERROR "XML")
149 + ENDIF (NOT ORACLE_LIBRARY_XML AND Oracle_FIND_REQUIRED)
150 +ENDIF (ORACLE_USE_XML)
151 +
152 +IF (ORACLE_USE_OCIEI)
153 + FIND_LIBRARY(ORACLE_LIBRARY_OCIEI
154 + NAMES libociei ociei
155 + PATHS ${ORACLE_LIB_LOCATION}
156 + NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
157 + )
158 + IF (NOT ORACLE_LIBRARY_OCIEI AND Oracle_FIND_REQUIRED)
159 + SET(FORCE_ERROR "OCIEI")
160 + ENDIF (NOT ORACLE_LIBRARY_OCIEI AND Oracle_FIND_REQUIRED)
161 +ENDIF (ORACLE_USE_OCIEI)
162 +
163 +MESSAGE("fer ${FORCE_ERROR}")
164 +IF (NOT FORCE_ERROR)
165 + SET (ORACLE_LIBRARY ${ORACLE_LIBRARY_CLNTSH} ${ORACLE_LIBRARY_OCCI} ${ORACLE_LIBRARY_XML} ${ORACLE_LIBRARY_OCIEI})
166 +ENDIF (NOT FORCE_ERROR)
167 +
168 +
169 +IF (ORACLE_INCLUDES AND ORACLE_LIBRARY)
170 + SET(ORACLE_LIBRARIES ${ORACLE_LIBRARY})
171 + SET(ORACLE_FOUND "YES")
172 +ENDIF (ORACLE_INCLUDES AND ORACLE_LIBRARY)
173 +
174 +IF (ORACLE_INCLUDES_XML AND ORACLE_LIBRARY_XML)
175 + ADD_DEFINITIONS(-DORACLE_HAS_XML)
176 + SET(ORACLE_HAS_XML "YES")
177 + LIST(APPEND ORACLE_INCLUDES ${ORACLE_INCLUDES_XML})
178 +ENDIF (ORACLE_INCLUDES_XML AND ORACLE_LIBRARY_XML)
179 +
180 +# guess OCI version
181 +IF (NOT DEFINED ORACLE_OCI_VERSION AND ORACLE_INCLUDES)
182 + TRY_RUN(OCIVER_TYPE OCIVER_COMPILED
183 + ${CMAKE_BINARY_DIR}
184 + ${CMAKE_SOURCE_DIR}/cmake/modules/OCIVersion.c
185 + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${ORACLE_INCLUDES}"
186 + OUTPUT_VARIABLE OCIVER)
187 +
188 + IF (${OCIVER_TYPE} GREATER "110")
189 + SET(ORACLE_OCI_VERSION "11G")
190 + ELSEIF (${OCIVER_TYPE} EQUAL "102")
191 + SET(ORACLE_OCI_VERSION "10G_R2")
192 + ELSEIF (${OCIVER_TYPE} EQUAL "101")
193 + SET(ORACLE_OCI_VERSION "10G")
194 + ELSEIF (${OCIVER_TYPE} EQUAL "91")
195 + SET(ORACLE_OCI_VERSION "9")
196 + ELSEIF (${OCIVER_TYPE} EQUAL "92")
197 + SET(ORACLE_OCI_VERSION "9")
198 + ELSEIF (NOT ${OCIVER_TYPE} GREATER "90")
199 + SET(ORACLE_OCI_VERSION "8I")
200 + ELSE (${OCIVER_TYPE} GREATER "110")
201 + SET(ORACLE_OCI_VERSION "10G_R2")
202 + ENDIF (${OCIVER_TYPE} GREATER "110")
203 +
204 + MESSAGE(STATUS "Guessed ORACLE_OCI_VERSION value: ${ORACLE_OCI_VERSION} for ${OCIVER_TYPE}")
205 +ENDIF (NOT DEFINED ORACLE_OCI_VERSION AND ORACLE_INCLUDES)
206 +
207 +MESSAGE(STATUS "Found Oracle: ${ORACLE_LIBRARY} (ORACLE_HOME='${ORACLE_HOME}')")
208 +MESSAGE(STATUS " includes: ${ORACLE_INCLUDES}")
209 +MESSAGE(STATUS "Found XML Oracle: ${ORACLE_INCLUDES_XML} ${ORACLE_LIBRARY_XML}")
210 +
211 +IF (ORACLE_FOUND)
212 + # there *must* be OCI version defined for internal libraries
213 + IF (ORACLE_OCI_VERSION)
214 + ADD_DEFINITIONS(-DOTL_ORA${ORACLE_OCI_VERSION})
215 + ELSE (ORACLE_OCI_VERSION)
216 + MESSAGE(FATAL_ERROR "Set -DORACLE_OCI_VERSION for your oci. [8, 8I, 9I, 10G, 10G_R2]")
217 + ENDIF (ORACLE_OCI_VERSION)
218 +
219 +ELSE (ORACLE_FOUND)
220 +
221 + MESSAGE(STATUS "Oracle not found.")
222 + MESSAGE(STATUS "Oracle: You can specify includes: -DORACLE_PATH_INCLUDES=/usr/include/oracle/10.2.0.3/client")
223 + MESSAGE(STATUS " currently found includes: ${ORACLE_INCLUDES}")
224 + MESSAGE(STATUS "Oracle: You can specify libs: -DORACLE_PATH_LIB=/usr/lib/oracle/10.2.0.3/client/lib")
225 + MESSAGE(STATUS " currently found libs: ${ORACLE_LIBRARY}")
226 +
227 + IF (FORCE_ERROR)
228 + MESSAGE(STATUS "Failed module info: ${FORCE_ERROR}")
229 + ENDIF (FORCE_ERROR)
230 + IF (Oracle_FIND_REQUIRED)
231 + MESSAGE(FATAL_ERROR "Could not find Oracle library")
232 + ELSE (Oracle_FIND_REQUIRED)
233 + # setup the variables for silent continue
234 + SET (ORACLE_INCLUDES "")
235 + ENDIF (Oracle_FIND_REQUIRED)
236 +
237 +ENDIF (ORACLE_FOUND)
238 Index: oraload/CMakeLists.txt
239 ===================================================================
240 --- oraload/CMakeLists.txt (revision 76)
241 +++ oraload/CMakeLists.txt (working copy)
242 @@ -1,29 +1,14 @@
243 -set(DESIRED_QT_VERSION 4.5)
244 -find_package(Qt4 REQUIRED)
245 include(${QT_USE_FILE})
246 -include_directories(${CMAKE_SOURCE_DIR}/lib)
247 -include_directories(${CMAKE_SOURCE_DIR}/lobwizard)
248 -include_directories(${ORACLE_HOME}/rdbms/public)
249 -include_directories(${ORACLE_HOME}/sdk/include)
250 -# InstantClient 11 Linux
251 -find_file(NNZ10 libnnz11.so ${ORACLE_HOME} ${ORACLE_HOME}/lib)
252 -find_file(OCCI libocci.so.11.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
253 -find_file(CLNTSH libclntsh.so.11.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
254 -# InstantClient 10 Linux
255 -#find_file(NNZ10 libnnz10.so ${ORACLE_HOME} ${ORACLE_HOME}/lib)
256 -#find_file(OCCI libocci.so.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
257 -#find_file(CLNTSH libclntsh.so.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
258 -# InstantClient 11 Mac
259 -#find_file(NNZ10 libnnz10.dylib ${ORACLE_HOME} ${ORACLE_HOME}/lib)
260 -#find_file(OCCI libocci.dylib.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
261 -#find_file(CLNTSH libclntsh.dylib.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
262 -set(libnnz ${NNZ10})
263 -set(libocci ${OCCI})
264 -set(libclntsh ${CLNTSH})
265 +
266 +include_directories( ${ORACLE_INCLUDES} )
267 +include_directories( ${CMAKE_SOURCE_DIR}/lib )
268 +include_directories( ${CMAKE_SOURCE_DIR}/lobwizard )
269 +include_directories(${CMAKE_BINARY_DIR}/lobwizard)
270 +
271 set(AppSrcs main.cpp)
272 -cmake_policy(SET CMP0003 NEW)
273 -link_directories(${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/lobwizard)
274 +
275 +link_directories(${CMAKE_BINARY_DIR}/lib ${CMAKE_BINARY_DIR}/lobwizard)
276 add_executable(oraload ${AppSrcs})
277 -target_link_libraries(oraload loadutil lobwizard ${libnnz} ${libocci} ${libclntsh})
278 +target_link_libraries(oraload loadutil lobwizard ${ORACLE_LIBRARIES})
279
280 install(TARGETS oraload DESTINATION bin)
281 Index: lib/CMakeLists.txt
282 ===================================================================
283 --- lib/CMakeLists.txt (revision 76)
284 +++ lib/CMakeLists.txt (working copy)
285 @@ -1,11 +1,9 @@
286 set(LibSrcs BasicDML.cpp BinLob.cpp Connection.cpp CharLob.cpp Lob.cpp Log.cpp)
287 -include_directories(${CMAKE_SOURCE_DIR}/lib)
288 -include_directories(${ORACLE_HOME}/rdbms/public)
289 -include_directories(${ORACLE_HOME}/sdk/include)
290 -include_directories(${ORACLE_HOME}/rdbms/public)
291 -#add_library(loadutil SHARED ${LibSrcs})
292 +
293 +include_directories( ${ORACLE_INCLUDES} )
294 +
295 add_library(loadutil ${LibSrcs})
296
297 -target_link_libraries(loadutil ${libnnz} ${libocci} ${libclntsh})
298 +target_link_libraries(loadutil ${ORACLE_LIBRARIES} )
299
300 install(TARGETS loadutil DESTINATION lib)
301 Index: lobwizard/CMakeLists.txt
302 ===================================================================
303 --- lobwizard/CMakeLists.txt (revision 76)
304 +++ lobwizard/CMakeLists.txt (working copy)
305 @@ -1,24 +1,21 @@
306 -# Qt 4.5 is required, make sure that at least 4.5 is installed
307 -# via "qmake -v".
308 -# find_package(Qt4) looks for qmake in the system path
309 -find_package(Qt4 REQUIRED)
310 include_directories(${CMAKE_SOURCE_DIR}/lib)
311 -include_directories(${ORACLE_HOME}/rdbms/public)
312 -include_directories(${ORACLE_HOME}/sdk/include)
313 -include_directories(${ORACLE_HOME}/rdbms/public)
314 +include_directories(${CMAKE_SOURCE_DIR}/lobwizard)
315 +include_directories(${CMAKE_BINARY_DIR}/lobwizard)
316 +include_directories(${ORACLE_INCLUDES})
317 +
318 include(${QT_USE_FILE})
319 set(LobSrcs LobWizard.cpp)
320 set(LobMocSrcs LobWizard.h)
321 set(LobUis LobWizard.ui)
322 -set(LobUis_H ui_LobWizard.h)
323 +# set(LobUis_H ui_LobWizard.h)
324
325 qt4_wrap_cpp(LobMoc ${LobMocSrcs})
326 qt4_wrap_ui(LobUi ${LobUis})
327 -qt4_wrap_cpp(LobMocUi ${LobUis_H})
328 +# qt4_wrap_cpp(LobMocUi ${LobUis_H})
329
330 add_definitions(-DQT_NO_DEBUG -FLAT_NAMESPACE)
331 cmake_policy(SET CMP0003 OLD)
332 -add_library(lobwizard ${LobSrcs} ${LobMoc} ${LobMocUi})
333 +add_library(lobwizard ${LobSrcs} ${LobMoc} ${LobUi})
334 target_link_libraries(lobwizard ${QT_LIBRARIES} pthread)
335
336 install(TARGETS lobwizard DESTINATION lobwizard)
337 Index: CMakeLists.txt
338 ===================================================================
339 --- CMakeLists.txt (revision 76)
340 +++ CMakeLists.txt (working copy)
341 @@ -1,18 +1,23 @@
342 cmake_minimum_required(VERSION 2.4)
343 -set(ORACLE_HOME $ENV{ORACLE_HOME})
344 +project(LobShooter)
345 +cmake_policy(SET CMP0003 NEW)
346 +
347 +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
348 +
349 +find_package(Oracle REQUIRED OCCI CLNTSH)
350 +
351 +set(DESIRED_QT_VERSION 4.5)
352 +find_package(Qt4 REQUIRED)
353 +
354 +
355 project(oraload)
356 add_subdirectory(lib)
357 +add_subdirectory(lobwizard)
358 add_subdirectory(oraload)
359 -add_subdirectory(lobwizard)
360 -MESSAGE("----------------------------------------------------------------------------------------------------------------------------------------------------------")
361 -MESSAGE("Your ORACLE_HOME is set to $ENV{ORACLE_HOME}")
362 -MESSAGE("Please make sure that it points to your local Oracle Installation.")
363 -MESSAGE("ORACLE_HOME is needed at compile time.")
364 -MESSAGE("----------------------------------------------------------------------------------------------------------------------------------------------------------")
365 -MESSAGE("Your LD_LIBRARY_PATH is set to $ENV{LD_LIBRARY_PATH}")
366 -MESSAGE("LD_LIBRARY_PATH is needed at runtime and should be added to your environment like this:")
367 -MESSAGE(" ")
368 -MESSAGE("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ENV{ORACLE_HOME}/lib:$ENV{ORACLE_HOME}/ctx/lib")
369 -MESSAGE("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/lib")
370 -MESSAGE("export LD_LIBRARY_PATH")
371 -MESSAGE("----------------------------------------------------------------------------------------------------------------------------------------------------------")
372 +
373 +MESSAGE(STATUS "")
374 +MESSAGE(STATUS "Your ORACLE_HOME is set to $ENV{ORACLE_HOME}")
375 +MESSAGE(STATUS "")
376 +MESSAGE(STATUS "Your LD_LIBRARY_PATH is set to $ENV{LD_LIBRARY_PATH}")
377 +MESSAGE(STATUS "It's required to contain oracle libraries in LD_LIBRARY_PATH")
378 +MESSAGE(STATUS "")