cmake_minimum_required(VERSION 2.6)

set(PROJECT lxfirm_prepare)

project(${PROJECT} C)

if(CMAKE_COMPILER_IS_GNUCC )
set(WARNOPTS
    -Werror=implicit-int -Werror=implicit-function-declaration -Werror=strict-prototypes -Werror=return-type
    -Wall -Wextra
    -Wformat-security -Winit-self -Wstrict-aliasing -Wfloat-equal
    -Wundef -Wshadow -Wunsafe-loop-optimizations -Wpointer-arith -Wcast-align
    -Wwrite-strings -Wsign-compare -Wlogical-op -Waggregate-return -Winline
    -Wc++-compat -Wno-unused-parameter)
#-Wjump-misses-init
endif(CMAKE_COMPILER_IS_GNUCC )
add_definitions(${WARNOPTS})

if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
    foreach(flag_var
            CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
            CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
       if(${flag_var} MATCHES "/MD")
          string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
       endif(${flag_var} MATCHES "/MD")
    endforeach(flag_var)
endif(MSVC)


set(SOURCES
    main.c
    radix64.c
    crc/fast_crc.c
    )

set(HEADERS
    radix64.h
    fast_crc_cfg.h
    crc/fast_crc.h
  )

find_file(HAVE_STDINT stdint.h PATH_SUFFIXES )
if(HAVE_STDINT)
    message(STATUS "stdint.h - found : ${HAVE_STDINT}")
else(HAVE_STDINT)
    message(STATUS "stdint.h - not found. use pstdint.h")
    set(HEADERS ${HEADERS} stdint/stdint.h)
    include_directories(stdint)
endif(HAVE_STDINT)

include_directories(crc ${CMAKE_CURRENT_SOURCE_DIR})

list(APPEND CMAKE_INSTALL_RPATH $ORIGIN/../lib)

add_executable(${PROJECT} ${HEADERS} ${SOURCES})

target_link_libraries(${PROJECT} ${LIBXML2_LIBRARIES})

install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_BINDIR})
