# General lib locations
LINK_DIRECTORIES(/opt/local/lib)

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/tools)

FILE(GLOB SRC_FILES *.cpp)
FILE(GLOB INC_FILES *.h)

ADD_SUBDIRECTORY(Assemblers)
ADD_SUBDIRECTORY(Elements)
ADD_SUBDIRECTORY(FESetting)
ADD_SUBDIRECTORY(Math)
ADD_SUBDIRECTORY(Materials)
ADD_SUBDIRECTORY(Mesh)
ADD_SUBDIRECTORY(ShapeFunctions)

ADD_LIBRARY(lib_assembler SHARED ${SRC_FILES} ${INC_FILES})
TARGET_LINK_LIBRARIES(lib_assembler Mesh lib_MeshUtils)
SET_TARGET_PROPERTIES(lib_assembler PROPERTIES OUTPUT_NAME "assembler")

IF(NOT WITHOUT_SWIG)
    set(SWG_FILES PyAssembler.i)

    # Generate wrapper for python
    SET_SOURCE_FILES_PROPERTIES(${SWG_FILES} PROPERTIES CPLUSPLUS ON)
    SET_SOURCE_FILES_PROPERTIES(${SWG_FILES} PROPERTIES CMAKE_SWIG_FLAGS "-includeall")
    SWIG_ADD_MODULE(PyAssembler python ${SWG_FILES} ${INC_FILES})
    SWIG_LINK_LIBRARIES(PyAssembler ${PYTHON_LIBRARIES} Mesh lib_assembler)

    # Boudle exe, lib, swig wrapper into a single target.
    # To build all 3, one can just "make assembler"
    # Note the swig target is the autogenerated _PyAssembler
    # instead of PyAssembler.
    ADD_CUSTOM_TARGET(assembler DEPENDS lib_assembler _PyAssembler)
ELSE(NOT WITHOUT_SWIG)
    ADD_CUSTOM_TARGET(assembler DEPENDS lib_assembler)
ENDIF(NOT WITHOUT_SWIG)
