Resume work on CMake for Wireshark. Finally found and fixed a

few mistakes that I made earlier.

Current status: dumpcap still doesn't build
Next step: Add a ylwrap like workaround for flex misbehaviour.

svn path=/trunk/; revision=28518
This commit is contained in:
Jörg Mayer 2009-05-29 10:57:47 +00:00
parent b4aeb97ed5
commit 18887f7b72
4 changed files with 139 additions and 73 deletions

View File

@ -25,6 +25,8 @@ project(wireshark C)
set(dumpcap_LIBS wiretap)
cmake_minimum_required(VERSION 2.6)
#Where to find local cmake scripts
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
@ -66,7 +68,7 @@ endif(ENABLE_EXTRA_GCC_CHECKS)
if(CMAKE_COMPILER_IS_GNUCC)
add_definitions(
-DHAVE_CONFIG_H
-D_U_=\"__attribute__\(\(unused\)\)\"
-D_U_=__attribute__\(\(unused\)\)
-Wall -Wpointer-arith -W
${WIRESHARK_EXTRA_GCC_FLAGS}
)
@ -78,7 +80,7 @@ endif(CMAKE_COMPILER_IS_GNUCC)
subdirs(wiretap)
#The minimum package list
set(PACKAGELIST GLIB2 ZLIB PCAP ${PACKAGELIST})
set(PACKAGELIST GLIB2 ZLIB PCAP LEX YACC ${PACKAGELIST})
#build the gui ?
if(BUILD_WIRESHARK)
@ -212,6 +214,13 @@ configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h
link_directories(wiretap)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_BINARY_DIR}/svnversion.h
COMMAND perl ${CMAKE_SOURCE_DIR}/make-version.pl
ARGS
${CMAKE_SOURCE_DIR}
)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_BINARY_DIR}/svnversion.h GENERATED)
if(BUILD_DUMPCAP)
@ -220,19 +229,19 @@ if(BUILD_DUMPCAP)
)
set(DUMPCAP_FILES
capture_opts.c
capture_loop.c
capture-pcap-util.c
capture_stop_conditions.c
clopts_common.c
conditions.c
dumpcap.c
pcapio.c
ringbuffer.c
sync_pipe_write.c
tempfile.c
version_info.c
${DUMPCAP_PLATFORM_SRC}
svnversion.h
capture_opts.c
capture-pcap-util.c
capture_stop_conditions.c
clopts_common.c
conditions.c
dumpcap.c
pcapio.c
ringbuffer.c
sync_pipe_write.c
tempfile.c
version_info.c
${DUMPCAP_PLATFORM_SRC}
)
add_executable(dumpcap ${DUMPCAP_FILES})

View File

@ -5,8 +5,8 @@ INCLUDE(FindCygwin)
FIND_PROGRAM(LEX_EXECUTABLE
NAMES
lex
flex
lex
PATH
${CYGWIN_INSTALL_PATH}/bin
/bin
@ -18,38 +18,39 @@ MARK_AS_ADVANCED(
LEX_EXECUTABLE
)
---------
# flex a .ll file
# flex a .l file
# search flex
MACRO(FIND_FLEX)
IF(NOT FLEX_EXECUTABLE)
FIND_PROGRAM(FLEX_EXECUTABLE flex)
IF (NOT FLEX_EXECUTABLE)
MACRO(FIND_LEX)
IF(NOT LEX_EXECUTABLE)
FIND_PROGRAM(LEX_EXECUTABLE flex)
IF (NOT LEX_EXECUTABLE)
MESSAGE(FATAL_ERROR "flex not found - aborting")
ENDIF (NOT FLEX_EXECUTABLE)
ENDIF(NOT FLEX_EXECUTABLE)
ENDMACRO(FIND_FLEX)
ENDIF (NOT LEX_EXECUTABLE)
ENDIF(NOT LEX_EXECUTABLE)
ENDMACRO(FIND_LEX)
MACRO(ADD_FLEX_FILES _sources )
FIND_FLEX()
MACRO(ADD_LEX_FILES _sources )
FIND_LEX()
FOREACH (_current_FILE ${ARGN})
GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE)
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
SET(_out ${CMAKE_CURRENT_BINARY_DIR}/flex_${_basename}.cpp)
SET(_outc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c)
SET(_outh ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
ADD_CUSTOM_COMMAND(
OUTPUT ${_out}
COMMAND ${FLEX_EXECUTABLE}
OUTPUT ${_outc} ${_outh}
COMMAND ${LEX_EXECUTABLE}
ARGS
-o${_out}
-o${_outc}
--header-file=${_outh}
${_in}
DEPENDS ${_in}
)
SET(${_sources} ${${_sources}} ${_out} )
SET(${_sources} ${${_sources}} ${_outc} ${_outh} )
ENDFOREACH (_current_FILE)
ENDMACRO(ADD_FLEX_FILES)
ENDMACRO(ADD_LEX_FILES)

View File

@ -4,10 +4,10 @@
INCLUDE(FindCygwin)
FIND_PROGRAM(YACC
FIND_PROGRAM(YACC_EXECUTABLE
NAMES
yacc
bison
yacc
PATH
${CYGWIN_INSTALL_PATH}/bin
/bin
@ -16,5 +16,41 @@ FIND_PROGRAM(YACC
/sbin
)
MARK_AS_ADVANCED(
YACC
YACC_EXECUTABLE
)
# search flex
MACRO(FIND_YACC)
IF(NOT YACC_EXECUTABLE)
FIND_PROGRAM(YACC_EXECUTABLE bison)
IF (NOT YACC_EXECUTABLE)
MESSAGE(FATAL_ERROR "flex not found - aborting")
ENDIF (NOT YACC_EXECUTABLE)
ENDIF(NOT YACC_EXECUTABLE)
ENDMACRO(FIND_YACC)
MACRO(ADD_YACC_FILES _sources )
FIND_YACC()
FOREACH (_current_FILE ${ARGN})
GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE)
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c)
ADD_CUSTOM_COMMAND(
OUTPUT ${_out}
COMMAND ${YACC_EXECUTABLE}
ARGS
-d
-p ${_basename}
-o${_out}
${_in}
DEPENDS ${_in}
)
SET(${_sources} ${${_sources}} ${_out} )
ENDFOREACH (_current_FILE)
ENDMACRO(ADD_YACC_FILES)

View File

@ -21,44 +21,64 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
ADD_LIBRARY(wiretap SHARED
5views.c
airopeek9.c
ascend.c
atm.c
ber.c
buffer.c
catapult_dct2000.c
cosine.c
csids.c
dbs-etherwatch.c
erf.c
etherpeek.c
eyesdn.c
file_access.c
file_wrappers.c
hcidump.c
i4btrace.c
iptrace.c
iseries.c
k12.c
lanalyzer.c
libpcap.c
netmon.c
nettl.c
network_instruments.c
netxray.c
ngsniffer.c
pppdump.c
radcom.c
snoop.c
toshiba.c
visual.c
vms.c
wtap.c
ascend-grammar.c
ascend-scanner.c
set(WIRETAP_FILES
5views.c
airopeek9.c
ascend.c
atm.c
ber.c
btsnoop.c
buffer.c
catapult_dct2000.c
commview.c
cosine.c
csids.c
daintree-sna.c
dbs-etherwatch.c
dct3trace.c
erf.c
etherpeek.c
eyesdn.c
file_access.c
file_wrappers.c
hcidump.c
i4btrace.c
iptrace.c
iseries.c
k12.c
lanalyzer.c
libpcap.c
mpeg.c
netmon.c
netscreen.c
nettl.c
network_instruments.c
netxray.c
ngsniffer.c
packetlogger.c
pcap-common.c
pcapng.c
pppdump.c
radcom.c
snoop.c
toshiba.c
visual.c
vms.c
wtap.c
)
ADD_LEX_FILES(WIRETAP_FILES
ascend-scanner.l
k12text.l
)
ADD_YACC_FILES(WIRETAP_FILES
ascend-grammar.y
)
ADD_LIBRARY(wiretap SHARED
${WIRETAP_FILES}
)
INSTALL(TARGETS wiretap LIBRARY DESTINATION lib)