project(libpgf)
cmake_minimum_required(VERSION 2.8)

set(GNU_LIGHTNING_ARCH "i386" CACHE STRING "Target architecture for GNU Lightning JIT")
#set(ADD_CFLAGS "-Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-value" CACHE STRING "Additional C compiler options")
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-no-undefined")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 ${ADD_CFLAGS}")

set(GNU_LIGHTNING_ARCH_HEADERS
  pgf/lightning/${GNU_LIGHTNING_ARCH}/asm.h
  pgf/lightning/${GNU_LIGHTNING_ARCH}/fp.h
  pgf/lightning/${GNU_LIGHTNING_ARCH}/core.h
  pgf/lightning/${GNU_LIGHTNING_ARCH}/funcs.h
)

file(COPY        ${GNU_LIGHTNING_ARCH_HEADERS}
     DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/pgf/lightning/)


include_directories(.)
include_directories(./pgf)


set(libgu_la_SOURCES  
	gu/assert.c 
	gu/bits.c 
	gu/choice.c 
	gu/defs.c 
	gu/seq.c 
	gu/enum.c 
	gu/exn.c 
	gu/file.c 
	gu/fun.c 
	gu/hash.c 
	gu/in.c 
	gu/map.c 
	gu/mem.c 
	gu/out.c 
	gu/prime.c 
	gu/string.c 
	gu/utf8.c 
	gu/ucs.c 
	gu/variant.c
)

set(libpgf_la_SOURCES 
	pgf/data.c 
	pgf/data.h 
	pgf/expr.c 
	pgf/expr.h 
	pgf/parser.c 
	pgf/lookup.c
	pgf/jit.c 
	pgf/parseval.c 
	pgf/literals.c 
	pgf/literals.h 
	pgf/reader.h 
	pgf/reader.c 
	pgf/linearizer.c 
	pgf/typechecker.c 
	pgf/reasoner.c 
	pgf/evaluator.c 
	pgf/hopu.c 
	pgf/printer.c 
	pgf/graphviz.c 
	pgf/aligner.c 
	pgf/pgf.c 
	pgf/pgf.h 
)

set(libsg_la_SOURCES 
	sg/sqlite3Btree.c 
	sg/sg.c
)


add_library(gu SHARED ${libgu_la_SOURCES})
#set_property(TARGET gu PROPERTY C_STANDARD 99)
#set_property(TARGET gu PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS true)
target_compile_definitions(gu PRIVATE COMPILING_GU=1)

add_library(pgf SHARED ${libpgf_la_SOURCES})
#set_property(TARGET pgf PROPERTY C_STANDARD 99)
#set_property(TARGET pgf PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS true)
target_compile_definitions(pgf PRIVATE COMPILING_PGF=1)
target_link_libraries(pgf gu)
if(UNIX)
  target_link_libraries(pgf m)
endif(UNIX)

install(TARGETS gu pgf DESTINATION lib)
