cmake_minimum_required(VERSION 2.6)

# compile in Release mode by default
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build,
options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release
RelWithDebInfo MinSizeRel.")

project (ModifiedMetis)

INCLUDE_DIRECTORIES( ./Lib )

# Visual studio doesn't have srand48 or drand48.  Adding __VC__
# changes these references to srand and drand.
IF(MSVC)
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D__VC__")
ENDIF(MSVC)

IF(CMAKE_COMPILER_IS_GNUCC)
	SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -funroll-loops")
ENDIF(CMAKE_COMPILER_IS_GNUCC)

SET(Lib_Sources
./Lib/coarsen.c 
./Lib/fm.c 
./Lib/initpart.c 
./Lib/match.c 
./Lib/ccgraph.c 
./Lib/memory.c 
./Lib/pmetis.c 
./Lib/pqueue.c 
./Lib/refine.c 
./Lib/util.c 
./Lib/timing.c 
./Lib/debug.c 
./Lib/bucketsort.c
./Lib/graph.c 
./Lib/stat.c 
./Lib/kmetis.c 
./Lib/kwayrefine.c
./Lib/kwayfm.c 
./Lib/balance.c 
./Lib/as_ometis.c 
./Lib/ometis.c 
./Lib/srefine.c 
./Lib/sfm.c 
./Lib/separator.c
./Lib/mincover.c 
./Lib/mmd.c 
./Lib/mesh.c 
./Lib/meshpart.c 
./Lib/frename.c 
./Lib/fortran.c 
./Lib/myqsort.c 
./Lib/compress.c 
./Lib/parmetis.c 
./Lib/estmem.c 
./Lib/mpmetis.c 
./Lib/mcoarsen.c 
./Lib/mmatch.c 
./Lib/minitpart.c 
./Lib/mbalance.c 
./Lib/mrefine.c 
./Lib/mutil.c 
./Lib/mfm.c 
./Lib/mkmetis.c 
./Lib/mkwayrefine.c 
./Lib/mkwayfmh.c 
./Lib/mrefine2.c 
./Lib/minitpart2.c 
./Lib/mbalance2.c 
./Lib/mfm2.c 
./Lib/kvmetis.c 
./Lib/kwayvolrefine.c 
./Lib/kwayvolfm.c 
./Lib/subdomains.c
)

ADD_LIBRARY(modmetis STATIC ${Lib_Sources})
SET_TARGET_PROPERTIES(modmetis PROPERTIES DEBUG_POSTFIX -g)
SET_TARGET_PROPERTIES(modmetis PROPERTIES MINSIZEREL_POSTFIX -ms)
SET_TARGET_PROPERTIES(modmetis PROPERTIES RELWITHDEBINFO_POSTFIX -rg)

IF( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
	SET_TARGET_PROPERTIES(modmetis PROPERTIES COMPILE_FLAGS "-fPIC")
ENDIF()

INSTALL(TARGETS modmetis DESTINATION ${CMAKE_SOURCE_DIR}) 
